Warning, /multimedia/haruna/src/qml/Haruna/Components/HamburgerMenu.qml is written in an unsupported language. File is not indexed.

0001 /*
0002  * SPDX-FileCopyrightText: 2022 Kartikey Subramanium <kartikey@tutanota.com>
0003  *
0004  * SPDX-License-Identifier: GPL-3.0-or-later
0005  */
0006 
0007 import QtQuick
0008 import QtQuick.Controls
0009 import QtQuick.Layouts
0010 
0011 import org.kde.kirigami as Kirigami
0012 import org.kde.haruna
0013 
0014 ToolButton {
0015     id: root
0016 
0017     property int position: HamburgerMenu.Position.Header
0018 
0019     enum Position {
0020         Header = 0,
0021         Footer
0022     }
0023 
0024     icon.name: "application-menu"
0025     focusPolicy: Qt.NoFocus
0026 
0027     onReleased: {
0028         menu.visible = !menu.visible
0029     }
0030 
0031     Menu {
0032         id: menu
0033 
0034         y: root.position === HamburgerMenu.Position.Header
0035            ? parent.height + Kirigami.Units.smallSpacing
0036            : -height - Kirigami.Units.smallSpacing
0037         closePolicy: Popup.CloseOnReleaseOutsideParent
0038 
0039         MenuItem {
0040             action: appActions.openFileAction
0041             visible: root.position === HamburgerMenu.Position.Footer
0042         }
0043         MenuItem {
0044             action: appActions.openUrlAction
0045             visible: root.position === HamburgerMenu.Position.Footer
0046         }
0047 
0048         Menu {
0049             title: i18nc("@action:inmenu", "Recent Files")
0050 
0051             Repeater {
0052                 model: recentFilesModel
0053                 delegate: MenuItem {
0054                     text: model.name
0055                     onClicked: window.openFile(model.path)
0056                 }
0057             }
0058         }
0059 
0060         SubtitleTracksMenu {
0061             model: mpv.subtitleTracksModel
0062             isPrimarySubtitleMenu: false
0063             title: i18nc("@title:menu", "Secondary Subtitle")
0064         }
0065 
0066         MenuSeparator {}
0067 
0068         MenuItem { action: appActions.toggleFullscreenAction }
0069         MenuItem { action: appActions.toggleDeinterlacingAction }
0070         MenuItem { action: appActions.screenshotAction }
0071 
0072         MenuSeparator {}
0073 
0074         MenuItem {
0075             action: appActions.configureAction
0076             visible: root.position === HamburgerMenu.Position.Footer
0077         }
0078         MenuItem { action: appActions.configureShortcutsAction }
0079         MenuItem { action: appActions.aboutHarunaAction }
0080 
0081         MenuSeparator {}
0082 
0083         Menu {
0084             title: i18nc("@action:inmenu", "&More")
0085 
0086             FileMenu {}
0087             ViewMenu {}
0088             PlaybackMenu {}
0089             VideoMenu {}
0090             SubtitlesMenu {}
0091             AudioMenu {}
0092             SettingsMenu {}
0093             HelpMenu {}
0094         }
0095     }
0096 
0097     SubtitleTracksMenu {
0098         id: primarySubtitlesMenu
0099 
0100         model: mpv.subtitleTracksModel
0101         isPrimarySubtitleMenu: true
0102         title: i18nc("@title:menu", "Primary Subtitle")
0103 
0104         Component.onCompleted: {
0105             if (root.position === HamburgerMenu.Position.Footer) {
0106                 menu.insertMenu(4, primarySubtitlesMenu)
0107             }
0108         }
0109     }
0110 
0111     Menu {
0112         id: audioMenu
0113 
0114         title: i18nc("@title:menu", "&Audio Track")
0115         enabled: mpv.audioTracksModel.rowCount() > 0
0116 
0117         Repeater {
0118             id: audioMenuInstantiator
0119             model: mpv.audioTracksModel
0120             delegate: MenuItem {
0121                 id: audioMenuItem
0122                 checkable: true
0123                 checked: model.id === mpv.audioId
0124                 text: model.text
0125                 onTriggered: mpv.audioId = model.id
0126             }
0127         }
0128 
0129         Component.onCompleted: {
0130             if (root.position === HamburgerMenu.Position.Footer) {
0131                 menu.insertMenu(5, audioMenu)
0132             }
0133         }
0134     }
0135 }