Add universal context menu for message bubbles.

Also some minor changes.
This commit is contained in:
Black Hat
2018-08-05 02:49:21 +08:00
parent 0e34fce4a2
commit e0158daf07
8 changed files with 159 additions and 24 deletions

View File

@@ -22,7 +22,6 @@ Item {
selectFolder: true
onAccepted: currentRoom.downloadFile(eventId, folder + "/" + currentRoom.fileNameToDownload(eventId))
}
onDownloadedChanged: downloaded && openOnFinished ? openSavedFile() : {}

View File

@@ -3,6 +3,9 @@ import QtQuick.Controls 2.2
import QtQuick.Controls.Material 2.2
AvatarContainer {
readonly property var downloadAndOpen: downloadable.downloadAndOpen
readonly property var saveFileAs: downloadable.saveFileAs
Rectangle {
id: messageRect
@@ -33,20 +36,6 @@ AvatarContainer {
ToolTip.text: content.body
onClicked: downloadable.downloadAndOpen()
onPressAndHold: messageImageMenu.popup()
}
Menu {
id: messageImageMenu
MenuItem {
text: "View"
onTriggered: downloadable.downloadAndOpen()
}
MenuItem {
text: "Save as..."
onTriggered: downloadable.saveFileAs()
}
}
}
}

View File

@@ -24,17 +24,47 @@ Item {
MouseArea {
anchors.fill: parent
onPressAndHold: messageContextMenu.popup()
onPressAndHold: {
menuLoader.sourceComponent = menuComponent
menuLoader.item.popup()
}
Menu {
id: messageContextMenu
MenuItem {
text: "Redact"
onTriggered: currentRoom.redactEvent(eventId)
Component {
id: menuComponent
Menu {
id: messageContextMenu
MenuItem {
text: "Copy"
onTriggered: matriqueController.copyToClipboard(plainText)
}
MenuItem {
visible: isFile
height: visible ? undefined : 0
text: "Open Externally"
onTriggered: delegateLoader.item.downloadAndOpen()
}
MenuItem {
visible: isFile
height: visible ? undefined : 0
text: "Save As"
onTriggered: delegateLoader.item.saveFileAs()
}
MenuItem {
visible: sentByMe
height: visible ? undefined : 0
text: "Redact"
onTriggered: currentRoom.redactEvent(eventId)
}
}
}
}
Loader {
id: menuLoader
}
Loader {
id: delegateLoader

View File

@@ -211,13 +211,18 @@ Item {
id: roomListMenu
MenuItem {
text: "Favourite" + (roomListMenu.room && roomListMenu.room.isFavourite ? " \u2713" : "")
text: "Favourite"
checkable: true
checked: roomListMenu.room && roomListMenu.room.isFavourite
onTriggered: roomListMenu.room.isFavourite ? roomListMenu.room.removeTag("m.favourite") : roomListMenu.room.addTag("m.favourite", "1")
}
MenuItem {
text: "Deprioritize" + (roomListMenu.room && roomListMenu.room.isLowPriority ? " \u2713" : "")
text: "Deprioritize"
checkable: true
checked: roomListMenu.room && roomListMenu.room.isLowPriority
onTriggered: roomListMenu.room.isLowPriority ? roomListMenu.room.removeTag("m.lowpriority") : roomListMenu.room.addTag("m.lowpriority", "1")
}
MenuSeparator {}
MenuItem {
text: "Leave Room"
onTriggered: matriqueController.forgetRoom(roomListMenu.room.id)