sailfish, getting somewhere
This commit is contained in:
parent
1cfee7081c
commit
d48178899c
25 changed files with 1463 additions and 33 deletions
7
harbour-ttrss.desktop
Normal file
7
harbour-ttrss.desktop
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
[Desktop Entry]
|
||||
Type=Application
|
||||
X-Nemo-Application-Type=silica-qt5
|
||||
Name=ttrss
|
||||
Icon=harbour-ttrss
|
||||
Exec=harbour-ttrss
|
||||
|
||||
60
harbour-ttrss.pro
Normal file
60
harbour-ttrss.pro
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
# The name of your app.
|
||||
# NOTICE: name defined in TARGET has a corresponding QML filename.
|
||||
# If name defined in TARGET is changed, following needs to be
|
||||
# done to match new name:
|
||||
# - corresponding QML filename must be changed
|
||||
# - desktop icon filename must be changed
|
||||
# - desktop filename must be changed
|
||||
# - icon definition filename in desktop file must be changed
|
||||
|
||||
VERSION = 0.3.4
|
||||
DEFINES += APP_VERSION=\\\"$$VERSION\\\"
|
||||
|
||||
DEFINES += Q_OS_SAILFISH
|
||||
|
||||
TARGET = harbour-ttrss
|
||||
|
||||
##CONFIG += sailfishapp
|
||||
|
||||
QT += quick qml
|
||||
|
||||
target.path = /usr/bin
|
||||
INSTALLS += target
|
||||
|
||||
CONFIG += link_pkgconfig
|
||||
PKGCONFIG += sailfishapp
|
||||
INCLUDEPATH += /usr/include/sailfishapp
|
||||
|
||||
qml_1.files = qml/ttrss/sailfish
|
||||
qml_1.path = $$INSTALL_ROOT/usr/share/$$TARGET/qml
|
||||
qml_2.files = qml/ttrss/models
|
||||
qml_2.path = $$INSTALL_ROOT/usr/share/$$TARGET/qml
|
||||
qml_3.files = qml/ttrss/resources
|
||||
qml_3.path = $$INSTALL_ROOT/usr/share/$$TARGET/qml
|
||||
INSTALLS += qml_1 qml_2 qml_3
|
||||
|
||||
icon.files = images/$${TARGET}.png
|
||||
icon.path = /usr/share/icons/hicolor/86x86/apps
|
||||
INSTALLS += icon
|
||||
|
||||
desktop.files = harbour-ttrss.desktop
|
||||
desktop.path = /usr/share/applications
|
||||
INSTALLS += desktop
|
||||
|
||||
RESOURCES += \
|
||||
harmattan.qrc
|
||||
|
||||
HEADERS += \
|
||||
settings.hh \
|
||||
# mynetworkmanager.hh \
|
||||
qmlutils.hh
|
||||
|
||||
SOURCES += main.cpp \
|
||||
settings.cpp \
|
||||
# mynetworkmanager.cpp \
|
||||
qmlutils.cpp
|
||||
|
||||
OTHER_FILES += rpm/harbour-ttrss.spec \
|
||||
rpm/harbour-ttrss.yaml \
|
||||
$$files(rpm/*)
|
||||
|
||||
BIN
images/harbour-ttrss.png
Normal file
BIN
images/harbour-ttrss.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8 KiB |
BIN
images/sailfish.xcf
Normal file
BIN
images/sailfish.xcf
Normal file
Binary file not shown.
66
main.cpp
66
main.cpp
|
|
@ -1,16 +1,44 @@
|
|||
//Copyright Hauke Schade, 2012-2013
|
||||
//
|
||||
//This file is part of TTRss.
|
||||
//
|
||||
//TTRss is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the
|
||||
//Free Software Foundation, either version 2 of the License, or (at your option) any later version.
|
||||
//TTRss is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
//You should have received a copy of the GNU General Public License along with TTRss (on a Maemo/Meego system there is a copy
|
||||
//in /usr/share/common-licenses. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
#if defined(Q_OS_SAILFISH)
|
||||
#include <QGuiApplication>
|
||||
#include <sailfishapp.h>
|
||||
#ifdef QT_QML_DEBUG
|
||||
#include <QtQuick>
|
||||
#endif
|
||||
#else
|
||||
#include <QtGui/QApplication>
|
||||
#include <QtDeclarative/QDeclarativeContext>
|
||||
#include "qmlapplicationviewer.h"
|
||||
#endif
|
||||
|
||||
#include <QTranslator>
|
||||
#include <QLocale>
|
||||
#include <QtGui/QApplication>
|
||||
#include <QtDeclarative/QDeclarativeContext>
|
||||
#include "qmlapplicationviewer.h"
|
||||
|
||||
#include "settings.hh"
|
||||
#include "mynetworkmanager.hh"
|
||||
#include "qmlutils.hh"
|
||||
|
||||
#if defined(Q_OS_SAILFISH)
|
||||
#else
|
||||
#include "mynetworkmanager.hh"
|
||||
#endif
|
||||
|
||||
Q_DECL_EXPORT int main(int argc, char *argv[])
|
||||
{
|
||||
#if defined(Q_OS_SAILFISH)
|
||||
QGuiApplication *app = SailfishApp::application(argc, argv);
|
||||
#else
|
||||
QScopedPointer<QApplication> app(createApplication(argc, argv));
|
||||
#endif
|
||||
|
||||
app->setApplicationVersion(APP_VERSION);
|
||||
app->setApplicationName("ttrss");
|
||||
|
|
@ -29,19 +57,33 @@ Q_DECL_EXPORT int main(int argc, char *argv[])
|
|||
if (translator.load("qml-translation." + locale, ":/i18n"))
|
||||
app->installTranslator(&translator);
|
||||
|
||||
QmlApplicationViewer viewer;
|
||||
#if defined(Q_OS_SAILFISH)
|
||||
QQuickView* viewer = SailfishApp::createView();
|
||||
#else
|
||||
QmlApplicationViewer *viewer = new QmlApplicationViewer();
|
||||
viewer->setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
|
||||
|
||||
//QObject::connect(viewer.engine(), SIGNAL(quit()), viewer.data, SLOT(close()));
|
||||
viewer.setNetworkAccessManagerFactory(MyNetworkManager::instance());
|
||||
viewer.rootContext()->setContextProperty("network", MyNetworkManager::instance());
|
||||
viewer->setNetworkAccessManagerFactory(MyNetworkManager::instance());
|
||||
viewer->rootContext()->setContextProperty("network", MyNetworkManager::instance());
|
||||
#endif
|
||||
|
||||
viewer.rootContext()->setContextProperty("APP_VERSION", APP_VERSION);
|
||||
viewer->rootContext()->setContextProperty("APP_VERSION", APP_VERSION);
|
||||
|
||||
viewer.rootContext()->setContextProperty("QMLUtils", QMLUtils::instance());
|
||||
viewer.rootContext()->setContextProperty("settings", Settings::instance());
|
||||
viewer->rootContext()->setContextProperty("QMLUtils", QMLUtils::instance());
|
||||
viewer->rootContext()->setContextProperty("settings", Settings::instance());
|
||||
|
||||
viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
|
||||
#if defined(Q_OS_SAILFISH)
|
||||
viewer->setSource(SailfishApp::pathTo("qml/sailfish/harbour-ttrss.qml"));
|
||||
#else
|
||||
viewer.setMainQmlFile(QLatin1String("qml/harmattan/main.qml"));
|
||||
viewer.showExpanded();
|
||||
#endif
|
||||
|
||||
#if defined(Q_OS_SAILFISH)
|
||||
viewer->show();
|
||||
#else
|
||||
viewer->showExpanded();
|
||||
#endif
|
||||
|
||||
return app->exec();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,16 @@
|
|||
// import QtQuick 1.0 // to target S60 5th Edition or Maemo 5
|
||||
import QtQuick 1.1
|
||||
import com.nokia.meego 1.0
|
||||
//Copyright Hauke Schade, 2012-2013
|
||||
//
|
||||
//This file is part of TTRss.
|
||||
//
|
||||
//TTRss is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the
|
||||
//Free Software Foundation, either version 2 of the License, or (at your option) any later version.
|
||||
//TTRss is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
//You should have received a copy of the GNU General Public License along with TTRss (on a Maemo/Meego system there is a copy
|
||||
//in /usr/share/common-licenses. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
//import QtQuick 1.1 // harmattan
|
||||
import QtQuick 2.0 // sailfish
|
||||
|
||||
ListModel {
|
||||
id: root
|
||||
|
|
|
|||
|
|
@ -9,7 +9,8 @@
|
|||
//You should have received a copy of the GNU General Public License along with TTRss (on a Maemo/Meego system there is a copy
|
||||
//in /usr/share/common-licenses. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
import QtQuick 1.1
|
||||
//import QtQuick 1.1 // harmattan
|
||||
import QtQuick 2.0 // sailfish
|
||||
|
||||
QtObject{
|
||||
id: constant
|
||||
|
|
@ -1,6 +1,16 @@
|
|||
// import QtQuick 1.0 // to target S60 5th Edition or Maemo 5
|
||||
import QtQuick 1.1
|
||||
import com.nokia.meego 1.0
|
||||
//Copyright Hauke Schade, 2012-2013
|
||||
//
|
||||
//This file is part of TTRss.
|
||||
//
|
||||
//TTRss is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the
|
||||
//Free Software Foundation, either version 2 of the License, or (at your option) any later version.
|
||||
//TTRss is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
//You should have received a copy of the GNU General Public License along with TTRss (on a Maemo/Meego system there is a copy
|
||||
//in /usr/share/common-licenses. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
//import QtQuick 1.1 // harmattan
|
||||
import QtQuick 2.0 // sailfish
|
||||
|
||||
ListModel {
|
||||
id: root
|
||||
|
|
|
|||
|
|
@ -1,6 +1,16 @@
|
|||
// import QtQuick 1.0 // to target S60 5th Edition or Maemo 5
|
||||
import QtQuick 1.1
|
||||
import com.nokia.meego 1.0
|
||||
//Copyright Hauke Schade, 2012-2013
|
||||
//
|
||||
//This file is part of TTRss.
|
||||
//
|
||||
//TTRss is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the
|
||||
//Free Software Foundation, either version 2 of the License, or (at your option) any later version.
|
||||
//TTRss is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
//You should have received a copy of the GNU General Public License along with TTRss (on a Maemo/Meego system there is a copy
|
||||
//in /usr/share/common-licenses. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
//import QtQuick 1.1 // harmattan
|
||||
import QtQuick 2.0 // sailfish
|
||||
|
||||
ListModel {
|
||||
id: root
|
||||
|
|
|
|||
54
qml/ttrss/sailfish/cover/CoverPage.qml
Normal file
54
qml/ttrss/sailfish/cover/CoverPage.qml
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
/*
|
||||
Copyright (C) 2013 Jolla Ltd.
|
||||
Contact: Thomas Perl <thomas.perl@jollamobile.com>
|
||||
All rights reserved.
|
||||
|
||||
You may use this file under the terms of BSD license as follows:
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of the Jolla Ltd nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
import QtQuick 2.0
|
||||
import Sailfish.Silica 1.0
|
||||
|
||||
CoverBackground {
|
||||
Label {
|
||||
id: label
|
||||
anchors.centerIn: parent
|
||||
text: "My Cover"
|
||||
}
|
||||
|
||||
CoverActionList {
|
||||
id: coverAction
|
||||
|
||||
CoverAction {
|
||||
iconSource: "image://theme/icon-cover-next"
|
||||
}
|
||||
|
||||
CoverAction {
|
||||
iconSource: "image://theme/icon-cover-pause"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
139
qml/ttrss/sailfish/harbour-ttrss.qml
Normal file
139
qml/ttrss/sailfish/harbour-ttrss.qml
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
/*
|
||||
Copyright (C) 2013 Jolla Ltd.
|
||||
Contact: Thomas Perl <thomas.perl@jollamobile.com>
|
||||
All rights reserved.
|
||||
|
||||
You may use this file under the terms of BSD license as follows:
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of the Jolla Ltd nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
import QtQuick 2.0
|
||||
import Sailfish.Silica 1.0
|
||||
import "pages"
|
||||
import "../models/tinytinyrss.js" as TTRss
|
||||
import "../models" 1.0
|
||||
|
||||
ApplicationWindow
|
||||
{
|
||||
id: rootWindow
|
||||
initialPage: Component { MainPage { } }
|
||||
cover: Qt.resolvedUrl("cover/CoverPage.qml")
|
||||
|
||||
function getTTRSS() {
|
||||
return TTRss;
|
||||
}
|
||||
|
||||
property bool showAll: false
|
||||
|
||||
Constants{ id: constant }
|
||||
|
||||
CategoryModel {
|
||||
id: categories
|
||||
}
|
||||
FeedModel {
|
||||
id: feeds
|
||||
|
||||
onFeedUnreadChanged: {
|
||||
var op = function(x) { return x - oldAmount + feed.unreadcount }
|
||||
categories.updateUnreadCountForId(feed.categoryId, op)
|
||||
|
||||
// update the 'All Feeds' Category
|
||||
categories.updateUnreadCountForId(TTRss.constants['categories']['ALL'], op)
|
||||
|
||||
// if there is an 'all feed items' update that aswell
|
||||
if (feeds.count > 1) {
|
||||
var m = feeds.get(0)
|
||||
if (m.isCat) // just check to be sure
|
||||
feeds.setProperty(0, "unreadcount", op(m.unreadcount))
|
||||
}
|
||||
}
|
||||
}
|
||||
FeedItemModel {
|
||||
id: feedItems
|
||||
|
||||
onItemUnreadChanged: {
|
||||
var op = item.unread ?
|
||||
function(x) { return x + 1 } :
|
||||
function(x) { return x - 1 }
|
||||
|
||||
// update the feed's category
|
||||
feeds.updateUnreadCountForId(item.feedId, op)
|
||||
|
||||
// update special for all feeditems category
|
||||
categories.updateUnreadCountForId(
|
||||
TTRss.constants['categories']['SPECIAL'],
|
||||
op)
|
||||
|
||||
// if the item is new, update 'special feeds' for 'fresh articles'
|
||||
// TODO
|
||||
if (item.unread && false)
|
||||
categories.updateUnreadCountForId(
|
||||
TTRss.constants['categories']['SPECIAL'],
|
||||
op)
|
||||
|
||||
// if item was is starred/published, update special feeds aswell
|
||||
if (item.rss)
|
||||
categories.updateUnreadCountForId(
|
||||
TTRss.constants['categories']['SPECIAL'],
|
||||
op)
|
||||
if (item.marked)
|
||||
categories.updateUnreadCountForId(
|
||||
TTRss.constants['categories']['SPECIAL'],
|
||||
op)
|
||||
|
||||
// maybe check if currently viewing special feeds and update published
|
||||
// not nesseccary because this is updated by mark unread
|
||||
}
|
||||
onItemPublishedChanged: {
|
||||
var op = item.rss ?
|
||||
function(x) { return x + 1 } :
|
||||
function(x) { return x - 1 }
|
||||
|
||||
// if the item is unread, update 'special feeds'
|
||||
if (item.unread)
|
||||
categories.updateUnreadCountForId(
|
||||
TTRss.constants['categories']['SPECIAL'],
|
||||
op)
|
||||
|
||||
// maybe check if currently viewing special feeds and update published
|
||||
// not nesseccary because this is updated by mark unread
|
||||
}
|
||||
onItemStarChanged: {
|
||||
var op = item.marked ?
|
||||
function(x) { return x + 1 } :
|
||||
function(x) { return x - 1 }
|
||||
|
||||
// if the item is unread, update 'special feeds'
|
||||
if (item.unread)
|
||||
categories.updateUnreadCountForId(
|
||||
TTRss.constants['categories']['SPECIAL'],
|
||||
op)
|
||||
|
||||
// maybe check if currently viewing special feeds and update starred
|
||||
// not nesseccary because this is updated by mark unread
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
34
qml/ttrss/sailfish/pages/AboutItem.qml
Normal file
34
qml/ttrss/sailfish/pages/AboutItem.qml
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
//Copyright Hauke Schade, 2012-2013
|
||||
//
|
||||
//This file is part of TTRss.
|
||||
//
|
||||
//TTRss is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the
|
||||
//Free Software Foundation, either version 2 of the License, or (at your option) any later version.
|
||||
//TTRss is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
//You should have received a copy of the GNU General Public License along with TTRss (on a Maemo/Meego system there is a copy
|
||||
//in /usr/share/common-licenses. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
import QtQuick 2.0
|
||||
import Sailfish.Silica 1.0
|
||||
|
||||
MenuItem {
|
||||
text: qsTr("About")
|
||||
onClicked: {
|
||||
var params = {
|
||||
title : 'ttrss ' + APP_VERSION,
|
||||
iconSource: Qt.resolvedUrl('/usr/share/icons/hicolor/86x86/apps/harbour-ttrss.png'),
|
||||
// slogan : '',
|
||||
donatebutton: qsTr("Buy me a beer"),
|
||||
donateurl: constant.donateUrl,
|
||||
text: qsTr("Author: %1").arg("Hauke Schade") + "<br/>"
|
||||
+ qsTr("Thanks to:") + " "
|
||||
+ "Francois Cattin, Jakub Kožíšek, Alberto Mardegan, gwmgdemj, equeim",
|
||||
homepageurl: constant.sourceRepoSite,
|
||||
issuetrackertext: qsTr("If you encounter bugs or have feature requests, please visit the Issue Tracker"),
|
||||
issuetrackerurl: constant.issueTrackerUrl
|
||||
}
|
||||
|
||||
pageStack.push(Qt.resolvedUrl("AboutPage.qml"), params);
|
||||
}
|
||||
}
|
||||
176
qml/ttrss/sailfish/pages/AboutPage.qml
Normal file
176
qml/ttrss/sailfish/pages/AboutPage.qml
Normal file
|
|
@ -0,0 +1,176 @@
|
|||
//Copyright Hauke Schade, 2012-2013
|
||||
//
|
||||
//This file is part of TTRss.
|
||||
//
|
||||
//TTRss is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the
|
||||
//Free Software Foundation, either version 2 of the License, or (at your option) any later version.
|
||||
//TTRss is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
//You should have received a copy of the GNU General Public License along with TTRss (on a Maemo/Meego system there is a copy
|
||||
//in /usr/share/common-licenses. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
import QtQuick 2.0
|
||||
import Sailfish.Silica 1.0
|
||||
|
||||
Page {
|
||||
id: aboutPage
|
||||
property alias iconSource: icon.source
|
||||
property alias title: title.title
|
||||
property alias slogan: slogan.text
|
||||
|
||||
property alias donatetext: donatetext.text
|
||||
property alias donatebutton: donatebutton.text
|
||||
property string donateurl: donate.text
|
||||
|
||||
property alias homepagebutton: homepagebutton.text
|
||||
property string homepageurl: ''
|
||||
|
||||
property alias text: content.text
|
||||
|
||||
property alias issuetrackerbutton: issuetrackerbutton.text
|
||||
property alias issuetrackertext: issuetrackertext.text
|
||||
property string issuetrackerurl: ''
|
||||
|
||||
|
||||
SilicaFlickable {
|
||||
anchors.fill: parent
|
||||
contentHeight: aboutContainer.height + 10
|
||||
contentWidth: parent.width
|
||||
|
||||
PullDownMenu {
|
||||
MenuItem {
|
||||
text: qsTr("License")
|
||||
onClicked: {
|
||||
var params = {
|
||||
title: qsTr("License"),
|
||||
iconSource: iconSource,
|
||||
text: "This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.<br>
|
||||
<br>
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.<br>
|
||||
<br>
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <a href=\"http://www.gnu.org/licenses/\">http://www.gnu.org/licenses/</a>."
|
||||
}
|
||||
pageStack.push("TextPage.qml", params)
|
||||
}
|
||||
}
|
||||
MenuItem {
|
||||
text: qsTr("Privacy Policy")
|
||||
onClicked: {
|
||||
var params = {
|
||||
title: qsTr("Privacy Policy"),
|
||||
iconSource: iconSource,
|
||||
text: "ttrss will collect the login information you give at startup and nothing more.
|
||||
Your login data is stored in a configuration file on your device and nowhere else.
|
||||
ttrss will only use it to establish connections to the available services and/or servers.
|
||||
The login data is not given to any third party and is not used for any other purpose than the functions of ttrss.
|
||||
<br><br>
|
||||
If you have any questions, concerns, or comments about our privacy policy you may contact us via:<br>
|
||||
<a href='mailto:cnlpete@cnlpete.de'>cnlpete@cnlpete.de</a>"
|
||||
}
|
||||
pageStack.push("TextPage.qml", params)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
id: aboutContainer
|
||||
width: parent.width
|
||||
height: aboutColumn.height
|
||||
|
||||
Column {
|
||||
id: aboutColumn
|
||||
|
||||
anchors {
|
||||
left: parent.left
|
||||
top: parent.top
|
||||
right: parent.right
|
||||
margins: 10
|
||||
}
|
||||
|
||||
spacing: 10
|
||||
|
||||
PageHeader {
|
||||
id: title
|
||||
}
|
||||
|
||||
Image {
|
||||
id: icon
|
||||
source: ''
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
}
|
||||
|
||||
Label {
|
||||
id: slogan
|
||||
text: ''
|
||||
visible: text !== ''
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
}
|
||||
|
||||
Label {
|
||||
id: donatetext
|
||||
text: ''
|
||||
visible: text !== ''
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
}
|
||||
Button {
|
||||
id: donatebutton
|
||||
width: parent.width
|
||||
text: qsTr("Donate")
|
||||
visible: donateurl !== ''
|
||||
onClicked: {
|
||||
Qt.openUrlExternally(donateurl)
|
||||
}
|
||||
}
|
||||
|
||||
Button {
|
||||
id: homepagebutton
|
||||
width: parent.width
|
||||
text: qsTr("Homepage")
|
||||
visible: homepageurl !== ''
|
||||
onClicked: {
|
||||
Qt.openUrlExternally(homepageurl)
|
||||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
width: 1
|
||||
height: 50
|
||||
}
|
||||
Label {
|
||||
id: content
|
||||
text: ''
|
||||
width: aboutPage.width
|
||||
wrapMode: Text.WordWrap
|
||||
}
|
||||
Item {
|
||||
width: 1
|
||||
height: 50
|
||||
}
|
||||
|
||||
Label {
|
||||
id: issuetrackertext
|
||||
text: ''
|
||||
visible: text !== ''
|
||||
width: aboutPage.width
|
||||
wrapMode: Text.WordWrap
|
||||
}
|
||||
Button {
|
||||
id: issuetrackerbutton
|
||||
width: parent.width
|
||||
text: qsTr("Issuetracker")
|
||||
visible: issuetrackerurl !== ''
|
||||
onClicked: {
|
||||
Qt.openUrlExternally(issuetrackerurl)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
62
qml/ttrss/sailfish/pages/Categories.qml
Normal file
62
qml/ttrss/sailfish/pages/Categories.qml
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
//Copyright Hauke Schade, 2012-2013
|
||||
//
|
||||
//This file is part of TTRss.
|
||||
//
|
||||
//TTRss is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the
|
||||
//Free Software Foundation, either version 2 of the License, or (at your option) any later version.
|
||||
//TTRss is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
//You should have received a copy of the GNU General Public License along with TTRss (on a Maemo/Meego system there is a copy
|
||||
//in /usr/share/common-licenses. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
import QtQuick 2.0
|
||||
import Sailfish.Silica 1.0
|
||||
|
||||
Page {
|
||||
id: categoriesPage
|
||||
|
||||
SilicaListView {
|
||||
id: listView
|
||||
anchors.fill: parent
|
||||
|
||||
model: categories
|
||||
|
||||
PullDownMenu {
|
||||
AboutItem {}
|
||||
SettingsItem {}
|
||||
ToggleShowAllItem {
|
||||
onUpdateView: {
|
||||
categories.update()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
delegate: CategoryDelegate {
|
||||
onClicked: {
|
||||
categories.selectedIndex = index
|
||||
showCategory(model)
|
||||
}
|
||||
}
|
||||
|
||||
header: PageHeader {
|
||||
title: qsTr("Tiny Tiny RSS Reader")
|
||||
}
|
||||
ViewPlaceholder {
|
||||
enabled: listView.count == 0
|
||||
text: network.loading ?
|
||||
qsTr("Loading") :
|
||||
rootWindow.showAll ? qsTr("No categories to display") : qsTr("No categories have unread items")
|
||||
}
|
||||
ScrollDecorator {
|
||||
flickable: listView
|
||||
}
|
||||
}
|
||||
|
||||
function showCategory(categoryModel) {
|
||||
if(categoryModel != null) {
|
||||
pageStack.push("Feeds.qml", {
|
||||
category: categoryModel
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
50
qml/ttrss/sailfish/pages/CategoryDelegate.qml
Normal file
50
qml/ttrss/sailfish/pages/CategoryDelegate.qml
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
//Copyright Hauke Schade, 2012-2013
|
||||
//
|
||||
//This file is part of TTRss.
|
||||
//
|
||||
//TTRss is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the
|
||||
//Free Software Foundation, either version 2 of the License, or (at your option) any later version.
|
||||
//TTRss is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
//You should have received a copy of the GNU General Public License along with TTRss (on a Maemo/Meego system there is a copy
|
||||
//in /usr/share/common-licenses. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
import QtQuick 2.0
|
||||
import Sailfish.Silica 1.0
|
||||
|
||||
ListItem {
|
||||
id: listItem
|
||||
|
||||
signal clicked
|
||||
property alias pressed: mouseArea.pressed
|
||||
|
||||
contentHeight: Theme.itemSizeMedium
|
||||
width: parent.width
|
||||
|
||||
Label {
|
||||
text: model.title
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: parent.left
|
||||
anchors.margins: Theme.paddingMedium
|
||||
anchors.right: bubble.left
|
||||
truncationMode: TruncationMode.Elide
|
||||
font.weight: Font.Bold
|
||||
font.pixelSize: Theme.fontSizeLarge
|
||||
color: listItem.highlighted ? Theme.highlightColor : ((model.unreadcount > 0) ? Theme.primaryColor : Theme.secondaryColor)
|
||||
}
|
||||
Label {
|
||||
id: bubble
|
||||
text: model.unreadcount
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.right: parent.right
|
||||
anchors.margins: Theme.paddingMedium
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
color: listItem.highlighted ? Theme.highlightColor : ((model.unreadcount > 0) ? Theme.primaryColor : Theme.secondaryColor)
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
id: mouseArea
|
||||
anchors.fill: parent
|
||||
onClicked: listItem.clicked()
|
||||
}
|
||||
}
|
||||
89
qml/ttrss/sailfish/pages/FeedDelegate.qml
Normal file
89
qml/ttrss/sailfish/pages/FeedDelegate.qml
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
//Copyright Hauke Schade, 2012-2013
|
||||
//
|
||||
//This file is part of TTRss.
|
||||
//
|
||||
//TTRss is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the
|
||||
//Free Software Foundation, either version 2 of the License, or (at your option) any later version.
|
||||
//TTRss is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
//You should have received a copy of the GNU General Public License along with TTRss (on a Maemo/Meego system there is a copy
|
||||
//in /usr/share/common-licenses. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
import QtQuick 2.0
|
||||
import Sailfish.Silica 1.0
|
||||
|
||||
ListItem {
|
||||
id: listItem
|
||||
|
||||
signal clicked
|
||||
property alias pressed: mouseArea.pressed
|
||||
|
||||
contentHeight: Theme.itemSizeSmall
|
||||
width: parent.width
|
||||
menu: contextMenu
|
||||
|
||||
Image {
|
||||
id: icon
|
||||
sourceSize.height: 80
|
||||
sourceSize.width: 80
|
||||
asynchronous: true
|
||||
width: 60
|
||||
height:60
|
||||
anchors.left: parent.left
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.margins: Theme.paddingMedium
|
||||
|
||||
source: model.icon
|
||||
onStatusChanged: {
|
||||
if (status === Image.Error)
|
||||
feeds.unsetIcon(index)
|
||||
}
|
||||
|
||||
visible: settings.displayIcons && model.icon != ''
|
||||
}
|
||||
|
||||
Label {
|
||||
text: model.title
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: icon.visible ? icon.right : parent.left
|
||||
anchors.margins: Theme.paddingMedium
|
||||
anchors.right: bubble.left
|
||||
truncationMode: TruncationMode.Elide
|
||||
font.weight: Font.Bold
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
color: listItem.highlighted ? Theme.highlightColor : ((model.unreadcount > 0) ? Theme.primaryColor : Theme.secondaryColor)
|
||||
}
|
||||
Label {
|
||||
id: bubble
|
||||
text: model.unreadcount
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.right: parent.right
|
||||
anchors.margins: Theme.paddingMedium
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
color: listItem.highlighted ? Theme.highlightColor : ((model.unreadcount > 0) ? Theme.primaryColor : Theme.secondaryColor)
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
id: mouseArea
|
||||
anchors.fill: parent
|
||||
onClicked: listItem.clicked()
|
||||
}
|
||||
|
||||
Component {
|
||||
id: contextMenu
|
||||
ContextMenu {
|
||||
MenuItem {
|
||||
text: qsTr("Mark all read")
|
||||
onClicked: {
|
||||
feeds.catchUp()
|
||||
} }
|
||||
// MenuItem {
|
||||
// text: qsTr("Unsubscribe")
|
||||
// enabled: feedMenu.feedId >= 0
|
||||
// onClicked: {
|
||||
// var ttrss = rootWindow.getTTRSS()
|
||||
// ttrss.unsubscribe(feedMenu.feedId, function() { feeds.update() })
|
||||
// } }
|
||||
}
|
||||
}
|
||||
}
|
||||
109
qml/ttrss/sailfish/pages/FeedItemDelegate.qml
Normal file
109
qml/ttrss/sailfish/pages/FeedItemDelegate.qml
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
//Copyright Hauke Schade, 2012-2013
|
||||
//
|
||||
//This file is part of TTRss.
|
||||
//
|
||||
//TTRss is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the
|
||||
//Free Software Foundation, either version 2 of the License, or (at your option) any later version.
|
||||
//TTRss is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
//You should have received a copy of the GNU General Public License along with TTRss (on a Maemo/Meego system there is a copy
|
||||
//in /usr/share/common-licenses. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
import QtQuick 2.0
|
||||
import Sailfish.Silica 1.0
|
||||
|
||||
ListItem {
|
||||
id: listItem
|
||||
|
||||
signal clicked
|
||||
property alias pressed: mouseArea.pressed
|
||||
|
||||
contentHeight: Theme.itemSizeMedium
|
||||
width: parent.width
|
||||
|
||||
Row {
|
||||
spacing: Theme.paddingMedium
|
||||
anchors.fill: parent
|
||||
anchors.leftMargin: icon.visible ? icon.width + Theme.paddingMedium : 0
|
||||
Image {
|
||||
source: "../../resources/ic_star_enabled.png"
|
||||
visible: model.marked
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
opacity: 0.5
|
||||
}
|
||||
Image {
|
||||
source: "../../resources/ic_rss_enabled.png"
|
||||
visible: model.rss
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
opacity: 0.5
|
||||
}
|
||||
}
|
||||
|
||||
Row {
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.paddingMedium
|
||||
spacing: Theme.paddingMedium
|
||||
clip: true
|
||||
|
||||
Image {
|
||||
id: icon
|
||||
sourceSize.height: 80
|
||||
sourceSize.width: 80
|
||||
asynchronous: true
|
||||
width: 60
|
||||
height: 60
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
source: feed.isCat ? model.icon : ''
|
||||
|
||||
visible: settings.displayIcons && model.icon != '' && feed.isCat && status == Image.Ready
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width
|
||||
Label {
|
||||
id: mainText
|
||||
width: parent.width
|
||||
text: model.title
|
||||
font.weight: Font.Bold
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
color: listItem.highlighted ? Theme.highlightColor : ((model.unreadcount > 0) ? Theme.primaryColor : Theme.secondaryColor)
|
||||
elide: Text.ElideRight
|
||||
truncationMode: TruncationMode.Elide
|
||||
}
|
||||
|
||||
Label {
|
||||
id: subText
|
||||
width: parent.width
|
||||
text: model.subtitle
|
||||
font.weight: Font.Light
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: listItem.highlighted ? Theme.highlightColor : ((model.unreadcount > 0) ? Theme.primaryColor : Theme.secondaryColor)
|
||||
maximumLineCount: 4
|
||||
elide: Text.ElideRight
|
||||
truncationMode: TruncationMode.Elide
|
||||
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
|
||||
visible: text != ""
|
||||
}
|
||||
// Row {
|
||||
// id: myrow
|
||||
// property variant mymod: model
|
||||
// spacing: constant.paddingMedium
|
||||
|
||||
// Repeater {
|
||||
// model: myrow.mymod.labels
|
||||
// LabelLabel {
|
||||
// label: myrow.mymod.labels.get(index)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
id: mouseArea
|
||||
anchors.fill: parent
|
||||
onClicked: listItem.clicked();
|
||||
onPressAndHold: listItem.pressAndHold();
|
||||
}
|
||||
}
|
||||
91
qml/ttrss/sailfish/pages/FeedItems.qml
Normal file
91
qml/ttrss/sailfish/pages/FeedItems.qml
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
//Copyright Hauke Schade, 2012-2013
|
||||
//
|
||||
//This file is part of TTRss.
|
||||
//
|
||||
//TTRss is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the
|
||||
//Free Software Foundation, either version 2 of the License, or (at your option) any later version.
|
||||
//TTRss is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
//You should have received a copy of the GNU General Public License along with TTRss (on a Maemo/Meego system there is a copy
|
||||
//in /usr/share/common-licenses. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
import QtQuick 2.0
|
||||
import Sailfish.Silica 1.0
|
||||
|
||||
Page {
|
||||
id: feeditemsPage
|
||||
property variant feed
|
||||
|
||||
Component.onCompleted: {
|
||||
feedItems.feed = feeditemsPage.feed
|
||||
feedItems.hasMoreItems = false
|
||||
feedItems.continuation = 0
|
||||
feedItems.clear()
|
||||
feedItems.update()
|
||||
}
|
||||
|
||||
SilicaListView {
|
||||
id: listView
|
||||
anchors.fill: parent
|
||||
model: feedItems
|
||||
|
||||
PullDownMenu {
|
||||
AboutItem {}
|
||||
SettingsItem {}
|
||||
ToggleShowAllItem {
|
||||
onUpdateView: {
|
||||
feedItems.continuation = 0
|
||||
feedItems.hasMoreItems = false
|
||||
feedItems.clear()
|
||||
feedItems.update()
|
||||
}
|
||||
}
|
||||
MenuItem {
|
||||
text: qsTr('Mark all read')
|
||||
onClicked: {
|
||||
feedItems.catchUp()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
section.delegate: SectionHeader {}
|
||||
section.property: "date"
|
||||
|
||||
delegate: FeedItemDelegate {
|
||||
onClicked: {
|
||||
feedItems.selectedIndex = index
|
||||
pageStack.push("FeedItem.qml", { isCat: feed.isCat })
|
||||
}
|
||||
}
|
||||
|
||||
footer: Button {
|
||||
id: foot
|
||||
text: qsTr("Load more")
|
||||
visible: settings.feeditemsOrder === 0 && feedItems.hasMoreItems
|
||||
height: settings.feeditemsOrder === 0 && feedItems.hasMoreItems ? 51 : 0
|
||||
width: parent.width
|
||||
onClicked: feedItems.update()
|
||||
}
|
||||
|
||||
header: PageHeader {
|
||||
title: feed.title
|
||||
}
|
||||
ViewPlaceholder {
|
||||
enabled: listView.count == 0
|
||||
text: network.loading ?
|
||||
qsTr("Loading") :
|
||||
rootWindow.showAll ? qsTr("No items in feed") : qsTr("No unread items in feed")
|
||||
}
|
||||
ScrollDecorator {
|
||||
flickable: listView
|
||||
}
|
||||
}
|
||||
|
||||
function showFeed(feedModel) {
|
||||
if(feedModel != null) {
|
||||
pageStack.push("FeedItems.qml", {
|
||||
feed: feedModel
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
68
qml/ttrss/sailfish/pages/Feeds.qml
Normal file
68
qml/ttrss/sailfish/pages/Feeds.qml
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
//Copyright Hauke Schade, 2012-2013
|
||||
//
|
||||
//This file is part of TTRss.
|
||||
//
|
||||
//TTRss is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the
|
||||
//Free Software Foundation, either version 2 of the License, or (at your option) any later version.
|
||||
//TTRss is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
//You should have received a copy of the GNU General Public License along with TTRss (on a Maemo/Meego system there is a copy
|
||||
//in /usr/share/common-licenses. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
import QtQuick 2.0
|
||||
import Sailfish.Silica 1.0
|
||||
|
||||
Page {
|
||||
id: feedsPage
|
||||
property variant category
|
||||
|
||||
Component.onCompleted: {
|
||||
feeds.category = feedsPage.category
|
||||
feeds.clear()
|
||||
feeds.update()
|
||||
}
|
||||
|
||||
SilicaListView {
|
||||
id: listView
|
||||
anchors.fill: parent
|
||||
model: feeds
|
||||
|
||||
PullDownMenu {
|
||||
AboutItem {}
|
||||
SettingsItem {}
|
||||
ToggleShowAllItem {
|
||||
onUpdateView: {
|
||||
feeds.update()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
delegate: FeedDelegate {
|
||||
onClicked: {
|
||||
feeds.selectedIndex = index
|
||||
showFeed(model)
|
||||
}
|
||||
}
|
||||
|
||||
header: PageHeader {
|
||||
title: category.title
|
||||
}
|
||||
ViewPlaceholder {
|
||||
enabled: listView.count == 0
|
||||
text: network.loading ?
|
||||
qsTr("Loading") :
|
||||
rootWindow.showAll ? qsTr("No feeds in category") : qsTr("Category has no unread items")
|
||||
}
|
||||
ScrollDecorator {
|
||||
flickable: listView
|
||||
}
|
||||
}
|
||||
|
||||
function showFeed(feedModel) {
|
||||
if(feedModel != null) {
|
||||
pageStack.push("FeedItems.qml", {
|
||||
feed: feedModel
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
204
qml/ttrss/sailfish/pages/MainPage.qml
Normal file
204
qml/ttrss/sailfish/pages/MainPage.qml
Normal file
|
|
@ -0,0 +1,204 @@
|
|||
//Copyright Hauke Schade, 2012-2013
|
||||
//
|
||||
//This file is part of TTRss.
|
||||
//
|
||||
//TTRss is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the
|
||||
//Free Software Foundation, either version 2 of the License, or (at your option) any later version.
|
||||
//TTRss is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
//You should have received a copy of the GNU General Public License along with TTRss (on a Maemo/Meego system there is a copy
|
||||
//in /usr/share/common-licenses. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
import QtQuick 2.0
|
||||
import Sailfish.Silica 1.0
|
||||
|
||||
Page {
|
||||
SilicaFlickable {
|
||||
contentHeight: contentcontainer.height
|
||||
contentWidth: parent.width
|
||||
anchors.fill: parent
|
||||
|
||||
PullDownMenu {
|
||||
AboutItem {}
|
||||
SettingsItem {}
|
||||
MenuItem {
|
||||
text: qsTr("No Account Yet?")
|
||||
onClicked: {
|
||||
rootWindow.openFile(Qt.openUrlExternally("http://tt-rss.org/redmine/projects/tt-rss/wiki"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
anchors.margins: Theme.paddingLarge
|
||||
Column {
|
||||
id: contentcontainer
|
||||
width: 350
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
|
||||
Image {
|
||||
width: 256
|
||||
height: 256
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
source: "../../resources/ttrss256.png"
|
||||
|
||||
anchors.bottomMargin: Theme.paddingLarge
|
||||
}
|
||||
|
||||
Label {
|
||||
id: serverLabel
|
||||
text: qsTr("Server:")
|
||||
width: parent.width
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
}
|
||||
TextField {
|
||||
id: server
|
||||
text: ""
|
||||
width: parent.width
|
||||
// enabled: !network.loading
|
||||
}
|
||||
Label {
|
||||
id: usernameLabel
|
||||
text: qsTr("Username:")
|
||||
width: parent.width
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
}
|
||||
TextField {
|
||||
id: username
|
||||
text: ""
|
||||
width: parent.width
|
||||
// enabled: !network.loading
|
||||
}
|
||||
Label {
|
||||
id: passwordLabel
|
||||
text: qsTr("Password:")
|
||||
width: parent.width
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
}
|
||||
TextField {
|
||||
id: password
|
||||
echoMode: TextInput.Password
|
||||
width: parent.width
|
||||
// enabled: !network.loading
|
||||
}
|
||||
Button {
|
||||
id: loginButton
|
||||
text: qsTr("Login")
|
||||
width: parent.width
|
||||
onClicked: {
|
||||
// check the servername for httpauth data and set/extract those
|
||||
var httpauthregex = /(https?:\/\/)?(\w+):(\w+)@(\w.+)/
|
||||
var servername = server.text
|
||||
var regexres = servername.match(httpauthregex)
|
||||
if (regexres !== null) {
|
||||
server.text = (regexres[1]?regexres[1]:'') + regexres[4]
|
||||
settings.httpauthusername = regexres[2]
|
||||
settings.httpauthpassword = regexres[3]
|
||||
}
|
||||
|
||||
settings.servername = server.text
|
||||
settings.username = username.text
|
||||
settings.password = password.text
|
||||
|
||||
startLogin();
|
||||
}
|
||||
// enabled: !network.loading
|
||||
}
|
||||
Button {
|
||||
id: clearButton
|
||||
text: qsTr("Clear")
|
||||
width: parent.width
|
||||
onClicked: {
|
||||
server.text = ''
|
||||
username.text = ''
|
||||
password.text = ''
|
||||
|
||||
settings.httpauthusername = ''
|
||||
settings.httpauthpassword = ''
|
||||
settings.servername = server.text
|
||||
settings.username = username.text
|
||||
settings.password = password.text
|
||||
}
|
||||
// enabled: !network.loading
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
BusyIndicator {
|
||||
id: busyindicator1
|
||||
visible: false //network.loading
|
||||
running: visible
|
||||
anchors {
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
size: BusyIndicatorSize.Large
|
||||
}
|
||||
|
||||
function enableLoginBox(focus) {
|
||||
if(focus) {
|
||||
password.forceActiveFocus();
|
||||
}
|
||||
}
|
||||
|
||||
function startLogin() {
|
||||
var ttrss = rootWindow.getTTRSS();
|
||||
ttrss.clearState();
|
||||
ttrss.setLoginDetails(username.text, password.text, server.text);
|
||||
if (settings.httpauthusername != '' && settings.httpauthpassword != '') {
|
||||
ttrss.setHttpAuthInfo(settings.httpauthusername, settings.httpauthpassword);
|
||||
console.log('doing http basic auth with username ' + settings.httpauthusername)
|
||||
}
|
||||
ttrss.login(loginSuccessfull);
|
||||
}
|
||||
|
||||
function loginSuccessfull(retcode, text) {
|
||||
if(retcode) {
|
||||
//login failed....don't autlogin
|
||||
settings.autologin = false
|
||||
|
||||
//Let the user know
|
||||
// loginErrorDialog.text = text;
|
||||
// loginErrorDialog.open();
|
||||
}
|
||||
else {
|
||||
//Login succeeded, auto login next Time
|
||||
settings.autologin = true
|
||||
rootWindow.getTTRSS().updateConfig(configSuccessfull);
|
||||
}
|
||||
}
|
||||
|
||||
function configSuccessfull(retcode, text) {
|
||||
if(retcode) {
|
||||
//Let the user know
|
||||
// loginErrorDialog.text = text;
|
||||
// loginErrorDialog.open();
|
||||
}
|
||||
else {
|
||||
categories.update()
|
||||
//Now show the categories View
|
||||
if (settings.useAllFeedsOnStartup) {
|
||||
var ttrss = rootWindow.getTTRSS()
|
||||
pageStack.replace("Feeds.qml", {
|
||||
category: {
|
||||
categoryId: ttrss.constants['categories']['ALL'],
|
||||
title: constant.allFeeds,
|
||||
unreadcount: 0
|
||||
}
|
||||
})
|
||||
}
|
||||
else
|
||||
pageStack.replace(Qt.resolvedUrl('Categories.qml'))
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
server.text = settings.servername
|
||||
username.text = settings.username
|
||||
password.text = settings.password
|
||||
|
||||
if(settings.autologin && settings.useAutologin)
|
||||
startLogin();
|
||||
}
|
||||
}
|
||||
20
qml/ttrss/sailfish/pages/SettingsItem.qml
Normal file
20
qml/ttrss/sailfish/pages/SettingsItem.qml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
//Copyright Hauke Schade, 2012-2013
|
||||
//
|
||||
//This file is part of TTRss.
|
||||
//
|
||||
//TTRss is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the
|
||||
//Free Software Foundation, either version 2 of the License, or (at your option) any later version.
|
||||
//TTRss is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
//You should have received a copy of the GNU General Public License along with TTRss (on a Maemo/Meego system there is a copy
|
||||
//in /usr/share/common-licenses. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
import QtQuick 2.0
|
||||
import Sailfish.Silica 1.0
|
||||
|
||||
MenuItem {
|
||||
text: qsTr("Settings")
|
||||
onClicked: {
|
||||
pageStack.push(Qt.resolvedUrl("Settings.qml"));
|
||||
}
|
||||
}
|
||||
45
qml/ttrss/sailfish/pages/ToggleShowAllItem.qml
Normal file
45
qml/ttrss/sailfish/pages/ToggleShowAllItem.qml
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
//Copyright Hauke Schade, 2012-2013
|
||||
//
|
||||
//This file is part of TTRss.
|
||||
//
|
||||
//TTRss is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the
|
||||
//Free Software Foundation, either version 2 of the License, or (at your option) any later version.
|
||||
//TTRss is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
//You should have received a copy of the GNU General Public License along with TTRss (on a Maemo/Meego system there is a copy
|
||||
//in /usr/share/common-licenses. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
import QtQuick 2.0
|
||||
import Sailfish.Silica 1.0
|
||||
|
||||
MenuItem {
|
||||
property bool showAll
|
||||
property bool notInitialAssignment: false
|
||||
signal updateView(bool showAll)
|
||||
|
||||
text: showAll ? qsTr("Show Unread Only") : qsTr("Show All")
|
||||
onClicked: {
|
||||
var ttrss = rootWindow.getTTRSS()
|
||||
ttrss.setShowAll(!showAll)
|
||||
showAll = !showAll
|
||||
}
|
||||
|
||||
onShowAllChanged: {
|
||||
// send the signal only if this is not the initial assignment
|
||||
if (notInitialAssignment)
|
||||
updateView(showAll)
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
var ttrss = rootWindow.getTTRSS()
|
||||
showAll = ttrss.getShowAll()
|
||||
notInitialAssignment = true
|
||||
}
|
||||
|
||||
onVisibleChanged: {
|
||||
if (visible && notInitialAssignment) {
|
||||
var ttrss = rootWindow.getTTRSS()
|
||||
showAll = ttrss.getShowAll()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
# checksum 0x5b42 version 0x70013
|
||||
# checksum 0xf003 version 0x90018
|
||||
# This file was generated by the Qt Quick Application wizard of Qt Creator.
|
||||
# The code below adds the QmlApplicationViewer to the project and handles the
|
||||
# activation of QML debugging.
|
||||
|
|
@ -22,7 +22,7 @@ contains(CONFIG,qdeclarative-boostable):contains(MEEGO_EDITION,harmattan) {
|
|||
DEFINES += HARMATTAN_BOOSTER
|
||||
}
|
||||
# This file was generated by an application wizard of Qt Creator.
|
||||
# The code below handles deployment to Symbian and Maemo, aswell as copying
|
||||
# The code below handles deployment to Android and Maemo, aswell as copying
|
||||
# of the application data to shadow build directories on desktop.
|
||||
# It is recommended not to modify this file, since newer versions of Qt Creator
|
||||
# may offer an updated version of it.
|
||||
|
|
@ -30,7 +30,11 @@ contains(CONFIG,qdeclarative-boostable):contains(MEEGO_EDITION,harmattan) {
|
|||
defineTest(qtcAddDeployment) {
|
||||
for(deploymentfolder, DEPLOYMENTFOLDERS) {
|
||||
item = item$${deploymentfolder}
|
||||
greaterThan(QT_MAJOR_VERSION, 4) {
|
||||
itemsources = $${item}.files
|
||||
} else {
|
||||
itemsources = $${item}.sources
|
||||
}
|
||||
$$itemsources = $$eval($${deploymentfolder}.source)
|
||||
itempath = $${item}.path
|
||||
$$itempath= $$eval($${deploymentfolder}.target)
|
||||
|
|
@ -41,9 +45,44 @@ for(deploymentfolder, DEPLOYMENTFOLDERS) {
|
|||
|
||||
MAINPROFILEPWD = $$PWD
|
||||
|
||||
symbian {
|
||||
isEmpty(ICON):exists($${TARGET}.svg):ICON = $${TARGET}.svg
|
||||
isEmpty(TARGET.EPOCHEAPSIZE):TARGET.EPOCHEAPSIZE = 0x20000 0x2000000
|
||||
android-no-sdk {
|
||||
for(deploymentfolder, DEPLOYMENTFOLDERS) {
|
||||
item = item$${deploymentfolder}
|
||||
itemfiles = $${item}.files
|
||||
$$itemfiles = $$eval($${deploymentfolder}.source)
|
||||
itempath = $${item}.path
|
||||
$$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
|
||||
export($$itemfiles)
|
||||
export($$itempath)
|
||||
INSTALLS += $$item
|
||||
}
|
||||
|
||||
target.path = /data/user/qt
|
||||
|
||||
export(target.path)
|
||||
INSTALLS += target
|
||||
} else:android {
|
||||
for(deploymentfolder, DEPLOYMENTFOLDERS) {
|
||||
item = item$${deploymentfolder}
|
||||
itemfiles = $${item}.files
|
||||
$$itemfiles = $$eval($${deploymentfolder}.source)
|
||||
itempath = $${item}.path
|
||||
$$itempath = /assets/$$eval($${deploymentfolder}.target)
|
||||
export($$itemfiles)
|
||||
export($$itempath)
|
||||
INSTALLS += $$item
|
||||
}
|
||||
|
||||
x86 {
|
||||
target.path = /libs/x86
|
||||
} else: armeabi-v7a {
|
||||
target.path = /libs/armeabi-v7a
|
||||
} else {
|
||||
target.path = /libs/armeabi
|
||||
}
|
||||
|
||||
export(target.path)
|
||||
INSTALLS += target
|
||||
} else:win32 {
|
||||
copyCommand =
|
||||
for(deploymentfolder, DEPLOYMENTFOLDERS) {
|
||||
|
|
@ -113,7 +152,11 @@ symbian {
|
|||
QMAKE_EXTRA_TARGETS += first copydeploymentfolders
|
||||
}
|
||||
}
|
||||
!isEmpty(target.path) {
|
||||
installPrefix = $${target.path}
|
||||
} else {
|
||||
installPrefix = /opt/$${TARGET}
|
||||
}
|
||||
for(deploymentfolder, DEPLOYMENTFOLDERS) {
|
||||
item = item$${deploymentfolder}
|
||||
itemfiles = $${item}.files
|
||||
|
|
@ -133,16 +176,16 @@ symbian {
|
|||
INSTALLS += icon desktopfile
|
||||
}
|
||||
|
||||
isEmpty(target.path) {
|
||||
target.path = $${installPrefix}/bin
|
||||
export(target.path)
|
||||
}
|
||||
INSTALLS += target
|
||||
}
|
||||
|
||||
export (ICON)
|
||||
export (INSTALLS)
|
||||
export (DEPLOYMENT)
|
||||
export (TARGET.EPOCHEAPSIZE)
|
||||
export (TARGET.CAPABILITY)
|
||||
export (LIBS)
|
||||
export (QMAKE_EXTRA_TARGETS)
|
||||
}
|
||||
|
|
|
|||
75
rpm/harbour-ttrss.spec
Normal file
75
rpm/harbour-ttrss.spec
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
#
|
||||
# Do NOT Edit the Auto-generated Part!
|
||||
# Generated by: spectacle version 0.27
|
||||
#
|
||||
|
||||
Name: harbour-ttrss
|
||||
|
||||
# >> macros
|
||||
# << macros
|
||||
|
||||
%{!?qtc_qmake:%define qtc_qmake %qmake}
|
||||
%{!?qtc_qmake5:%define qtc_qmake5 %qmake5}
|
||||
%{!?qtc_make:%define qtc_make make}
|
||||
%{?qtc_builddir:%define _builddir %qtc_builddir}
|
||||
Summary: The Tiny Tiny RSS Reader for Sailfish
|
||||
Version: 0.3.4
|
||||
Release: 1
|
||||
Group: Qt/Qt
|
||||
License: LICENSE
|
||||
URL: http://example.org/
|
||||
Source0: %{name}-%{version}.tar.bz2
|
||||
Source100: harbour-ttrss.yaml
|
||||
Requires: sailfishsilica-qt5 >= 0.10.9
|
||||
BuildRequires: pkgconfig(Qt5Quick)
|
||||
BuildRequires: pkgconfig(Qt5Qml)
|
||||
BuildRequires: pkgconfig(Qt5Core)
|
||||
BuildRequires: pkgconfig(sailfishapp) >= 0.0.10
|
||||
BuildRequires: desktop-file-utils
|
||||
|
||||
%description
|
||||
ttrss is a Tiny Tiny RSS Reader App for the Nokia N9 smart phone, written using Qt/QML. It uses the Tiny Tiny RSS JSON API.
|
||||
|
||||
%prep
|
||||
%setup -q -n %{name}-%{version}
|
||||
|
||||
# >> setup
|
||||
# << setup
|
||||
|
||||
%build
|
||||
# >> build pre
|
||||
# << build pre
|
||||
|
||||
%qtc_qmake5
|
||||
|
||||
%qtc_make %{?_smp_mflags}
|
||||
|
||||
# >> build post
|
||||
# << build post
|
||||
|
||||
%install
|
||||
rm -rf %{buildroot}
|
||||
# >> install pre
|
||||
# << install pre
|
||||
%qmake5_install
|
||||
|
||||
# >> install post
|
||||
# << install post
|
||||
|
||||
desktop-file-install --delete-original \
|
||||
--dir %{buildroot}%{_datadir}/applications \
|
||||
%{buildroot}%{_datadir}/applications/*.desktop
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,-)
|
||||
/usr/share/harbour-ttrss/qml
|
||||
%{_bindir}
|
||||
%{_datadir}/%{name}/qml
|
||||
%{_datadir}/applications/%{name}.desktop
|
||||
%{_datadir}/icons/hicolor/86x86/apps/%{name}.png
|
||||
/usr/bin
|
||||
/usr/share/harbour-ttrss
|
||||
/usr/share/applications
|
||||
/usr/share/icons/hicolor/86x86/apps
|
||||
# >> files
|
||||
# << files
|
||||
31
rpm/harbour-ttrss.yaml
Normal file
31
rpm/harbour-ttrss.yaml
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
Name: harbour-ttrss
|
||||
Summary: The Tiny Tiny RSS Reader for Sailfish
|
||||
Version: 0.3.4
|
||||
Release: 1
|
||||
Group: Qt/Qt
|
||||
URL: http://example.org/
|
||||
License: LICENSE
|
||||
Sources:
|
||||
- '%{name}-%{version}.tar.bz2'
|
||||
Description: |-
|
||||
ttrss is a Tiny Tiny RSS Reader App for the Nokia N9 smart phone, written using Qt/QML. It uses the Tiny Tiny RSS JSON API.
|
||||
Configure: none
|
||||
Builder: qtc5
|
||||
PkgConfigBR:
|
||||
- Qt5Quick
|
||||
- Qt5Qml
|
||||
- Qt5Core
|
||||
- sailfishapp >= 0.0.10
|
||||
Requires:
|
||||
- sailfishsilica-qt5 >= 0.10.9
|
||||
Files:
|
||||
- /usr/share/harbour-ttrss/qml
|
||||
- '%{_bindir}'
|
||||
- '%{_datadir}/%{name}/qml'
|
||||
- '%{_datadir}/applications/%{name}.desktop'
|
||||
- '%{_datadir}/icons/hicolor/86x86/apps/%{name}.png'
|
||||
- /usr/bin
|
||||
- /usr/share/harbour-ttrss
|
||||
- /usr/share/applications
|
||||
- /usr/share/icons/hicolor/86x86/apps
|
||||
PkgBR: []
|
||||
Loading…
Add table
Reference in a new issue