summary refs log tree commit diff
path: root/resources/qml/dialogs/PowerLevelSpacesApplyDialog.qml
blob: 01ec8b61f86554ea13fe052216a19e87c4558856 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
// SPDX-FileCopyrightText: 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
    color: palette.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: palette.text
            Layout.bottomMargin: Nheko.paddingMedium
        }

        GridLayout {
            Layout.fillWidth: true
            Layout.fillHeight: false
            columns: 2

                Label {
                    text: qsTr("Apply permissions recursively")
                    Layout.fillWidth: true
                    color: palette.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: palette.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

            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: palette.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: palette.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()
    }

}