Warning, /office/klevernotes/src/contents/ui/sideBar/SearchBar.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-License-Identifier: GPL-2.0-or-later
0002 // SPDX-FileCopyrightText: 2023 Louis Schul <schul9louis@gmail.com>
0003
0004 import QtQuick 2.15
0005 import QtQuick.Layouts 1.15
0006 import QtQuick.Controls 2.15 as Controls
0007
0008 import org.kde.kitemmodels 1.0
0009 import org.kde.kirigami 2.19 as Kirigami
0010 import org.kde.kirigamiaddons.labs.components 1.0 as KirigamiComponents
0011
0012 KirigamiComponents.SearchPopupField {
0013 id: root
0014
0015 required property var listModel
0016
0017 property var clickedIndex
0018
0019 spaceAvailableLeft: false
0020 spaceAvailableRight: false
0021
0022 popupContentItem: ListView {
0023 id: searchListView
0024
0025 KSortFilterProxyModel {
0026 id: searchFilterProxyModel
0027
0028 sourceModel: KDescendantsProxyModel {
0029 id: descendants
0030 model: root.listModel
0031 }
0032 filterRoleName: "noteName"
0033 filterCaseSensitivity: Qt.CaseInsensitive
0034 }
0035
0036 model: (root.text === "") ? null : searchFilterProxyModel
0037
0038 delegate: Controls.ItemDelegate {
0039 id: searchDelegate
0040
0041 width: ListView.view.width
0042
0043 highlighted: activeFocus
0044
0045 leftInset: 1
0046 rightInset: 1
0047
0048 contentItem: ColumnLayout {
0049 Controls.Label {
0050 text: i18n("From : ")+model.branchName
0051 font: Kirigami.Theme.smallFont
0052 elide: Text.ElideRight
0053 Layout.fillWidth: true
0054 }
0055 Controls.Label {
0056 text: model.displayName
0057 wrapMode: Text.WordWrap
0058 font.bold: true
0059 Layout.fillWidth: true
0060 }
0061 }
0062
0063 onClicked: {
0064 const searchModelIndex = searchFilterProxyModel.mapToSource(searchFilterProxyModel.index(index,0))
0065
0066 const descendantsModelIndex = descendants.mapToSource(descendants.index(searchModelIndex.row, 0))
0067 root.clickedIndex = descendantsModelIndex
0068 }
0069 }
0070
0071 Kirigami.PlaceholderMessage {
0072 width: parent.width - Kirigami.Units.gridUnit * 4
0073 anchors.centerIn: parent
0074
0075 text: i18n("No search results")
0076 visible: searchListView.count === 0
0077 icon.name: "system-search"
0078 }
0079 }
0080
0081 onTextChanged: {
0082 searchFilterProxyModel.setFilterFixedString(text)
0083 }
0084 }