Move certain internal room information to an Advanced settings page

This has (as I've seen) confuse some users because we put this
information front and center. The internal room ID and it's version
isn't relevant for 99% of users, especially since most of them don't
even have permission to touch these.

Instead, let's do what Element smartly does and put it under an Advanced
page you have to intentionally find. This also has the knock-on effect
of propping up the importance of room aliases, which now appear higher
in the general settings.
This commit is contained in:
Joshua Goins
2025-05-24 15:32:35 -04:00
parent e2427c0683
commit 15b625a3f8
4 changed files with 111 additions and 77 deletions

View File

@@ -49,6 +49,7 @@ ecm_add_qml_module(Settings GENERATE_PLUGIN_SOURCE
ExportKeysDialog.qml
RoomSortParameterDialog.qml
RoomProfile.qml
RoomAdvancedPage.qml
SOURCES
colorschemer.cpp
threepidaddhelper.cpp

View File

@@ -0,0 +1,99 @@
// SPDX-FileCopyrightText: 2021 Carl Schwan <carl@carlschwan.eu>
// SPDX-FileCopyrightText: 2025 Joshua Goins <josh@redstrate.com>
// SPDX-License-Identifier: GPL-3.0-only
import QtQuick
import QtQuick.Controls as QQC2
import QtQuick.Layouts
import QtQuick.Window
import org.kde.kirigami as Kirigami
import org.kde.kirigamiaddons.formcard as FormCard
import org.kde.kirigamiaddons.labs.components as KirigamiComponents
import org.kde.neochat
FormCard.FormCardPage {
id: root
property NeoChatRoom room
title: i18nc("@window:title", "Advanced")
FormCard.FormCard {
Layout.topMargin: Kirigami.Units.gridUnit
FormCard.FormTextDelegate {
id: roomIdDelegate
text: i18nc("@info:label", "Room ID")
description: room.id
contentItem.children: QQC2.Button {
visible: roomIdDelegate.hovered
text: i18nc("@action:button", "Copy room ID to clipboard")
icon.name: "edit-copy"
display: QQC2.AbstractButton.IconOnly
onClicked: {
Clipboard.saveText(room.id);
}
QQC2.ToolTip.text: text
QQC2.ToolTip.delay: Kirigami.Units.toolTipDelay
QQC2.ToolTip.visible: hovered
}
}
FormCard.FormTextDelegate {
text: i18nc("@info:label", "Room Version")
description: room.version
contentItem.children: QQC2.Button {
visible: room.canSwitchVersions()
enabled: room.version < room.maxRoomVersion
text: i18nc("@action:button", "Upgrade Room")
icon.name: "arrow-up-double"
onClicked: {
if (room.canSwitchVersions()) {
roomUpgradeDialog.currentRoomVersion = room.version;
roomUpgradeDialog.open();
}
}
QQC2.ToolTip {
text: text
delay: Kirigami.Units.toolTipDelay
}
}
}
}
property Kirigami.Dialog roomUpgradeDialog: Kirigami.Dialog {
id: roomUpgradeDialog
property var currentRoomVersion
width: Kirigami.Units.gridUnit * 16
title: i18nc("@title", "Upgrade the Room")
ColumnLayout {
FormCard.FormSpinBoxDelegate {
id: spinBox
label: i18nc("@label:spinbox", "Select new version")
from: room.version
to: room.maxRoomVersion
value: room.version
}
}
customFooterActions: [
Kirigami.Action {
text: i18nc("@action:button", "Confirm")
icon.name: "dialog-ok"
onTriggered: {
room.switchVersion(spinBox.value);
roomUpgradeDialog.close();
}
}
]
}
}

View File

@@ -97,54 +97,6 @@ FormCard.FormCardPage {
}
}
FormCard.FormCard {
Layout.topMargin: Kirigami.Units.gridUnit
FormCard.FormTextDelegate {
id: roomIdDelegate
text: i18n("Room ID")
description: room.id
contentItem.children: QQC2.Button {
visible: roomIdDelegate.hovered
text: i18n("Copy room ID to clipboard")
icon.name: "edit-copy"
display: QQC2.AbstractButton.IconOnly
onClicked: {
Clipboard.saveText(room.id);
}
QQC2.ToolTip.text: text
QQC2.ToolTip.delay: Kirigami.Units.toolTipDelay
QQC2.ToolTip.visible: hovered
}
}
FormCard.FormTextDelegate {
text: i18n("Room version")
description: room.version
contentItem.children: QQC2.Button {
visible: room.canSwitchVersions()
enabled: room.version < room.maxRoomVersion
text: i18n("Upgrade Room")
icon.name: "arrow-up-double"
onClicked: {
if (room.canSwitchVersions()) {
roomUpgradeDialog.currentRoomVersion = room.version;
roomUpgradeDialog.open();
}
}
QQC2.ToolTip {
text: text
delay: Kirigami.Units.toolTipDelay
}
}
}
}
FormCard.FormHeader {
title: i18n("Aliases")
}
@@ -402,33 +354,4 @@ FormCard.FormCardPage {
parentWindow: root.Window.window
}
}
property Kirigami.Dialog roomUpgradeDialog: Kirigami.Dialog {
id: roomUpgradeDialog
property var currentRoomVersion
width: Kirigami.Units.gridUnit * 16
title: i18n("Upgrade the Room")
ColumnLayout {
FormCard.FormSpinBoxDelegate {
id: spinBox
label: i18n("Select new version")
from: room.version
to: room.maxRoomVersion
value: room.version
}
}
customFooterActions: [
Kirigami.Action {
text: i18n("Confirm")
icon.name: "dialog-ok"
onTriggered: {
room.switchVersion(spinBox.value);
roomUpgradeDialog.close();
}
}
]
}
}

View File

@@ -89,6 +89,17 @@ KirigamiSettings.ConfigurationView {
room: root._room
};
}
},
KirigamiSettings.ConfigurationModule {
moduleId: "advanced"
text: i18nc("@title", "Advanced")
icon.name: "document-properties-symbolic"
page: () => Qt.createComponent("org.kde.neochat.settings", "RoomAdvancedPage")
initialProperties: () => {
return {
room: root._room
};
}
}
]
}