summary refs log tree commit diff
path: root/resources
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2021-05-02 18:01:18 +0200
committerNicolas Werner <nicolas.werner@hotmail.de>2021-05-02 18:06:56 +0200
commitab0baf5d9eb3319f8d3da15bd966ab8ab2810fce (patch)
treecba4d1153ec3e8573e8a6821d3e6b07d771fdccd /resources
parentFix crash when you have no rooms and open the global user profile (diff)
downloadnheko-ab0baf5d9eb3319f8d3da15bd966ab8ab2810fce.tar.xz
Only show actions, when you have permissions to do them
Diffstat (limited to 'resources')
-rw-r--r--resources/qml/MessageInput.qml8
-rw-r--r--resources/qml/MessageView.qml4
-rw-r--r--resources/qml/TimelineRow.qml4
-rw-r--r--resources/qml/TimelineView.qml9
-rw-r--r--resources/qml/TopBar.qml1
-rw-r--r--resources/qml/UserProfile.qml27
6 files changed, 36 insertions, 17 deletions
diff --git a/resources/qml/MessageInput.qml b/resources/qml/MessageInput.qml

index 5bb699dd..c5dfbfa3 100644 --- a/resources/qml/MessageInput.qml +++ b/resources/qml/MessageInput.qml
@@ -28,6 +28,7 @@ Rectangle { RowLayout { id: row + visible: (TimelineManager.timeline ? TimelineManager.timeline.permissions.canSend(MtxEvent.TextMessage) : false) || messageContextMenu.isSender anchors.fill: parent ImageButton { @@ -352,4 +353,11 @@ Rectangle { } + Text { + anchors.centerIn: parent + visible: TimelineManager.timeline ? (!TimelineManager.timeline.permissions.canSend(MtxEvent.TextMessage)) : false + text: qsTr("You don't have permission to send messages in this room") + color: colors.text + } + } diff --git a/resources/qml/MessageView.qml b/resources/qml/MessageView.qml
index 1f483bf9..7dbe7e12 100644 --- a/resources/qml/MessageView.qml +++ b/resources/qml/MessageView.qml
@@ -90,6 +90,7 @@ ScrollView { EmojiButton { id: reactButton + visible: chat.model ? chat.model.permissions.canSend(MtxEvent.Reaction) : false width: 16 hoverEnabled: true ToolTip.visible: hovered @@ -101,6 +102,7 @@ ScrollView { ImageButton { id: replyButton + visible: chat.model ? chat.model.permissions.canSend(MtxEvent.TextMessage) : false width: 16 hoverEnabled: true image: ":/icons/icons/ui/mail-reply.png" @@ -117,7 +119,7 @@ ScrollView { image: ":/icons/icons/ui/vertical-ellipsis.png" ToolTip.visible: hovered ToolTip.text: qsTr("Options") - onClicked: messageContextMenu.show(row.model.id, row.model.type, row.model.isEncrypted, row.model.isEditable, "", row.model.body, optionsButton) + onClicked: messageContextMenu.show(row.model.id, row.model.type, row.model.isSender, row.model.isEncrypted, row.model.isEditable, "", row.model.body, optionsButton) } } diff --git a/resources/qml/TimelineRow.qml b/resources/qml/TimelineRow.qml
index 7bc3df63..715e8bd1 100644 --- a/resources/qml/TimelineRow.qml +++ b/resources/qml/TimelineRow.qml
@@ -28,12 +28,12 @@ Item { TapHandler { acceptedButtons: Qt.RightButton - onSingleTapped: messageContextMenu.show(model.id, model.type, model.isEncrypted, model.isEditable, contentItem.child.hoveredLink, contentItem.child.copyText) + onSingleTapped: messageContextMenu.show(model.id, model.type, model.isSender, model.isEncrypted, model.isEditable, contentItem.child.hoveredLink, contentItem.child.copyText) gesturePolicy: TapHandler.ReleaseWithinBounds } TapHandler { - onLongPressed: messageContextMenu.show(model.id, model.type, model.isEncrypted, model.isEditable, contentItem.child.hoveredLink, contentItem.child.copyText) + onLongPressed: messageContextMenu.show(model.id, model.type, model.isSender, model.isEncrypted, model.isEditable, contentItem.child.hoveredLink, contentItem.child.copyText) onDoubleTapped: chat.model.reply = model.id gesturePolicy: TapHandler.ReleaseWithinBounds } diff --git a/resources/qml/TimelineView.qml b/resources/qml/TimelineView.qml
index 36184015..6750b427 100644 --- a/resources/qml/TimelineView.qml +++ b/resources/qml/TimelineView.qml
@@ -97,12 +97,14 @@ Page { property int eventType property bool isEncrypted property bool isEditable + property bool isSender - function show(eventId_, eventType_, isEncrypted_, isEditable_, link_, text_, showAt_) { + function show(eventId_, eventType_, isSender_, isEncrypted_, isEditable_, link_, text_, showAt_) { eventId = eventId_; eventType = eventType_; isEncrypted = isEncrypted_; isEditable = isEditable_; + isSender = isSender_; if (text_) text = text_; else @@ -134,6 +136,7 @@ Page { Platform.MenuItem { id: reactionOption + visible: TimelineManager.timeline ? TimelineManager.timeline.permissions.canSend(MtxEvent.Reaction) : false text: qsTr("React") onTriggered: emojiPopup.show(null, function(emoji) { TimelineManager.queueReactionMessage(messageContextMenu.eventId, emoji); @@ -141,12 +144,13 @@ Page { } Platform.MenuItem { + visible: TimelineManager.timeline ? TimelineManager.timeline.permissions.canSend(MtxEvent.TextMessage) : false text: qsTr("Reply") onTriggered: TimelineManager.timeline.replyAction(messageContextMenu.eventId) } Platform.MenuItem { - visible: messageContextMenu.isEditable + visible: messageContextMenu.isEditable && (TimelineManager.timeline ? TimelineManager.timeline.permissions.canSend(MtxEvent.TextMessage) : false) enabled: visible text: qsTr("Edit") onTriggered: TimelineManager.timeline.editAction(messageContextMenu.eventId) @@ -185,6 +189,7 @@ Page { } Platform.MenuItem { + visible: (TimelineManager.timeline ? TimelineManager.timeline.permissions.canRedact() : false) || messageContextMenu.isSender text: qsTr("Remove message") onTriggered: TimelineManager.timeline.redactEvent(messageContextMenu.eventId) } diff --git a/resources/qml/TopBar.qml b/resources/qml/TopBar.qml
index 858652c2..0b943ed1 100644 --- a/resources/qml/TopBar.qml +++ b/resources/qml/TopBar.qml
@@ -101,6 +101,7 @@ Rectangle { id: roomOptionsMenu Platform.MenuItem { + visible: TimelineManager.timeline ? TimelineManager.timeline.permissions.canInvite() : false text: qsTr("Invite users") onTriggered: TimelineManager.openInviteUsersDialog() } diff --git a/resources/qml/UserProfile.qml b/resources/qml/UserProfile.qml
index d0d272c9..bd25b74e 100644 --- a/resources/qml/UserProfile.qml +++ b/resources/qml/UserProfile.qml
@@ -44,7 +44,7 @@ ApplicationWindow { displayName: profile.displayName userid: profile.userid Layout.alignment: Qt.AlignHCenter - onClicked: profile.isSelf ? profile.changeAvatar() : TimelineManager.openImageOverlay(TimelineManager.timeline.avatarUrl(userid), TimelineManager.timeline.data.id) + onClicked: profile.isSelf ? profile.changeAvatar() : TimelineManager.openImageOverlay(profile.avatarUrl, "") } BusyIndicator { @@ -151,18 +151,7 @@ ApplicationWindow { } RowLayout { - Layout.alignment: Qt.AlignHCenter - spacing: 8 - - ImageButton { - image: ":/icons/icons/ui/do-not-disturb-rounded-sign.png" - hoverEnabled: true - ToolTip.visible: hovered - ToolTip.text: qsTr("Ban the user") - onClicked: profile.banUser() - } // ImageButton{ - // image:":/icons/icons/ui/volume-off-indicator.png" // Layout.margins: { // left: 5 @@ -174,6 +163,10 @@ ApplicationWindow { // profile.ignoreUser() // } // } + + Layout.alignment: Qt.AlignHCenter + spacing: 8 + ImageButton { image: ":/icons/icons/ui/black-bubble-speech.png" hoverEnabled: true @@ -188,6 +181,16 @@ ApplicationWindow { ToolTip.visible: hovered ToolTip.text: qsTr("Kick the user") onClicked: profile.kickUser() + visible: profile.room ? profile.room.permissions.canKick() : false + } + + ImageButton { + image: ":/icons/icons/ui/do-not-disturb-rounded-sign.png" + hoverEnabled: true + ToolTip.visible: hovered + ToolTip.text: qsTr("Ban the user") + onClicked: profile.banUser() + visible: profile.room ? profile.room.permissions.canBan() : false } }