Warning, /plasma-bigscreen/peertube-voice-application/ui/+mediacenter/CategoryBoxView.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 org.kde.plasma.core 2.0 as PlasmaCore
0024 import org.kde.plasma.components 3.0 as PlasmaComponents3
0025 import org.kde.plasma.components 2.0 as PlasmaComponents
0026 import Mycroft 1.0 as Mycroft
0027 import "+mediacenter/views" as Views
0028 import "+mediacenter/delegates" as Delegates
0029
0030 Item {
0031 id: cbView
0032 property alias model: videoListView.model
0033 Layout.fillWidth: true
0034 Layout.fillHeight: true
0035 readonly property int responsiveCellWidth: width >= 800 ? videoListView.view.width / 4 : videoListView.view.width / 2
0036 readonly property bool miniModeState: delegate.delegateMiniMode
0037
0038 states: [
0039 State {
0040 name: "miniModeType"
0041
0042 AnchorChanges {
0043 target: videoListView
0044 anchors.top: cbView.top
0045 }
0046 },
0047 State {
0048 name: "maxModeType"
0049
0050 AnchorChanges {
0051 target: videoListView
0052 anchors.top: searchBarArea.bottom
0053 }
0054 }
0055 ]
0056
0057 onMiniModeStateChanged: {
0058 if(miniModeState) {
0059 cbView.state = "miniModeType"
0060 } else {
0061 cbView.state = "maxModeType"
0062 }
0063 }
0064
0065
0066 onFocusChanged: {
0067 if(focus && !delegate.delegateMiniMode){
0068 searchBarArea.forceActiveFocus()
0069 } else if(focus && delegate.delegateMiniMode){
0070 videoListView.forceActiveFocus()
0071 }
0072 }
0073
0074 function timeSanitize(sec) {
0075 var millisec = sec * 1000;
0076 var seconds = (millisec / 1000).toFixed(0);
0077 var minutes = Math.floor(seconds / 60);
0078 var hours = "";
0079 if (minutes > 59) {
0080 hours = Math.floor(minutes / 60);
0081 hours = (hours >= 10) ? hours : "0" + hours;
0082 minutes = minutes - (hours * 60);
0083 minutes = (minutes >= 10) ? minutes : "0" + minutes;
0084 }
0085
0086 seconds = Math.floor(seconds % 60);
0087 seconds = (seconds >= 10) ? seconds : "0" + seconds;
0088 if (hours != "") {
0089 return hours + ":" + minutes + ":" + seconds;
0090 }
0091 return minutes + ":" + seconds;
0092 }
0093
0094 function searchpTResults(query){
0095 triggerGuiEvent("PeerTube.SearchQuery", {"search_query": query})
0096 categoryLayout.currentIndex = 5
0097 searchQuery = query
0098 busyIndicatorPop.open()
0099 }
0100
0101 function setPublishedDate(publishDate){
0102 var date1 = new Date(publishDate).getTime();
0103 var date2 = new Date().getTime();
0104 console.log(date1)
0105 console.log(date2)
0106
0107 var msec = date2 - date1;
0108 var mins = Math.floor(msec / 60000);
0109 var hrs = Math.floor(mins / 60);
0110 var days = Math.floor(hrs / 24);
0111 var yrs = Math.floor(days / 365);
0112 mins = mins % 60;
0113 hrs = hrs % 24;
0114 days = days % 365;
0115 var result = ""
0116 if(days == 0 && hrs > 0) {
0117 result = hrs + " hours, " + mins + " minutes ago"
0118 } else if (days == 0 && hrs == 0) {
0119 result = mins + " minutes ago"
0120 } else {
0121 result = days + " days, " + hrs + " hours, " + mins + " minutes ago"
0122 }
0123 return result
0124 }
0125
0126 function returnCategory(){
0127 switch(catName){
0128 case "News":
0129 return homeCatButton
0130 break
0131 case "Music":
0132 return musicCatButton
0133 break
0134 case "Technology":
0135 return techCatButton
0136 break
0137 case "Entertainment":
0138 return entertainmentCatButton
0139 break
0140 case "Gaming":
0141 return gamingCatButton
0142 break
0143 case "Search Results":
0144 return searchCatButton
0145 break
0146 }
0147 }
0148
0149 Rectangle {
0150 id: searchBarArea
0151 anchors.top: parent.top
0152 anchors.topMargin: Kirigami.Units.largeSpacing
0153 anchors.horizontalCenter: parent.horizontalCenter
0154 height: !delegate.delegateMiniMode ? Kirigami.Units.gridUnit * 3 : 0
0155 width: parent.width / 3
0156 radius: 12
0157 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)
0158 visible: !delegate.delegateMiniMode
0159 enabled: !delegate.delegateMiniMode
0160
0161 Keys.onReturnPressed: {
0162 videoQueryBox.forceActiveFocus()
0163 }
0164
0165 KeyNavigation.up: returnCategory()
0166 KeyNavigation.down: videoListView
0167
0168 RowLayout {
0169 anchors.fill: parent
0170 TextField {
0171 id: videoQueryBox
0172 Layout.leftMargin: Kirigami.Units.largeSpacing
0173 Layout.fillWidth: true
0174 placeholderText: "Search here..."
0175 Layout.fillHeight: true
0176 text: searchQuery.length > 0 ? searchQuery : ""
0177 onAccepted: {
0178 searchBitChuteLiveResults(videoQueryBox.text)
0179 }
0180 KeyNavigation.down: videoListView
0181 KeyNavigation.right: searchVideoQuery
0182
0183 onTextChanged: {
0184 searchQuery = videoQueryBox.text
0185 }
0186 }
0187
0188 Kirigami.Icon {
0189 id: searchVideoQuery
0190 Layout.preferredWidth: Kirigami.Units.gridUnit * 2
0191 Layout.fillHeight: true
0192 source: "search"
0193 KeyNavigation.left: videoQueryBox
0194 KeyNavigation.down: videoListView
0195
0196 Keys.onReturnPressed: {
0197 searchBitChuteLiveResults(videoQueryBox.text)
0198 }
0199
0200 MouseArea {
0201 anchors.fill: parent
0202 onClicked: {
0203 searchBitChuteLiveResults(videoQueryBox.text)
0204 }
0205 }
0206
0207 ColorOverlay {
0208 anchors.fill: parent
0209 source: searchVideoQuery
0210 color: Kirigami.Theme.highlightColor
0211 visible: searchVideoQuery.activeFocus ? 1 : 0
0212 }
0213 }
0214 }
0215 }
0216
0217 Views.TileView {
0218 id: videoListView
0219 focus: true
0220 title: " "
0221 anchors {
0222 top: searchBarArea.bottom
0223 left: parent.left
0224 right: parent.right
0225 bottom: parent.bottom
0226 }
0227 delegate: Delegates.VideoCard {
0228 width: videoListView.cellWidth
0229 height: videoListView.cellHeight
0230 }
0231 cellWidth: cbView.responsiveCellWidth
0232 cellHeight: cellWidth / 1.8 + Kirigami.Units.gridUnit * 5
0233 KeyNavigation.up: searchBarArea
0234 }
0235 }