diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -208,7 +208,6 @@ qml/ElisaMainWindow.qml qml/ApplicationMenu.qml qml/Theme.qml - qml/PlatformIntegration.qml qml/LabelWithToolTip.qml qml/RatingStar.qml diff --git a/src/elisaapplication.h b/src/elisaapplication.h --- a/src/elisaapplication.h +++ b/src/elisaapplication.h @@ -42,6 +42,7 @@ class ManageAudioPlayer; class ManageMediaPlayerControl; class ManageHeaderBar; +class Mpris2; class ElisaApplicationPrivate; class ELISALIB_EXPORT ElisaApplication : public QObject @@ -90,6 +91,10 @@ READ audioControl NOTIFY audioControlChanged) + Q_PROPERTY(Mpris2 *mprisInterface + READ mprisInterface + NOTIFY mprisInterfaceChanged) + Q_PROPERTY(ManageMediaPlayerControl *playerControl READ playerControl NOTIFY playerControlChanged) @@ -127,6 +132,8 @@ ManageAudioPlayer *audioControl() const; + Mpris2 *mprisInterface() const; + ManageMediaPlayerControl *playerControl() const; ManageHeaderBar *manageHeaderBar() const; @@ -155,6 +162,8 @@ void playerControlChanged(); + void mprisInterfaceChanged(); + void manageHeaderBarChanged(); void enqueue(const QStringList &files); diff --git a/src/elisaapplication.cpp b/src/elisaapplication.cpp --- a/src/elisaapplication.cpp +++ b/src/elisaapplication.cpp @@ -31,6 +31,7 @@ #include "manageaudioplayer.h" #include "managemediaplayercontrol.h" #include "manageheaderbar.h" +#include "mpris2/mpris2.h" #include "elisa_settings.h" #include @@ -108,6 +109,8 @@ std::unique_ptr mAudioControl; + std::unique_ptr mMprisInterface; + std::unique_ptr mPlayerControl; std::unique_ptr mManageHeaderBar; @@ -340,6 +343,8 @@ Q_EMIT audioPlayerChanged(); d->mAudioControl = std::make_unique(); Q_EMIT audioControlChanged(); + d->mMprisInterface = std::make_unique(); + Q_EMIT mprisInterfaceChanged(); d->mPlayerControl = std::make_unique(); Q_EMIT playerControlChanged(); d->mManageHeaderBar = std::make_unique(); @@ -386,6 +391,13 @@ d->mManageHeaderBar->setPlayListModel(d->mMediaPlayList.get()); QObject::connect(d->mMediaPlayList.get(), &MediaPlayList::currentTrackChanged, d->mManageHeaderBar.get(), &ManageHeaderBar::setCurrentTrack); + d->mMprisInterface->setPlayerName(QStringLiteral("elisa")); + d->mMprisInterface->setPlayListModel(d->mMediaPlayList.get()); + d->mMprisInterface->setAudioPlayerManager(d->mAudioControl.get()); + d->mMprisInterface->setAudioPlayer(d->mAudioWrapper.get()); + d->mMprisInterface->setHeaderBarManager(d->mManageHeaderBar.get()); + d->mMprisInterface->setManageMediaPlayerControl(d->mPlayerControl.get()); + if (!d->mArguments.isEmpty()) { Q_EMIT enqueue(d->mArguments); } @@ -464,6 +476,11 @@ return d->mAudioControl.get(); } +Mpris2 *ElisaApplication::mprisInterface() const +{ + return d->mMprisInterface.get(); +} + ManageMediaPlayerControl *ElisaApplication::playerControl() const { return d->mPlayerControl.get(); diff --git a/src/qml/ElisaMainWindow.qml b/src/qml/ElisaMainWindow.qml --- a/src/qml/ElisaMainWindow.qml +++ b/src/qml/ElisaMainWindow.qml @@ -124,27 +124,6 @@ } } - Loader { - id: mprisloader - active: false - - sourceComponent: PlatformIntegration { - id: platformInterface - - playListModel: elisa.mediaPlayList - audioPlayerManager: elisa.audioControl - player: elisa.audioPlayer - headerBarManager: elisa.manageHeaderBar - manageMediaPlayerControl: elisa.playerControl - onRaisePlayer: { - mainWindow.show() - mainWindow.raise() - mainWindow.requestActivate() - } - - } - } - Connections { target: elisa.audioPlayer onVolumeChanged: headerBar.playerControl.volume = elisa.audioPlayer.volume @@ -159,6 +138,15 @@ } } + Connections { + target: elisa.mprisInterface + onRaisePlayer: { + mainWindow.show() + mainWindow.raise() + mainWindow.requestActivate() + } + } + PassiveNotification { id: messageNotification } @@ -280,7 +268,5 @@ elisa.audioPlayer.muted = Qt.binding(function() { return headerBar.playerControl.muted }) elisa.audioPlayer.volume = Qt.binding(function() { return headerBar.playerControl.volume }) - - mprisloader.active = true } } diff --git a/src/qml/PlatformIntegration.qml b/src/qml/PlatformIntegration.qml deleted file mode 100644 --- a/src/qml/PlatformIntegration.qml +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2017 Matthieu Gallien - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -import QtQuick 2.7 -import org.kde.elisa 1.0 - -Item { - id: rootItem - - property alias playListModel: mpris2Interface.playListModel - property alias audioPlayerManager: mpris2Interface.audioPlayerManager - property alias player: mpris2Interface.audioPlayer - property alias headerBarManager: mpris2Interface.headerBarManager - property alias manageMediaPlayerControl: mpris2Interface.manageMediaPlayerControl - - signal raisePlayer() - - Mpris2 { - id: mpris2Interface - - playerName: 'elisa' - - onRaisePlayer: - { - rootItem.raisePlayer() - } - } -} diff --git a/src/resources.qrc b/src/resources.qrc --- a/src/resources.qrc +++ b/src/resources.qrc @@ -14,7 +14,6 @@ qml/PlayListEntry.qml qml/MediaBrowser.qml qml/Theme.qml - qml/PlatformIntegration.qml qml/LabelWithToolTip.qml qml/TopNotification.qml qml/TrackImportNotification.qml