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 }