CCIMXDesktop
 
Loading...
Searching...
No Matches
CCMediaPlayList.h
1#ifndef CCMEDIAPLAYLIST_H
2#define CCMEDIAPLAYLIST_H
3
4#include <QObject>
5
11 bool prev_enabled { false };
12 bool next_enabled { false };
13 QString current_playing {};
14};
15
19class CCMediaPlayList : public QObject {
20 Q_OBJECT
21public:
27 explicit CCMediaPlayList(QObject* parent = nullptr);
28
32 enum class PlayMode {
33 OneShot,
34 OneCycle,
35 ListPlay,
37 };
38
39 static constexpr const PlayMode DEF_MODE = PlayMode::ListCycle;
40
45 void set_play_mode(const PlayMode mode);
46
50 void flow_mode();
51
56 inline PlayMode get_play_mode() const { return current_mode; }
57
63
69
75 return fetch_from_name(actual_play_list.at(moving_index));
76 }
77
83 MediaListMails fetch_from_name(const QString& where);
84
90
96
102 QStringList currentPlayingList() const { return actual_play_list; }
103
108 QStringList actualList() const { return play_list; }
109
114 int get_actualListlist_size() { return play_list.size(); }
115
120 void enqueue_play(const QStringList& media_sources);
121
126 void remove_play_list(const QStringList& media_sources);
127
128signals:
133 void playModeChanged(const PlayMode mode);
134
135public slots:
139 void flush_play_list();
140
141private:
142 PlayMode current_mode { DEF_MODE };
143 QStringList play_list {};
144 QStringList actual_play_list {};
145 int moving_index { -1 };
146
147 enum Direction {
148 FORWARD,
149 BACKWARD
150 };
151
156 void flush_info_according_mode(Direction dir);
157
162 MediaListMails flush_according_index();
163};
164
165#endif // CCMEDIAPLAYLIST_H
The CCMediaPlayList class manages a playlist with various play modes.
Definition CCMediaPlayList.h:19
static constexpr const PlayMode DEF_MODE
Default play mode.
Definition CCMediaPlayList.h:39
PlayMode
PlayMode enum defines playback modes.
Definition CCMediaPlayList.h:32
@ ListCycle
Play the playlist repeatedly.
@ OneCycle
Repeat the current media endlessly.
@ OneShot
Play one media once then stop.
@ ListPlay
Play the playlist once in order.
MediaListMails fetch_last_play()
Fetch last media info in the actual playlist.
Definition CCMediaPlayList.cpp:84
void enqueue_play(const QStringList &media_sources)
Append media sources to the play list.
Definition CCMediaPlayList.cpp:95
QStringList actualList() const
Get the editable play list.
Definition CCMediaPlayList.h:108
void remove_play_list(const QStringList &media_sources)
Remove media sources from the play list.
Definition CCMediaPlayList.cpp:101
MediaListMails fetch_prev_play()
Fetch previous media info according to play mode.
Definition CCMediaPlayList.cpp:30
MediaListMails fetch_next_play()
Fetch next media info according to play mode.
Definition CCMediaPlayList.cpp:42
void flush_play_list()
Flush the editable play list into actual_play_list, making changes effective.
Definition CCMediaPlayList.cpp:108
MediaListMails fetch_current_play()
Fetch current media info.
Definition CCMediaPlayList.h:74
QStringList currentPlayingList() const
Get the current actual playing list.
Definition CCMediaPlayList.h:102
int get_actualListlist_size()
Get size of the editable play list.
Definition CCMediaPlayList.h:114
void flow_mode()
Cycle the play mode to the next one.
Definition CCMediaPlayList.cpp:12
MediaListMails fetch_first_play()
Fetch first media info in the actual playlist.
Definition CCMediaPlayList.cpp:73
PlayMode get_play_mode() const
Get current play mode.
Definition CCMediaPlayList.h:56
MediaListMails fetch_from_name(const QString &where)
Fetch media info by name.
Definition CCMediaPlayList.cpp:54
void set_play_mode(const PlayMode mode)
Set the play mode.
Definition CCMediaPlayList.cpp:7
void playModeChanged(const PlayMode mode)
Signal emitted when play mode changes.
The MediaListMails struct provides play status info.
Definition CCMediaPlayList.h:10
bool next_enabled
Whether next item can be played.
Definition CCMediaPlayList.h:12
bool prev_enabled
Whether previous item can be played.
Definition CCMediaPlayList.h:11
QString current_playing
The current playing media name or path.
Definition CCMediaPlayList.h:13