1 /*************************************************************************/
2 /* Copyright (C) 2012-2013 matias <mati86dl@gmail.com> */
3 /* */
4 /* This program is free software: you can redistribute it and/or modify */
5 /* it under the terms of the GNU General Public License as published by */
6 /* the Free Software Foundation, either version 3 of the License, or */
7 /* (at your option) any later version. */
8 /* */
9 /* This program is distributed in the hope that it will be useful, */
10 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
11 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
12 /* GNU General Public License for more details. */
13 /* */
14 /* You should have received a copy of the GNU General Public License */
15 /* along with this program. If not, see <http://www.gnu.org/licenses/>. */
16 /*************************************************************************/
17
18 #include "pragha-musicobject.h"
19
20 G_DEFINE_TYPE(PraghaMusicobject, pragha_musicobject, G_TYPE_OBJECT)
21
22 struct _PraghaMusicobjectPrivate
23 {
24 gchar *file;
25 PraghaMusicSource source;
26 gchar *mime_type;
27 gchar *title;
28 gchar *artist;
29 gchar *album;
30 gchar *genre;
31 gchar *comment;
32 guint year;
33 guint track_no;
34 gint length;
35 gint bitrate;
36 gint channels;
37 gint samplerate;
38 };
39
40 enum
41 {
42 PROP_0,
43 PROP_FILE,
44 PROP_SOURCE,
45 PROP_MIME_TYPE,
46 PROP_TITLE,
47 PROP_ARTIST,
48 PROP_ALBUM,
49 PROP_GENRE,
50 PROP_COMMENT,
51 PROP_YEAR,
52 PROP_TRACK_NO,
53 PROP_LENGTH,
54 PROP_BITRATE,
55 PROP_CHANNELS,
56 PROP_SAMPLERATE,
57 LAST_PROP
58 };
59
60 static GParamSpec *gParamSpecs[LAST_PROP];
61
62 /**
63 * pragha_musicobject_new:
64 *
65 */
66 PraghaMusicobject *
pragha_musicobject_new(void)67 pragha_musicobject_new (void)
68 {
69 return g_object_new (PRAGHA_TYPE_MUSICOBJECT, NULL);
70 }
71
72 /**
73 * pragha_musicobject_dup:
74 *
75 */
76 PraghaMusicobject *
pragha_musicobject_dup(PraghaMusicobject * musicobject)77 pragha_musicobject_dup (PraghaMusicobject *musicobject)
78 {
79 g_return_val_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject), NULL);
80
81 return g_object_new (PRAGHA_TYPE_MUSICOBJECT,
82 "file", pragha_musicobject_get_file(musicobject),
83 "source", pragha_musicobject_get_source (musicobject),
84 "mime-type", pragha_musicobject_get_mime_type(musicobject),
85 "title", pragha_musicobject_get_title(musicobject),
86 "artist", pragha_musicobject_get_artist(musicobject),
87 "album", pragha_musicobject_get_album(musicobject),
88 "genre", pragha_musicobject_get_genre(musicobject),
89 "comment", pragha_musicobject_get_comment(musicobject),
90 "year", pragha_musicobject_get_year(musicobject),
91 "track-no", pragha_musicobject_get_track_no(musicobject),
92 "length", pragha_musicobject_get_length(musicobject),
93 "bitrate", pragha_musicobject_get_bitrate(musicobject),
94 "channels", pragha_musicobject_get_channels(musicobject),
95 "samplerate", pragha_musicobject_get_samplerate(musicobject),
96 NULL);
97 }
98
99 /**
100 * pragha_musicobject_clean:
101 *
102 */
103 void
pragha_musicobject_clean(PraghaMusicobject * musicobject)104 pragha_musicobject_clean (PraghaMusicobject *musicobject)
105 {
106 g_return_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject));
107
108 g_object_set (musicobject,
109 "file", "",
110 "source", FILE_NONE,
111 "mime-type", "",
112 "title", "",
113 "artist", "",
114 "album", "",
115 "genre", "",
116 "comment", "",
117 "year", 0,
118 "track-no", 0,
119 "length", 0,
120 "bitrate", 0,
121 "channels", 0,
122 "samplerate", 0,
123 NULL);
124 }
125
126 /**
127 * pragha_musicobject_compare:
128 *
129 */
130 gint
pragha_musicobject_compare(PraghaMusicobject * a,PraghaMusicobject * b)131 pragha_musicobject_compare (PraghaMusicobject *a, PraghaMusicobject *b)
132 {
133 /* First compare the pointers */
134 if(a == b)
135 return 0;
136
137 /* Then compare filenames. */
138 return g_strcmp0(pragha_musicobject_get_file(a),
139 pragha_musicobject_get_file(b));
140 }
141
142 /**
143 * pragha_musicobject_get_file:
144 *
145 */
146 const gchar *
pragha_musicobject_get_file(PraghaMusicobject * musicobject)147 pragha_musicobject_get_file (PraghaMusicobject *musicobject)
148 {
149 g_return_val_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject), NULL);
150
151 return musicobject->priv->file;
152 }
153
154 /**
155 * pragha_musicobject_set_file:
156 *
157 */
158 void
pragha_musicobject_set_file(PraghaMusicobject * musicobject,const gchar * file)159 pragha_musicobject_set_file (PraghaMusicobject *musicobject,
160 const gchar *file)
161 {
162 PraghaMusicobjectPrivate *priv;
163
164 g_return_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject));
165
166 priv = musicobject->priv;
167
168 g_free(priv->file);
169 priv->file = g_strdup(file);
170 }
171
172 /**
173 * pragha_musicobject_is_local_file:
174 *
175 */
176 gboolean
pragha_musicobject_is_local_file(PraghaMusicobject * musicobject)177 pragha_musicobject_is_local_file (PraghaMusicobject *musicobject)
178 {
179 g_return_val_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject), FALSE);
180
181 PraghaMusicSource source = musicobject->priv->source;
182
183 return (source == FILE_LOCAL);
184 }
185
186 /**
187 * pragha_musicobject_get_source:
188 *
189 */
190 PraghaMusicSource
pragha_musicobject_get_source(PraghaMusicobject * musicobject)191 pragha_musicobject_get_source (PraghaMusicobject *musicobject)
192 {
193 g_return_val_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject), FILE_NONE);
194
195 return musicobject->priv->source;
196 }
197 /**
198 * pragha_musicobject_set_source:
199 *
200 */
201 void
pragha_musicobject_set_source(PraghaMusicobject * musicobject,PraghaMusicSource source)202 pragha_musicobject_set_source (PraghaMusicobject *musicobject,
203 PraghaMusicSource source)
204 {
205 PraghaMusicobjectPrivate *priv;
206
207 g_return_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject));
208
209 priv = musicobject->priv;
210
211 priv->source = source;
212 }
213
214 /**
215 * pragha_musicobject_get_mime_type:
216 *
217 */
218 const gchar *
pragha_musicobject_get_mime_type(PraghaMusicobject * musicobject)219 pragha_musicobject_get_mime_type (PraghaMusicobject *musicobject)
220 {
221 g_return_val_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject), NULL);
222
223 return musicobject->priv->mime_type;
224 }
225 /**
226 * pragha_musicobject_set_mime_type:
227 *
228 */
229 void
pragha_musicobject_set_mime_type(PraghaMusicobject * musicobject,const gchar * mime_type)230 pragha_musicobject_set_mime_type (PraghaMusicobject *musicobject,
231 const gchar *mime_type)
232 {
233 PraghaMusicobjectPrivate *priv;
234
235 g_return_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject));
236
237 priv = musicobject->priv;
238
239 g_free (priv->mime_type);
240 priv->mime_type = g_strdup(mime_type);
241 }
242
243 /**
244 * pragha_musicobject_get_title:
245 *
246 */
247 const gchar *
pragha_musicobject_get_title(PraghaMusicobject * musicobject)248 pragha_musicobject_get_title (PraghaMusicobject *musicobject)
249 {
250 g_return_val_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject), NULL);
251
252 return musicobject->priv->title;
253 }
254 /**
255 * pragha_musicobject_set_title:
256 *
257 */
258 void
pragha_musicobject_set_title(PraghaMusicobject * musicobject,const gchar * title)259 pragha_musicobject_set_title (PraghaMusicobject *musicobject,
260 const gchar *title)
261 {
262 PraghaMusicobjectPrivate *priv;
263
264 g_return_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject));
265
266 priv = musicobject->priv;
267
268 g_free(priv->title);
269 priv->title = g_strdup(title);
270 }
271
272 /**
273 * pragha_musicobject_get_artist:
274 *
275 */
276 const gchar *
pragha_musicobject_get_artist(PraghaMusicobject * musicobject)277 pragha_musicobject_get_artist (PraghaMusicobject *musicobject)
278 {
279 g_return_val_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject), NULL);
280
281 return musicobject->priv->artist;
282 }
283 /**
284 * pragha_musicobject_set_artist:
285 *
286 */
287 void
pragha_musicobject_set_artist(PraghaMusicobject * musicobject,const gchar * artist)288 pragha_musicobject_set_artist (PraghaMusicobject *musicobject,
289 const gchar *artist)
290 {
291 PraghaMusicobjectPrivate *priv;
292
293 g_return_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject));
294
295 priv = musicobject->priv;
296
297 g_free(priv->artist);
298 priv->artist = g_strdup(artist);
299 }
300
301 /**
302 * pragha_musicobject_get_album:
303 *
304 */
305 const gchar *
pragha_musicobject_get_album(PraghaMusicobject * musicobject)306 pragha_musicobject_get_album (PraghaMusicobject *musicobject)
307 {
308 g_return_val_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject), NULL);
309
310 return musicobject->priv->album;
311 }
312 /**
313 * pragha_musicobject_set_album:
314 *
315 */
316 void
pragha_musicobject_set_album(PraghaMusicobject * musicobject,const gchar * album)317 pragha_musicobject_set_album (PraghaMusicobject *musicobject,
318 const gchar *album)
319 {
320 PraghaMusicobjectPrivate *priv;
321
322 g_return_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject));
323
324 priv = musicobject->priv;
325
326 g_free(priv->album);
327 priv->album = g_strdup(album);
328 }
329
330 /**
331 * pragha_musicobject_get_genre:
332 *
333 */
334 const gchar *
pragha_musicobject_get_genre(PraghaMusicobject * musicobject)335 pragha_musicobject_get_genre (PraghaMusicobject *musicobject)
336 {
337 g_return_val_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject), NULL);
338
339 return musicobject->priv->genre;
340 }
341 /**
342 * pragha_musicobject_set_genre:
343 *
344 */
345 void
pragha_musicobject_set_genre(PraghaMusicobject * musicobject,const gchar * genre)346 pragha_musicobject_set_genre (PraghaMusicobject *musicobject,
347 const gchar *genre)
348 {
349 PraghaMusicobjectPrivate *priv;
350
351 g_return_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject));
352
353 priv = musicobject->priv;
354
355 g_free(priv->genre);
356 priv->genre = g_strdup(genre);
357 }
358
359 /**
360 * pragha_musicobject_get_comment:
361 *
362 */
363 const gchar *
pragha_musicobject_get_comment(PraghaMusicobject * musicobject)364 pragha_musicobject_get_comment (PraghaMusicobject *musicobject)
365 {
366 g_return_val_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject), NULL);
367
368 return musicobject->priv->comment;
369 }
370 /**
371 * pragha_musicobject_set_comment:
372 *
373 */
374 void
pragha_musicobject_set_comment(PraghaMusicobject * musicobject,const gchar * comment)375 pragha_musicobject_set_comment (PraghaMusicobject *musicobject,
376 const gchar *comment)
377 {
378 PraghaMusicobjectPrivate *priv;
379
380 g_return_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject));
381
382 priv = musicobject->priv;
383
384 g_free(priv->comment);
385 priv->comment = g_strdup(comment);
386 }
387
388 /**
389 * pragha_musicobject_get_year:
390 *
391 */
392 guint
pragha_musicobject_get_year(PraghaMusicobject * musicobject)393 pragha_musicobject_get_year (PraghaMusicobject *musicobject)
394 {
395 g_return_val_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject), 0);
396
397 return musicobject->priv->year;
398 }
399 /**
400 * pragha_musicobject_set_year:
401 *
402 */
403 void
pragha_musicobject_set_year(PraghaMusicobject * musicobject,guint year)404 pragha_musicobject_set_year (PraghaMusicobject *musicobject,
405 guint year)
406 {
407 PraghaMusicobjectPrivate *priv;
408
409 g_return_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject));
410
411 priv = musicobject->priv;
412
413 priv->year = year;
414 }
415
416 /**
417 * pragha_musicobject_get_track_no:
418 *
419 */
420 guint
pragha_musicobject_get_track_no(PraghaMusicobject * musicobject)421 pragha_musicobject_get_track_no (PraghaMusicobject *musicobject)
422 {
423 g_return_val_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject), 0);
424
425 return musicobject->priv->track_no;
426 }
427 /**
428 * pragha_musicobject_set_track_no:
429 *
430 */
431 void
pragha_musicobject_set_track_no(PraghaMusicobject * musicobject,guint track_no)432 pragha_musicobject_set_track_no (PraghaMusicobject *musicobject,
433 guint track_no)
434 {
435 PraghaMusicobjectPrivate *priv;
436
437 g_return_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject));
438
439 priv = musicobject->priv;
440
441 priv->track_no = track_no;
442 }
443
444 /**
445 * pragha_musicobject_get_length:
446 *
447 */
448 gint
pragha_musicobject_get_length(PraghaMusicobject * musicobject)449 pragha_musicobject_get_length (PraghaMusicobject *musicobject)
450 {
451 g_return_val_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject), 0);
452
453 return musicobject->priv->length;
454 }
455 /**
456 * pragha_musicobject_set_length:
457 *
458 */
459 void
pragha_musicobject_set_length(PraghaMusicobject * musicobject,gint length)460 pragha_musicobject_set_length (PraghaMusicobject *musicobject,
461 gint length)
462 {
463 PraghaMusicobjectPrivate *priv;
464
465 g_return_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject));
466
467 priv = musicobject->priv;
468
469 priv->length = length;
470 }
471
472 /**
473 * pragha_musicobject_get_bitrate:
474 *
475 */
476 gint
pragha_musicobject_get_bitrate(PraghaMusicobject * musicobject)477 pragha_musicobject_get_bitrate (PraghaMusicobject *musicobject)
478 {
479 g_return_val_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject), 0);
480
481 return musicobject->priv->bitrate;
482 }
483 /**
484 * pragha_musicobject_set_bitrate:
485 *
486 */
487 void
pragha_musicobject_set_bitrate(PraghaMusicobject * musicobject,gint bitrate)488 pragha_musicobject_set_bitrate (PraghaMusicobject *musicobject,
489 gint bitrate)
490 {
491 PraghaMusicobjectPrivate *priv;
492
493 g_return_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject));
494
495 priv = musicobject->priv;
496
497 priv->bitrate = bitrate;
498 }
499
500 /**
501 * pragha_musicobject_get_channels:
502 *
503 */
504 gint
pragha_musicobject_get_channels(PraghaMusicobject * musicobject)505 pragha_musicobject_get_channels (PraghaMusicobject *musicobject)
506 {
507 g_return_val_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject), 0);
508
509 return musicobject->priv->channels;
510 }
511 /**
512 * pragha_musicobject_set_channels:
513 *
514 */
515 void
pragha_musicobject_set_channels(PraghaMusicobject * musicobject,gint channels)516 pragha_musicobject_set_channels (PraghaMusicobject *musicobject,
517 gint channels)
518 {
519 PraghaMusicobjectPrivate *priv;
520
521 g_return_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject));
522
523 priv = musicobject->priv;
524
525 priv->channels = channels;
526 }
527
528 /**
529 * pragha_musicobject_get_samplerate:
530 *
531 */
532 gint
pragha_musicobject_get_samplerate(PraghaMusicobject * musicobject)533 pragha_musicobject_get_samplerate (PraghaMusicobject *musicobject)
534 {
535 g_return_val_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject), 0);
536
537 return musicobject->priv->samplerate;
538 }
539 /**
540 * pragha_musicobject_set_samplerate:
541 *
542 */
543 void
pragha_musicobject_set_samplerate(PraghaMusicobject * musicobject,gint samplerate)544 pragha_musicobject_set_samplerate (PraghaMusicobject *musicobject,
545 gint samplerate)
546 {
547 PraghaMusicobjectPrivate *priv;
548
549 g_return_if_fail(PRAGHA_IS_MUSICOBJECT(musicobject));
550
551 priv = musicobject->priv;
552
553 priv->samplerate = samplerate;
554 }
555
556 static void
pragha_musicobject_finalize(GObject * object)557 pragha_musicobject_finalize (GObject *object)
558 {
559 PraghaMusicobjectPrivate *priv;
560
561 priv = PRAGHA_MUSICOBJECT(object)->priv;
562
563 g_free(priv->file);
564 g_free(priv->mime_type);
565 g_free(priv->title);
566 g_free(priv->artist);
567 g_free(priv->album);
568 g_free(priv->genre);
569 g_free(priv->comment);
570
571 G_OBJECT_CLASS(pragha_musicobject_parent_class)->finalize(object);
572 }
573
574 static void
pragha_musicobject_get_property(GObject * object,guint prop_id,GValue * value,GParamSpec * pspec)575 pragha_musicobject_get_property (GObject *object,
576 guint prop_id,
577 GValue *value,
578 GParamSpec *pspec)
579 {
580 PraghaMusicobject *musicobject = PRAGHA_MUSICOBJECT(object);
581
582 switch (prop_id) {
583 case PROP_FILE:
584 g_value_set_string (value, pragha_musicobject_get_file(musicobject));
585 break;
586 case PROP_SOURCE:
587 g_value_set_int(value, pragha_musicobject_get_source(musicobject));
588 break;
589 case PROP_MIME_TYPE:
590 g_value_set_string (value, pragha_musicobject_get_mime_type(musicobject));
591 break;
592 case PROP_TITLE:
593 g_value_set_string (value, pragha_musicobject_get_title(musicobject));
594 break;
595 case PROP_ARTIST:
596 g_value_set_string (value, pragha_musicobject_get_artist(musicobject));
597 break;
598 case PROP_ALBUM:
599 g_value_set_string (value, pragha_musicobject_get_album(musicobject));
600 break;
601 case PROP_GENRE:
602 g_value_set_string (value, pragha_musicobject_get_genre(musicobject));
603 break;
604 case PROP_COMMENT:
605 g_value_set_string (value, pragha_musicobject_get_comment(musicobject));
606 break;
607 case PROP_YEAR:
608 g_value_set_uint (value, pragha_musicobject_get_year(musicobject));
609 break;
610 case PROP_TRACK_NO:
611 g_value_set_uint (value, pragha_musicobject_get_track_no(musicobject));
612 break;
613 case PROP_LENGTH:
614 g_value_set_int(value, pragha_musicobject_get_length(musicobject));
615 break;
616 case PROP_BITRATE:
617 g_value_set_int(value, pragha_musicobject_get_bitrate(musicobject));
618 break;
619 case PROP_CHANNELS:
620 g_value_set_int(value, pragha_musicobject_get_channels(musicobject));
621 break;
622 case PROP_SAMPLERATE:
623 g_value_set_int(value, pragha_musicobject_get_samplerate(musicobject));
624 break;
625 default:
626 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
627 }
628 }
629
630 static void
pragha_musicobject_set_property(GObject * object,guint prop_id,const GValue * value,GParamSpec * pspec)631 pragha_musicobject_set_property (GObject *object,
632 guint prop_id,
633 const GValue *value,
634 GParamSpec *pspec)
635 {
636 PraghaMusicobject *musicobject = PRAGHA_MUSICOBJECT(object);
637
638 switch (prop_id) {
639 case PROP_FILE:
640 pragha_musicobject_set_file(musicobject, g_value_get_string(value));
641 break;
642 case PROP_SOURCE:
643 pragha_musicobject_set_source(musicobject, g_value_get_int(value));
644 break;
645 case PROP_MIME_TYPE:
646 pragha_musicobject_set_mime_type(musicobject, g_value_get_string(value));
647 break;
648 case PROP_TITLE:
649 pragha_musicobject_set_title(musicobject, g_value_get_string(value));
650 break;
651 case PROP_ARTIST:
652 pragha_musicobject_set_artist(musicobject, g_value_get_string(value));
653 break;
654 case PROP_ALBUM:
655 pragha_musicobject_set_album(musicobject, g_value_get_string(value));
656 break;
657 case PROP_GENRE:
658 pragha_musicobject_set_genre(musicobject, g_value_get_string(value));
659 break;
660 case PROP_COMMENT:
661 pragha_musicobject_set_comment(musicobject, g_value_get_string(value));
662 break;
663 case PROP_YEAR:
664 pragha_musicobject_set_year(musicobject, g_value_get_uint(value));
665 break;
666 case PROP_TRACK_NO:
667 pragha_musicobject_set_track_no(musicobject, g_value_get_uint(value));
668 break;
669 case PROP_LENGTH:
670 pragha_musicobject_set_length(musicobject, g_value_get_int(value));
671 break;
672 case PROP_BITRATE:
673 pragha_musicobject_set_bitrate(musicobject, g_value_get_int(value));
674 break;
675 case PROP_CHANNELS:
676 pragha_musicobject_set_channels(musicobject, g_value_get_int(value));
677 break;
678 case PROP_SAMPLERATE:
679 pragha_musicobject_set_samplerate(musicobject, g_value_get_int(value));
680 break;
681 default:
682 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
683 }
684 }
685
686 static void
pragha_musicobject_class_init(PraghaMusicobjectClass * klass)687 pragha_musicobject_class_init (PraghaMusicobjectClass *klass)
688 {
689 GObjectClass *object_class;
690
691 object_class = G_OBJECT_CLASS(klass);
692 object_class->finalize = pragha_musicobject_finalize;
693 object_class->get_property = pragha_musicobject_get_property;
694 object_class->set_property = pragha_musicobject_set_property;
695 g_type_class_add_private(object_class, sizeof(PraghaMusicobjectPrivate));
696
697 /**
698 * PraghaMusicobject:file:
699 *
700 */
701 gParamSpecs[PROP_FILE] =
702 g_param_spec_string("file",
703 "File",
704 "The File",
705 "",
706 PRAGHA_MUSICOBJECT_PARAM_STRING);
707
708 /**
709 * PraghaMusicobject:source:
710 *
711 */
712 gParamSpecs[PROP_SOURCE] =
713 g_param_spec_int ("source",
714 "Source",
715 "Source of file",
716 FILE_HTTP,
717 FILE_USER_L,
718 FILE_NONE,
719 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
720
721 /**
722 * PraghaMusicobject:mime_type:
723 *
724 */
725 gParamSpecs[PROP_MIME_TYPE] =
726 g_param_spec_string("mime-type",
727 "MimeType",
728 "The MimeType",
729 "",
730 PRAGHA_MUSICOBJECT_PARAM_STRING);
731
732 /**
733 * PraghaMusicobject:title:
734 *
735 */
736 gParamSpecs[PROP_TITLE] =
737 g_param_spec_string("title",
738 "Title",
739 "The Title",
740 "",
741 PRAGHA_MUSICOBJECT_PARAM_STRING);
742
743 /**
744 * PraghaMusicobject:artist:
745 *
746 */
747 gParamSpecs[PROP_ARTIST] =
748 g_param_spec_string("artist",
749 "Artist",
750 "The Artist",
751 "",
752 PRAGHA_MUSICOBJECT_PARAM_STRING);
753
754 /**
755 * PraghaMusicobject:album:
756 *
757 */
758 gParamSpecs[PROP_ALBUM] =
759 g_param_spec_string("album",
760 "Album",
761 "The Album",
762 "",
763 PRAGHA_MUSICOBJECT_PARAM_STRING);
764
765 /**
766 * PraghaMusicobject:genre:
767 *
768 */
769 gParamSpecs[PROP_GENRE] =
770 g_param_spec_string("genre",
771 "Genre",
772 "The Genre",
773 "",
774 PRAGHA_MUSICOBJECT_PARAM_STRING);
775
776 /**
777 * PraghaMusicobject:comment:
778 *
779 */
780 gParamSpecs[PROP_COMMENT] =
781 g_param_spec_string("comment",
782 "Comment",
783 "The Comment",
784 "",
785 PRAGHA_MUSICOBJECT_PARAM_STRING);
786
787 /**
788 * PraghaMusicobject:year:
789 *
790 */
791 gParamSpecs[PROP_YEAR] =
792 g_param_spec_uint ("year",
793 "Year",
794 "The Year",
795 0,
796 G_MAXUINT,
797 0,
798 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
799
800 /**
801 * PraghaMusicobject:track_no:
802 *
803 */
804 gParamSpecs[PROP_TRACK_NO] =
805 g_param_spec_uint ("track-no",
806 "TrackNo",
807 "The Track No",
808 0,
809 G_MAXUINT,
810 0,
811 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
812
813 /**
814 * PraghaMusicobject:length:
815 *
816 */
817 gParamSpecs[PROP_LENGTH] =
818 g_param_spec_int ("length",
819 "Length",
820 "The Length",
821 0,
822 G_MAXINT,
823 0,
824 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
825
826 /**
827 * PraghaMusicobject:bitrate:
828 *
829 */
830 gParamSpecs[PROP_BITRATE] =
831 g_param_spec_int ("bitrate",
832 "Bitrate",
833 "The Bitrate",
834 0,
835 G_MAXINT,
836 0,
837 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
838
839 /**
840 * PraghaMusicobject:channels:
841 *
842 */
843 gParamSpecs[PROP_CHANNELS] =
844 g_param_spec_int ("channels",
845 "Channels",
846 "The Channels",
847 0,
848 G_MAXINT,
849 0,
850 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
851
852 /**
853 * PraghaMusicobject:samplerate:
854 *
855 */
856 gParamSpecs[PROP_SAMPLERATE] =
857 g_param_spec_int ("samplerate",
858 "Samplerate",
859 "The Samplerate",
860 0,
861 G_MAXINT,
862 0,
863 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
864
865 g_object_class_install_properties(object_class, LAST_PROP, gParamSpecs);
866 }
867
868 static void
pragha_musicobject_init(PraghaMusicobject * musicobject)869 pragha_musicobject_init (PraghaMusicobject *musicobject)
870 {
871 musicobject->priv = G_TYPE_INSTANCE_GET_PRIVATE(musicobject,
872 PRAGHA_TYPE_MUSICOBJECT,
873 PraghaMusicobjectPrivate);
874 }
875