Make ChooseRoomDialog a SearchPage

Makes it look a bit nicer and more standardised
This commit is contained in:
Tobias Fella
2024-09-02 17:50:40 +02:00
parent f89cec9c55
commit 08b2c39a61
3 changed files with 18 additions and 16 deletions

View File

@@ -38,6 +38,9 @@ class SortFilterRoomListModel : public QSortFilterProxyModel
*/
Q_PROPERTY(QString filterText READ filterText READ filterText WRITE setFilterText NOTIFY filterTextChanged)
// This is a lazy hack to make this model compatible with SearchPage. TODO: rename the property entirely
Q_PROPERTY(QString searchText READ filterText READ filterText WRITE setFilterText NOTIFY filterTextChanged)
public:
explicit SortFilterRoomListModel(RoomListModel *sourceModel, QObject *parent = nullptr);

View File

@@ -1,6 +1,8 @@
// SPDX-FileCopyrightText: 2023 Tobias Fella <tobias.fella@kde.org>
// SPDX-License-Identifier: GPL-2.0-or-later
pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Controls
@@ -8,29 +10,20 @@ import org.kde.kirigami as Kirigami
import org.kde.neochat
Kirigami.ScrollablePage {
SearchPage {
id: root
title: i18nc("@title", "Choose a Room")
showSearchButton: false
signal chosen(string roomId)
required property NeoChatConnection connection
header: Kirigami.SearchField {
onTextChanged: RoomManager.sortFilterRoomListModel.filterText = text
model: RoomManager.sortFilterRoomListModel
modelDelegate: RoomDelegate {
onClicked: root.chosen(currentRoom.id)
connection: root.connection
}
ListView {
model: RoomManager.sortFilterRoomListModel
delegate: RoomDelegate {
id: roomDelegate
onClicked: {
root.chosen(roomDelegate.currentRoom.id);
}
connection: root.connection
}
}
Component.onCompleted: Qt.callLater(() => header.forceActiveFocus())
}

View File

@@ -75,6 +75,11 @@ Kirigami.ScrollablePage {
*/
property alias listVerticalLayoutDirection: listView.verticalLayoutDirection
/**
* @brief Set the visibility of the search button.
*/
property bool showSearchButton: true
/**
* @brief Force the search field to be focussed.
*/
@@ -127,6 +132,7 @@ Kirigami.ScrollablePage {
id: searchButton
icon.name: "search"
display: QQC2.Button.IconOnly
visible: root.showSearchButton
text: i18nc("@action:button", "Search")
onClicked: {