MythTV master
lyricsdata.h
Go to the documentation of this file.
1#ifndef LYRICSDATA_H_
2#define LYRICSDATA_H_
3
4// C/C++
5#include <cstdint>
6#include <utility>
7
8// qt
9#include <QObject>
10
11// MythTV
15
16class LyricsData;
17class TestLyrics;
18
20{
21 public:
22 LyricsLine() = default;
23 LyricsLine(std::chrono::milliseconds time, QString lyric) :
24 m_time(time), m_lyric(std::move(lyric)) { }
25
26 std::chrono::milliseconds m_time {0ms};
27 QString m_lyric;
28
29 QString toString(bool syncronized)
30 {
31 if (syncronized)
32 return formatTime() + m_lyric;
33
34 return m_lyric;
35 }
36
37 private:
38 QString formatTime(void) const
39 {
40 QString timestr = MythDate::formatTime(m_time,"mm:ss.zz");
41 return QString("[%1]").arg(timestr);
42 }
43};
44
45using LyricsLineMap = QMap<std::chrono::milliseconds, LyricsLine*>;
46
47class META_PUBLIC LyricsData : public QObject
48{
49 Q_OBJECT
50
51 friend class TestLyrics;
52
53 public:
54 LyricsData() = default;
55 explicit LyricsData(MusicMetadata *parent)
56 : m_parent(parent) {}
57 LyricsData(MusicMetadata *parent, QString grabber, QString artist,
58 QString album, QString title, bool syncronized)
59 : m_parent(parent), m_grabber(std::move(grabber)),
60 m_artist(std::move(artist)), m_album(std::move(album)),
61 m_title(std::move(title)), m_syncronized(syncronized) {}
62 ~LyricsData() override;
63
64 QString grabber(void) { return m_grabber; }
65 void setGrabber(const QString &grabber) { m_grabber = grabber; }
66
67 QString artist(void) { return m_artist; }
68 void setArtist(const QString &artist) { m_artist = artist; }
69
70 QString album(void) { return m_album; }
71 void setAlbum(const QString &album) { m_album = album; }
72
73 QString title(void) { return m_title; }
74 void setTitle(const QString &title) { m_title = title; }
75
76 LyricsLineMap* lyrics(void) { return &m_lyricsMap; }
77 void setLyrics(const QStringList &lyrics);
78
79 bool syncronized(void) const { return m_syncronized; }
80 void setSyncronized(bool syncronized ) { m_syncronized = syncronized; }
81
82 bool changed(void) const { return m_changed; }
83 void setChanged(bool changed) { m_changed = changed; }
84
85 enum Status : std::uint8_t
86 {
87 STATUS_NOTLOADED = 0, // not looked for any lyrics yet
88 STATUS_SEARCHING, // search is taking place
89 STATUS_FOUND, // search completed and some lyrics have been found
90 STATUS_NOTFOUND // search completed but no lyrics have been found
91 };
92
93 Status getStatus(void) { return m_status; }
94
95 void clear(void);
96 void clearLyrics(void);
97 void findLyrics(const QString &grabber);
98 void save(void);
99
100 void customEvent(QEvent *event) override; // QObject
101
102 signals:
103 void statusChanged(LyricsData::Status status, const QString &message);
104
105 private:
106 void loadLyrics(const QString &xmlData);
107 QString createLyricsXML(void);
108
110
111 MusicMetadata *m_parent {nullptr};
112
113 Status m_status {STATUS_NOTLOADED};
114
115 QString m_grabber;
116 QString m_artist;
117 QString m_album;
118 QString m_title;
119 bool m_syncronized {false};
120 bool m_changed {false};
121};
122
124
125#endif
QString artist(void)
Definition: lyricsdata.h:67
QString m_title
Definition: lyricsdata.h:118
void setGrabber(const QString &grabber)
Definition: lyricsdata.h:65
LyricsLineMap * lyrics(void)
Definition: lyricsdata.h:76
LyricsData(MusicMetadata *parent)
Definition: lyricsdata.h:55
void setSyncronized(bool syncronized)
Definition: lyricsdata.h:80
QString grabber(void)
Definition: lyricsdata.h:64
QString album(void)
Definition: lyricsdata.h:70
void setTitle(const QString &title)
Definition: lyricsdata.h:74
LyricsData(MusicMetadata *parent, QString grabber, QString artist, QString album, QString title, bool syncronized)
Definition: lyricsdata.h:57
LyricsData()=default
void statusChanged(LyricsData::Status status, const QString &message)
Status getStatus(void)
Definition: lyricsdata.h:93
bool syncronized(void) const
Definition: lyricsdata.h:79
QString title(void)
Definition: lyricsdata.h:73
@ STATUS_FOUND
Definition: lyricsdata.h:89
@ STATUS_SEARCHING
Definition: lyricsdata.h:88
QString m_album
Definition: lyricsdata.h:117
QString m_grabber
Definition: lyricsdata.h:115
void setArtist(const QString &artist)
Definition: lyricsdata.h:68
void setChanged(bool changed)
Definition: lyricsdata.h:83
bool changed(void) const
Definition: lyricsdata.h:82
void setAlbum(const QString &album)
Definition: lyricsdata.h:71
LyricsLineMap m_lyricsMap
Definition: lyricsdata.h:109
QString m_artist
Definition: lyricsdata.h:116
QString toString(bool syncronized)
Definition: lyricsdata.h:29
QString m_lyric
Definition: lyricsdata.h:27
LyricsLine()=default
LyricsLine(std::chrono::milliseconds time, QString lyric)
Definition: lyricsdata.h:23
QString formatTime(void) const
Definition: lyricsdata.h:38
QMap< std::chrono::milliseconds, LyricsLine * > LyricsLineMap
Definition: lyricsdata.h:45
Q_DECLARE_METATYPE(std::chrono::seconds)
static void clear(SettingsMap &cache, SettingsMap &overrides, const QString &myKey)
Definition: mythdb.cpp:949
#define META_PUBLIC
Definition: mythmetaexp.h:9
QString formatTime(std::chrono::milliseconds msecs, QString fmt)
Format a milliseconds time value.
Definition: mythdate.cpp:242
STL namespace.