import QtQuick 1.0
import com.nokia.meego 1.0
-
PageStackWindow {
+ id: window
initialPage: categoryPage
+ signal longPressCategory(string catid)
+ signal longPressFeed(string key)
+ signal categoryReloadRequest()
+ signal feedReloadRequest()
+ signal addFileSignal(string fullname, string filename)
+
+ property string feedid
+ property string catid
+
+ function addFileNotification(fullname, filename) {
+ window.addFileSignal(fullname,filename)
+ }
+
+ function updateStarted() {
+ banner.show(qsTr("Update Started"))
+ }
+
+ function updateFinished() {
+ banner.show(qsTr("Updated Completed"))
+ }
+
+ onLongPressFeed: {
+ unsubscribeFeedMenu.key = key
+ unsubscribeFeedMenu.open()
+ }
+
+ onLongPressCategory: {
+ unsubscribeCategoryMenu.catid = catid
+ unsubscribeCategoryMenu.open()
+ }
+
ToolBarLayout {
id: commonTools
visible: false
id: myMenu
visualParent: pageStack
MenuLayout {
+ MenuItem { text: qsTr("Settings"); onClicked: {pageStack.push(settingsPage)} }
+ MenuItem { text: qsTr("Manage Subscriptions"); onClicked: { pageStack.push(addFeedPage) } }
+ MenuItem { text: qsTr("Update All Categories"); onClicked: controller.updateAll(); }
MenuItem { text: qsTr("About FeedingIt"); onClicked: query.open(); }
}
}
+ Menu {
+ id: myFeedsMenu
+ visualParent: pageStack
+ MenuLayout {
+ MenuItem { text: qsTr("Update All Feeds"); onClicked: controller.updateCategory(catid); }
+ //MenuItem { text: qsTr("About FeedingIt"); onClicked: query.open(); }
+ }
+ }
+
+ Menu {
+ id: myArticlesMenu
+ visualParent: pageStack
+ MenuLayout {
+ MenuItem { text: qsTr("Mark All As Read"); onClicked: controller.markAllAsRead(feedid); }
+ MenuItem { text: qsTr("Update Feed"); onClicked: controller.updateFeed(feedid); }
+ //MenuItem { text: qsTr("About FeedingIt"); onClicked: query.open(); }
+ }
+ }
+
+ Menu {
+ id: unsubscribeFeedMenu
+ visualParent: pageStack
+ property string key
+ MenuLayout {
+ //MenuItem { text: qsTr("Update"); onClicked: controller.updateFeed(parent.feedid); }
+ MenuItem { text: qsTr("Delete");
+ onClicked: {
+ feedConfirm.open()
+ unsubscribeFeedMenu.close()
+ }
+ }
+ }
+ QueryDialog {
+ id: feedConfirm
+ //icon: "common/images/feedingit.png"
+ //titleText: "Delete Feed?"
+ message: "Delete this feed?"
+ acceptButtonText: "OK"
+ rejectButtonText: "Cancel"
+ onAccepted: {
+ controller.removeFeed(unsubscribeFeedMenu.key);
+ window.feedReloadRequest()
+ }
+ }
+ }
+
+ Menu {
+ id: unsubscribeCategoryMenu
+ visualParent: pageStack
+ property string catid
+ MenuLayout {
+ //MenuItem { text: qsTr("Update"); onClicked: controller.updateFeed(parent.feedid); }
+ MenuItem { text: qsTr("Delete");
+ onClicked: {
+ categoryConfirm.open()
+ unsubscribeFeedMenu.close()
+ }
+ }
+ }
+ QueryDialog {
+ id: categoryConfirm
+ //icon: "common/images/feedingit.png"
+ //titleText: "Delete Feed?"
+ message: "Delete this category?"
+ acceptButtonText: "OK"
+ rejectButtonText: "Cancel"
+ onAccepted: {
+ controller.removeCategory(unsubscribeCategoryMenu.catid);
+ window.categoryReloadRequest()
+ }
+ }
+ }
+
QueryDialog {
id: query
icon: "common/images/feedingit.png"
acceptButtonText: "OK"
}
-// Page{
-// id: mainPage
-// Component.onCompleted: {
-// var main = Qt.createComponent("FeedingIt.qml");
-// main.createObject(mainPage);
-// }
-// }
-
Component {
id: categoryPage
Page {
tools: commonTools
Categories {
- onCategoryClicked: pageStack.push(feedsPage, {catid: cat})
+ id: categoriesItem
+ onCategoryClicked: {
+ window.catid = cat
+ pageStack.push(feedsPage)
+ }
+
+ }
+ Connections {
+ target: window
+ onCategoryReloadRequest: {
+ console.log("category reloaded")
+ categoriesItem.reload()
+ }
}
}
}
Component {
id: feedsPage
+
Page {
- tools: commonTools
- property string catid
+ tools: feedsTools
+ anchors.fill: parent
+ property string catid: window.catid
Feeds {
id: feedsItem
- onFeedClicked: pageStack.push(articlesPage, {feedid: feedid})
+ onFeedClicked: {
+ window.feedid = feedid
+ pageStack.push(articlesPage)
+ }
+
+ }
+ ToolBarLayout {
+ id: feedsTools
+ visible: false
+ ToolIcon { iconId: "toolbar-back";
+ onClicked: {
+ myArticlesMenu.close();
+ window.categoryReloadRequest()
+ pageStack.pop();
+ }
+ }
+ ToolIcon {
+ platformIconId: "toolbar-view-menu"
+ anchors.right: (parent === undefined) ? undefined : parent.right
+ onClicked: (myFeedsMenu.status == DialogStatus.Closed) ? myFeedsMenu.open() : myFeedsMenu.close()
+ }
}
+ Connections {
+ target: window
+ onFeedReloadRequest: feedsItem.reload()
+ }
}
}
Component {
id: articlesPage
Page {
- tools: commonTools
- property string feedid
+ tools: articleTools
+ property string feedid: window.feedid
ArticleViewer {
id: flipper
}
+
+ ToolBarLayout {
+ id: articleTools
+ visible: false
+ ToolIcon { iconId: "toolbar-back";
+ onClicked: {
+ myArticlesMenu.close();
+ if (flipper.articleShown) {
+ flipper.articleShown = false;
+ flipper.reload()
+ } else {
+ window.feedReloadRequest();
+ pageStack.pop();
+ }
+ }
+ }
+
+ ToolIcon {
+ platformIconId: "toolbar-previous"
+ visible: flipper.articleShown
+ //anchors.right: (parent === undefined) ? undefined : parent.right
+ onClicked: flipper.prev();
+ }
+
+ ToolIcon {
+ platformIconId: "toolbar-next"
+ visible: flipper.articleShown
+ //anchors.right: (parent === undefined) ? undefined : parent.right
+ onClicked: flipper.next()
+ }
+
+ ToolIcon {
+ platformIconId: "toolbar-view-menu"
+ anchors.right: (parent === undefined) ? undefined : parent.right
+ onClicked: (myArticlesMenu.status == DialogStatus.Closed) ? myArticlesMenu.open() : myArticlesMenu.close()
+ }
+ }
+ }
+ }
+
+ Component {
+ id: addFeedPage
+ AddFeed {
+ id: addFeedItem
+
+ Connections {
+ target: window
+ onAddFileSignal: addFeedItem.addFileToDialog(fullname, filename)
+ }
+ }
+ }
+
+ Component {
+ id: settingsPage
+ SettingsPage {
+ id: settingsItem
+ tools: commonTools
+ }
+ }
+
+ Settings {
+ id: settings
+ }
+
+ Rectangle {
+ id: banner
+ x: 10
+ width: parent.width - 20
+ height: bannerText.height + 20
+ y: 50
+ z:8
+
+ visible: false
+ radius: 4
+ border.color: "white"
+ color: "black"
+
+ Text {
+ id: bannerText
+ anchors.centerIn: parent
+ font.pixelSize: 24
+ //text: "Test"
+ color: "white"
+ wrapMode: Text.WordWrap;
+ }
+
+ Timer {
+ id: bannerTimer
+ interval: 3000
+ repeat: false
+ running: false
+ onTriggered: banner.visible = false
+ }
+
+ function show(str) {
+ bannerText.text = str;
+ banner.visible = true
+ bannerTimer.start()
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ bannerTimer.stop()
+ banner.visible= false
+ }
+ }
+
+ //text: "This is an info banner with no icon"
+ }
+
+ Item {
+ AutomaticUpdate {
+ id: autoUpdate
+ }
+
+ Connections {
+ target: settings
+ onAutoUpdateEnabledChanged: {
+ if (!settings.autoUpdateEnabled) {
+ autoUpdate.stop();
+ } else {
+ autoUpdate.start();
+ }
+ }
}
}
}