Warning, /network/neochat/src/qml/GlobalMenu.qml is written in an unsupported language. File is not indexed.

0001 // SPDX-FileCopyrightText: 2021 Carson Black <uhhadd@gmail.com>
0002 // SPDX-License-Identifier: GPL-3.0-or-later
0003 
0004 import Qt.labs.platform as Labs
0005 
0006 import QtQuick
0007 import QtQuick.Window
0008 import QtQuick.Layouts
0009 
0010 import org.kde.neochat
0011 import org.kde.neochat.config
0012 import org.kde.neochat.accounts
0013 
0014 Labs.MenuBar {
0015     id: root
0016 
0017     required property NeoChatConnection connection
0018 
0019     Labs.Menu {
0020         title: i18nc("menu", "NeoChat")
0021 
0022         // TODO: make about page its own thing so we can go to it instead of settings where it's currently at
0023         // Labs.MenuItem {
0024         //     text: i18nc("menu", "About NeoChat")
0025         // }
0026         Labs.MenuItem {
0027             enabled: pageStack.layers.currentItem.title !== i18n("Configure NeoChat...")
0028             text: i18nc("menu", "Configure NeoChat...")
0029 
0030             shortcut: StandardKey.Preferences
0031             onTriggered: pageStack.pushDialogLayer("qrc:/org/kde/neochat/qml/SettingsPage.qml", {
0032                 connection: root.connection
0033             }, {
0034                 title: i18n("Configure")
0035             })
0036         }
0037         Labs.MenuItem {
0038             text: i18nc("menu", "Quit NeoChat")
0039 
0040             shortcut: StandardKey.Quit
0041             onTriggered: Qt.quit()
0042         }
0043     }
0044     Labs.Menu {
0045         title: i18nc("menu", "File")
0046 
0047         Labs.MenuItem {
0048             text: i18nc("menu", "Find your friends")
0049             enabled: pageStack.layers.currentItem.title !== i18n("Find your friends") && AccountRegistry.accountCount > 0
0050             onTriggered: pushReplaceLayer("qrc:/org/kde/neochat/qml/UserSearchPage.qml", {
0051                 connection: root.connection
0052             }, {
0053                 title: i18nc("@title", "Find your friends")
0054             })
0055         }
0056         Labs.MenuItem {
0057             text: i18nc("menu", "New Group…")
0058             enabled: pageStack.layers.currentItem.title !== i18n("Find your friends") && AccountRegistry.accountCount > 0
0059             shortcut: StandardKey.New
0060             onTriggered: {
0061                 const dialog = createRoomDialog.createObject(root.overlay);
0062                 dialog.open();
0063             }
0064         }
0065         Labs.MenuItem {
0066             text: i18nc("menu", "Browse Chats…")
0067             onTriggered: {
0068                 let dialog = pageStack.pushDialogLayer("qrc:/org/kde/neochat/qml/ExploreRoomsPage.qml", {
0069                     connection: root.connection
0070                 }, {
0071                     title: i18nc("@title", "Explore Rooms")
0072                 });
0073                 dialog.roomSelected.connect((roomId, displayName, avatarUrl, alias, topic, memberCount, isJoined) => {
0074                     RoomManager.resolveResource(roomId.length > 0 ? roomId : alias, isJoined ? "" : "join");
0075                 });
0076             }
0077         }
0078     }
0079     EditMenu {
0080         title: i18nc("menu", "Edit")
0081         field: (root.activeFocusItem instanceof TextEdit || root.activeFocusItem instanceof TextInput) ? root.activeFocusItem : null
0082     }
0083     Labs.Menu {
0084         title: i18nc("menu", "View")
0085 
0086         Labs.MenuItem {
0087             text: i18nc("menu item that opens a UI element called the 'Quick Switcher', which offers a fast keyboard-based interface for switching in between chats.", "Open Quick Switcher")
0088             shortcut: "Ctrl+K"
0089             onTriggered: quickView.item.open()
0090         }
0091     }
0092     Labs.Menu {
0093         title: i18nc("menu", "Window")
0094 
0095         // Labs.MenuItem {
0096         //     text: settings.userWantsSidebars ? i18nc("menu", "Hide Sidebar") : i18nc("menu", "Show Sidebar")
0097         //     onTriggered: settings.userWantsSidebars = !settings.userWantsSidebars
0098         // }
0099         Labs.MenuItem {
0100             text: root.visibility === Window.FullScreen ? i18nc("menu", "Exit Full Screen") : i18nc("menu", "Enter Full Screen")
0101             onTriggered: root.visibility === Window.FullScreen ? root.showNormal() : root.showFullScreen()
0102         }
0103     }
0104     // TODO: offline help system (https://invent.kde.org/network/neochat/-/issues/411)
0105     Labs.Menu {
0106         title: i18nc("menu", "Help")
0107 
0108         Labs.MenuItem {
0109             text: i18nc("menu", "Matrix FAQ")
0110             onTriggered: UrlHelper.openUrl("https://matrix.org/faq/")
0111         }
0112     }
0113 }