/* * Copyright (C) 2016 The Qt Company Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ 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 { id: root width: container.width * container.scale height: container.height * container.scale Item { id: player property string title: "" property string album: "" property string artist: "" property bool av_connected: false property int duration: 0 property int position: 0 property string status: "stopped" function time2str(value) { return Qt.formatTime(new Date(value), (value > 3600000) ? 'hh:mm:ss' : 'mm:ss') } } Connections { target: mediaplayer onMetadataChanged: { var track = metadata.track if ('status' in metadata) { player.status = metadata.status } if ('connected' in metadata) { player.av_connected = metadata.connected } if (track) { if ('image' in track) return player.title = track.title player.album = track.album player.artist = track.artist if ('duration' in track) player.duration = track.duration if ('index' in track) { playlistview.currentIndex = track.index } } if ('position' in metadata) { player.position = metadata.position } } } Timer { id: timer interval: 250 running: player.av_connected && player.status == "playing" repeat: true onTriggered: { player.position = player.position + 250 } } Item { id: container anchors.centerIn: parent width: Window.width height: Window.height //scale: screenInfo.scale_factor() scale: 1 ColumnLayout { anchors.fill: parent Item { Layout.fillWidth: true Layout.fillHeight: true Layout.preferredHeight: 1080 clip: true Image { anchors.left: parent.left anchors.right: parent.right anchors.bottom: parent.bottom height: sourceSize.height * width / sourceSize.width fillMode: Image.PreserveAspectCrop source: AlbumArt visible: player.av_connected === false } Item { anchors.left: parent.left anchors.right: parent.right anchors.bottom: parent.bottom height :307 Rectangle { anchors.fill: parent color: 'black' opacity: 0.75 } ColumnLayout { anchors.fill: parent anchors.margins: root.width * 0.02 Item { Layout.fillWidth: true Layout.fillHeight: true Row { spacing: 20 //ToggleButton { // id: random // visible: bluetooth.connected == false // offImage: './images/AGL_MediaPlayer_Shuffle_Inactive.svg' // onImage: './images/AGL_MediaPlayer_Shuffle_Active.svg' //} ToggleButton { id: loop visible: player.av_connected === false offImage: './images/AGL_MediaPlayer_Loop_Inactive.svg' onImage: './images/AGL_MediaPlayer_Loop_Active.svg' onClicked: { mediaplayer.loop(checked ? "playlist" : "off") } } } ColumnLayout { anchors.fill: parent Label { id: title Layout.alignment: Layout.Center text: player.title horizontalAlignment: Label.AlignHCenter verticalAlignment: Label.AlignVCenter } Label { Layout.alignment: Layout.Center text: player.artist horizontalAlignment: Label.AlignHCenter verticalAlignment: Label.AlignVCenter font.pixelSize: title.font.pixelSize * 0.6 } } } Slider { id: slider Layout.fillWidth: true to: player.duration enabled: player.av_connected === false value: player.position Label { id: position anchors.left: parent.left anchors.bottom: parent.top font.pixelSize: 32 text: player.time2str(player.position) } Label { id: duration anchors.right: parent.right anchors.bottom: parent.to
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http: