use a drawer and manage selection on longpress

This commit is contained in:
Hauke Schade 2016-01-15 19:51:34 +01:00
parent d260bfd922
commit 93203b8157

View file

@ -27,13 +27,7 @@ Page {
id: feeditemsPage
property var feed
property bool needsUpdate: false
property int remorseCounter: 0
onRemorseCounterChanged: {
// Disallow model changes while a RemorseItem is running.
pullmenu.visible = remorseCounter === 0
pushmenu.visible = remorseCounter === 0
}
property bool selectionModeActive: false
Component.onCompleted: {
feedItemModel.feed = feeditemsPage.feed
@ -42,6 +36,86 @@ Page {
RemorsePopup { id: remorse }
Drawer {
id: drawer
anchors.fill: parent
dock: Dock.Bottom
backgroundSize: drawerView.contentHeight
open: selectionModeActive
background: SilicaFlickable {
id: drawerView
anchors.fill: parent
contentHeight: selectionModeActive ? 250 : Theme.itemSizeSmall
clip: true
Column {
visible: selectionModeActive
width: parent.width
height: parent.height - Theme.itemSizeSmall
Separator {
width: parent.width
horizontalAlignment: Qt.AlignHCenter
color: Theme.highlightColor
}
IconButton {
anchors.horizontalCenter: parent.horizontalCenter
icon.source: "image://theme/icon-m-close"
onClicked: {
feedItemModel.unselectAll();
selectionModeActive = false;
}
}
Label {
id: selectedLabel
anchors.horizontalCenter: parent.horizontalCenter
color: Theme.highlightColor
horizontalAlignment: Text.AlignHCenter
font.pixelSize: Theme.fontSizeExtraLarge
text: qsTr("%1 selected").arg(feedItemModel.selectedItems)
}
Row {
visible: selectionModeActive
height: Theme.itemSizeSmall
anchors.horizontalCenter: parent.horizontalCenter
IconButton {
enabled: feedItemModel.selectedItems > 0
icon.source: "qrc:///images/ic_rss_"
+ (feedItemModel.allPublished ? "enabled" : "disabled") + ".png"
onClicked: {
feedItemModel.setAllSelectedRSSState(!feedItemModel.allPublished)
}
}
IconButton {
enabled: feedItemModel.selectedItems > 0
icon.source: "qrc:///images/ic_star_"
+ (feedItemModel.allStarred ? "enabled" : "disabled") + ".png"
onClicked: {
feedItemModel.setAllSelectedMarkedState(!feedItemModel.allStarred)
}
}
IconButton {
enabled: feedItemModel.selectedItems > 0
icon.source: "qrc:///images/ic_"
+ (feedItemModel.allUnread ? "unread" : "read") + ".png"
onClicked: {
feedItemModel.setAllSelectedReadState(feedItemModel.allUnread)
}
}
}
}
}
SilicaListView {
id: listView
anchors.fill: parent
@ -52,9 +126,7 @@ Page {
MenuItem {
text: qsTr("Update")
enabled: !network.loading
onClicked: {
feeditemsPage.update()
}
onClicked: feeditemsPage.update()
}
ToggleShowAllItem {
onUpdateView: {
@ -99,15 +171,22 @@ Page {
delegate: FeedItemDelegate {
onClicked: {
feedItemModel.selectedIndex = index
pageStack.push(Qt.resolvedUrl("FeedItem.qml"),
{ isCat: feed.isCat })
if (selectionModeActive) {
feedItemModel.select(index)
}
onRemorseRunning: {
if (running) {
++feeditemsPage.remorseCounter
} else {
--feeditemsPage.remorseCounter
else {
feedItemModel.selectedIndex = index
pageStack.push(Qt.resolvedUrl("FeedItem.qml"), { isCat: feed.isCat })
}
}
onPressAndHold: {
if (selectionModeActive) {
feedItemModel.selectedIndex = index
pageStack.push(Qt.resolvedUrl("FeedItem.qml"), { isCat: feed.isCat })
}
else {
feedItemModel.select(index)
selectionModeActive = true;
}
}
}
@ -157,6 +236,7 @@ Page {
}
VerticalScrollDecorator { }
}
}
function showFeed(feedModel) {
if(feedModel !== null) {
@ -186,6 +266,7 @@ Page {
feedItemModel.continuation = 0
feedItemModel.hasMoreItems = false
feedItemModel.clear()
feedItemModel.selectedItems = 0
feedItemModel.update()
}
}