Warning, /plasma-bigscreen/youtube-voice-application/ui/+mediacenter/YoutubeSearch.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 * Copyright 2018 by Aditya Mehra <aix.m@outlook.com> 0003 * Copyright 2018 Marco Martin <mart@kde.org> 0004 * 0005 * This program is free software: you can redistribute it and/or modify 0006 * it under the terms of the GNU General Public License as published by 0007 * the Free Software Foundation, either version 3 of the License, or 0008 * (at your option) any later version. 0009 0010 * This program is distributed in the hope that it will be useful, 0011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0013 * GNU General Public License for more details. 0014 0015 * You should have received a copy of the GNU General Public License 0016 * along with this program. If not, see <http://www.gnu.org/licenses/>. 0017 */ 0018 0019 import QtQuick 2.9 0020 import QtQuick.Layouts 1.4 0021 import QtGraphicalEffects 1.0 0022 import QtQuick.Controls 2.2 0023 import org.kde.kirigami 2.8 as Kirigami 0024 import org.kde.plasma.core 2.0 as PlasmaCore 0025 import org.kde.plasma.components 2.0 as PlasmaComponents 0026 import Mycroft 1.0 as Mycroft 0027 0028 Mycroft.Delegate { 0029 id: delegate 0030 0031 property var videoListModel: sessionData.videoListBlob.videoList 0032 property var currentSongUrl: sessionData.currenturl 0033 property var currenttitle: sessionData.currenttitle 0034 property Component highlighter: PlasmaComponents.Highlight{} 0035 property Component emptyHighlighter: Item{} 0036 0037 skillBackgroundSource: "https://source.unsplash.com/weekly?music" 0038 0039 leftPadding: 0 0040 rightPadding: 0 0041 topPadding: 0 0042 bottomPadding: 0 0043 0044 onVideoListModelChanged: { 0045 leftSearchView.forceLayout() 0046 } 0047 0048 Keys.onBackPressed: { 0049 parent.parent.parent.currentIndex-- 0050 parent.parent.parent.currentItem.contentItem.forceActiveFocus() 0051 } 0052 0053 contentItem: ColumnLayout { 0054 id: recentlyPlayerColumn 0055 spacing: Kirigami.Units.smallSpacing 0056 0057 Kirigami.Heading { 0058 id: watchItemList 0059 text: "Watch More.." 0060 level: 3 0061 } 0062 0063 Kirigami.Separator { 0064 id: sept2 0065 Layout.fillWidth: true 0066 Layout.preferredHeight: 1 0067 z: 100 0068 } 0069 0070 ListView { 0071 id: leftSearchView 0072 keyNavigationEnabled: true 0073 highlight: focus ? highlighter : emptyHighlighter 0074 model: videoListModel 0075 focus: false 0076 interactive: true 0077 bottomMargin: delegate.controlBarItem.height + Kirigami.Units.largeSpacing 0078 Layout.fillWidth: true 0079 Layout.fillHeight: true 0080 spacing: Kirigami.Units.largeSpacing 0081 currentIndex: 0 0082 highlightRangeMode: ListView.StrictlyEnforceRange 0083 snapMode: ListView.SnapToItem 0084 0085 delegate: Control { 0086 width: parent.width 0087 height: Kirigami.Units.gridUnit * 4 0088 0089 background: PlasmaCore.FrameSvgItem { 0090 id: frame 0091 anchors { 0092 fill: parent 0093 } 0094 imagePath: "widgets/background" 0095 0096 width: parent.width 0097 height: parent.height 0098 opacity: 0.9 0099 } 0100 0101 0102 contentItem: Item { 0103 width: parent.width 0104 height: parent.height 0105 0106 RowLayout { 0107 id: delegateItem 0108 anchors.fill: parent 0109 anchors.margins: Kirigami.Units.smallSpacing 0110 spacing: Kirigami.Units.largeSpacing 0111 0112 Image { 0113 id: videoImage 0114 source: modelData.videoImage 0115 Layout.preferredHeight: parent.height 0116 Layout.preferredWidth: Kirigami.Units.gridUnit * 4 0117 Layout.alignment: Qt.AlignHCenter 0118 fillMode: Image.Stretch 0119 } 0120 0121 Label { 0122 id: videoLabel 0123 Layout.fillWidth: true 0124 text: modelData.videoTitle 0125 wrapMode: Text.WordWrap 0126 } 0127 } 0128 } 0129 0130 Keys.onReturnPressed: { 0131 Mycroft.MycroftController.sendRequest("aiix.youtube-skill.playvideo_id", {vidID: modelData.videoID, vidTitle: modelData.videoTitle, vidImage: modelData.videoImage, vidChannel: modelData.videoChannel, vidViews: modelData.videoViews, vidUploadDate: modelData.videoUploadDate, vidDuration: modelData.videoDuration}) 0132 } 0133 } 0134 } 0135 } 0136 0137 Component.onCompleted: { 0138 leftSearchView.forceActiveFocus() 0139 } 0140 } 0141