38
38
#ifndef __RB_PLAY_ORDER_H
39
39
#define __RB_PLAY_ORDER_H
41
#include "rhythmdb/rhythmdb.h"
41
#include <rhythmdb/rhythmdb.h>
42
#include <rhythmdb/rhythmdb-query-model.h>
43
#include "rb-shell-player.h"
44
#include "rb-entry-view.h"
44
#include <rb-shell-player.h>
69
71
void (*playing_source_changed) (RBPlayOrder *porder);
70
72
void (*db_changed) (RBPlayOrder *porder, RhythmDB *new_db);
71
void (*playing_entry_changed) (RBPlayOrder *porder, RhythmDBEntry *new_entry);
73
void (*playing_entry_changed) (RBPlayOrder *porder, RhythmDBEntry *old_entry, RhythmDBEntry *new_entry);
72
74
void (*entry_added) (RBPlayOrder *porder, RhythmDBEntry *entry);
73
75
void (*entry_removed) (RBPlayOrder *porder, RhythmDBEntry *entry);
74
void (*entries_replaced) (RBPlayOrder *porder);
76
void (*query_model_changed) (RBPlayOrder *porder);
75
77
void (*db_entry_deleted) (RBPlayOrder *porder, RhythmDBEntry *entry);
125
127
void (*go_previous) (RBPlayOrder* porder);
130
void (*have_next_previous_changed) (RBPlayOrder *porder, gboolean have_next, gboolean have_previous);
131
void (*playing_entry_removed) (RBPlayOrder *porder, RhythmDBEntry *entry);
127
132
} RBPlayOrderClass;
129
134
GType rb_play_order_get_type (void);
145
150
} RBPlayOrderDescription;
146
151
const RBPlayOrderDescription * rb_play_order_get_orders (void);
148
void rb_play_order_playing_source_changed (RBPlayOrder *porder);
153
void rb_play_order_playing_source_changed (RBPlayOrder *porder,
155
void rb_play_order_query_model_changed (RBPlayOrder *porder);
150
157
gboolean rb_play_order_has_next (RBPlayOrder* porder);
151
158
RhythmDBEntry * rb_play_order_get_next (RBPlayOrder *porder);
154
161
RhythmDBEntry * rb_play_order_get_previous (RBPlayOrder *porder);
155
162
void rb_play_order_go_previous (RBPlayOrder *porder);
164
void rb_play_order_set_playing_entry (RBPlayOrder *porder,
165
RhythmDBEntry *entry);
166
RhythmDBEntry * rb_play_order_get_playing_entry (RBPlayOrder *porder);
157
168
/* Private utility functions used by play order implementations */
159
170
RBShellPlayer * rb_play_order_get_player (RBPlayOrder *porder);
160
171
RBSource * rb_play_order_get_source (RBPlayOrder *porder);
161
172
RhythmDB * rb_play_order_get_db (RBPlayOrder *porder);
163
* Gets the entry-view through the source. Returns NULL if there is no entry-view.
165
RBEntryView* rb_play_order_get_entry_view (RBPlayOrder *porder);
167
* Returns NULL if nothing is playing
169
RhythmDBEntry * rb_play_order_get_playing_entry (RBPlayOrder *porder);
173
RhythmDBQueryModel * rb_play_order_get_query_model (RBPlayOrder *porder);
174
gboolean rb_play_order_model_not_empty (RBPlayOrder *porder);
176
void rb_play_order_have_next_changed (RBPlayOrder *porder, gboolean have_next);
177
void rb_play_order_have_previous_changed (RBPlayOrder *porder, gboolean have_previous);
171
179
gboolean rb_play_order_player_is_playing (RBPlayOrder *porder);
181
void rb_play_order_check_if_empty (RBPlayOrder *porder, RhythmDBEntry *entry);
173
183
void rb_play_order_ref_entry_swapped (RhythmDBEntry *entry, RhythmDB *db);
174
184
void rb_play_order_unref_entry_swapped (RhythmDBEntry *entry, RhythmDB *db);