Space Search
Allow to refine searches to spaces only in the main exlore function. Show which rooms are spaces in the search page. Closes #577
This commit is contained in:
@@ -32,7 +32,13 @@ SearchPage {
|
||||
/**
|
||||
* @brief Whether results should only includes spaces.
|
||||
*/
|
||||
property bool showOnlySpaces: false
|
||||
property bool showOnlySpaces: spacesOnlyButton.checked
|
||||
onShowOnlySpacesChanged: updateSearch()
|
||||
|
||||
/**
|
||||
* @brief Whetherthe button to toggle the showOnlySpaces state should be shown.
|
||||
*/
|
||||
property bool showOnlySpacesButton: true
|
||||
|
||||
/**
|
||||
* @brief Signal emitted when a room is selected.
|
||||
@@ -47,9 +53,22 @@ SearchPage {
|
||||
|
||||
Component.onCompleted: focusSearch()
|
||||
|
||||
headerTrailing: ServerComboBox {
|
||||
id: serverComboBox
|
||||
connection: root.connection
|
||||
headerTrailing: RowLayout {
|
||||
QQC2.Button {
|
||||
id: spacesOnlyButton
|
||||
icon.name: "globe"
|
||||
display: QQC2.Button.IconOnly
|
||||
checkable: true
|
||||
text: i18nc("@action:button", "Only show spaces")
|
||||
|
||||
QQC2.ToolTip.visible: hovered
|
||||
QQC2.ToolTip.text: text
|
||||
QQC2.ToolTip.delay: Kirigami.Units.toolTipDelay
|
||||
}
|
||||
ServerComboBox {
|
||||
id: serverComboBox
|
||||
connection: root.connection
|
||||
}
|
||||
}
|
||||
|
||||
model: PublicRoomListModel {
|
||||
|
||||
@@ -21,6 +21,7 @@ Delegates.RoundedItemDelegate {
|
||||
required property string topic
|
||||
required property int memberCount
|
||||
required property bool isJoined
|
||||
required property bool isSpace
|
||||
property bool justJoined: false
|
||||
|
||||
/**
|
||||
@@ -56,7 +57,7 @@ Delegates.RoundedItemDelegate {
|
||||
RowLayout {
|
||||
Layout.fillWidth: true
|
||||
Kirigami.Heading {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillWidth: !spaceLabel.visible
|
||||
level: 4
|
||||
text: root.displayName
|
||||
font.bold: true
|
||||
@@ -64,6 +65,13 @@ Delegates.RoundedItemDelegate {
|
||||
elide: Text.ElideRight
|
||||
wrapMode: Text.NoWrap
|
||||
}
|
||||
QQC2.Label {
|
||||
id: spaceLabel
|
||||
Layout.fillWidth: true
|
||||
visible: root.isSpace
|
||||
text: i18nc("@info:label A matrix space", "Space")
|
||||
color: Kirigami.Theme.linkColor
|
||||
}
|
||||
QQC2.Label {
|
||||
visible: root.isJoined || root.justJoined
|
||||
text: i18n("Joined")
|
||||
|
||||
@@ -82,6 +82,13 @@ Kirigami.ScrollablePage {
|
||||
searchField.forceActiveFocus();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Force the search to be updated if the model has a valid search function.
|
||||
*/
|
||||
function updateSearch() {
|
||||
searchTimer.restart();
|
||||
}
|
||||
|
||||
header: QQC2.Control {
|
||||
padding: Kirigami.Units.largeSpacing
|
||||
|
||||
@@ -119,11 +126,18 @@ Kirigami.ScrollablePage {
|
||||
QQC2.Button {
|
||||
id: searchButton
|
||||
icon.name: "search"
|
||||
display: QQC2.Button.IconOnly
|
||||
text: i18nc("@action:button", "Search")
|
||||
|
||||
onClicked: {
|
||||
if (typeof model.search === 'function') {
|
||||
model.search();
|
||||
}
|
||||
}
|
||||
|
||||
QQC2.ToolTip.visible: hovered
|
||||
QQC2.ToolTip.text: text
|
||||
QQC2.ToolTip.delay: Kirigami.Units.toolTipDelay
|
||||
}
|
||||
Timer {
|
||||
id: searchTimer
|
||||
|
||||
@@ -51,7 +51,8 @@ Kirigami.Dialog {
|
||||
onClicked: {
|
||||
let dialog = pageStack.pushDialogLayer(Qt.createComponent('org.kde.neochat', 'ExploreRoomsPage.qml'), {
|
||||
connection: root.room.connection,
|
||||
showOnlySpaces: true
|
||||
showOnlySpaces: true,
|
||||
showOnlySpacesButton: false
|
||||
}, {
|
||||
title: i18nc("@title", "Choose Parent Space")
|
||||
});
|
||||
@@ -135,7 +136,8 @@ Kirigami.Dialog {
|
||||
onClicked: {
|
||||
let dialog = pageStack.pushDialogLayer(Qt.createComponent('org.kde.neochat', 'ExploreRoomsPage.qml'), {
|
||||
connection: root.room.connection,
|
||||
showOnlySpaces: true
|
||||
showOnlySpaces: true,
|
||||
showOnlySpacesButton: false
|
||||
}, {
|
||||
title: i18nc("@title", "Explore Rooms")
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user