Make ChooseRoomDialog a SearchPage
Makes it look a bit nicer and more standardised
This commit is contained in:
@@ -38,6 +38,9 @@ class SortFilterRoomListModel : public QSortFilterProxyModel
|
|||||||
*/
|
*/
|
||||||
Q_PROPERTY(QString filterText READ filterText READ filterText WRITE setFilterText NOTIFY filterTextChanged)
|
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:
|
public:
|
||||||
explicit SortFilterRoomListModel(RoomListModel *sourceModel, QObject *parent = nullptr);
|
explicit SortFilterRoomListModel(RoomListModel *sourceModel, QObject *parent = nullptr);
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
// SPDX-FileCopyrightText: 2023 Tobias Fella <tobias.fella@kde.org>
|
// SPDX-FileCopyrightText: 2023 Tobias Fella <tobias.fella@kde.org>
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
|
|
||||||
@@ -8,29 +10,20 @@ import org.kde.kirigami as Kirigami
|
|||||||
|
|
||||||
import org.kde.neochat
|
import org.kde.neochat
|
||||||
|
|
||||||
Kirigami.ScrollablePage {
|
SearchPage {
|
||||||
id: root
|
id: root
|
||||||
|
|
||||||
title: i18nc("@title", "Choose a Room")
|
title: i18nc("@title", "Choose a Room")
|
||||||
|
|
||||||
|
showSearchButton: false
|
||||||
|
|
||||||
signal chosen(string roomId)
|
signal chosen(string roomId)
|
||||||
|
|
||||||
required property NeoChatConnection connection
|
required property NeoChatConnection connection
|
||||||
|
|
||||||
header: Kirigami.SearchField {
|
model: RoomManager.sortFilterRoomListModel
|
||||||
onTextChanged: RoomManager.sortFilterRoomListModel.filterText = text
|
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())
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,6 +75,11 @@ Kirigami.ScrollablePage {
|
|||||||
*/
|
*/
|
||||||
property alias listVerticalLayoutDirection: listView.verticalLayoutDirection
|
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.
|
* @brief Force the search field to be focussed.
|
||||||
*/
|
*/
|
||||||
@@ -127,6 +132,7 @@ Kirigami.ScrollablePage {
|
|||||||
id: searchButton
|
id: searchButton
|
||||||
icon.name: "search"
|
icon.name: "search"
|
||||||
display: QQC2.Button.IconOnly
|
display: QQC2.Button.IconOnly
|
||||||
|
visible: root.showSearchButton
|
||||||
text: i18nc("@action:button", "Search")
|
text: i18nc("@action:button", "Search")
|
||||||
|
|
||||||
onClicked: {
|
onClicked: {
|
||||||
|
|||||||
Reference in New Issue
Block a user