summaryrefslogtreecommitdiffstats
path: root/resources/qml/dialogs/PowerLevelSpacesApplyDialog.qml
diff options
context:
space:
mode:
Diffstat (limited to 'resources/qml/dialogs/PowerLevelSpacesApplyDialog.qml')
-rw-r--r--resources/qml/dialogs/PowerLevelSpacesApplyDialog.qml148
1 files changed, 148 insertions, 0 deletions
diff --git a/resources/qml/dialogs/PowerLevelSpacesApplyDialog.qml b/resources/qml/dialogs/PowerLevelSpacesApplyDialog.qml
new file mode 100644
index 00000000..83af00f7
--- /dev/null
+++ b/resources/qml/dialogs/PowerLevelSpacesApplyDialog.qml
@@ -0,0 +1,148 @@
+// SPDX-FileCopyrightText: 2022 Nheko Contributors
+//
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+import ".."
+import "../ui"
+import Qt.labs.platform 1.1 as Platform
+import QtQuick 2.15
+import QtQuick.Controls 2.3
+import QtQuick.Layouts 1.2
+import QtQuick.Window 2.13
+import im.nheko 1.0
+
+ApplicationWindow {
+ id: applyDialog
+
+ property RoomSettings roomSettings
+ property PowerlevelEditingModels editingModel
+
+ minimumWidth: 340
+ minimumHeight: 450
+ width: 450
+ height: 680
+ palette: Nheko.colors
+ color: Nheko.colors.window
+ modality: Qt.NonModal
+ flags: Qt.Dialog | Qt.WindowCloseButtonHint | Qt.WindowTitleHint
+ title: qsTr("Apply permission changes")
+
+ Shortcut {
+ sequence: StandardKey.Cancel
+ onActivated: roomSettingsDialog.close()
+ }
+
+ ColumnLayout {
+ anchors.margins: Nheko.paddingMedium
+ anchors.fill: parent
+ spacing: Nheko.paddingLarge
+
+
+ MatrixText {
+ text: qsTr("Which of the subcommunities and rooms should these permissions be applied to?")
+ font.pixelSize: Math.floor(fontMetrics.font.pixelSize * 1.1)
+ Layout.fillWidth: true
+ Layout.fillHeight: false
+ color: Nheko.colors.text
+ Layout.bottomMargin: Nheko.paddingMedium
+ }
+
+ GridLayout {
+ Layout.fillWidth: true
+ Layout.fillHeight: false
+ columns: 2
+
+ Label {
+ text: qsTr("Apply permissions recursively")
+ Layout.fillWidth: true
+ color: Nheko.colors.text
+ }
+
+ ToggleButton {
+ checked: editingModel.spaces.applyToChildren
+ Layout.alignment: Qt.AlignRight
+ onCheckedChanged: editingModel.spaces.applyToChildren = checked
+ }
+
+ Label {
+ text: qsTr("Overwrite exisiting modifications in rooms")
+ Layout.fillWidth: true
+ color: Nheko.colors.text
+ }
+
+ ToggleButton {
+ checked: editingModel.spaces.overwriteDiverged
+ Layout.alignment: Qt.AlignRight
+ onCheckedChanged: editingModel.spaces.overwriteDiverged = checked
+ }
+ }
+
+ ListView {
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ id: view
+
+ clip: true
+
+ ScrollHelper {
+ flickable: parent
+ anchors.fill: parent
+ }
+
+ model: editingModel.spaces
+ spacing: 4
+ cacheBuffer: 50
+
+ delegate: RowLayout {
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ ColumnLayout {
+ Layout.fillWidth: true
+ Text {
+ Layout.fillWidth: true
+ text: model.displayName
+ color: Nheko.colors.text
+ textFormat: Text.PlainText
+ elide: Text.ElideRight
+ }
+
+ Text {
+ Layout.fillWidth: true
+ text: {
+ if (!model.isEditable) return qsTr("No permissions to apply the new permissions here");
+ if (model.isAlreadyUpToDate) return qsTr("No changes needed");
+ if (model.isDifferentFromBase) return qsTr("Existing modifications to the permissions in this room will be overwritten");
+ return qsTr("Permissions synchronized with community")
+ }
+ elide: Text.ElideRight
+ color: Nheko.colors.buttonText
+ textFormat: Text.PlainText
+ }
+ }
+
+ ToggleButton {
+ checked: model.applyPermissions
+ Layout.alignment: Qt.AlignRight
+ onCheckedChanged: model.applyPermissions = checked
+ enabled: model.isEditable
+ }
+ }
+ }
+
+
+ }
+
+ footer: DialogButtonBox {
+ id: dbb
+
+ standardButtons: DialogButtonBox.Ok | DialogButtonBox.Cancel
+ onAccepted: {
+ editingModel.spaces.commit();
+ applyDialog.close();
+ }
+ onRejected: applyDialog.close()
+ }
+
+}