Rework context menu RoomList

- Finish port to qt6 and replace icon by icon.name
- Use RoundedItemDelegate
This commit is contained in:
Carl Schwan
2023-09-21 17:22:07 +02:00
committed by Tobias Fella
parent f0a7216b4b
commit 442a343097
3 changed files with 46 additions and 31 deletions

View File

@@ -2,14 +2,15 @@
// SPDX-FileCopyrightText: 2020 Carl Schwan <carl@carlschwan.eu>
// SPDX-License-Identifier: GPL-3.0-only
import QtQuick 2.15
import QtQuick.Controls 2.15 as QQC2
import QtQuick.Layouts 1.15
import QtQuick
import QtQuick.Controls as QQC2
import QtQuick.Layouts
import org.kde.kirigami 2.19 as Kirigami
import org.kde.kirigamiaddons.labs.components 1.0 as KirigamiComponents
import org.kde.kirigami 2 as Kirigami
import org.kde.kirigamiaddons.components 1 as KirigamiComponents
import org.kde.kirigamiaddons.delegates 1 as Delegates
import org.kde.neochat 1.0
import org.kde.neochat
/**
* Context menu when clicking on a room in the room list
@@ -142,20 +143,23 @@ Loader {
Kirigami.OverlayDrawer {
id: drawer
height: popupContent.implicitHeight
parent: applicationWindow().overlay
edge: Qt.BottomEdge
padding: 0
height: popupContent.implicitHeight
leftPadding: 0
rightPadding: 0
bottomPadding: 0
topPadding: 0
parent: applicationWindow().overlay
ColumnLayout {
id: popupContent
width: parent.width
spacing: 0
RowLayout {
id: headerLayout
Layout.fillWidth: true
@@ -192,29 +196,31 @@ Loader {
}
}
Kirigami.BasicListItem {
Delegates.RoundedItemDelegate {
text: room.isLowPriority ? i18n("Reprioritize") : i18n("Deprioritize")
icon.name: room.isLowPriority ? "arrow-up" : "arrow-down"
onClicked: room.isLowPriority ? room.removeTag("m.lowpriority") : room.addTag("m.lowpriority", 1.0)
implicitHeight: visible ? Kirigami.Units.gridUnit * 3 : 0
Layout.fillWidth: true
}
Kirigami.BasicListItem {
Delegates.RoundedItemDelegate {
text: i18n("Mark as Read")
icon.name: "checkmark"
onClicked: room.markAllMessagesAsRead()
implicitHeight: visible ? Kirigami.Units.gridUnit * 3 : 0
Layout.fillWidth: true
}
Kirigami.BasicListItem {
Delegates.RoundedItemDelegate {
text: i18n("Leave Room")
icon.name: "go-previous"
onClicked: {
RoomManager.leaveRoom(room)
drawer.close()
}
implicitHeight: visible ? Kirigami.Units.gridUnit * 3 : 0
Layout.fillWidth: true
}
}
onClosed: root.closed()
}
}

View File

@@ -1,13 +1,14 @@
// SPDX-FileCopyrightText: 2023 James Graham <james.h.graham@protonmail.com>
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
import QtQuick 2.15
import QtQuick.Controls 2.15 as QQC2
import QtQuick.Layouts 1.15
import QtQuick
import QtQuick.Controls as QQC2
import QtQuick.Layouts
import org.kde.kirigami 2.15 as Kirigami
import org.kde.kirigami 2 as Kirigami
import org.kde.kirigamiaddons.delegates 1 as Delegates
import org.kde.neochat 1.0
import org.kde.neochat
RowLayout {
id: root
@@ -114,14 +115,15 @@ RowLayout {
Kirigami.OverlayDrawer {
id: menuRoot
edge: Qt.BottomEdge
parent: applicationWindow().overlay
leftPadding: 0
rightPadding: 0
bottomPadding: 0
topPadding: 0
parent: applicationWindow().overlay
ColumnLayout {
width: parent.width
spacing: 0
@@ -129,25 +131,29 @@ RowLayout {
Kirigami.ListSectionHeader {
label: i18n("Create rooms and chats")
}
Kirigami.BasicListItem {
implicitHeight: Kirigami.Units.gridUnit * 3
Delegates.RoundedItemDelegate {
action: exploreAction
onClicked: menuRoot.close()
Layout.fillWidth: true
}
Kirigami.BasicListItem {
implicitHeight: Kirigami.Units.gridUnit * 3
Delegates.RoundedItemDelegate {
action: chatAction
onClicked: menuRoot.close()
Layout.fillWidth: true
}
Kirigami.BasicListItem {
implicitHeight: Kirigami.Units.gridUnit * 3
Delegates.RoundedItemDelegate {
action: roomAction
onClicked: menuRoot.close()
Layout.fillWidth: true
}
Kirigami.BasicListItem {
implicitHeight: Kirigami.Units.gridUnit * 3
Delegates.RoundedItemDelegate {
action: roomAction
onClicked: menuRoot.close()
Layout.fillWidth: true
}
}
}

View File

@@ -137,6 +137,9 @@ Delegates.RoundedItemDelegate {
function createRoomListContextMenu() {
const component = Qt.createComponent("qrc:/RoomList/ContextMenu.qml")
if (component.status === Component.Error) {
console.error(component.errorString());
}
const menu = component.createObject(root, {
room: root.currentRoom,
connection: root.connection