Warning, /maui/vvave/src/widgets/TracksGroup.qml is written in an unsupported language. File is not indexed.
0001 import QtQuick 2.15 0002 import QtQuick.Controls 2.15 0003 import QtQuick.Layouts 1.3 0004 0005 import org.mauikit.controls 1.3 as Maui 0006 import org.maui.vvave 1.0 as Vvave 0007 import org.mauikit.filebrowsing 1.3 as FB 0008 0009 import "BabeTable" 0010 import "BabeGrid" 0011 0012 import "../db/Queries.js" as Q 0013 import "../utils/Player.js" as Player 0014 0015 Maui.SectionGroup 0016 { 0017 id: control 0018 Maui.Theme.colorSet: Maui.Theme.Window 0019 Maui.Theme.inherit: false 0020 0021 property alias currentIndex: _gridView.currentIndex 0022 property alias listModel : _listModel 0023 property alias browser : _gridView 0024 property alias list : _list 0025 0026 property int orientation: Qt.Horizontal 0027 property bool coverArt: settings.showArtwork 0028 0029 padding: Maui.Style.space.medium 0030 0031 visible: _gridView.count 0032 0033 background: Rectangle 0034 { 0035 color: Maui.Theme.backgroundColor 0036 radius: Maui.Style.radiusV 0037 } 0038 0039 template.template.content: Maui.ToolButtonMenu 0040 { 0041 icon.name: "media-playback-start" 0042 0043 MenuItem 0044 { 0045 icon.name : "media-playback-start" 0046 text: i18n("Play All") 0047 onTriggered: Player.playAllModel(control.listModel.list) 0048 0049 } 0050 0051 MenuItem 0052 { 0053 icon.name : "media-playlist-append" 0054 text: i18n("Append All") 0055 onTriggered: Player.appendAllModel(control.listModel.list) 0056 } 0057 } 0058 0059 TableMenu 0060 { 0061 id: contextMenu 0062 0063 MenuSeparator {} 0064 0065 MenuItem 0066 { 0067 text: i18n("Go to Artist") 0068 icon.name: "view-media-artist" 0069 onTriggered: goToArtist(listModel.get(control.currentIndex).artist) 0070 } 0071 0072 MenuItem 0073 { 0074 text: i18n("Go to Album") 0075 icon.name: "view-media-album-cover" 0076 onTriggered: 0077 { 0078 let item = listModel.get(control.currentIndex) 0079 goToAlbum(item.artist, item.album) 0080 } 0081 } 0082 0083 onFavClicked: 0084 { 0085 listModel.list.fav(listModel.mappedToSource(contextMenu.index), !FB.Tagging.isFav(listModel.get(contextMenu.index).url)) 0086 } 0087 0088 onQueueClicked: Player.queueTracks([listModel.get(contextMenu.index)]) 0089 0090 onSaveToClicked: 0091 { 0092 _dialogLoader.sourceComponent = _playlistDialogComponent 0093 dialog.composerList.urls = filterSelection(listModel.get(contextMenu.index).url) 0094 dialog.open() 0095 } 0096 0097 onOpenWithClicked: FB.FM.openLocation(filterSelection(listModel.get(contextMenu.index).url)) 0098 0099 onDeleteClicked: 0100 { 0101 _dialogLoader.sourceComponent = _removeDialogComponent 0102 dialog.urls = filterSelection(listModel.get(contextMenu.index).url) 0103 dialog.open() 0104 } 0105 0106 onInfoClicked: 0107 { 0108 // infoView.show(listModel.get(control.currentIndex)) 0109 } 0110 0111 onEditClicked: 0112 { 0113 _dialogLoader.sourceComponent = _metadataDialogComponent 0114 dialog.index = contextMenu.index 0115 dialog.open() 0116 } 0117 0118 onCopyToClicked: 0119 { 0120 cloudView.list.upload(contextMenu.index) 0121 } 0122 0123 onShareClicked: 0124 { 0125 const url = listModel.get(contextMenu.index).url 0126 Maui.Platform.shareFiles([url]) 0127 } 0128 0129 onClosed: control.currentIndex = -1 0130 } 0131 0132 0133 Maui.GridBrowser 0134 { 0135 id: _gridView 0136 clip: true 0137 0138 enableLassoSelection: true 0139 0140 currentIndex: -1 0141 0142 Layout.fillWidth: true 0143 Layout.fillHeight: true 0144 Layout.preferredHeight: 220 0145 0146 flickable.flow: control.orientation === Qt.Horizontal ? GridView.FlowTopToBottom : GridView.FlowLeftToRight 0147 0148 itemSize: control.orientation === Qt.Vertical ? Math.max(Math.floor(_gridView.width/ 3), 200) : 200 0149 itemHeight: 64 0150 scrollView.orientation: control.orientation 0151 adaptContent: control.orientation === Qt.Horizontal ? false : true 0152 0153 model: Maui.BaseModel 0154 { 0155 id: _listModel 0156 list: Vvave.Tracks 0157 { 0158 id: _list 0159 } 0160 } 0161 0162 onItemsSelected: 0163 { 0164 for(var i in indexes) 0165 { 0166 selectionBar.addToSelection(control.listModel.get(indexes[i])) 0167 } 0168 } 0169 0170 Connections 0171 { 0172 target: player 0173 function onFinished() 0174 { 0175 _listModel.list.refresh() 0176 } 0177 } 0178 0179 delegate: Item 0180 { 0181 height: GridView.view.cellHeight 0182 width: GridView.view.cellWidth 0183 0184 TableDelegate 0185 { 0186 id: delegate 0187 coverArt: control.coverArt 0188 anchors.fill: parent 0189 anchors.margins: Maui.Style.space.small 0190 appendButton: (Maui.Handy.isTouch ? true : delegate.hovered) 0191 onAppendClicked: 0192 { 0193 control.currentIndex = index 0194 Player.appendTrack(listModel.get(index)) 0195 } 0196 label2.text: model.artist 0197 0198 isCurrentItem: parent.GridView.isCurrentItem || checked 0199 0200 onToggled: selectionBar.addToSelection(control.listModel.get(index)) 0201 checked: selectionBar.contains(model.url) 0202 checkable: selectionMode 0203 0204 Drag.keys: ["text/uri-list"] 0205 Drag.mimeData: Drag.active ? 0206 { 0207 "text/uri-list": model.url 0208 } : {} 0209 0210 Connections 0211 { 0212 target: selectionBar 0213 ignoreUnknownSignals: true 0214 0215 function onUriRemoved (uri) 0216 { 0217 if(uri === model.url) 0218 delegate.checked = false 0219 } 0220 0221 function onUriAdded(uri) 0222 { 0223 if(uri === model.url) 0224 delegate.checked = true 0225 } 0226 0227 function onCleared() 0228 { 0229 delegate.checked = false 0230 } 0231 } 0232 0233 onClicked: 0234 { 0235 _gridView.currentIndex = index 0236 if(Maui.Handy.singleClick) 0237 { 0238 Player.quickPlay(_listModel.get(_gridView.currentIndex)) 0239 } 0240 } 0241 0242 onPressAndHold: { if(Maui.Handy.isTouch) openItemMenu(index) } 0243 onRightClicked: openItemMenu(index) 0244 0245 onDoubleClicked: 0246 { 0247 _gridView.currentIndex = index 0248 if(!Maui.Handy.singleClick) 0249 { 0250 Player.quickPlay(_listModel.get(_gridView.currentIndex)) 0251 } 0252 } 0253 } 0254 } 0255 } 0256 0257 function openItemMenu(index) 0258 { 0259 currentIndex = index 0260 contextMenu.index = index 0261 contextMenu.fav = FB.Tagging.isFav(listModel.get(contextMenu.index).url) 0262 contextMenu.titleInfo = listModel.get(contextMenu.index) 0263 contextMenu.show() 0264 } 0265 }