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 articlesReloadRequest() signal addFileSignal(string fullname, string filename) property string articleid property string feedid property string catid property bool isUpdateInProgress: false property int updateProgressValue: 0 function addFileNotification(fullname, filename) { window.addFileSignal(fullname,filename) } function updateStarted() { banner.show(qsTr("Update Started")) updateProgressValue = 0 isUpdateInProgress = true } function updateFinished() { categoryReloadRequest() feedReloadRequest() banner.show(qsTr("Updated Completed")) isUpdateInProgress = false } function updateProgress(total, completed) { if (total>0) { updateProgressValue = Math.round(100*completed/total); } else { updateProgressValue = 0 } } onLongPressFeed: { unsubscribeFeedMenu.openMenu(key) } onLongPressCategory: { unsubscribeCategoryMenu.catid = catid unsubscribeCategoryMenu.open() } ToolBarLayout { id: commonTools visible: false ToolIcon { iconId: "toolbar-back"; onClicked: { myMenu.close(); pageStack.pop(); } visible: pageStack.depth>1 } ToolIcon { platformIconId: "toolbar-view-menu" anchors.right: (parent === undefined) ? undefined : parent.right onClicked: (myMenu.status == DialogStatus.Closed) ? myMenu.open() : myMenu.close() } } Menu { 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); articlesReloadRequest() } } 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 function openMenu(feedid) { unsubscribeFeedMenu.key = feedid menuItemEventFeed.text = controller.getFeedEventStatus(unsubscribeFeedMenu.key) ? qsTr("Show on Event Feed"): qsTr("Do not show on Event Feed") unsubscribeFeedMenu.open() } MenuLayout { //MenuItem { text: qsTr("Update"); onClicked: controller.updateFeed(parent.feedid); } MenuItem { id: menuItemEventFeed //text: controller.getFeedEventStatus(unsubscribeFeedMenu.key) ? qsTr("Show on Event Feed"): qsTr("Do not show on Event Feed") onClicked: { controller.switchEventFeedStatus(unsubscribeFeedMenu.key) unsubscribeFeedMenu.close() } } 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" titleText: "Feedingit RSS Reader" message: "Version: n9-0.1.0" +"

FeedingIt RSS Reader.
" +"
© 2011 feedingit.marcoz.org" +"
http://feedingit.marcoz.org" acceptButtonText: "OK" } Component { id: categoryPage Page { tools: commonTools Categories { id: categoriesItem onCategoryClicked: { window.catid = cat pageStack.push(feedsPage) } } Connections { target: window onCategoryReloadRequest: { console.log("category reloaded") categoriesItem.reload() } } } } Component { id: feedsPage Page { tools: feedsTools anchors.fill: parent property string catid: window.catid Feeds { id: feedsItem onFeedClicked: { window.feedid = feedid pageStack.push(articlesListPage) } } 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: articlesListPage Page { tools: articleListTools property string feedid: window.feedid ArticleViewer { id: flipper onOpenArticle: { window.articleid = articleid pageStack.push(articleViewPage) } } ToolBarLayout { id: articleListTools visible: false ToolIcon { iconId: "toolbar-back"; onClicked: { myArticlesMenu.close(); window.feedReloadRequest(); pageStack.pop(); } } ToolIcon { platformIconId: "toolbar-view-menu" anchors.right: (parent === undefined) ? undefined : parent.right onClicked: (myArticlesMenu.status == DialogStatus.Closed) ? myArticlesMenu.open() : myArticlesMenu.close() } } Connections { target: window onArticlesReloadRequest: flipper.reload() } } } Component { id: articleViewPage Page { tools: articleTools property string feedid: window.feedid Articles { id: articlePage property string mainArticleId: window.articleid; } ToolBarLayout { id: articleTools visible: false ToolIcon { iconId: "toolbar-back"; onClicked: { window.articlesReloadRequest(); pageStack.pop(); } } ToolIcon { platformIconId: "toolbar-previous" onClicked: articlePage.prev(); } ToolIcon { platformIconId: "toolbar-share" onClicked: { controller.share(window.feedid, articlePage.mainArticleId); } } ToolIcon { platformIconId: "toolbar-next" onClicked: articlePage.next() } // ToolIcon { // platformIconId: "toolbar-view-menu" // anchors.right: (parent === undefined) ? undefined : parent.right // onClicked: (myArticlesMenu.status == DialogStatus.Closed) ? myArticlesMenu.open() : myArticlesMenu.close() // } } // Connections { // target: window // onArticlesReloadRequest: flipper.reload() // } } } 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(); // } // } // } // } }