Fix layout issues
[apps/mediaplayer.git] / app / MediaPlayer.qml
index ec7b4e0..fd4db58 100644 (file)
  * 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 {
@@ -40,10 +42,17 @@ ApplicationWindow {
         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,10 +68,14 @@ ApplicationWindow {
             }
 
             if (track) {
+                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
@@ -75,6 +88,33 @@ ApplicationWindow {
         }
     }
 
+    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()
+            }
+        }
+    }
+
     Timer {
         id: timer
         interval: 250
@@ -88,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
@@ -99,17 +140,19 @@ ApplicationWindow {
             Layout.fillHeight: true
             Layout.preferredHeight: 1080
             clip: true
+
             Image {
+                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
+                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
@@ -139,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 {
@@ -251,7 +294,7 @@ ApplicationWindow {
         Item {
             Layout.fillWidth: true
             Layout.fillHeight: true
-            Layout.preferredHeight: 407
+            Layout.preferredHeight: 480
 
             ListView {
                 anchors.fill: parent