Context Menu Related Improvement

This commit is contained in:
Black Hat
2018-08-04 20:35:31 +00:00
parent 0e34fce4a2
commit bfbd2af45d
8 changed files with 181 additions and 50 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,13 +24,41 @@ Item {
MouseArea {
anchors.fill: parent
onPressAndHold: messageContextMenu.popup()
onPressAndHold: menuComponent.createObject(this)
Menu {
id: messageContextMenu
MenuItem {
text: "Redact"
onTriggered: currentRoom.redactEvent(eventId)
Component {
id: menuComponent
Menu {
id: messageContextMenu
MenuItem {
text: "Copy"
onTriggered: matriqueController.copyToClipboard(plainText)
}
MenuItem {
text: "Copy Source"
onTriggered: matriqueController.copyToClipboard(toolTip)
}
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)
}
Component.onCompleted: popup()
}
}
}

View File

@@ -112,7 +112,6 @@ Item {
]
}
ListView {
id: listView
width: parent.width
@@ -125,6 +124,7 @@ Item {
opacity: 0.2
}
highlightMoveDuration: 250
highlightResizeDuration: 0
currentIndex: -1
@@ -135,16 +135,13 @@ Item {
delegate: ItemDelegate {
width: parent.width
height: 80
onClicked: listView.currentIndex = index
onPressAndHold: {
roomListMenu.roomIndex = index
roomListMenu.popup()
}
onPressed: listView.currentIndex = index
onPressAndHold: menuComponent.createObject(this)
ToolTip.visible: mini && hovered
ToolTip.text: name
contentItem: RowLayout {
contentItem: RowLayout {
anchors.fill: parent
anchors.margins: 16
spacing: 16
@@ -184,6 +181,33 @@ Item {
}
}
}
Component {
id: menuComponent
Menu {
id: roomListMenu
MenuItem {
text: "Favourite"
checkable: true
checked: currentRoom.isFavourite
onTriggered: currentRoom.isFavourite ? currentRoom.removeTag("m.favourite") : currentRoom.addTag("m.favourite", "1")
}
MenuItem {
text: "Deprioritize"
checkable: true
checked: currentRoom.isLowPriority
onTriggered: currentRoom.isLowPriority ? currentRoom.removeTag("m.lowpriority") : currentRoom.addTag("m.lowpriority", "1")
}
MenuSeparator {}
MenuItem {
text: "Leave Room"
onTriggered: matriqueController.forgetRoom(currentRoom.id)
}
Component.onCompleted: popup()
}
}
}
section.property: "category"
@@ -202,27 +226,6 @@ Item {
color: Material.theme == Material.Light ? "#dbdbdb" : "#363636"
}
}
Menu {
property int roomIndex: -1
readonly property int roomProxyIndex: roomListProxyModel.mapToSource(roomIndex)
readonly property var room: roomProxyIndex != -1 ? listModel.roomAt(roomProxyIndex) : null
id: roomListMenu
MenuItem {
text: "Favourite" + (roomListMenu.room && roomListMenu.room.isFavourite ? " \u2713" : "")
onTriggered: roomListMenu.room.isFavourite ? roomListMenu.room.removeTag("m.favourite") : roomListMenu.room.addTag("m.favourite", "1")
}
MenuItem {
text: "Deprioritize" + (roomListMenu.room && roomListMenu.room.isLowPriority ? " \u2713" : "")
onTriggered: roomListMenu.room.isLowPriority ? roomListMenu.room.removeTag("m.lowpriority") : roomListMenu.room.addTag("m.lowpriority", "1")
}
MenuItem {
text: "Leave Room"
onTriggered: matriqueController.forgetRoom(roomListMenu.room.id)
}
}
}
}
}