28
28
typedef struct _TrackStoreClass TrackStoreClass;
29
29
typedef struct _TrackStorePrivate TrackStorePrivate;
31
#define TYPE_PLAYER (player_get_type ())
32
#define PLAYER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PLAYER, Player))
33
#define PLAYER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PLAYER, PlayerClass))
34
#define IS_PLAYER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PLAYER))
35
#define IS_PLAYER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PLAYER))
36
#define PLAYER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PLAYER, PlayerClass))
38
typedef struct _Player Player;
39
typedef struct _PlayerClass PlayerClass;
40
#define _g_free0(var) ((var == NULL) ? NULL : (var = (g_free (var), NULL)))
41
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
31
43
#define TYPE_TRACK (track_get_type ())
32
44
#define TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRACK, Track))
33
45
#define TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TRACK, TrackClass))
49
61
typedef struct _Album Album;
50
62
typedef struct _AlbumClass AlbumClass;
51
#define _g_free0(var) (var = (g_free (var), NULL))
52
63
#define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_unref (var), NULL)))
53
64
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
55
66
#define TYPE_TRACK_STORE_COL (track_store_col_get_type ())
68
#define TYPE_LOGGER (logger_get_type ())
69
#define LOGGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_LOGGER, Logger))
70
#define LOGGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_LOGGER, LoggerClass))
71
#define IS_LOGGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_LOGGER))
72
#define IS_LOGGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_LOGGER))
73
#define LOGGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_LOGGER, LoggerClass))
75
typedef struct _Logger Logger;
76
typedef struct _LoggerClass LoggerClass;
57
78
struct _TrackStore {
58
79
GtkListStore parent_instance;
59
80
TrackStorePrivate * priv;
95
122
static gpointer track_store_parent_class = NULL;
97
125
GType track_store_get_type (void) G_GNUC_CONST;
126
GType player_get_type (void) G_GNUC_CONST;
127
#define TRACK_STORE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_TRACK_STORE, TrackStorePrivate))
99
129
TRACK_STORE_DUMMY_PROPERTY
101
TrackStore* track_store_new (void);
102
TrackStore* track_store_construct (GType object_type);
131
TrackStore* track_store_new (Player* player);
132
TrackStore* track_store_construct (GType object_type, Player* player);
103
133
GType track_get_type (void) G_GNUC_CONST;
104
134
void track_store_add_track (TrackStore* self, Track* track);
105
135
GType album_get_type (void) G_GNUC_CONST;
106
136
GType track_store_col_get_type (void) G_GNUC_CONST;
109
TrackStore* track_store_construct (GType object_type) {
137
Track* player_get_current_track (Player* self);
138
void track_store_unhighlight_row (TrackStore* self, GtkTreeIter* iter);
139
void track_store_highlight_row (TrackStore* self, GtkTreeIter* iter);
140
static GtkTreeIter* _gtk_tree_iter_dup (GtkTreeIter* self);
141
GType logger_get_type (void) G_GNUC_CONST;
142
void logger_debug (Logger* self, const gchar* text);
143
static gboolean _gtk_tree_iter_equal (const GtkTreeIter* s1, const GtkTreeIter* s2);
144
static void track_store_finalize (GObject* obj);
147
static gpointer _g_object_ref0 (gpointer self) {
148
return self ? g_object_ref (self) : NULL;
152
TrackStore* track_store_construct (GType object_type, Player* player) {
110
153
TrackStore * self = NULL;
111
156
GType* column_types = NULL;
112
157
gint column_types_length1 = 0;
113
158
gint _column_types_size_ = 0;
114
GType* _tmp0_ = NULL;
159
GType* _tmp2_ = NULL;
161
g_return_val_if_fail (player != NULL, NULL);
116
162
self = (TrackStore*) g_object_new (object_type, NULL);
117
_tmp0_ = g_new0 (GType, 3);
118
_tmp0_[0] = TYPE_TRACK;
119
_tmp0_[1] = G_TYPE_STRING;
120
_tmp0_[2] = G_TYPE_STRING;
163
_tmp0_ = _g_object_ref0 (player);
165
_g_object_unref0 (self->priv->player);
166
self->priv->player = _tmp1_;
167
_tmp2_ = g_new0 (GType, 3);
168
_tmp2_[0] = TYPE_TRACK;
169
_tmp2_[1] = G_TYPE_STRING;
170
_tmp2_[2] = G_TYPE_STRING;
122
172
column_types = (g_free (column_types), NULL);
123
173
column_types_length1 = 3;
124
174
_column_types_size_ = column_types_length1;
125
column_types = _tmp1_;
175
column_types = _tmp3_;
126
176
gtk_list_store_set_column_types ((GtkListStore*) self, column_types_length1, column_types);
127
177
column_types = (g_free (column_types), NULL);
132
TrackStore* track_store_new (void) {
133
return track_store_construct (TYPE_TRACK_STORE);
182
TrackStore* track_store_new (Player* player) {
183
return track_store_construct (TYPE_TRACK_STORE, player);
209
273
gtk_list_store_append ((GtkListStore*) self, &_tmp2_);
211
275
gtk_list_store_set ((GtkListStore*) self, &iter, TRACK_STORE_COL_TRACK_OBJ, track, TRACK_STORE_COL_NUMBER, number, TRACK_STORE_COL_TITLE, title, -1);
276
_tmp3_ = player_get_current_track (self->priv->player);
277
if (_tmp3_ != NULL) {
278
Track* _tmp4_ = NULL;
279
_tmp4_ = player_get_current_track (self->priv->player);
280
if (_tmp4_->id == track->id) {
283
track_store_unhighlight_row (self, &iter);
284
track_store_highlight_row (self, &iter);
285
_tmp5_ = __gtk_tree_iter_dup0 (&iter);
287
_g_free0 (self->priv->highlighted_iter);
288
self->priv->highlighted_iter = _tmp6_;
212
291
_g_free0 (number);
213
292
_g_free0 (title);
296
void track_store_highlight_row (TrackStore* self, GtkTreeIter* iter) {
298
GValue value_track = {0};
302
gchar* _tmp3_ = NULL;
304
gchar* _tmp5_ = NULL;
306
gchar* _tmp7_ = NULL;
308
gchar* _tmp9_ = NULL;
309
GValue _tmp10_ = {0};
310
GtkTreeIter* _tmp11_;
311
GtkTreeIter* _tmp12_;
312
g_return_if_fail (self != NULL);
313
gtk_tree_model_get_value ((GtkTreeModel*) self, iter, (gint) TRACK_STORE_COL_TRACK_OBJ, &_tmp0_);
314
G_IS_VALUE (&value_track) ? (g_value_unset (&value_track), NULL) : NULL;
315
value_track = _tmp0_;
316
_tmp1_ = _g_object_ref0 (g_value_get_object (&value_track));
318
_g_object_unref0 (track);
320
_tmp3_ = g_strdup_printf ("%u", track->number);
322
_tmp5_ = g_strdup_printf ("<span weight='bold'>%s</span>", _tmp4_);
323
g_value_init (&_tmp6_, G_TYPE_STRING);
324
g_value_take_string (&_tmp6_, _tmp5_);
325
gtk_list_store_set_value ((GtkListStore*) self, iter, (gint) TRACK_STORE_COL_NUMBER, &_tmp6_);
326
G_IS_VALUE (&_tmp6_) ? (g_value_unset (&_tmp6_), NULL) : NULL;
328
_tmp7_ = string_replace (track->title, "&", "&");
330
_tmp9_ = g_strdup_printf ("<span weight='bold'>%s</span>", _tmp8_);
331
g_value_init (&_tmp10_, G_TYPE_STRING);
332
g_value_take_string (&_tmp10_, _tmp9_);
333
gtk_list_store_set_value ((GtkListStore*) self, iter, (gint) TRACK_STORE_COL_TITLE, &_tmp10_);
334
G_IS_VALUE (&_tmp10_) ? (g_value_unset (&_tmp10_), NULL) : NULL;
336
_tmp11_ = __gtk_tree_iter_dup0 (iter);
338
_g_free0 (self->priv->highlighted_iter);
339
self->priv->highlighted_iter = _tmp12_;
340
G_IS_VALUE (&value_track) ? (g_value_unset (&value_track), NULL) : NULL;
341
_g_object_unref0 (track);
345
static gboolean _gtk_tree_iter_equal (const GtkTreeIter* s1, const GtkTreeIter* s2) {
355
if (s1->stamp != s2->stamp) {
358
if (s1->user_data != s2->user_data) {
361
if (s1->user_data2 != s2->user_data2) {
364
if (s1->user_data3 != s2->user_data3) {
371
void track_store_unhighlight_row (TrackStore* self, GtkTreeIter* iter) {
372
gboolean _tmp0_ = FALSE;
373
gboolean _tmp1_ = FALSE;
374
g_return_if_fail (self != NULL);
375
logger_debug (Log, "unhighlight");
376
if (self->priv->highlighted_iter != NULL) {
377
_tmp1_ = _gtk_tree_iter_equal (self->priv->highlighted_iter, iter) != TRUE;
383
_tmp2_ = gtk_list_store_iter_is_valid ((GtkListStore*) self, self->priv->highlighted_iter);
390
GValue value_track = {0};
394
gchar* _tmp6_ = NULL;
396
gchar* _tmp8_ = NULL;
398
gchar* _tmp10_ = NULL;
400
gchar* _tmp12_ = NULL;
401
GValue _tmp13_ = {0};
402
logger_debug (Log, "do highlight");
403
gtk_tree_model_get_value ((GtkTreeModel*) self, self->priv->highlighted_iter, (gint) TRACK_STORE_COL_TRACK_OBJ, &_tmp3_);
404
G_IS_VALUE (&value_track) ? (g_value_unset (&value_track), NULL) : NULL;
405
value_track = _tmp3_;
406
_tmp4_ = _g_object_ref0 (g_value_get_object (&value_track));
408
_g_object_unref0 (track);
410
_tmp6_ = g_strdup_printf ("%u", track->number);
412
_tmp8_ = g_strdup_printf ("%s", _tmp7_);
413
g_value_init (&_tmp9_, G_TYPE_STRING);
414
g_value_take_string (&_tmp9_, _tmp8_);
415
gtk_list_store_set_value ((GtkListStore*) self, self->priv->highlighted_iter, (gint) TRACK_STORE_COL_NUMBER, &_tmp9_);
416
G_IS_VALUE (&_tmp9_) ? (g_value_unset (&_tmp9_), NULL) : NULL;
418
_tmp10_ = string_replace (track->title, "&", "&");
420
_tmp12_ = g_strdup_printf ("%s", _tmp11_);
421
g_value_init (&_tmp13_, G_TYPE_STRING);
422
g_value_take_string (&_tmp13_, _tmp12_);
423
gtk_list_store_set_value ((GtkListStore*) self, self->priv->highlighted_iter, (gint) TRACK_STORE_COL_TITLE, &_tmp13_);
424
G_IS_VALUE (&_tmp13_) ? (g_value_unset (&_tmp13_), NULL) : NULL;
426
G_IS_VALUE (&value_track) ? (g_value_unset (&value_track), NULL) : NULL;
427
_g_object_unref0 (track);
217
432
static void track_store_class_init (TrackStoreClass * klass) {
218
433
track_store_parent_class = g_type_class_peek_parent (klass);
434
g_type_class_add_private (klass, sizeof (TrackStorePrivate));
435
G_OBJECT_CLASS (klass)->finalize = track_store_finalize;
222
439
static void track_store_instance_init (TrackStore * self) {
440
self->priv = TRACK_STORE_GET_PRIVATE (self);
441
self->priv->highlighted_iter = NULL;
445
static void track_store_finalize (GObject* obj) {
447
self = TRACK_STORE (obj);
448
_g_free0 (self->priv->highlighted_iter);
449
_g_object_unref0 (self->priv->player);
450
G_OBJECT_CLASS (track_store_parent_class)->finalize (obj);