Warning, /multimedia/kasts/src/qml/Mobile/MinimizedPlayerControls.qml is written in an unsupported language. File is not indexed.
0001 /**
0002 * SPDX-FileCopyrightText: 2021-2023 Bart De Vries <bart@mogwai.be>
0003 * SPDX-FileCopyrightText: 2021 Devin Lin <devin@kde.org>
0004 *
0005 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0006 */
0007
0008 import QtQuick
0009 import QtQuick.Controls as Controls
0010 import QtQuick.Layouts
0011
0012 import org.kde.kirigami as Kirigami
0013 import org.kde.kmediasession
0014
0015 import org.kde.kasts
0016
0017 import ".."
0018
0019 Item {
0020 property int miniplayerheight: Kirigami.Units.gridUnit * 3
0021 property int progressbarheight: Kirigami.Units.gridUnit / 6
0022 property int buttonsize: Kirigami.Units.gridUnit * 1.5
0023 height: miniplayerheight + progressbarheight
0024
0025 visible: AudioManager.entry
0026
0027 // progress bar for limited width (phones)
0028 Rectangle {
0029 id: miniprogressbar
0030 z: 1
0031 anchors.top: parent.top
0032 anchors.left: parent.left
0033 height: parent.progressbarheight
0034 color: Kirigami.Theme.highlightColor
0035 width: parent.width * AudioManager.position / AudioManager.duration
0036 visible: true
0037 }
0038
0039 ChapterModel {
0040 id: chapterModel
0041 entry: AudioManager.entry ?? undefined
0042 }
0043
0044 RowLayout {
0045 id: footerrowlayout
0046 anchors.fill: parent
0047 spacing: 0
0048
0049 Rectangle {
0050 Layout.fillHeight: true
0051 Layout.fillWidth: true
0052
0053 // press feedback
0054 color: (trackClick.pressed || trackClick.containsMouse) ? Qt.rgba(0, 0, 0, 0.05) : "transparent"
0055
0056 RowLayout {
0057 anchors.fill: parent
0058
0059 ImageWithFallback {
0060 imageSource: AudioManager.entry ? ((chapterModel.currentChapter && chapterModel.currentChapter !== undefined) ? chapterModel.currentChapter.cachedImage : AudioManager.entry.cachedImage) : "no-image"
0061 Layout.fillHeight: true
0062 Layout.preferredWidth: height
0063 }
0064
0065 // track information
0066 ColumnLayout {
0067 Layout.maximumHeight: parent.height
0068 Layout.fillWidth: true
0069 Layout.leftMargin: Kirigami.Units.smallSpacing
0070 spacing: Kirigami.Units.smallSpacing
0071
0072 Controls.Label {
0073 id: mainLabel
0074 text: AudioManager.entry.title
0075 wrapMode: Text.Wrap
0076 Layout.alignment: Qt.AlignLeft | Qt.AlignBottom
0077 Layout.fillWidth: true
0078 horizontalAlignment: Text.AlignLeft
0079 elide: Text.ElideRight
0080 maximumLineCount: 1
0081 font.pointSize: Kirigami.Theme.defaultFont.pointSize * 1
0082 font.weight: Font.Medium
0083 }
0084
0085 Controls.Label {
0086 id: feedLabel
0087 text: AudioManager.entry.feed.name
0088 wrapMode: Text.Wrap
0089 Layout.alignment: Qt.AlignLeft | Qt.AlignTop
0090 Layout.fillWidth: true
0091 horizontalAlignment: Text.AlignLeft
0092 elide: Text.ElideRight
0093 maximumLineCount: 1
0094 opacity: 0.6
0095 font.pointSize: Kirigami.Theme.defaultFont.pointSize * 1
0096 }
0097 }
0098 }
0099 MouseArea {
0100 id: trackClick
0101 anchors.fill: parent
0102 hoverEnabled: true
0103 onClicked: toOpen.restart()
0104 }
0105 }
0106 Controls.Button {
0107 id: playButton
0108 icon.name: AudioManager.playbackState === KMediaSession.PlayingState ? "media-playback-pause" : "media-playback-start"
0109 icon.height: parent.parent.buttonsize
0110 icon.width: parent.parent.buttonsize
0111 flat: true
0112 Layout.preferredHeight: parent.parent.miniplayerheight - Kirigami.Units.smallSpacing * 2
0113 Layout.preferredWidth: height
0114 Layout.leftMargin: Kirigami.Units.smallSpacing
0115 Layout.rightMargin: Kirigami.Units.smallSpacing
0116 onClicked: AudioManager.playbackState === KMediaSession.PlayingState ? AudioManager.pause() : AudioManager.play()
0117 Layout.alignment: Qt.AlignVCenter
0118 }
0119 }
0120 }
0121