diff options
Diffstat (limited to 'Sidebar.qml')
| -rw-r--r-- | Sidebar.qml | 38 |
1 files changed, 33 insertions, 5 deletions
diff --git a/Sidebar.qml b/Sidebar.qml index f66e5a6..059079c 100644 --- a/Sidebar.qml +++ b/Sidebar.qml @@ -20,6 +20,11 @@ Page { onRowsRemoved: modified = true } + EventFilter { + id: eventFilter + sourceModel: eventList + } + FileDialog { id: videoDialog title: qsTr('Open video') @@ -122,7 +127,24 @@ Page { // Events list. ColumnLayout { spacing: 0 - Label { text: qsTr('Events') } + + RowLayout { + Label { + text: qsTr('Events') + Layout.fillWidth: true + } + Label { text: qsTr('🔍') } + TapHandler { onTapped: filter.visible = !filter.visible } + } + + TextField { + id: filter + Layout.fillWidth: true + placeholderText: qsTr('Filter…') + visible: false + onTextChanged: eventFilter.setFilter(text) + } + Frame { padding: 1 Layout.fillWidth: true @@ -133,7 +155,7 @@ Page { anchors.fill: parent focus: true - model: eventList + model: eventFilter tags: eventList.tags onEditingChanged: video.pause(editing) @@ -168,7 +190,7 @@ Page { break case Qt.Key_Delete: editing = false - eventList.removeRows(currentIndex) + eventFilter.remove(currentIndex) break case Qt.Key_Tab: case Qt.Key_Backtab: @@ -212,9 +234,15 @@ Page { model: eventList.tagsOrder.map(tag => eventList.tags[tag]) enabled: video.loaded && !events.editing onClicked: { - events.currentIndex = eventList.insert(video.time) + const index = eventList.insert(tag, video.time) + // Reset filter if new event doesn’t match. + var row = eventFilter.mapFromSource(eventList.index(index, 0)).row + if (eventFilter.mapFromSource(eventList.index(index, 0)).row === -1) { + filter.text = '' + row = index + } + events.currentIndex = row const event = events.currentItem - event.model.tag = tag if (event.fields.length > 0) events.editing = true } |
