Warning, /maui/clip/src/views/youtube/YouTubeView.qml is written in an unsupported language. File is not indexed.

0001 import QtQuick 2.14
0002 import QtQuick.Controls 2.14
0003 import QtQuick.Layouts 1.3
0004 
0005 import org.mauikit.controls 1.3 as Maui
0006 
0007 import ".."
0008 
0009 import org.maui.clip 1.0 as Clip
0010 
0011 Maui.AltBrowser
0012 {
0013     id: control
0014 
0015     signal itemClicked(var item)
0016     signal itemRightClicked(var item)
0017 
0018     gridView.itemSize: 180
0019 
0020     viewType: control.width < Maui.Style.units.gridUnit * 30 ? Maui.AltBrowser.ViewType.List : Maui.AltBrowser.ViewType.Grid
0021 
0022     holder.visible: control.currentView.count === 0
0023     holder.emojiSize: Maui.Style.iconSizes.huge
0024     holder.emoji: "qrc:/img/assets/help-feedback.svg"
0025     holder.title: i18n("Nothing Here!")
0026     holder.body: i18n("Start searching for online videos.")
0027 
0028     model : Maui.BaseModel
0029     {
0030         id: _youtubeModel
0031         list: Clip.YouTube
0032         {
0033             id: _youtubeList
0034             key: settings.youtubeKey
0035             limit: settings.youtubeQueryLimit
0036         }
0037     }
0038 
0039     headBar.middleContent: Maui.TextField
0040     {
0041         id: _searchField
0042         Layout.fillWidth: true
0043         Layout.maximumWidth: 500
0044         placeholderText: i18n("Search...")
0045         onAccepted:
0046         {
0047             _youtubeList.query = text
0048         }
0049     }
0050 
0051     listDelegate: ListDelegate
0052     {
0053         id: _listDelegate
0054         width: ListView.view.width
0055 
0056         onToggled:
0057         {
0058             control.currentIndex = index
0059             control.currentView.itemsSelected([index])
0060         }
0061 
0062         onClicked:
0063         {
0064             control.currentIndex = index
0065             if(selectionMode || (mouse.button == Qt.LeftButton && (mouse.modifiers & Qt.ControlModifier)))
0066             {
0067                 control.currentView.itemsSelected([index])
0068             }else if(Maui.Handy.singleClick)
0069             {
0070                 play(_youtubeModel.get(index))
0071             }
0072         }
0073 
0074         onDoubleClicked:
0075         {
0076             control.currentIndex = index
0077             if(!Maui.Handy.singleClick && !selectionMode)
0078             {
0079                 play(_youtubeModel.get(index))
0080             }
0081         }
0082 
0083         onPressAndHold:
0084         {
0085             if(!Maui.Handy.isTouch)
0086                 return
0087 
0088             control.currentIndex = index
0089             control.itemRightClicked(index)
0090             _menu.popup()
0091         }
0092 
0093         onRightClicked:
0094         {
0095             control.currentIndex = index
0096             control.itemRightClicked(index)
0097             _menu.popup()
0098         }
0099     }
0100 
0101     gridDelegate: Item
0102     {
0103         property bool isCurrentItem : GridView.isCurrentItem
0104         height: control.gridView.cellHeight
0105         width: control.gridView.cellWidth
0106 
0107         Maui.GridBrowserDelegate
0108         {
0109             id: delegate
0110 
0111             iconSizeHint: height * 0.6
0112             label1.text: model.label
0113             imageSource: model.thumbnail
0114             template.fillMode: Image.PreserveAspectFit
0115 
0116             anchors.centerIn: parent
0117             height: control.gridView.cellHeight - 15
0118             width: control.gridView.itemSize - 20
0119             padding: Maui.Style.space.tiny
0120             isCurrentItem: parent.isCurrentItem
0121             tooltipText: model.url
0122             checkable: root.selectionMode
0123             checked: (selectionBar ? selectionBar.contains(model.url) : false)
0124             draggable: true
0125             opacity: model.hidden == "true" ? 0.5 : 1
0126 
0127             Drag.keys: ["text/uri-list"]
0128             Drag.mimeData: Drag.active ?
0129                                {
0130                                    "text/uri-list": control.filterSelectedItems(model.url)
0131                                } : {}
0132 
0133         onClicked:
0134         {
0135             control.currentIndex = index
0136             if(selectionMode || (mouse.button == Qt.LeftButton && (mouse.modifiers & Qt.ControlModifier)))
0137             {
0138                 control.currentView.itemsSelected([index])
0139             }else if(Maui.Handy.singleClick)
0140             {
0141                 play(_youtubeModel.get(index))
0142             }
0143         }
0144 
0145         onDoubleClicked:
0146         {
0147             control.currentIndex = index
0148             if(!Maui.Handy.singleClick && !selectionMode)
0149             {
0150                 play(_youtubeModel.get(index))
0151             }
0152         }
0153 
0154         onPressAndHold:
0155         {
0156             if(!Maui.Handy.isTouch)
0157                 return
0158 
0159             control.currentIndex = index
0160             control.itemRightClicked(model)
0161             _menu.popup()
0162         }
0163 
0164         onRightClicked:
0165         {
0166             control.currentIndex = index
0167             control.itemRightClicked(model)
0168             _menu.popup()
0169         }
0170 
0171         onToggled:
0172         {
0173             control.currentIndex = index
0174             control.currentView.itemsSelected([index])
0175         }
0176 
0177         Connections
0178         {
0179             target: selectionBar
0180 
0181             function onUriRemoved(uri)
0182             {
0183                 if(uri === model.url)
0184                     delegate.checked = false
0185             }
0186 
0187             function onUriAdded(uri)
0188             {
0189                 if(uri === model.url)
0190                     delegate.checked = true
0191             }
0192 
0193             function onCleared(uri)
0194             {
0195                 delegate.checked = false
0196             }
0197         }
0198     }
0199 }
0200 
0201 
0202 
0203 function watchVideo(track)
0204 {
0205     if(track && track.url)
0206     {
0207         var url = track.url
0208         if(url && url.length > 0)
0209         {
0210             youtubeViewer.currentYt = track
0211             youtubeViewer.webView.url = url+"?autoplay=1"
0212             stackView.push(youtubeViewer)
0213 
0214         }
0215     }
0216 }
0217 
0218 function playTrack(url)
0219 {
0220     if(url && url.length > 0)
0221     {
0222         var newURL = url.replace("embed/", "watch?v=")
0223         console.log(newURL)
0224         webView.url = newURL+"?autoplay=1+&vq=tiny"
0225         webView.runJavaScript("document.title", function(result) { console.log(result); });
0226     }
0227 }
0228 
0229 function runSearch(searchTxt)
0230 {
0231     if(searchTxt)
0232         if(searchTxt !== youtubeTable.title)
0233         {
0234             youtubeTable.title = searchTxt
0235             Vvave.YouTube.getQuery(searchTxt, Maui.Handy.loadSettings("YOUTUBELIMIT", "BABE", 25))
0236         }
0237 }
0238 
0239 function clearSearch()
0240 {
0241     searchInput.clear()
0242     youtubeTable.listView.model.clear()
0243     youtubeTable.title = ""
0244     searchRes = []
0245 }
0246 
0247 function populate(tracks)
0248 {
0249     youtubeTable.model.clear()
0250     for(var i in tracks)
0251         youtubeTable.model.append(tracks[i])
0252 }
0253 }