aboutsummaryrefslogtreecommitdiffstats
path: root/src/playlist.h
blob: 732ea814ee1253d6d3aca63098055b334ddccac4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
/* the Music Player Daemon (MPD)
 * Copyright (C) 2003-2007 by Warren Dukes (warren.dukes@gmail.com)
 * This project's homepage is: http://www.musicpd.org
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#ifndef PLAYLIST_H
#define PLAYLIST_H

#include "../config.h"

#include "dbUtils.h"
#include "os_compat.h"

#define PLAYLIST_FILE_SUFFIX 	"m3u"
#define PLAYLIST_COMMENT	'#'

typedef struct _Playlist {
	Song **songs;
	/* holds version a song was modified on */
	mpd_uint32 *songMod;
	int *order;
	int *positionToId;
	int *idToPosition;
	int length;
	int current;
	int queued;
	int repeat;
	int random;
	mpd_uint32 version;
	mpd_uint32 queueversion;
} Playlist;

extern int playlist_saveAbsolutePaths;

extern int playlist_max_length;

void initPlaylist(void);

void finishPlaylist(void);

void readPlaylistState(FILE *);

void savePlaylistState(FILE *);

int clearPlaylist(int fd);

int clearStoredPlaylist(int fd, char *utf8file);

int addToPlaylist(int fd, char *file, int *added_id);

int addToStoredPlaylist(int fd, char *file, char *utf8file);

int addSongToPlaylist(int fd, Song * song, int *added_id);

int showPlaylist(int fd);

int deleteFromPlaylist(int fd, int song);

int deleteFromPlaylistById(int fd, int song);

int playlistInfo(int fd, int song);

int playlistId(int fd, int song);

int stopPlaylist(int fd);

int playPlaylist(int fd, int song, int stopOnError);

int playNextPlaylistQueue(int fd, int stopOnError);

int playPlaylistById(int fd, int song, int stopOnError);

int nextSongInPlaylist(int fd);

void syncPlayerAndPlaylist(void);

int previousSongInPlaylist(int fd);

int shufflePlaylist(int fd);

int savePlaylist(int fd, char *utf8file);

int deletePlaylist(int fd, char *utf8file);

int deletePlaylistById(int fd, char *utf8file);

void deleteASongFromPlaylist(Song * song);

int moveSongInPlaylist(int fd, int from, int to);

int moveSongInPlaylistById(int fd, int id, int to);

int swapSongsInPlaylist(int fd, int song1, int song2);

int swapSongsInPlaylistById(int fd, int id1, int id2);

int loadPlaylist(int fd, char *utf8file);

int getPlaylistRepeatStatus(void);

int setPlaylistRepeatStatus(int fd, int status);

int getPlaylistRandomStatus(void);

int setPlaylistRandomStatus(int fd, int status);

int getPlaylistCurrentSong(void);

int getPlaylistSongId(int song);

int getPlaylistLength(void);

unsigned long getPlaylistVersion(void);

unsigned long getPlaylistQueueVersion(void);

void playPlaylistIfPlayerStopped(void);

int seekSongInPlaylist(int fd, int song, float time);

int seekSongInPlaylistById(int fd, int id, float time);

void playlistVersionChange(void);

int playlistChanges(int fd, mpd_uint32 version);

int playlistChangesPosId(int fd, mpd_uint32 version);

int PlaylistInfo(int fd, char *utf8file, int detail);

void searchForSongsInPlaylist(int fd, int numItems, LocateTagItem * items);

void findSongsInPlaylist(int fd, int numItems, LocateTagItem * items);

void clearPlaylistQueue(void);

int addToPlaylistQueueById(int fd, int song, int toPosition);

int deleteFromPlaylistQueue(int fd, int song);

int deleteFromPlaylistQueueInternal(int song);

int playlistQueueInfo(int fd);

int valid_playlist_name(int err_fd, const char *utf8path);

#endif