mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Mobile/filtering: first attempt to filter on dive site
[Dirk Hohndel: this is the starting point of my following commits, I decided to
leave it in place to give Jan credit for the work he did on
figuring out some of the plumbing needed to get things to work]
Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
441ced45f5
commit
7b06c35cb5
4 changed files with 52 additions and 1 deletions
|
|
@ -336,6 +336,7 @@ Kirigami.ScrollablePage {
|
|||
prefs.credentialStatus === CloudStatus.CS_NOCLOUD) {
|
||||
page.actions.main = page.downloadFromDCAction
|
||||
page.actions.right = page.addDiveAction
|
||||
page.actions.left = page.filterToggleAction
|
||||
page.title = qsTr("Dive list")
|
||||
if (diveListView.count === 0)
|
||||
showPassiveNotification(qsTr("Please tap the '+' button to add a dive (or download dives from a supported dive computer)"), 3000)
|
||||
|
|
@ -363,6 +364,20 @@ Kirigami.ScrollablePage {
|
|||
visible: diveListView.visible && diveListView.count === 0
|
||||
}
|
||||
|
||||
Component {
|
||||
id: filterHeader
|
||||
Controls.TextField {
|
||||
id: sitefilter
|
||||
visible: (opacity > 0) && rootItem.filterToggle
|
||||
text: ""
|
||||
placeholderText: "Dive site name"
|
||||
onTextChanged: {
|
||||
rootItem.filterPattern = text
|
||||
diveModel.setFilter(text)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ListView {
|
||||
id: diveListView
|
||||
anchors.fill: parent
|
||||
|
|
@ -371,6 +386,7 @@ Kirigami.ScrollablePage {
|
|||
model: diveModel
|
||||
currentIndex: -1
|
||||
delegate: diveDelegate
|
||||
header: filterHeader
|
||||
boundsBehavior: Flickable.DragOverBounds
|
||||
maximumFlickVelocity: parent.height * 5
|
||||
bottomMargin: Kirigami.Units.iconSizes.medium + Kirigami.Units.gridUnit
|
||||
|
|
@ -420,6 +436,22 @@ Kirigami.ScrollablePage {
|
|||
}
|
||||
}
|
||||
|
||||
property QtObject filterToggleAction: Kirigami.Action {
|
||||
icon {
|
||||
name: ":icons/ic_filter_list"
|
||||
}
|
||||
text: qsTr("Filter dives")
|
||||
onTriggered: {
|
||||
rootItem.filterToggle = !rootItem.filterToggle
|
||||
if (rootItem.filterToggle) {
|
||||
diveModel.setFilter(rootItem.filterPattern)
|
||||
} else {
|
||||
diveModel.resetFilter()
|
||||
rootItem.filterPattern = ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onBackRequested: {
|
||||
if (startPage.visible && diveListView.count > 0 &&
|
||||
prefs.credentialStatus !== CloudStatus.CS_INCORRECT_USER_PASSWD) {
|
||||
|
|
|
|||
|
|
@ -32,6 +32,9 @@ Kirigami.ApplicationWindow {
|
|||
property alias pluggedInDeviceName: manager.pluggedInDeviceName
|
||||
property alias showPin: prefs.showPin
|
||||
property alias defaultCylinderIndex: settingsWindow.defaultCylinderIndex
|
||||
property bool filterToggle: false
|
||||
property string filterPattern: ""
|
||||
|
||||
onNotificationTextChanged: {
|
||||
if (notificationText != "") {
|
||||
// there's a risk that we have a >5 second gap in update events;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue