diff --git a/resources/qml/ChatPage.qml b/resources/qml/ChatPage.qml index 966f169b..0fe65afc 100644 --- a/resources/qml/ChatPage.qml +++ b/resources/qml/ChatPage.qml @@ -31,8 +31,8 @@ Rectangle { TimelineView { id: timeline - room: Rooms.currentRoom + room: Rooms.currentRoom SplitView.fillWidth: true SplitView.minimumWidth: 400 } diff --git a/resources/qml/RoomList.qml b/resources/qml/RoomList.qml index 3109b75c..ecfb3af9 100644 --- a/resources/qml/RoomList.qml +++ b/resources/qml/RoomList.qml @@ -4,6 +4,7 @@ import "./dialogs" import Qt.labs.platform 1.1 as Platform +import QtQml 2.13 import QtQuick 2.13 import QtQuick.Controls 2.13 import QtQuick.Layouts 1.3 @@ -37,19 +38,12 @@ Page { property string roomid property var tags + property var allTags function show(roomid_, tags_) { roomid = roomid_; tags = tags_; - roomContextMenu.clear(); - roomContextMenu.addItem(leaveOpt.createObject(roomContextMenu)); - roomContextMenu.addItem(separatorOpt.createObject(roomContextMenu)); - for (let tag of Rooms.tags()) { - roomContextMenu.addItem(tagDelegate.createObject(roomContextMenu, { - "t": tag - })); - } - roomContextMenu.addItem(newTagOpt.createObject(roomContextMenu)); + allTags = Rooms.tags(); open(); } @@ -63,30 +57,22 @@ Page { } } - Component { - id: leaveOpt - - Platform.MenuItem { - text: qsTr("Leave room") - onTriggered: Rooms.leave(roomContextMenu.roomid) - } - + Platform.MenuItem { + text: qsTr("Leave room") + onTriggered: Rooms.leave(roomContextMenu.roomid) } - Component { - id: separatorOpt - - Platform.MenuSeparator { - text: qsTr("Tag room as:") - } - + Platform.MenuSeparator { + text: qsTr("Tag room as:") } - Component { - id: tagDelegate + Instantiator { + model: roomContextMenu.allTags + onObjectAdded: roomContextMenu.insertItem(index + 2, object) + onObjectRemoved: roomContextMenu.removeItem(object) - Platform.MenuItem { - property string t + delegate: Platform.MenuItem { + property string t: modelData text: { switch (t) { @@ -107,14 +93,9 @@ Page { } - Component { - id: newTagOpt - - Platform.MenuItem { - text: qsTr("Create new tag...") - onTriggered: newTag.show() - } - + Platform.MenuItem { + text: qsTr("Create new tag...") + onTriggered: newTag.show() } } @@ -166,9 +147,9 @@ Page { TapHandler { acceptedButtons: Qt.RightButton onSingleTapped: { - if (!TimelineManager.isInvite) { + if (!TimelineManager.isInvite) roomContextMenu.show(model.roomId, model.tags); - } + } gesturePolicy: TapHandler.ReleaseWithinBounds } @@ -176,9 +157,9 @@ Page { TapHandler { onSingleTapped: Rooms.setCurrentRoom(model.roomId) onLongPressed: { - if (!TimelineManager.isInvite) { + if (!TimelineManager.isInvite) roomContextMenu.show(model.roomId, model.tags); - } + } } @@ -524,7 +505,6 @@ Page { ToolTip.visible: hovered ToolTip.text: qsTr("Start a new chat") Layout.margins: Nheko.paddingMedium - onClicked: roomJoinCreateMenu.open(parent) Platform.Menu { @@ -541,6 +521,7 @@ Page { } } + } ImageButton { diff --git a/resources/qml/Root.qml b/resources/qml/Root.qml index c23ab97d..078281d4 100644 --- a/resources/qml/Root.qml +++ b/resources/qml/Root.qml @@ -74,11 +74,12 @@ Page { Shortcut { sequence: "Ctrl+Down" - onActivated: Rooms.nextRoom(); + onActivated: Rooms.nextRoom() } + Shortcut { sequence: "Ctrl+Up" - onActivated: Rooms.previousRoom(); + onActivated: Rooms.previousRoom() } Component {