X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=app%2FMediaPlayer.qml;h=a9e44e0c9b08a015e69ff0b6dda57ce129198013;hb=7ad0e32937b67ee4c4e77f3374c47bc7966fe514;hp=a297162c6e4f944fbbd510a3f16a0a44c2e9e80d;hpb=addf2b6d6a9d97ccf1fe267a1e6767fac9466202;p=apps%2Fmediaplayer.git diff --git a/app/MediaPlayer.qml b/app/MediaPlayer.qml index a297162..a9e44e0 100644 --- a/app/MediaPlayer.qml +++ b/app/MediaPlayer.qml @@ -1,5 +1,6 @@ /* * Copyright (C) 2016 The Qt Company Ltd. + * Copyright (C) 2017 Toyota Motor Corporation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,11 +20,19 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.0 import QtMultimedia 5.6 import AGL.Demo.Controls 1.0 +import QtQml.StateMachine 1.0 as MPSM import 'api' as API ApplicationWindow { id: root - + + property int sourceID: 0 + property int connectionID + signal playMediaplayer + signal stopMediaplayer + signal disconnected + signal paused + signal connected API.MediaPlayer { id: player url: bindingAddress @@ -34,6 +43,159 @@ ApplicationWindow { url: bindingAddress } + MPSM.StateMachine{ + id: mediaplayerState + initialState: stop + running: true + MPSM.State{ + id: haveSoundRight + MPSM.SignalTransition{ + targetState: stop + signal: disconnected + } + MPSM.SignalTransition{ + targetState: pause + signal: paused + } + MPSM.SignalTransition{ + targetState: playing + signal: playMediaplayer + } + onEntered: { + console.log("enter haveSoundRight") + } + onExited : { + // Nothing to do + } + } + MPSM.State{ + id: stop + MPSM.SignalTransition{ + targetState: haveSoundRight + signal: connected + } + onEntered: { + console.log("enter stop state") + } + onExited : { + // Nothing to do + } + } + MPSM.State{ + id: pause + MPSM.SignalTransition{ + targetState: haveSoundRight + signal: connected + } + MPSM.SignalTransition{ + targetState: stop + signal: disconnected + } + onEntered: { + console.log("enter pause state") + } + onExited : { + // Nothing to do + } + } + MPSM.State{ + id: playing + MPSM.SignalTransition{ + targetState: haveSoundRight + signal: stopMediaplayer + } + MPSM.SignalTransition{ + targetState: lostSoundRight + signal: disconnected + } + onEntered: { + console.log("enter playing state") + player.play() + } + onExited : { + player.pause() + } + } + MPSM.State{ + id: lostSoundRight + MPSM.SignalTransition{ + targetState: playing + signal: connected + } + onEntered: { + console.log("enter lostSoundRight") + } + onExited : { + } + } + MPSM.State{ + id: temporaryLostSoundRight + MPSM.SignalTransition{ + targetState: playing + signal: connected + } + MPSM.SignalTransition{ + targetState: lostSoundRight + signal: disconnected + } + onEntered: { + console.log("enter lostSoundRight") + } + onExited : { + } + } + } + + function slotReply(msg){ + var jstr = JSON.stringify(msg) + var content = JSON.parse(jstr); + var verb = content.response.verb + var err = content.response.error + switch(verb) + { + case "connect": + if(err == 0){ + connectionID = content.response.mainConnectionID + } + break; + case "registerSource": + if(err == 0){ + sourceID = content.response.sourceID + } + } + } + + function slotEvent(event,msg){ + var jstr = JSON.stringify(msg) + var content = JSON.parse(jstr); + var eventName = content.event + switch(eventName) + { + case "soundmanager\/asyncSetSourceState": + // This event doesn't come for now + if(sourceID == content.data.sourceID){ + console.log("mediaplayer: call ackSetSourceState") + smw.ackSetSourceState(content.data.handle, 0) + switch(content.data.sourceState){ + case "on": + connected() + break; + case "off": + disconnected() + break; + case "paused": + paused() + break; + default: + break; + } + } + break; + default: + break; + } + } + Timer { id: timer interval: 250 @@ -175,7 +337,7 @@ ApplicationWindow { if (bluetooth.av_connected) { bluetooth.sendMediaCommand("Play") } else { - player.play() + playMediaplayer() } } states: [ @@ -184,7 +346,9 @@ ApplicationWindow { PropertyChanges { target: play offImage: './images/AGL_MediaPlayer_Player_Pause.svg' - onClicked: player.pause() + onClicked: { + stopMediaplayer() + } } }, State { @@ -277,7 +441,7 @@ ApplicationWindow { } onClicked: { player.pick_track(playlistview.model.get(index).index) - player.play() + playMediaplayer() } } @@ -287,5 +451,8 @@ ApplicationWindow { } } } + Component.onCompleted: { + smw.registerSource("mediaplayer") + } } }