import QtQuick 1.0
import com.nokia.meego 1.0
import com.nokia.extras 1.0
PageStackWindow {
id: window
initialPage: categoryPage
signal longPressCategory(string catid)
signal longPressFeed(string key)
signal categoryReloadRequest()
signal feedReloadRequest()
property string feedid
property string catid
Component.onCompleted: theme.inverted= true
onLongPressFeed: {
unsubscribeFeedMenu.key = key
unsubscribeFeedMenu.open()
}
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: {} }
MenuItem { text: qsTr("Export Feeds"); onClicked: { var file=controller.exportOpml(); banner.text=qsTr("Feeds exported as "+file); banner.open() } }
MenuItem { text: qsTr("Invert Theme"); onClicked: { theme.inverted = !theme.inverted } }
MenuItem { text: qsTr("Add Feeds"); 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"
titleText: "Feedingit RSS Reader"
message: "Version: 0.0.9"
+"
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(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: 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 {}
}
Settings {
id: settings
}
InfoBanner {
id: banner
//text: "This is an info banner with no icon"
}
}