use a drawer and manage selection on longpress
This commit is contained in:
parent
d260bfd922
commit
93203b8157
1 changed files with 188 additions and 107 deletions
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue