File indexing completed on 2024-05-19 04:48:26

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 #pragma once
0009 
0010 #include <QObject>
0011 #include <QSharedPointer>
0012 #include <memory>
0013 
0014 class MediaPlayer2Player;
0015 class MediaPlayer2;
0016 
0017 class Player;
0018 class Playlist;
0019 
0020 class Mpris2 : public QObject
0021 {
0022     Q_OBJECT
0023 
0024     Q_PROPERTY(QString playerName READ playerName WRITE setPlayerName NOTIFY playerNameChanged)
0025 
0026     Q_PROPERTY(Playlist *playListModel READ playListModel WRITE setPlayListModel NOTIFY playListModelChanged)
0027 
0028     Q_PROPERTY(Player *audioPlayer READ audioPlayer WRITE setAudioPlayer NOTIFY audioPlayerChanged)
0029 
0030     Q_PROPERTY(bool showProgressOnTaskBar READ showProgressOnTaskBar WRITE setShowProgressOnTaskBar NOTIFY showProgressOnTaskBarChanged)
0031 
0032 public:
0033     explicit Mpris2(QObject *parent = nullptr);
0034     ~Mpris2() override;
0035 
0036     QString playerName() const;
0037 
0038     Playlist *playListModel() const;
0039 
0040     Player *audioPlayer() const;
0041 
0042     bool showProgressOnTaskBar() const;
0043 
0044 public Q_SLOTS:
0045 
0046     void setPlayerName(const QString &playerName);
0047 
0048     void setPlayListModel(Playlist *playListModel);
0049 
0050     void setAudioPlayer(Player *audioPlayer);
0051 
0052     void setShowProgressOnTaskBar(bool value);
0053 
0054 Q_SIGNALS:
0055     void raisePlayer();
0056 
0057     void playerNameChanged();
0058 
0059     void playListModelChanged();
0060 
0061     void audioPlayerChanged();
0062 
0063     void showProgressOnTaskBarChanged();
0064 
0065 private:
0066     void initDBusService();
0067 
0068 #if (defined Q_OS_LINUX || defined Q_OS_FREEBSD) && !defined Q_OS_ANDROID
0069     std::unique_ptr<MediaPlayer2> m_mp2;
0070     std::unique_ptr<MediaPlayer2Player> m_mp2p;
0071 #endif
0072 
0073     QString m_playerName;
0074     Playlist *m_playListModel = nullptr;
0075     Player *m_audioPlayer = nullptr;
0076     bool mShowProgressOnTaskBar = true;
0077 };
0078