diff --git a/src/app/qml/AccountMenu.qml b/src/app/qml/AccountMenu.qml index 201c2a098..a121a375c 100644 --- a/src/app/qml/AccountMenu.qml +++ b/src/app/qml/AccountMenu.qml @@ -5,6 +5,7 @@ pragma ComponentBehavior: Bound import QtQuick import QtQuick.Controls as QQC2 +import QtMultimedia import org.kde.kirigami as Kirigami import org.kde.kirigamiaddons.components as KirigamiComponents @@ -18,6 +19,10 @@ KirigamiComponents.ConvergentContextMenu { required property NeoChatConnection connection required property Kirigami.ApplicationWindow window + data: MediaDevices { + id: devices + } + Kirigami.Action { text: i18nc("@action:button", "Show QR Code") icon.name: "view-barcode-qr-symbolic" @@ -32,6 +37,17 @@ KirigamiComponents.ConvergentContextMenu { } } + Kirigami.Action { + text: i18nc("@action:inmenu", "Scan a QR Code") + icon.name: "document-scan-symbolic" + visible: devices.videoInputs.length > 0 + onTriggered: (root.Kirigami.PageStack.pageStack as Kirigami.PageRow).pushDialogLayer(Qt.createComponent("org.kde.neochat", "QrScannerPage"), { + connection: root.connection + }, { + title: i18nc("@title", "Scan a QR Code") + }) + } + Kirigami.Action { text: i18nc("@action:inmenu", "Switch Account") icon.name: "system-switch-user" diff --git a/src/rooms/ExploreComponent.qml b/src/rooms/ExploreComponent.qml index 80132d656..57fad97fe 100644 --- a/src/rooms/ExploreComponent.qml +++ b/src/rooms/ExploreComponent.qml @@ -15,9 +15,7 @@ import org.kde.neochat RowLayout { id: root - property var desiredWidth property bool collapsed: false - required property NeoChatConnection connection signal search @@ -26,10 +24,6 @@ RowLayout { */ signal textChanged(string newText) - MediaDevices { - id: devices - } - Kirigami.Heading { Layout.fillWidth: true visible: !root.collapsed @@ -51,78 +45,4 @@ RowLayout { QQC2.ToolTip.text: text QQC2.ToolTip.delay: Kirigami.Units.toolTipDelay } - - QQC2.ToolButton { - id: menuButton - - property QQC2.Menu menuItem: null - - function openMenu(): void { - if (!menuItem || !menuItem.visible) { - menuItem = menu.createObject(menuButton) as QQC2.Menu; - menuItem.closed.connect(menuButton.toggle); - menuItem.open(); - } else { - menuItem.dismiss() - } - } - - Accessible.role: Accessible.ButtonMenu - display: QQC2.AbstractButton.IconOnly - down: pressed || menuItem?.visible - text: i18nc("@action:button", "Show Menu") - icon.name: "application-menu-symbolic" - - onPressed: openMenu() - Keys.onReturnPressed: openMenu() - Keys.onEnterPressed: openMenu() - Accessible.onPressAction: openMenu() - - QQC2.ToolTip.visible: hovered && !menuItem?.visible - QQC2.ToolTip.text: text - QQC2.ToolTip.delay: Kirigami.Units.toolTipDelay - } - - Component { - id: menu - QQC2.Menu { - y: menuButton.height - - QQC2.MenuItem { - text: i18n("Find your friends") - icon.name: "list-add-user" - onTriggered: (root.Kirigami.PageStack.pageStack as Kirigami.PageRow).pushDialogLayer(Qt.createComponent('org.kde.neochat', 'UserSearchPage'), { - connection: root.connection - }, { - title: i18nc("@title", "Find your friends") - }) - } - - QQC2.MenuItem { - text: i18n("Create a Room") - icon.name: "system-users-symbolic" - onTriggered: { - (Qt.createComponent('org.kde.neochat', 'CreateRoomDialog').createObject(root, { - connection: root.connection - }) as CreateRoomDialog).open(); - } - - Kirigami.Action { - shortcut: StandardKey.New - onTriggered: parent.trigger() - } - } - - QQC2.MenuItem { - text: i18n("Scan a QR Code") - icon.name: "view-barcode-qr" - visible: devices.videoInputs.length > 0 - onTriggered: (root.Kirigami.PageStack.pageStack as Kirigami.PageRow).pushDialogLayer(Qt.createComponent("org.kde.neochat", "QrScannerPage"), { - connection: root.connection - }, { - title: i18nc("@title", "Scan a QR Code") - }) - } - } - } } diff --git a/src/rooms/RoomListPage.qml b/src/rooms/RoomListPage.qml index b33807c7b..56ab26696 100644 --- a/src/rooms/RoomListPage.qml +++ b/src/rooms/RoomListPage.qml @@ -270,9 +270,7 @@ Kirigami.Page { Component { id: exploreComponent ExploreComponent { - desiredWidth: root.width - Kirigami.Units.largeSpacing collapsed: root.collapsed - connection: root.connection onSearch: root.search() diff --git a/src/rooms/SpaceDrawer.qml b/src/rooms/SpaceDrawer.qml index b16df0630..311d027ac 100644 --- a/src/rooms/SpaceDrawer.qml +++ b/src/rooms/SpaceDrawer.qml @@ -9,6 +9,7 @@ import QtQuick.Controls as QQC2 import QtQuick.Layouts import org.kde.kirigami as Kirigami +import org.kde.kirigamiaddons.components as KirigamiComponents import org.kde.neochat @@ -263,21 +264,46 @@ QQC2.Control { } AvatarTabButton { + id: createNewButton + Layout.fillWidth: true Layout.preferredHeight: width - Kirigami.Units.smallSpacing Layout.maximumHeight: width - Kirigami.Units.smallSpacing - text: i18n("Create a space") + text: i18nc("@action:button Create a new room or space", "Create") contentItem: Kirigami.Icon { source: "list-add" } activeFocusOnTab: true + down: menu.opened - onSelected: { - (Qt.createComponent('org.kde.neochat', 'CreateSpaceDialog').createObject(root, { - connection: root.connection - }) as CreateSpaceDialog).open(); + onSelected: menu.popup(root.QQC2.Overlay.overlay, createNewButton.mapToGlobal(Qt.point(createNewButton.width, 0))) + + KirigamiComponents.ConvergentContextMenu { + id: menu + + Kirigami.Action { + text: i18nc("@action:button Create a new room", "New Room…") + icon.name: "list-add-symbolic" + + onTriggered: { + (Qt.createComponent('org.kde.neochat', 'CreateRoomDialog').createObject(root, { + connection: root.connection + }) as CreateRoomDialog).open(); + } + } + + Kirigami.Action { + text: i18nc("@action:button Create a new room", "New Space…") + icon.name: "list-add-symbolic" + + onTriggered: { + (Qt.createComponent('org.kde.neochat', 'CreateSpaceDialog').createObject(root, { + connection: root.connection + }) as CreateSpaceDialog).open(); + } + } } }