Warning, /multimedia/audiotube/src/qtmpris/example/qml/player.qml is written in an unsupported language. File is not indexed.
0001 //SPDX-FileCopyrightText: 2015 Jolla Ltd. <valerio.valerio@jolla.com>
0002 //SPDX-FileContributor: Andres Gomez
0003 //
0004 //SPDX-License-Identifier: LGPL-2.1-or-later
0005
0006
0007 import QtQuick 2.0
0008 import org.nemomobile.qtmpris 1.0
0009
0010 Item {
0011 id: mainItem
0012
0013 anchors.fill: parent
0014
0015 Column {
0016 id: column
0017
0018 x: (parent.width - width) * 0.5
0019 width: parent.width * 0.75
0020
0021 Row {
0022 MouseArea {
0023 width: column.parent.width * 0.25
0024 height: width
0025
0026 onClicked: mprisPlayer.playbackStatus = Mpris.Stopped
0027
0028 Text {
0029 anchors.centerIn: parent
0030 text: "Stop"
0031 }
0032 }
0033 MouseArea {
0034 width: column.parent.width * 0.25
0035 height: width
0036
0037 onClicked: mprisPlayer.playbackStatus = Mpris.Playing
0038
0039 Text {
0040 anchors.centerIn: parent
0041 text: "Play"
0042 }
0043 }
0044 MouseArea {
0045 width: column.parent.width * 0.25
0046 height: width
0047
0048 onClicked: mprisPlayer.playbackStatus = Mpris.Paused
0049
0050 Text {
0051 anchors.centerIn: parent
0052 text: "Pause"
0053 }
0054 }
0055 }
0056
0057 Row {
0058
0059 width: parent.width
0060 height: artistSet.height
0061
0062 Text {
0063 id: artistLabel
0064
0065 height: parent.height
0066 text: "Artist: "
0067 verticalAlignment: Text.AlignVCenter
0068 }
0069
0070 TextInput {
0071 id: artistInput
0072
0073 width: parent.width - artistLabel.width - artistSet.width
0074 height: parent.height
0075 verticalAlignment: Text.AlignVCenter
0076 }
0077
0078 MouseArea {
0079 id: artistSet
0080
0081 width: column.parent.width * 0.25
0082 height: width
0083
0084 onClicked: mprisPlayer.artist = artistInput.text
0085
0086 Text {
0087 anchors.centerIn: parent
0088 text: "Set"
0089 }
0090 }
0091 }
0092
0093 Row {
0094
0095 width: parent.width
0096 height: songSet.height
0097
0098 Text {
0099 id: songLabel
0100
0101 height: parent.height
0102 text: "Song: "
0103 verticalAlignment: Text.AlignVCenter
0104 }
0105
0106 TextInput {
0107 id: songInput
0108
0109 width: parent.width - songLabel.width - songSet.width
0110 height: parent.height
0111 verticalAlignment: Text.AlignVCenter
0112 }
0113
0114 MouseArea {
0115 id: songSet
0116
0117 width: column.parent.width * 0.25
0118 height: width
0119
0120 onClicked: mprisPlayer.song = songInput.text
0121
0122 Text {
0123 anchors.centerIn: parent
0124 text: "Set"
0125 }
0126 }
0127 }
0128
0129 Text {
0130 id: message
0131
0132 property string lastMessage
0133
0134 text: "Last Message was: " + lastMessage
0135 width: parent.width
0136 elide: Text.ElideRight
0137 }
0138 }
0139
0140 MprisPlayer {
0141 id: mprisPlayer
0142
0143 property string artist
0144 property string song
0145
0146 serviceName: "qtmpris"
0147
0148 // Mpris2 Root Interface
0149 identity: "QtMpris Example"
0150 supportedUriSchemes: ["file"]
0151 supportedMimeTypes: ["audio/x-wav", "audio/x-vorbis+ogg"]
0152
0153 // Mpris2 Player Interface
0154 canControl: true
0155
0156 canGoNext: true
0157 canGoPrevious: true
0158 canPause: playbackStatus == Mpris.Playing
0159 canPlay: playbackStatus != Mpris.Playing
0160 canSeek: false
0161
0162 playbackStatus: Mpris.Stopped
0163 loopStatus: Mpris.None
0164 shuffle: false
0165 volume: 1
0166
0167 onPauseRequested: message.lastMessage = "Pause requested"
0168 onPlayRequested: message.lastMessage = "Play requested"
0169 onPlayPauseRequested: message.lastMessage = "Play/Pause requested"
0170 onStopRequested: message.lastMessage = "Stop requested"
0171 onNextRequested: message.lastMessage = "Next requested"
0172 onPreviousRequested: message.lastMessage = "Previous requested"
0173 onSeekRequested: {
0174 message.lastMessage = "Seeked requested with offset - " + offset + " microseconds"
0175 emitSeeked()
0176 }
0177 onSetPositionRequested: {
0178 message.lastMessage = "Position requested to - " + position + " microseconds"
0179 emitSeeked()
0180 }
0181 onOpenUriRequested: message.lastMessage = "Requested to open uri \"" + url + "\""
0182
0183 onLoopStatusRequested: {
0184 if (loopStatus == Mpris.None) {
0185 repeatSwitch.checked = false
0186 } else if (loopStatus == Mpris.Playlist) {
0187 repeatSwitch.checked = true
0188 }
0189 }
0190 onShuffleRequested: shuffleSwitch.checked = shuffle
0191
0192 onArtistChanged: {
0193 var metadata = mprisPlayer.metadata
0194
0195 metadata[Mpris.metadataToString(Mpris.Artist)] = [artist] // List of strings
0196
0197 mprisPlayer.metadata = metadata
0198 }
0199
0200 onSongChanged: {
0201 var metadata = mprisPlayer.metadata
0202
0203 metadata[Mpris.metadataToString(Mpris.Title)] = song // String
0204
0205 mprisPlayer.metadata = metadata
0206 }
0207 }
0208 }