add :refresh command
[cmus.git] / pl.h
blobb050e3f3479493e37584ca48899152dce66d1254
1 /*
2 * Copyright 2006 Timo Hirvonen
3 */
5 #ifndef PL_H
6 #define PL_H
8 #include "track_info.h"
9 #include "list.h"
10 #include "locking.h"
11 #include "iter.h"
12 #include "track.h"
14 extern pthread_mutex_t pl_mutex;
15 extern struct window *pl_win;
16 extern struct searchable *pl_searchable;
17 extern struct simple_track *pl_cur_track;
18 extern unsigned int pl_nr_tracks;
19 extern unsigned int pl_total_time;
20 extern unsigned int pl_nr_marked;
21 extern const char **pl_sort_keys;
23 void pl_init(void);
25 /* set current track, these return track_info on success */
26 struct track_info *pl_set_next(void);
27 struct track_info *pl_set_prev(void);
28 struct track_info *pl_set_selected(void);
30 void pl_add_track(struct track_info *track_info);
32 void pl_set_sort_keys(const char **keys);
34 /* bindable */
35 void pl_remove_sel(void);
36 void pl_toggle_mark(void);
37 void pl_move_after(void);
38 void pl_move_before(void);
39 void pl_sel_current(void);
41 void pl_clear(void);
42 void pl_reshuffle(void);
43 void pl_mark(const char *filter);
44 void pl_unmark(void);
45 void pl_invert_marks(void);
47 int pl_for_each_sel(int (*cb)(void *data, struct track_info *ti), void *data, int reverse);
48 int pl_for_each(int (*cb)(void *data, struct track_info *ti), void *data);
50 int __pl_for_each_sel(int (*cb)(void *data, struct track_info *ti), void *data, int reverse);
52 #define pl_lock() cmus_mutex_lock(&pl_mutex)
53 #define pl_unlock() cmus_mutex_unlock(&pl_mutex)
55 #endif