Warning, /plasma-bigscreen/youtube-voice-application/ui/CategoryBoxSearchView.qml is written in an unsupported language. File is not indexed.

0001 /*
0002  *  Copyright 2018 by Aditya Mehra <aix.m@outlook.com>
0003  *
0004  *  This program is free software: you can redistribute it and/or modify
0005  *  it under the terms of the GNU General Public License as published by
0006  *  the Free Software Foundation, either version 3 of the License, or
0007  *  (at your option) any later version.
0008 
0009  *  This program is distributed in the hope that it will be useful,
0010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
0011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0012  *  GNU General Public License for more details.
0013 
0014  *  You should have received a copy of the GNU General Public License
0015  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
0016  */
0017 
0018 import QtQuick 2.9
0019 import QtQuick.Layouts 1.4
0020 import QtGraphicalEffects 1.0
0021 import QtQuick.Controls 2.3
0022 import org.kde.kirigami 2.8 as Kirigami
0023 import Mycroft 1.0 as Mycroft
0024 import "+android/views" as Views
0025 import "+android/delegates" as Delegates
0026 
0027 Item {
0028     property var searchListModel: sessionData.searchListBlob.videoList
0029     Layout.fillWidth: true
0030     Layout.fillHeight: true
0031     
0032     onFocusChanged: {
0033         if(focus){
0034             searchBarArea.forceActiveFocus()
0035         }
0036     }
0037     
0038     function searchYoutubeLiveResults(query){
0039         triggerGuiEvent("YoutubeSkill.SearchLive", {"Query": query})
0040     }
0041     
0042     Rectangle {
0043         id: searchBarArea
0044         anchors.top: parent.top
0045         anchors.topMargin: Kirigami.Units.largeSpacing
0046         height: Kirigami.Units.gridUnit * 3
0047         anchors.left: parent.left
0048         anchors.right: parent.right
0049         anchors.leftMargin: Kirigami.Units.gridUnit
0050         anchors.rightMargin: Kirigami.Units.gridUnit
0051         radius: 12
0052         color: searchBarArea.activeFocus ? Qt.rgba(Kirigami.Theme.highlightColor.r, Kirigami.Theme.highlightColor.g, Kirigami.Theme.highlightColor.b, 0.95) : Qt.rgba(Kirigami.Theme.backgroundColor.r, Kirigami.Theme.backgroundColor.g, Kirigami.Theme.backgroundColor.b, 0.95)
0053                 
0054         Keys.onReturnPressed: {
0055             videoQueryBox.forceActiveFocus()
0056         }
0057         
0058         KeyNavigation.up: searchCatButton
0059         KeyNavigation.down: searchGridView
0060         
0061         RowLayout {
0062             anchors.fill: parent
0063             TextField {
0064                 id: videoQueryBox
0065                 Layout.leftMargin: Kirigami.Units.largeSpacing
0066                 Layout.fillWidth: true
0067                 placeholderText: "Search here..."
0068                 Layout.fillHeight: true
0069                 onAccepted: {
0070                     searchYoutubeLiveResults(videoQueryBox.text)
0071                 }
0072                 KeyNavigation.down: searchGridView
0073                 KeyNavigation.right: searchVideoQuery
0074             }
0075             
0076             Kirigami.Icon {
0077                 id: searchVideoQuery
0078                 Layout.preferredWidth: Kirigami.Units.gridUnit * 2
0079                 Layout.fillHeight: true
0080                 source: "search" 
0081                 KeyNavigation.left: videoQueryBox
0082                 KeyNavigation.down: searchGridView
0083                 
0084                 Keys.onReturnPressed: {
0085                     searchYoutubeLiveResults(videoQueryBox.text)
0086                 }
0087                 
0088                 MouseArea {
0089                     anchors.fill: parent
0090                     onClicked: {
0091                         searchYoutubeLiveResults(videoQueryBox.text)
0092                     }
0093                 }
0094                 
0095                 ColorOverlay {
0096                     anchors.fill: parent
0097                     source: searchVideoQuery
0098                     color: Kirigami.Theme.highlightColor
0099                     visible: searchVideoQuery.activeFocus ? 1 : 0
0100                 }
0101             }
0102         }
0103     }
0104 
0105     Views.BigTileView {
0106         id: searchGridView
0107         anchors {
0108             top: searchBarArea.bottom
0109             left: parent.left
0110             right: parent.right
0111             bottom: parent.bottom
0112             topMargin: Kirigami.Units.largeSpacing
0113         }
0114         focus: true
0115         model: searchListModel
0116         Layout.fillWidth: true
0117         Layout.fillHeight: true
0118         cellWidth: view.width / 4
0119         // FIXME: componentize more all this stuff
0120         cellHeight: cellWidth / 1.8 + Kirigami.Units.gridUnit * 5
0121         title: count > 0 ? "Search Results" : " "
0122         delegate: Delegates.ListVideoCard {
0123             width: searchGridView.cellWidth
0124             height: searchGridView.cellHeight
0125         }
0126         
0127         KeyNavigation.up: searchBarArea
0128     }
0129 }