Warning, /multimedia/kasts/src/qml/QueuePage.qml is written in an unsupported language. File is not indexed.
0001 /**
0002 * SPDX-FileCopyrightText: 2021-2022 Bart De Vries <bart@mogwai.be>
0003 *
0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005 */
0006
0007 import QtQuick
0008 import QtQuick.Controls as Controls
0009 import QtQuick.Layouts
0010 import QtQml.Models
0011
0012 import org.kde.kirigami as Kirigami
0013
0014 import org.kde.kasts
0015
0016 Kirigami.ScrollablePage {
0017 id: queuepage
0018 title: i18nc("@title:column Page showing the list queued items", "Queue")
0019
0020 property var lastEntry: ""
0021 property string pageName: "queuepage"
0022 property alias queueList: queueList
0023
0024 LayoutMirroring.enabled: Qt.application.layoutDirection === Qt.RightToLeft
0025 LayoutMirroring.childrenInherit: true
0026
0027 supportsRefreshing: true
0028 onRefreshingChanged: {
0029 if(refreshing) {
0030 updateAllFeeds.run();
0031 refreshing = false;
0032 }
0033 }
0034
0035 readonly property list<Kirigami.Action> pageActions: [
0036 Kirigami.Action {
0037 icon.name: "view-refresh"
0038 text: i18nc("@action:intoolbar", "Refresh All Podcasts")
0039 onTriggered: refreshing = true
0040 }
0041 ]
0042
0043 Component.onCompleted: {
0044 for (var i in queueList.defaultActionList) {
0045 pageActions.push(queueList.defaultActionList[i]);
0046 }
0047 }
0048
0049 actions: pageActions
0050
0051 GenericEntryListView {
0052 id: queueList
0053 reuseItems: true
0054 isQueue: true
0055
0056 Kirigami.PlaceholderMessage {
0057 visible: queueList.count === 0
0058
0059 width: Kirigami.Units.gridUnit * 20
0060 anchors.centerIn: parent
0061
0062 text: i18nc("@info", "Queue is empty")
0063 }
0064
0065 header: ColumnLayout {
0066 anchors.right: parent.right
0067 anchors.left: parent.left
0068 Controls.Label {
0069 Layout.fillWidth: true
0070 horizontalAlignment: Text.AlignHCenter
0071 text: i18ncp("@info:progress", "1 Episode", "%1 Episodes", queueModel.rowCount()) + " ยท " + i18nc("@info:progress", "Time Left") + ": " + queueModel.formattedTimeLeft
0072 }
0073 Kirigami.Separator {
0074 Layout.fillWidth: true
0075 }
0076 }
0077
0078 model: QueueModel {
0079 id: queueModel
0080 }
0081
0082 delegate: FocusScope {
0083 width: queueList.width
0084 height: entryDelegate.height
0085 GenericEntryDelegate {
0086 id: entryDelegate
0087 width: parent.width
0088 isQueue: true
0089 listView: queueList
0090 listViewObject: queueList
0091 focus: parent.visualFocus || parent.activeFocus
0092 }
0093 }
0094
0095 moveDisplaced: Transition {
0096 YAnimator {
0097 duration: Kirigami.Units.longDuration
0098 easing.type: Easing.InOutQuad
0099 }
0100 }
0101 }
0102 }