From 3e431edef9aaef530e2716ca4987a18b12eb346b Mon Sep 17 00:00:00 2001 From: nesnomis Date: Sun, 1 Jun 2025 21:31:18 +0200 Subject: [PATCH] Very simple early amber-mpris function --- harbour-allradio.pro | 1 + qml/harbour-allradio.qml | 8 ++-- qml/items/RadioMprisPlayer.qml | 67 ++++++++++++++++++++++++++++++++++ qml/items/RadioPlayer.qml | 27 ++++++++++++++ 4 files changed, 98 insertions(+), 5 deletions(-) create mode 100644 qml/items/RadioMprisPlayer.qml diff --git a/harbour-allradio.pro b/harbour-allradio.pro index 5e61ffb..b0bcfbd 100644 --- a/harbour-allradio.pro +++ b/harbour-allradio.pro @@ -19,6 +19,7 @@ SOURCES += src/harbour-allradio.cpp DISTFILES += qml/harbour-allradio.qml \ qml/cover/CoverPage.qml \ qml/items/HeaderButton.qml \ + qml/items/RadioMprisPlayer.qml \ qml/items/SleepTimer.qml \ qml/pages/AboutPage.qml \ qml/pages/AllRadio.qml \ diff --git a/qml/harbour-allradio.qml b/qml/harbour-allradio.qml index a758c2f..d90cbe1 100644 --- a/qml/harbour-allradio.qml +++ b/qml/harbour-allradio.qml @@ -2,6 +2,7 @@ import QtQuick 2.0 import Sailfish.Silica 1.0 import Nemo.Configuration 1.0 ///////// import Nemo.Notifications 1.0 /////////// +import Amber.Mpris 1.0 import "pages" import "items" //import "radio-player" @@ -9,6 +10,7 @@ import "items" import "helpers" //import "jupii" +// Check out Amber Mpris Qml !!! ApplicationWindow { @@ -23,11 +25,7 @@ ApplicationWindow property RadioBrowser radioBrowser : RadioBrowser {id:radioBrowser;parent: allRadio} property SleepTimer sleepTimer : SleepTimer {id:sleepTimer} - // property alias online: radioBrowser.online - //property alias mediaPlayerPanel: playerPanel - // property Media MediaPlayerPanel {id: mediaPlayerPanel} -// property Jupii jupii: Jupii {id: jupii} - + RadioMprisPlayer {id: radioMprisPlayer} MediaPlayerPanel {id: mediaPlayerPanel} ConfigurationGroup {id:settingsGroup;path: "/apps/harbour-allradio";ConfigurationGroup {id: allradioSettings;path: "/settings"}} Notification {id: notification;onClicked: console.log("Clicked")} diff --git a/qml/items/RadioMprisPlayer.qml b/qml/items/RadioMprisPlayer.qml new file mode 100644 index 0000000..6861ee0 --- /dev/null +++ b/qml/items/RadioMprisPlayer.qml @@ -0,0 +1,67 @@ +import QtQuick 2.0 +import QtMultimedia 5.6 +import Amber.Mpris 1.0 + +MprisPlayer { + id: mprisPlayer + property string song: "" + property string artist: "AllRadio" + + serviceName: "harbour-allradio" + + identity: "AllRadio2" + supportedUriSchemes: ["file"] + supportedMimeTypes: ["audio/x-wav", "audio/x-vorbis+ogg", "audio/mpeg", "audio/mp4a-latm", "audio/x-aiff"] + + canControl: true + + canGoNext: false //appstate.playlistIndex < appstate.playlist.count + canGoPrevious: false // appstate.playlistIndex > 0 + canPause: radioPlayer.isPlaying ? true : false + canPlay: radioPlayer.isPaused ? true : false + + canSeek: false// playback.seekable + hasTrackList: false + + + loopStatus: Mpris.LoopNone + shuffle: false + volume: 1 + + playbackStatus: { + if (radioPlayer.isPlaying) Mpris.Playing; + else if (radioPlayer.isPaused) Mpris.Paused; + else Mpris.Stopped; + /* switch (radioPlayer.playbackState) { + case Audio.PlayingState: + return Mpris.Playing + case Audio.PausedState: + return Mpris.Paused + default: + return Mpris.Stopped + }*/ + } + + + metaData { + url: radioPlayer.source + contributingArtist: radioPlayer.metaInfo + title: radioPlayer._name + } + + onPauseRequested:{ + radioPlayer.pauseStream(); + } + + onPlayRequested: { + radioPlayer.resumeStream(); + } + onPlayPauseRequested: { + radioPlayer.pauseStream(); + } + onStopRequested: { + radioPlayer.pauseStream(); + } + + onOpenUriRequested: message.lastMessage = "Requested to open uri \"" + url + "\"" +} diff --git a/qml/items/RadioPlayer.qml b/qml/items/RadioPlayer.qml index 5ed4031..54d3cbc 100644 --- a/qml/items/RadioPlayer.qml +++ b/qml/items/RadioPlayer.qml @@ -24,6 +24,7 @@ MediaPlayer { property bool _favorite: false //-------------------------------- // property bool videoP: false + property bool playerPageOpen: false // property bool jupiiOn: false property string radioId: "" @@ -386,6 +387,32 @@ MediaPlayer { } } + function updateMprisMetadata(){ + mprisPlayer.song = metaInfo ? metaInfo : "" + mprisPlayer.artist = radioStation === "" ? "AllRadio" : radioStation + updatePlaybackStatus() + } + + function updatePlaybackStatus (){ + switch (playMusic.playbackState) { + case Audio.PlayingState: + mprisPlayer.playbackStatus = Mpris.Playing + break; + + case Audio.PausedState: + mprisPlayer.setCanPause(false) + mprisPlayer.playbackStatus = Mpris.Paused + break; + case Audio.StoppedState: + mprisPlayer.playbackStatus = Mpris.Paused + break; + default: + mprisPlayer.playbackStatus = Mpris.Paused + } + } + + + Component.onCompleted: {reloadDbData();loadRecentPlay()} }