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", "New Private Chat…")
0049             enabled: pageStack.layers.currentItem.title !== i18n("Start a Chat") && AccountRegistry.accountCount > 0
0050             onTriggered: pushReplaceLayer("qrc:/org/kde/neochat/qml/StartChatPage.qml", {connection: root.connection})
0051         }
0052         Labs.MenuItem {
0053             text: i18nc("menu", "New Group…")
0054             enabled: pageStack.layers.currentItem.title !== i18n("Start a Chat") && AccountRegistry.accountCount > 0
0055             shortcut: StandardKey.New
0056             onTriggered: {
0057                 const dialog = createRoomDialog.createObject(root.overlay)
0058                 dialog.open()
0059             }
0060         }
0061         Labs.MenuItem {
0062             text: i18nc("menu", "Browse Chats…")
0063             onTriggered: {
0064                 let dialog = pageStack.pushDialogLayer("qrc:/org/kde/neochat/qml/JoinRoomPage.qml", {connection: root.connection}, {title: i18nc("@title", "Explore Rooms")})
0065                 dialog.roomSelected.connect((roomId, displayName, avatarUrl, alias, topic, memberCount, isJoined) => {
0066                     if (isJoined) {
0067                         RoomManager.enterRoom(root.connection.room(roomId))
0068                     } else {
0069                         RoomManager.resolveResource(roomId, "join")
0070                     }
0071                 })
0072             }
0073         }
0074     }
0075     EditMenu {
0076         title: i18nc("menu", "Edit")
0077         field: (root.activeFocusItem instanceof TextEdit || root.activeFocusItem instanceof TextInput) ? root.activeFocusItem : null
0078     }
0079     Labs.Menu {
0080         title: i18nc("menu", "View")
0081 
0082         Labs.MenuItem {
0083             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")
0084             shortcut: "Ctrl+K"
0085             onTriggered: quickView.item.open()
0086         }
0087     }
0088     Labs.Menu {
0089         title: i18nc("menu", "Window")
0090 
0091         // Labs.MenuItem {
0092         //     text: settings.userWantsSidebars ? i18nc("menu", "Hide Sidebar") : i18nc("menu", "Show Sidebar")
0093         //     onTriggered: settings.userWantsSidebars = !settings.userWantsSidebars
0094         // }
0095         Labs.MenuItem {
0096             text: root.visibility === Window.FullScreen ? i18nc("menu", "Exit Full Screen") : i18nc("menu", "Enter Full Screen")
0097             onTriggered: root.visibility === Window.FullScreen ? root.showNormal() : root.showFullScreen()
0098         }
0099     }
0100     // TODO: offline help system (https://invent.kde.org/network/neochat/-/issues/411)
0101     Labs.Menu {
0102         title: i18nc("menu", "Help")
0103 
0104         Labs.MenuItem {
0105             text: i18nc("menu", "Matrix FAQ")
0106             onTriggered: UrlHelper.openUrl("https://matrix.org/faq/")
0107         }
0108     }
0109 }