30
30
static RhythmDBEntry* rb_linear_play_order_get_next (RBPlayOrder* method);
31
31
static RhythmDBEntry* rb_linear_play_order_get_previous (RBPlayOrder* method);
34
rb_linear_play_order_get_type (void)
36
static GType rb_linear_play_order_type = 0;
38
if (rb_linear_play_order_type == 0)
40
static const GTypeInfo our_info =
42
sizeof (RBLinearPlayOrderClass),
45
(GClassInitFunc) rb_linear_play_order_class_init,
48
sizeof (RBLinearPlayOrder),
53
rb_linear_play_order_type = g_type_register_static (RB_TYPE_PLAY_ORDER,
58
return rb_linear_play_order_type;
33
G_DEFINE_TYPE (RBLinearPlayOrder, rb_linear_play_order, RB_TYPE_PLAY_ORDER)
62
36
rb_linear_play_order_new (RBShellPlayer *player)
78
52
porder->get_previous = rb_linear_play_order_get_previous;
56
rb_linear_play_order_init (RBLinearPlayOrder *porder)
81
60
static RhythmDBEntry*
82
61
rb_linear_play_order_get_next (RBPlayOrder* porder)
84
RBEntryView *entry_view;
63
RhythmDBQueryModel *model;
85
64
RhythmDBEntry *entry;
87
66
g_return_val_if_fail (porder != NULL, NULL);
88
67
g_return_val_if_fail (RB_IS_LINEAR_PLAY_ORDER (porder), NULL);
90
entry_view = rb_play_order_get_entry_view (porder);
91
/* Does this interfere with starting from not playing? */
92
if (entry_view == NULL)
69
model = rb_play_order_get_query_model (porder);
95
rb_debug ("choosing next linked entry");
96
entry = rb_entry_view_get_next_entry (entry_view);
99
&& rb_entry_view_get_playing_entry (entry_view) == NULL) {
100
rb_debug ("Player is stopped, picking first entry");
101
entry = rb_entry_view_get_first_entry (entry_view);
73
g_object_get (porder, "playing-entry", &entry, NULL);
75
return rhythmdb_query_model_get_next_from_entry (model, entry);
78
if (!gtk_tree_model_get_iter_first (GTK_TREE_MODEL (model), &iter))
80
return rhythmdb_query_model_iter_to_entry (model, &iter);
107
84
static RhythmDBEntry*
108
85
rb_linear_play_order_get_previous (RBPlayOrder* porder)
110
RBEntryView *entry_view;
87
RhythmDBQueryModel *model;
112
90
g_return_val_if_fail (porder != NULL, NULL);
113
91
g_return_val_if_fail (RB_IS_LINEAR_PLAY_ORDER (porder), NULL);
115
entry_view = rb_play_order_get_entry_view (porder);
116
g_return_val_if_fail (entry_view != NULL, NULL);
93
model = rb_play_order_get_query_model (porder);
118
rb_debug ("choosing previous linked entry");
119
return rb_entry_view_get_previous_entry (entry_view);
97
g_object_get (porder, "playing-entry", &entry, NULL);
100
return rhythmdb_query_model_get_previous_from_entry (model, entry);