// SPDX-FileCopyrightText: 2023 James Graham // SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL import QtQuick import QtQuick.Controls as QQC2 import QtQuick.Layouts import org.kde.kirigami as Kirigami import org.kde.kirigamiaddons.delegates as Delegates import org.kde.neochat RowLayout { id: root property var desiredWidth property bool collapsed: false required property NeoChatConnection connection signal search /** * @brief Emitted when the text is changed in the search field. */ signal textChanged(string newText) Item { Layout.preferredWidth: Kirigami.Units.largeSpacing } Kirigami.Heading { Layout.fillWidth: true visible: !root.collapsed text: i18nc("@title", "Rooms") } Item { Layout.fillWidth: true visible: root.collapsed } QQC2.ToolButton { id: searchButton display: QQC2.AbstractButton.IconOnly onClicked: root.search(); icon.name: "search" text: i18nc("@action", "Search Rooms") Shortcut { sequence: "Ctrl+F" onActivated: searchButton.clicked() } QQC2.ToolTip.visible: hovered QQC2.ToolTip.text: text QQC2.ToolTip.delay: Kirigami.Units.toolTipDelay } QQC2.ToolButton { id: menuButton Accessible.role: Accessible.ButtonMenu Accessible.onPressAction: menuButton.action.trigger() display: QQC2.AbstractButton.IconOnly checkable: true action: QQC2.Action { text: i18nc("@action:button", "Show Menu") icon.name: "application-menu-symbolic" onTriggered: { const item = menu.createObject(menuButton); item.closed.connect(menuButton.toggle); item.open(); } } QQC2.ToolTip.visible: hovered QQC2.ToolTip.text: text QQC2.ToolTip.delay: Kirigami.Units.toolTipDelay } Component { id: menu QQC2.Menu { QQC2.MenuItem { text: i18n("Explore rooms") icon.name: "compass" onTriggered: { let dialog = pageStack.pushDialogLayer(Qt.createComponent('org.kde.neochat', 'ExploreRoomsPage'), { connection: root.connection }, { title: i18nc("@title", "Explore Rooms") }); dialog.roomSelected.connect((roomId, displayName, avatarUrl, alias, topic, memberCount, isJoined) => { RoomManager.resolveResource(roomId.length > 0 ? roomId : alias, isJoined ? "" : "join"); }); } } QQC2.MenuItem { text: i18n("Find your friends") icon.name: "list-add-user" onTriggered: pageStack.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" action: QQC2.Action { shortcut: StandardKey.New onTriggered: { pageStack.pushDialogLayer(Qt.createComponent('org.kde.neochat', 'CreateRoomDialog'), { connection: root.connection }, { title: i18nc("@title", "Create a Room") }); } } } QQC2.MenuItem { text: i18n("Create a Space") icon.name: "list-add" onTriggered: { pageStack.pushDialogLayer(Qt.createComponent('org.kde.neochat', 'CreateRoomDialog'), { connection: root.connection, isSpace: true, title: i18nc("@title", "Create a Space") }, { title: i18nc("@title", "Create a Space") }); } } QQC2.MenuItem { text: i18n("Scan a QR Code") icon.name: "view-barcode-qr" onTriggered: pageStack.pushDialogLayer(Qt.createComponent("org.kde.neochat", "QrScannerPage"), { connection: root.connection }, { title: i18nc("@title", "Scan a QR Code") }) } } } }