* 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 {
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
}
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
}
}
+ 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
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
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
Item {
Layout.fillWidth: true
Layout.fillHeight: true
- Layout.preferredHeight: 407
+ Layout.preferredHeight: 480
ListView {
anchors.fill: parent