Phosphor
Qt6 / Wayland library suite for window-management tools
 
Loading...
Searching...
No Matches
MprisPlayerModel.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 fuddlesworth
2// SPDX-License-Identifier: LGPL-2.1-or-later
3
4#pragma once
5
6#include <PhosphorServices/phosphorservices_export.h>
7
10
11#include <QAbstractListModel>
12
13namespace PhosphorServices {
14
15class PHOSPHORSERVICES_EXPORT MprisPlayerModel : public QAbstractListModel
16{
17 Q_OBJECT
18 Q_PROPERTY(PhosphorServices::MprisHost* host READ host WRITE setHost NOTIFY hostChanged)
19 Q_PROPERTY(int count READ rowCount NOTIFY countChanged)
20
21public:
30 Q_ENUM(Roles)
31
32 explicit MprisPlayerModel(QObject* parent = nullptr);
33 ~MprisPlayerModel() override;
34
35 [[nodiscard]] MprisHost* host() const;
36 void setHost(MprisHost* host);
37
38 [[nodiscard]] int rowCount(const QModelIndex& parent = {}) const override;
39 [[nodiscard]] QVariant data(const QModelIndex& index, int role) const override;
40 [[nodiscard]] QHash<int, QByteArray> roleNames() const override;
41
42Q_SIGNALS:
45
46private Q_SLOTS:
47 void onPlayerAdded(PhosphorServices::MprisPlayer* player);
48 void onPlayerRemoved(PhosphorServices::MprisPlayer* player);
49 void onPlayerDataChanged(PhosphorServices::MprisPlayer* player);
50
51private:
52 void connectPlayer(MprisPlayer* player);
53
54 MprisHost* m_host = nullptr;
55 // Row mirror owned by the model. rowCount()/data() index into this
56 // list, never the host's, so the begin/end-insert/remove transaction
57 // boundaries always straddle the actual mutation regardless of when
58 // the host emits playerAdded/playerRemoved relative to its own list.
59 QList<MprisPlayer*> m_rows;
60};
61
62} // namespace PhosphorServices
Definition MprisHost.h:16
Definition MprisPlayerModel.h:16
QHash< int, QByteArray > roleNames() const override
QVariant data(const QModelIndex &index, int role) const override
Roles
Definition MprisPlayerModel.h:22
@ TrackTitleRole
Definition MprisPlayerModel.h:26
@ PlaybackStateRole
Definition MprisPlayerModel.h:25
@ TrackArtistRole
Definition MprisPlayerModel.h:27
@ ArtUrlRole
Definition MprisPlayerModel.h:28
@ IdentityRole
Definition MprisPlayerModel.h:24
Definition MprisPlayer.h:16
Definition DBusMenuModel.h:15