Warning, /plasma/plank-player/app/qml/Menu.qml is written in an unsupported language. File is not indexed.

0001 // SPDX-FileCopyrightText: 2021 Aditya Mehra <aix.m@outlook.com>
0002 //
0003 // SPDX-License-Identifier: GPL-2.0-or-later
0004 
0005 import QtQuick 2.15
0006 import QtQuick.Window 2.15
0007 import QtQuick.Layouts 1.15
0008 import org.kde.kirigami 2.19 as Kirigami
0009 import QtQuick.Controls 2.15 as Controls
0010 import Qt.labs.folderlistmodel 2.4
0011 import QtMultimedia
0012 
0013 Controls.Popup {
0014     id: menuPopupArea
0015     width: parent.width / 2
0016     height:  parent.height / 2
0017     x: (parent.width - width) / 2
0018     y: (parent.height - height) / 2
0019     dim: true
0020 
0021     onOpened: {
0022         if(testModelView.count > 0){
0023             testModelView.forceActiveFocus()
0024         } else {
0025             fileModelFolderSelector.forceActiveFocus()
0026         }
0027     }
0028 
0029     Controls.Overlay.modeless: Rectangle {
0030         color: Qt.rgba(Kirigami.Theme.backgroundColor.r, Kirigami.Theme.backgroundColor.g, Kirigami.Theme.backgroundColor.b, 0.77)
0031     }
0032 
0033     background: Rectangle {
0034         Kirigami.Theme.colorSet: Kirigami.Theme.View
0035         color: Kirigami.Theme.backgroundColor
0036         border.color: "black"
0037     }
0038 
0039     FolderListModel {
0040         id: folderModel
0041         folder: Qt.resolvedUrl("file://" + HomeDirectory)
0042         rootFolder: Qt.resolvedUrl("file:///")
0043         showDirs: true
0044         showFiles: false
0045         showDotAndDotDot: true
0046         nameFilters: [".*"]
0047     }
0048 
0049     FolderListModel {
0050         id: fileModel
0051         folder: folderModel.folder
0052         showDirs: false
0053         showDotAndDotDot: false
0054         showOnlyReadable: true
0055         nameFilters: ["*.WEBM", "*.MPG", "*.MP2", "*.MPEG", "*.MPE", "*.MPV", "*.OGG", "*.MP4", "*.M4P", "*.M4V", "*.MKV", "*.AVI", "*.WMV", "*.MOV", "*.QT", "*.FLV", "*.SWF", "*.AVCHD", "*.264", "*.3G2", "*.3GP", "*.3MM", "*.3P2", "*.DIVX", "*.DVM", "*.DVR", "*.DVX", "*.F4V", "*.M2V", "*.M4E", "*.M4U", "*.M4V", "*.MJP", "*.MJ2", "*.MK3D", "*.MP4V", "*.MPG2", "*.MQV", "*.OGV", "*.TS", "*.VP6", "*.VP7", "*.VP8", "*.VP9", "*.VRO", "*.XVID", "*.webm", "*.mpg", "*.mp2", "*.mpeg", "*.mpe", "*.mpv", "*.ogg", "*.mp4", "*.m4p", "*.m4v", "*.mkv", "*.avi", "*.wmv", "*.mov", "*.qt", "*.flv", "*.swf", "*.avchd", "*.264", "*.3g2", "*.3gp", "*.3mm", "*.3p2", "*.divx", "*.dvm", "*.dvr", "*.dvx", "*.f4v", "*.m2v", "*.m4e", "*.m4u", "*.m4v", "*.mjp", "*.mj2", "*.mk3d", "*.mp4v", "*.mpg2", "*.mqv", "*.ogv", "*.ts", "*.vp6", "*.vp7", "*.vp8", "*.vp9", "*.vro", "*.xvid"]
0056     }
0057 
0058     Item {
0059         width: parent.width
0060         height: parent.height
0061 
0062         RowLayout {
0063             id: headerAreaBMLPg1
0064             anchors.top: parent.top
0065             anchors.left: parent.left
0066             anchors.right: parent.right
0067             height: Kirigami.Units.gridUnit * 2
0068 
0069             Rectangle {
0070                 color: Kirigami.Theme.backgroundColor
0071                 radius: 10
0072                 Layout.fillWidth: true
0073                 Layout.fillHeight: true
0074                 Layout.margins: Kirigami.Units.smallSpacing
0075 
0076                 Controls.Label {
0077                     anchors.fill: parent
0078                     anchors.leftMargin: Kirigami.Units.largeSpacing
0079                     anchors.topMargin: Kirigami.Units.smallSpacing
0080                     anchors.bottomMargin: Kirigami.Units.smallSpacing
0081                     anchors.rightMargin: Kirigami.Units.largeSpacing
0082                     color: Kirigami.Theme.textColor
0083                     elide: Text.ElideRight
0084                     maximumLineCount: 1
0085                     text: folderModel.folder.toString().replace("file://", "")
0086                 }
0087             }
0088 
0089             Controls.Label {
0090                 id: backbtnlabelHeading
0091                 text: i18n("Press 'esc' or the [←] Back button to close")
0092                 Layout.alignment: Qt.AlignRight
0093             }
0094         }
0095 
0096         Kirigami.Separator {
0097             id: headrSeptBml
0098             anchors.top: headerAreaBMLPg1.bottom
0099             width: parent.width
0100             height: 1
0101         }
0102 
0103         RowLayout {
0104             anchors.top: headrSeptBml.bottom
0105             anchors.left: parent.left
0106             anchors.right: parent.right
0107             anchors.bottom: parent.bottom
0108             anchors.margins: Kirigami.Units.largeSpacing
0109 
0110             ListView {
0111                 id: fileModelFolderSelector
0112                 model: folderModel
0113                 Layout.preferredWidth: parent.width * 0.30
0114                 Layout.fillHeight: true
0115                 keyNavigationEnabled: true
0116                 highlightFollowsCurrentItem: true
0117                 highlightRangeMode: GridView.ApplyRange
0118                 spacing: Kirigami.Units.smallSpacing
0119                 clip: true
0120                 KeyNavigation.right: testModelView
0121                 delegate: MenuButton {
0122                     iconSource: "folder"
0123                     text: i18n(fileName)
0124 
0125                     onClicked: (mouse)=> {
0126                         folderModel.folder = fileUrl
0127                     }
0128                 }
0129             }
0130 
0131             GridView {
0132                 id: testModelView
0133                 model: fileModel
0134                 Layout.fillWidth: true
0135                 Layout.fillHeight: true
0136                 cellWidth: parent.width / 6
0137                 cellHeight: cellWidth
0138                 keyNavigationEnabled: true
0139                 highlightFollowsCurrentItem: true
0140                 highlightRangeMode: GridView.ApplyRange
0141                 snapMode: GridView.SnapToRow
0142                 cacheBuffer: width
0143                 highlightMoveDuration: Kirigami.Units.longDuration
0144                 clip: true
0145                 KeyNavigation.left: fileModelFolderSelector
0146                 enabled: fileModel.count > 0 ? 1 :0
0147                 delegate: FileItemDelegate {
0148                     onClicked: (mouse)=> {
0149                         window.videoSource = fileUrl
0150                         menuPopupArea.close()
0151                     }
0152                 }
0153 
0154                 onCountChanged: {
0155                     if(testModelView.count > 0){
0156                         testModelView.forceActiveFocus()
0157                         testModelView.currentIndex = 0
0158                         fileModelFolderSelector.currentIndex = 0
0159                     } else {
0160                         fileModelFolderSelector.forceActiveFocus()
0161                         fileModelFolderSelector.currentIndex = 0
0162                     }
0163                 }
0164 
0165                 move: Transition {
0166                     SmoothedAnimation {
0167                         property: "x"
0168                         duration: Kirigami.Units.longDuration
0169                     }
0170                 }
0171             }
0172         }
0173     }
0174 }