diff --git a/storybook/pages/CommunityNewPermissionViewPage.qml b/storybook/pages/CommunityNewPermissionViewPage.qml index 9f6dda0054..c5bcb3a135 100644 --- a/storybook/pages/CommunityNewPermissionViewPage.qml +++ b/storybook/pages/CommunityNewPermissionViewPage.qml @@ -1,5 +1,6 @@ import QtQuick 2.14 import QtQuick.Controls 2.14 +import QtQuick.Layouts 1.14 import AppLayouts.Chat.views.communities 1.0 import AppLayouts.Chat.stores 1.0 @@ -16,7 +17,16 @@ SplitView { Pane { id: root + SplitView.fillWidth: true + SplitView.fillHeight: true + CommunityNewPermissionView { + id: communityNewPermissionView + + anchors.fill: parent + + isEditState: isEditStateCheckBox.checked + isPrivate: isPrivateCheckBox.checked store: CommunitiesStore { readonly property var assetsModel: AssetsModel {} @@ -32,6 +42,10 @@ SplitView { readonly property bool isOwner: isOwnerCheckBox.checked + function createPermission(holdings, permissions, isPrivate, channels) { + logs.logEvent("CommunitiesStore::creatPermission") + } + function editPermission(index, holdings, permissions, channels, isPrivate) { logs.logEvent("CommunitiesStore::editPermission - index: " + index) } @@ -66,14 +80,58 @@ SplitView { id: logsAndControlsPanel SplitView.minimumHeight: 100 - SplitView.preferredHeight: 150 + SplitView.preferredHeight: 160 logsView.logText: logs.logText - CheckBox { - id: isOwnerCheckBox - text: "Is owner" + ColumnLayout { + + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + + RowLayout { + Layout.fillWidth: true + + CheckBox { + id: isOwnerCheckBox + + text: "Is owner" + } + + CheckBox { + id: isEditStateCheckBox + + text: "Is edit state" + } + + CheckBox { + id: isPrivateCheckBox + + text: "Is private" + } + } + + RowLayout { + Layout.fillWidth: true + + Button { + text: "Save changes" + + onClicked: communityNewPermissionView.saveChanges() + } + + Button { + text: "Reset changes" + + onClicked: communityNewPermissionView.resetChanges() + } + } + + Label { + text: "Is dirty: " + communityNewPermissionView.dirty + } } } } diff --git a/ui/app/AppLayouts/Chat/views/communities/CommunityNewPermissionView.qml b/ui/app/AppLayouts/Chat/views/communities/CommunityNewPermissionView.qml index be584968ee..0ca635fa25 100644 --- a/ui/app/AppLayouts/Chat/views/communities/CommunityNewPermissionView.qml +++ b/ui/app/AppLayouts/Chat/views/communities/CommunityNewPermissionView.qml @@ -38,6 +38,10 @@ StatusScrollView { if (d.checkIfInDirty()) return true + // Is private + if (root.isPrivate !== d.dirtyValues.isPrivate) + return true + // Permissions: let dirtyPermissionObj = false if(root.permissionObject && d.dirtyValues.permissionObject.key !== null) { @@ -48,8 +52,7 @@ StatusScrollView { dirtyPermissionObj = d.dirtyValues.permissionObject.key !== null } - - return dirtyPermissionObj || d.dirtyValues.isPrivateDirty + return dirtyPermissionObj } function saveChanges() { @@ -71,7 +74,7 @@ StatusScrollView { // roles: itemId, text, emoji, color property var channelsModel: ListModel {} - property bool isPrivate + property bool isPrivate: false signal permissionCreated() @@ -90,15 +93,9 @@ StatusScrollView { permissionType === PermissionTypes.Type.Member onPermissionTypeChanged: { - if (permissionType === PermissionTypes.Type.Admin) { - d.dirtyValues.isPrivateDirty = (root.isPrivate === false) - } else { - if (permissionType === PermissionTypes.Type.Moderator) { - d.dirtyValues.isPrivateDirty = (root.isPrivate === false) - } else { - d.dirtyValues.isPrivateDirty = (root.isPrivate === true) - } - } + d.dirtyValues.isPrivate = + (permissionType === PermissionTypes.Type.Admin) || + (permissionType === PermissionTypes.Type.Moderator) } onIsCommunityPermissionChanged: { @@ -125,7 +122,8 @@ StatusScrollView { property string text: "" property string imageSource: "" } - property bool isPrivateDirty: false + + property bool isPrivate: false function getIndexOfKey(key) { const count = holdingsModel.count @@ -173,12 +171,11 @@ StatusScrollView { } function saveChanges() { - root.store.editPermission(root.permissionIndex, d.dirtyValues.holdingsModel, d.dirtyValues.permissionObject, d.dirtyValues.channelsModel, - d.dirtyValues.isPrivateDirty ? !root.isPrivate : root.isPrivate) + d.dirtyValues.isPrivate) } function loadInitValues() { @@ -239,7 +236,7 @@ StatusScrollView { } // Is private permission - d.dirtyValues.isPrivateDirty = false + d.dirtyValues.isPrivate = root.isPrivate } function checkIfHoldingsDirty() { @@ -693,8 +690,8 @@ StatusScrollView { } StatusSwitch { enabled: d.permissionType !== PermissionTypes.Type.Admin - checked: d.dirtyValues.isPrivateDirty ? !root.isPrivate : root.isPrivate - onToggled: d.dirtyValues.isPrivateDirty = (root.isPrivate !== checked) + checked: d.dirtyValues.isPrivate + onToggled: d.dirtyValues.isPrivate = checked } } @@ -722,7 +719,7 @@ StatusScrollView { onClicked: { root.store.createPermission(d.dirtyValues.holdingsModel, d.dirtyValues.permissionObject, - d.dirtyValues.isPrivateDirty ? !root.isPrivate : root.isPrivate, + d.dirtyValues.isPrivate, d.dirtyValues.channelsModel) root.permissionCreated() }