00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef MPD_PLAYLIST_H
00021 #define MPD_PLAYLIST_H
00022
00023 #include "queue.h"
00024 #include "playlist_error.h"
00025
00026 #include <stdbool.h>
00027
00028 struct player_control;
00029
00030 struct playlist {
00034 struct queue queue;
00035
00040 bool playing;
00041
00047 bool stop_on_error;
00048
00054 unsigned error_count;
00055
00061 int current;
00062
00070 int queued;
00071 };
00072
00074 extern struct playlist g_playlist;
00075
00076 void
00077 playlist_global_init(void);
00078
00079 void
00080 playlist_global_finish(void);
00081
00082 void
00083 playlist_init(struct playlist *playlist);
00084
00085 void
00086 playlist_finish(struct playlist *playlist);
00087
00088 void
00089 playlist_tag_changed(struct playlist *playlist);
00090
00094 static inline const struct queue *
00095 playlist_get_queue(const struct playlist *playlist)
00096 {
00097 return &playlist->queue;
00098 }
00099
00100 void
00101 playlist_clear(struct playlist *playlist, struct player_control *pc);
00102
00108 enum playlist_result
00109 playlist_append_file(struct playlist *playlist, struct player_control *pc,
00110 const char *path_fs, unsigned *added_id);
00111
00112 enum playlist_result
00113 playlist_append_uri(struct playlist *playlist, struct player_control *pc,
00114 const char *file, unsigned *added_id);
00115
00116 enum playlist_result
00117 playlist_append_song(struct playlist *playlist, struct player_control *pc,
00118 struct song *song, unsigned *added_id);
00119
00120 enum playlist_result
00121 playlist_delete(struct playlist *playlist, struct player_control *pc,
00122 unsigned song);
00123
00130 enum playlist_result
00131 playlist_delete_range(struct playlist *playlist, struct player_control *pc,
00132 unsigned start, unsigned end);
00133
00134 enum playlist_result
00135 playlist_delete_id(struct playlist *playlist, struct player_control *pc,
00136 unsigned song);
00137
00138 void
00139 playlist_stop(struct playlist *playlist, struct player_control *pc);
00140
00141 enum playlist_result
00142 playlist_play(struct playlist *playlist, struct player_control *pc,
00143 int song);
00144
00145 enum playlist_result
00146 playlist_play_id(struct playlist *playlist, struct player_control *pc,
00147 int song);
00148
00149 void
00150 playlist_next(struct playlist *playlist, struct player_control *pc);
00151
00152 void
00153 playlist_sync(struct playlist *playlist, struct player_control *pc);
00154
00155 void
00156 playlist_previous(struct playlist *playlist, struct player_control *pc);
00157
00158 void
00159 playlist_shuffle(struct playlist *playlist, struct player_control *pc,
00160 unsigned start, unsigned end);
00161
00162 void
00163 playlist_delete_song(struct playlist *playlist, struct player_control *pc,
00164 const struct song *song);
00165
00166 enum playlist_result
00167 playlist_move_range(struct playlist *playlist, struct player_control *pc,
00168 unsigned start, unsigned end, int to);
00169
00170 enum playlist_result
00171 playlist_move_id(struct playlist *playlist, struct player_control *pc,
00172 unsigned id, int to);
00173
00174 enum playlist_result
00175 playlist_swap_songs(struct playlist *playlist, struct player_control *pc,
00176 unsigned song1, unsigned song2);
00177
00178 enum playlist_result
00179 playlist_swap_songs_id(struct playlist *playlist, struct player_control *pc,
00180 unsigned id1, unsigned id2);
00181
00182 enum playlist_result
00183 playlist_set_priority(struct playlist *playlist, struct player_control *pc,
00184 unsigned start_position, unsigned end_position,
00185 uint8_t priority);
00186
00187 enum playlist_result
00188 playlist_set_priority_id(struct playlist *playlist, struct player_control *pc,
00189 unsigned song_id, uint8_t priority);
00190
00191 bool
00192 playlist_get_repeat(const struct playlist *playlist);
00193
00194 void
00195 playlist_set_repeat(struct playlist *playlist, struct player_control *pc,
00196 bool status);
00197
00198 bool
00199 playlist_get_random(const struct playlist *playlist);
00200
00201 void
00202 playlist_set_random(struct playlist *playlist, struct player_control *pc,
00203 bool status);
00204
00205 bool
00206 playlist_get_single(const struct playlist *playlist);
00207
00208 void
00209 playlist_set_single(struct playlist *playlist, struct player_control *pc,
00210 bool status);
00211
00212 bool
00213 playlist_get_consume(const struct playlist *playlist);
00214
00215 void
00216 playlist_set_consume(struct playlist *playlist, bool status);
00217
00218 int
00219 playlist_get_current_song(const struct playlist *playlist);
00220
00221 int
00222 playlist_get_next_song(const struct playlist *playlist);
00223
00224 unsigned
00225 playlist_get_song_id(const struct playlist *playlist, unsigned song);
00226
00227 int
00228 playlist_get_length(const struct playlist *playlist);
00229
00230 unsigned long
00231 playlist_get_version(const struct playlist *playlist);
00232
00233 enum playlist_result
00234 playlist_seek_song(struct playlist *playlist, struct player_control *pc,
00235 unsigned song, float seek_time);
00236
00237 enum playlist_result
00238 playlist_seek_song_id(struct playlist *playlist, struct player_control *pc,
00239 unsigned id, float seek_time);
00240
00249 enum playlist_result
00250 playlist_seek_current(struct playlist *playlist, struct player_control *pc,
00251 float seek_time, bool relative);
00252
00253 void
00254 playlist_increment_version_all(struct playlist *playlist);
00255
00256 #endif