Music Hub  ..
A session-wide music playback service
track.h
Go to the documentation of this file.
1 /*
2  * Copyright © 2021-2022 UBports Foundation.
3  *
4  * Contact: Alberto Mardegan <mardy@users.sourceforge.net>
5  *
6  * This program is free software: you can redistribute it and/or modify it
7  * under the terms of the GNU Lesser General Public License version 3,
8  * as published by the Free Software Foundation.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17  */
18 #ifndef LOMIRI_MEDIAHUBSERVICE_TRACK_H
19 #define LOMIRI_MEDIAHUBSERVICE_TRACK_H
20 
21 #include <QString>
22 #include <QScopedPointer>
23 #include <QUrl>
24 #include <QVariantMap>
25 
26 namespace lomiri
27 {
28 namespace MediaHubService
29 {
30 
31 class Track
32 {
33 public:
34  typedef QString Id;
35  typedef QVariantMap MetaDataType;
36 
37  class MetaData: public MetaDataType
38  {
39  public:
40  using MetaDataType::MetaDataType;
41  static constexpr const char* TrackArtlUrlKey = "mpris:artUrl";
42  static constexpr const char* TrackLengthKey = "mpris:length";
43  static constexpr const char* TrackIdKey = "mpris:trackid";
44 
45  template<typename Tag>
46  bool contains() const
47  {
48  return contains(Tag::name());
49  }
50 
51  bool isSet(const QString &key) const
52  {
53  return !value(key).isNull();
54  }
55 
56  void setAlbum(const QString &album);
57  void setArtist(const QString &artist);
58  void setTitle(const QString &title);
59  void setTrackId(const QString &id);
60  void setTrackLength(int64_t id);
61  void setArtUrl(const QUrl &url);
62  void setLastUsed(const QString &datetime);
63  QString album() const;
64  QString artist() const;
65  QString title() const;
66  QString trackId() const;
67  int64_t trackLength() const;
68  QUrl artUrl() const;
69  QString lastUsed() const;
70  };
71 
72  Track(const Id& id);
73  Track(const Track&) = delete;
74  virtual ~Track();
75 
76  Track& operator=(const Track&);
77  bool operator==(const Track&) const;
78 
79  const Id& id() const;
80  QUrl uri() const;
81 
82 private:
83  struct Private;
84  QScopedPointer<Private> d;
85 };
86 
87 }
88 }
89 
90 #endif // LOMIRI_MEDIAHUBSERVICE_TRACK_H
lomiri::MediaHubService::Track::MetaData::TrackIdKey
static constexpr const char * TrackIdKey
Definition: track.h:43
lomiri::MediaHubService::Track::MetaData
Definition: track.h:37
lomiri::MediaHubService::Track::MetaData::setTrackId
void setTrackId(const QString &id)
Definition: track_metadata.cpp:42
lomiri::MediaHubService::Track::MetaData::artUrl
QUrl artUrl() const
Definition: track_metadata.cpp:88
lomiri::MediaHubService::Track::uri
QUrl uri() const
lomiri::MediaHubService::Track::MetaData::setLastUsed
void setLastUsed(const QString &datetime)
Definition: track_metadata.cpp:58
lomiri::MediaHubService::Track
Definition: track.h:31
lomiri::MediaHubService::Track::Id
QString Id
Definition: track.h:34
lomiri::MediaHubService::Track::operator=
Track & operator=(const Track &)
lomiri::MediaHubService::Track::MetaData::contains
bool contains() const
Definition: track.h:46
lomiri::MediaHubService::Track::id
const Id & id() const
lomiri::MediaHubService::Track::~Track
virtual ~Track()
lomiri::MediaHubService::Track::MetaData::setArtUrl
void setArtUrl(const QUrl &url)
Definition: track_metadata.cpp:53
lomiri::MediaHubService::Track::MetaDataType
QVariantMap MetaDataType
Definition: track.h:35
lomiri::MediaHubService::Track::Track
Track(const Id &id)
lomiri::MediaHubService::Track::MetaData::setArtist
void setArtist(const QString &artist)
Definition: track_metadata.cpp:32
lomiri::MediaHubService::Track::MetaData::artist
QString artist() const
Definition: metadata.cpp:55
lomiri::MediaHubService::Track::MetaData::setAlbum
void setAlbum(const QString &album)
Definition: track_metadata.cpp:27
lomiri::MediaHubService::Track::MetaData::TrackArtlUrlKey
static constexpr const char * TrackArtlUrlKey
Definition: track.h:41
lomiri::MediaHubService::Track::MetaData::setTitle
void setTitle(const QString &title)
Definition: track_metadata.cpp:37
MetaDataType
lomiri::MediaHubService::Track::operator==
bool operator==(const Track &) const
lomiri::MediaHubService::Track::MetaData::trackId
QString trackId() const
Definition: track_metadata.cpp:78
lomiri::MediaHubService::Track::MetaData::isSet
bool isSet(const QString &key) const
Definition: track.h:51
lomiri::MediaHubService::Track::MetaData::album
QString album() const
Definition: metadata.cpp:50
lomiri::MediaHubService::Track::MetaData::trackLength
int64_t trackLength() const
Definition: track_metadata.cpp:83
lomiri::MediaHubService::Track::MetaData::setTrackLength
void setTrackLength(int64_t id)
Definition: track_metadata.cpp:47
lomiri::MediaHubService::Track::MetaData::title
QString title() const
Definition: metadata.cpp:60
lomiri::MediaHubService::Track::MetaData::lastUsed
QString lastUsed() const
Definition: track_metadata.cpp:93
lomiri
Definition: dbus_utils.h:24
lomiri::MediaHubService::Track::MetaData::TrackLengthKey
static constexpr const char * TrackLengthKey
Definition: track.h:42