Warning, /network/neochat/src/qml/SearchPage.qml is written in an unsupported language. File is not indexed.

0001 // SPDX-FileCopyrightText: 2022 Tobias Fella <tobias.fella@kde.org>
0002 // SPDX-License-Identifier: GPL-2.0-or-later
0003 
0004 import QtQuick
0005 import QtQuick.Controls as QQC2
0006 import QtQuick.Layouts
0007 
0008 import org.kde.kirigami as Kirigami
0009 
0010 import org.kde.neochat
0011 
0012 Kirigami.ScrollablePage {
0013     id: root
0014 
0015     property NeoChatRoom currentRoom
0016     required property NeoChatConnection connection
0017 
0018     title: i18nc("@action:title", "Search Messages")
0019 
0020     Kirigami.Theme.colorSet: Kirigami.Theme.Window
0021 
0022     SearchModel {
0023         id: searchModel
0024         connection: root.connection
0025         searchText: searchField.text
0026         room: root.currentRoom
0027     }
0028 
0029     header: QQC2.Control {
0030         padding: Kirigami.Units.largeSpacing
0031 
0032         background: Rectangle {
0033             color: Kirigami.Theme.backgroundColor
0034 
0035             Kirigami.Separator {
0036                 anchors {
0037                     left: parent.left
0038                     bottom: parent.bottom
0039                     right: parent.right
0040                 }
0041             }
0042         }
0043 
0044         contentItem: RowLayout {
0045             spacing: Kirigami.Units.largeSpacing
0046 
0047             Kirigami.SearchField {
0048                 id: searchField
0049                 focus: true
0050                 Layout.fillWidth: true
0051                 Keys.onEnterPressed: searchButton.clicked()
0052                 Keys.onReturnPressed: searchButton.clicked()
0053             }
0054             QQC2.Button {
0055                 id: searchButton
0056                 onClicked: searchModel.search()
0057                 icon.name: "search"
0058             }
0059         }
0060     }
0061 
0062     ListView {
0063         id: messageListView
0064         Layout.fillWidth: true
0065         Layout.fillHeight: true
0066         spacing: 0
0067         verticalLayoutDirection: ListView.BottomToTop
0068 
0069         section.property: "section"
0070 
0071         Kirigami.PlaceholderMessage {
0072             anchors.centerIn: parent
0073             visible: searchField.text.length === 0 && messageListView.count === 0
0074             text: i18n("Enter a text to start searching")
0075         }
0076 
0077         Kirigami.PlaceholderMessage {
0078             anchors.centerIn: parent
0079             visible: searchField.text.length > 0 && messageListView.count === 0 && !searchModel.searching
0080             text: i18n("No results found")
0081         }
0082 
0083         Kirigami.LoadingPlaceholder {
0084             anchors.centerIn: parent
0085             visible: searchModel.searching
0086         }
0087 
0088         model: searchModel
0089         delegate: EventDelegate {
0090             connection: root.connection
0091         }
0092     }
0093 }