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();
// }
// }
// }
// }
}