X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=app%2FMediaPlayer.qml;h=fd4db58fe980820be2f62fd5015f50c7dae86058;hb=refs%2Fheads%2Fmaster;hp=7cca337af9d64db6d610a079bc5c4c9b8db9f180;hpb=01820c0e9c4a64eca10ede8222c2c7ad719f286d;p=apps%2Fmediaplayer.git diff --git a/app/MediaPlayer.qml b/app/MediaPlayer.qml index 7cca337..fd4db58 100644 --- a/app/MediaPlayer.qml +++ b/app/MediaPlayer.qml @@ -14,9 +14,11 @@ * limitations under the License. */ -import QtQuick 2.6 -import QtQuick.Layouts 1.1 -import QtQuick.Controls 2.0 +import QtQuick 2.11 +import QtQuick.Layouts 1.11 +import QtQuick.Controls 2.4 +import QtQuick.Window 2.13 + import AGL.Demo.Controls 1.0 ApplicationWindow { @@ -37,14 +39,20 @@ ApplicationWindow { property int duration: 0 property int position: 0 - property string cover_art: "" property string status: "stopped" function time2str(value) { - return Qt.formatTime(new Date(value), 'mm:ss') + return Qt.formatTime(new Date(value), (value > 3600000) ? 'hh:mm:ss' : 'mm:ss') } } + Component.onCompleted : { + // Let the mediaplayer backend know we're ready for metadata events + mediaplayer.start() + + VehicleSignals.connect() + } + Connections { target: mediaplayer @@ -59,24 +67,51 @@ ApplicationWindow { player.av_connected = metadata.connected } - if ('position' in metadata) { - player.position = metadata.position - } - if (track) { - if ('image' in track) { - player.cover_art = track.image - } - + if ('image' in track) + return player.title = track.title player.album = track.album player.artist = track.artist - player.duration = track.duration + + if ('duration' in track) + player.duration = track.duration if ('index' in track) { playlistview.currentIndex = track.index } } + + if ('position' in metadata) { + player.position = metadata.position + } + } + } + + Connections { + target: VehicleSignals + + onConnected: { + VehicleSignals.authorize() + } + + onAuthorized: { + VehicleSignals.subscribe("Vehicle.Cabin.SteeringWheel.Switches.Next") + VehicleSignals.subscribe("Vehicle.Cabin.SteeringWheel.Switches.Previous") + VehicleSignals.subscribe("Vehicle.Cabin.SteeringWheel.Switches.Mode") + } + + onSignalNotification: { + if (path === "Vehicle.Cabin.SteeringWheel.Switches.Next" && value === "true") { + mediaplayer.next() + } else if (path === "Vehicle.Cabin.SteeringWheel.Switches.Previous" && value === "true") { + mediaplayer.previous() + } else if (path === "Vehicle.Cabin.SteeringWheel.Switches.Mode" && value === "true") { + if (player.av_connected) + mediaplayer.connect() + else + mediaplayer.disconnect() + } } } @@ -93,9 +128,10 @@ ApplicationWindow { Item { id: container anchors.centerIn: parent - width: 1080 - height: 1487 - scale: screenInfo.scale_factor() + width: Window.width + height: Window.height + //scale: screenInfo.scale_factor() + scale: 1 ColumnLayout { anchors.fill: parent @@ -104,18 +140,19 @@ ApplicationWindow { Layout.fillHeight: true Layout.preferredHeight: 1080 clip: true + Image { - id: albumart + anchors.top: parent.top anchors.left: parent.left anchors.right: parent.right - anchors.bottom: parent.bottom - height: sourceSize.height * width / sourceSize.width - fillMode: Image.PreserveAspectCrop - source: player.cover_art ? player.cover_art : '' + anchors.bottom: controls.top + fillMode: Image.PreserveAspectFit + source: AlbumArt visible: player.av_connected === false } Item { + id: controls anchors.left: parent.left anchors.right: parent.right anchors.bottom: parent.bottom @@ -145,7 +182,7 @@ ApplicationWindow { visible: player.av_connected === false offImage: './images/AGL_MediaPlayer_Loop_Inactive.svg' onImage: './images/AGL_MediaPlayer_Loop_Active.svg' - onClicked: { mediaplayer.loop(checked) } + onClicked: { mediaplayer.loop(checked ? "playlist" : "off") } } } ColumnLayout { @@ -213,7 +250,6 @@ ApplicationWindow { target: play offImage: './images/AGL_MediaPlayer_Player_Pause.svg' onClicked: { - player.status = "stopped" mediaplayer.pause() } } @@ -247,8 +283,9 @@ ApplicationWindow { else mediaplayer.disconnect() } - offImage: './images/AGL_MediaPlayer_Bluetooth_Inactive.svg' - onImage: './images/AGL_MediaPlayer_Bluetooth_Active.svg' + contentItem: Image { + source: player.av_connected ? './images/AGL_MediaPlayer_Bluetooth_Active.svg' : './images/AGL_MediaPlayer_Bluetooth_Inactive.svg' + } } } } @@ -257,7 +294,7 @@ ApplicationWindow { Item { Layout.fillWidth: true Layout.fillHeight: true - Layout.preferredHeight: 407 + Layout.preferredHeight: 480 ListView { anchors.fill: parent