File indexing completed on 2024-04-28 04:49:04

0001 /***************************************************************************
0002    SPDX-FileCopyrightText: 2014 (c) Sujith Haridasan <sujith.haridasan@kdemail.net>
0003    SPDX-FileCopyrightText: 2014 (c) Ashish Madeti <ashishmadeti@gmail.com>
0004    SPDX-FileCopyrightText: 2016 (c) Matthieu Gallien <matthieu_gallien@yahoo.fr>
0005 
0006    SPDX-License-Identifier: GPL-3.0-or-later
0007  ***************************************************************************/
0008 
0009 #ifndef MEDIACENTER_MPRIS2_H
0010 #define MEDIACENTER_MPRIS2_H
0011 
0012 #include "elisaLib_export.h"
0013 
0014 #include <QObject>
0015 #include <QSharedPointer>
0016 #include <memory>
0017 #include "manageaudioplayer.h"
0018 #include "manageheaderbar.h"
0019 #include "managemediaplayercontrol.h"
0020 
0021 class MediaPlayer2Player;
0022 class MediaPlayer2;
0023 class MediaPlayListProxyModel;
0024 class AudioWrapper;
0025 
0026 class ELISALIB_EXPORT Mpris2 : public QObject
0027 {
0028     Q_OBJECT
0029 
0030     Q_PROPERTY(QString playerName
0031                READ playerName
0032                WRITE setPlayerName
0033                NOTIFY playerNameChanged)
0034 
0035     Q_PROPERTY(MediaPlayListProxyModel* playListModel
0036                READ playListModel
0037                WRITE setPlayListModel
0038                NOTIFY playListModelChanged)
0039 
0040     Q_PROPERTY(ManageAudioPlayer* audioPlayerManager
0041                READ audioPlayerManager
0042                WRITE setAudioPlayerManager
0043                NOTIFY audioPlayerManagerChanged)
0044 
0045     Q_PROPERTY(ManageMediaPlayerControl* manageMediaPlayerControl
0046                READ manageMediaPlayerControl
0047                WRITE setManageMediaPlayerControl
0048                NOTIFY manageMediaPlayerControlChanged)
0049 
0050     Q_PROPERTY(ManageHeaderBar* headerBarManager
0051                READ headerBarManager
0052                WRITE setHeaderBarManager
0053                NOTIFY headerBarManagerChanged)
0054 
0055     Q_PROPERTY(AudioWrapper* audioPlayer
0056                READ audioPlayer
0057                WRITE setAudioPlayer
0058                NOTIFY audioPlayerChanged)
0059 
0060     Q_PROPERTY(bool showProgressOnTaskBar
0061                READ showProgressOnTaskBar
0062                WRITE setShowProgressOnTaskBar
0063                NOTIFY showProgressOnTaskBarChanged)
0064 
0065 public:
0066     explicit Mpris2(QObject* parent = nullptr);
0067     ~Mpris2() override;
0068 
0069     [[nodiscard]] QString playerName() const;
0070 
0071     [[nodiscard]] MediaPlayListProxyModel* playListModel() const;
0072 
0073     [[nodiscard]] ManageAudioPlayer* audioPlayerManager() const;
0074 
0075     [[nodiscard]] ManageMediaPlayerControl* manageMediaPlayerControl() const;
0076 
0077     [[nodiscard]] ManageHeaderBar* headerBarManager() const;
0078 
0079     [[nodiscard]] AudioWrapper* audioPlayer() const;
0080 
0081     [[nodiscard]] bool showProgressOnTaskBar() const;
0082 
0083 public Q_SLOTS:
0084 
0085     void setPlayerName(const QString &playerName);
0086 
0087     void setPlayListModel(MediaPlayListProxyModel* playListModel);
0088 
0089     void setAudioPlayerManager(ManageAudioPlayer* audioPlayerManager);
0090 
0091     void setManageMediaPlayerControl(ManageMediaPlayerControl* manageMediaPlayerControl);
0092 
0093     void setHeaderBarManager(ManageHeaderBar* headerBarManager);
0094 
0095     void setAudioPlayer(AudioWrapper* audioPlayer);
0096 
0097     void setShowProgressOnTaskBar(bool value);
0098 
0099 Q_SIGNALS:
0100     void raisePlayer();
0101 
0102     void playerNameChanged();
0103 
0104     void playListModelChanged();
0105 
0106     void audioPlayerManagerChanged();
0107 
0108     void manageMediaPlayerControlChanged();
0109 
0110     void headerBarManagerChanged();
0111 
0112     void audioPlayerChanged();
0113 
0114     void showProgressOnTaskBarChanged();
0115 
0116 private:
0117 
0118     void initDBusService();
0119 
0120     std::unique_ptr<MediaPlayer2> m_mp2;
0121     std::unique_ptr<MediaPlayer2Player> m_mp2p;
0122     QString m_playerName;
0123     MediaPlayListProxyModel* m_playListModel = nullptr;
0124     ManageAudioPlayer* m_manageAudioPlayer = nullptr;
0125     ManageMediaPlayerControl* m_manageMediaPlayerControl = nullptr;
0126     ManageHeaderBar* m_manageHeaderBar = nullptr;
0127     AudioWrapper* m_audioPlayer = nullptr;
0128     bool mShowProgressOnTaskBar = true;
0129 };
0130 
0131 #endif //MEDIACENTER_MPRIS2_H