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
}
}
|