1
/* betaradio.c generated by valac, the Vala compiler
2
* generated from betaradio.vala, do not modify */
4
/* -*- coding: utf-8; indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*- */
5
/* vim:set fileencodings=utf-8 tabstop=4 expandtab shiftwidth=4 softtabstop=4: */
8
#include <glib-object.h>
10
#include <glib/gi18n-lib.h>
15
#include <glib/gstdio.h>
19
#define TYPE_BETA_RADIO (beta_radio_get_type ())
20
#define BETA_RADIO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_BETA_RADIO, BetaRadio))
21
#define BETA_RADIO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_BETA_RADIO, BetaRadioClass))
22
#define IS_BETA_RADIO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_BETA_RADIO))
23
#define IS_BETA_RADIO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_BETA_RADIO))
24
#define BETA_RADIO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_BETA_RADIO, BetaRadioClass))
26
typedef struct _BetaRadio BetaRadio;
27
typedef struct _BetaRadioClass BetaRadioClass;
28
typedef struct _BetaRadioPrivate BetaRadioPrivate;
30
#define TYPE_GST_PLAYER (gst_player_get_type ())
31
#define GST_PLAYER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_GST_PLAYER, GstPlayer))
32
#define GST_PLAYER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_GST_PLAYER, GstPlayerClass))
33
#define IS_GST_PLAYER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_GST_PLAYER))
34
#define IS_GST_PLAYER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_GST_PLAYER))
35
#define GST_PLAYER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_GST_PLAYER, GstPlayerClass))
37
typedef struct _GstPlayer GstPlayer;
38
typedef struct _GstPlayerClass GstPlayerClass;
39
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
41
#define TYPE_JSON_SOUP (json_soup_get_type ())
42
#define JSON_SOUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_JSON_SOUP, JsonSoup))
43
#define JSON_SOUP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_JSON_SOUP, JsonSoupClass))
44
#define IS_JSON_SOUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_JSON_SOUP))
45
#define IS_JSON_SOUP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_JSON_SOUP))
46
#define JSON_SOUP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_JSON_SOUP, JsonSoupClass))
48
typedef struct _JsonSoup JsonSoup;
49
typedef struct _JsonSoupClass JsonSoupClass;
50
#define _g_free0(var) (var = (g_free (var), NULL))
51
typedef struct _Block1Data Block1Data;
52
typedef struct _Block2Data Block2Data;
53
#define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_unref (var), NULL)))
54
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
57
GObject parent_instance;
58
BetaRadioPrivate * priv;
61
struct _BetaRadioClass {
62
GObjectClass parent_class;
65
struct _BetaRadioPrivate {
86
static gpointer beta_radio_parent_class = NULL;
88
GType beta_radio_get_type (void);
89
GType gst_player_get_type (void);
90
#define BETA_RADIO_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_BETA_RADIO, BetaRadioPrivate))
92
BETA_RADIO_DUMMY_PROPERTY
94
BetaRadio* beta_radio_new (void);
95
BetaRadio* beta_radio_construct (GType object_type);
96
void beta_radio_main (char** args, int args_length1);
97
void gst_player_stop (GstPlayer* self);
98
static void _lambda0_ (GtkMenuItem* e, BetaRadio* self);
99
static void __lambda0__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self);
100
static GSList* beta_radio_getMenu (BetaRadio* self, GtkMenu* menu, GSList* group);
101
static void _lambda3_ (GtkMenuItem* e, BetaRadio* self);
102
static void __lambda3__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self);
103
static gboolean _lambda4_ (GdkEventButton* e, BetaRadio* self);
104
static gboolean __lambda4__gtk_status_icon_button_release_event (GtkStatusIcon* _sender, GdkEventButton* event, gpointer self);
105
JsonSoup* json_soup_new_http (const char* url);
106
JsonSoup* json_soup_construct_http (GType object_type, const char* url);
107
GType json_soup_get_type (void);
108
gboolean json_soup_is_array (JsonSoup* self);
109
gint json_soup_length (JsonSoup* self);
110
JsonSoup* json_soup_array (JsonSoup* self, gint idx);
111
char* json_soup_get_string (JsonSoup* self);
112
JsonSoup* json_soup_object (JsonSoup* self, const char* name);
113
gboolean json_soup_is_string (JsonSoup* self);
114
JsonSoup* json_soup_sibling (JsonSoup* self, const char* name);
115
static GSList* beta_radio_getCategoryMenu (BetaRadio* self, GtkMenu* menu, GSList* group, JsonSoup* json);
116
static GSList* beta_radio_getChannelMenu (BetaRadio* self, GtkMenu* menu, GSList* group, JsonSoup* json);
117
JsonSoup* json_soup_parent (JsonSoup* self);
118
static char* beta_radio_filter_url (BetaRadio* self, const char* url, const char* type);
119
GstPlayer* gst_player_new (const char* name, const char* url);
120
GstPlayer* gst_player_construct (GType object_type, const char* name, const char* url);
121
void gst_player_play (GstPlayer* self);
122
static void _lambda1_ (GtkCheckMenuItem* e, Block1Data* _data1_);
123
static void __lambda1__gtk_check_menu_item_toggled (GtkCheckMenuItem* _sender, gpointer self);
124
JsonSoup* json_soup_grandparent (JsonSoup* self);
125
static Block1Data* block1_data_ref (Block1Data* _data1_);
126
static void block1_data_unref (Block1Data* _data1_);
127
static void _lambda2_ (GtkCheckMenuItem* e, Block2Data* _data2_);
128
static void __lambda2__gtk_check_menu_item_toggled (GtkCheckMenuItem* _sender, gpointer self);
129
static Block2Data* block2_data_ref (Block2Data* _data2_);
130
static void block2_data_unref (Block2Data* _data2_);
131
static void beta_radio_finalize (GObject* obj);
132
static int _vala_strcmp0 (const char * str1, const char * str2);
136
void beta_radio_main (char** args, int args_length1) {
138
bindtextdomain (PACKAGE_NAME, LOCALEDIR);
139
bind_textdomain_codeset (PACKAGE_NAME, "UTF-8");
140
textdomain (PACKAGE_NAME);
141
gst_init (&args_length1, &args);
142
gtk_init (&args_length1, &args);
143
app = beta_radio_new ();
145
_g_object_unref0 (app);
149
int main (int argc, char ** argv) {
151
beta_radio_main (argv, argc);
156
static void _lambda0_ (GtkMenuItem* e, BetaRadio* self) {
157
g_return_if_fail (e != NULL);
158
if (self->priv->player != NULL) {
160
gst_player_stop (self->priv->player);
161
self->priv->player = (_tmp0_ = NULL, _g_object_unref0 (self->priv->player), _tmp0_);
162
gtk_status_icon_set_tooltip_text (self->priv->icon, _ ("BetaRadio Tuner"));
167
static void __lambda0__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self) {
168
_lambda0_ (_sender, self);
172
static void _lambda3_ (GtkMenuItem* e, BetaRadio* self) {
173
g_return_if_fail (e != NULL);
174
if (self->priv->player != NULL) {
176
gst_player_stop (self->priv->player);
177
self->priv->player = (_tmp0_ = NULL, _g_object_unref0 (self->priv->player), _tmp0_);
178
gtk_status_icon_set_tooltip_text (self->priv->icon, _ ("BetaRadio Tuner"));
184
static void __lambda3__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self) {
185
_lambda3_ (_sender, self);
189
static gboolean _lambda4_ (GdkEventButton* e, BetaRadio* self) {
190
gboolean result = FALSE;
191
gtk_menu_popup (self->priv->menu, NULL, NULL, NULL, NULL, (*e).button, (*e).time);
197
static gboolean __lambda4__gtk_status_icon_button_release_event (GtkStatusIcon* _sender, GdkEventButton* event, gpointer self) {
198
return _lambda4_ (event, self);
202
BetaRadio* beta_radio_construct (GType object_type) {
206
GtkRadioMenuItem* stop;
207
GtkSeparatorMenuItem* _tmp4_;
208
GtkSeparatorMenuItem* _tmp5_;
209
GtkRadioMenuItem* quit;
210
self = (BetaRadio*) g_object_new (object_type, NULL);
211
if (g_file_test (DATADIR "/pixmaps/betaradio/betaradio.png", G_FILE_TEST_IS_REGULAR) == TRUE) {
212
GtkStatusIcon* _tmp0_;
213
self->priv->icon = (_tmp0_ = gtk_status_icon_new_from_file (DATADIR "/pixmaps/betaradio/betaradio.png"), _g_object_unref0 (self->priv->icon), _tmp0_);
215
if (g_file_test ("data/betaradio.png", G_FILE_TEST_IS_REGULAR) == TRUE) {
216
GtkStatusIcon* _tmp1_;
217
self->priv->icon = (_tmp1_ = gtk_status_icon_new_from_file ("data/betaradio.png"), _g_object_unref0 (self->priv->icon), _tmp1_);
219
GtkStatusIcon* _tmp2_;
220
self->priv->icon = (_tmp2_ = gtk_status_icon_new_from_stock (GTK_STOCK_MISSING_IMAGE), _g_object_unref0 (self->priv->icon), _tmp2_);
223
gtk_status_icon_set_tooltip_text (self->priv->icon, _ ("BetaRadio Tuner"));
224
self->priv->menu = (_tmp3_ = g_object_ref_sink ((GtkMenu*) gtk_menu_new ()), _g_object_unref0 (self->priv->menu), _tmp3_);
226
stop = g_object_ref_sink ((GtkRadioMenuItem*) gtk_radio_menu_item_new_with_label (group, _ ("Stop")));
227
group = gtk_radio_menu_item_get_group (stop);
228
gtk_menu_shell_append ((GtkMenuShell*) self->priv->menu, (GtkWidget*) ((GtkMenuItem*) stop));
229
g_signal_connect_object ((GtkMenuItem*) stop, "activate", (GCallback) __lambda0__gtk_menu_item_activate, self, 0);
230
gtk_menu_shell_append ((GtkMenuShell*) self->priv->menu, (GtkWidget*) ((GtkMenuItem*) (_tmp4_ = g_object_ref_sink ((GtkSeparatorMenuItem*) gtk_separator_menu_item_new ()))));
231
_g_object_unref0 (_tmp4_);
232
group = beta_radio_getMenu (self, self->priv->menu, group);
233
gtk_menu_shell_append ((GtkMenuShell*) self->priv->menu, (GtkWidget*) ((GtkMenuItem*) (_tmp5_ = g_object_ref_sink ((GtkSeparatorMenuItem*) gtk_separator_menu_item_new ()))));
234
_g_object_unref0 (_tmp5_);
235
quit = g_object_ref_sink ((GtkRadioMenuItem*) gtk_radio_menu_item_new_with_label (group, _ ("Quit")));
236
group = gtk_radio_menu_item_get_group (stop);
237
gtk_menu_shell_append ((GtkMenuShell*) self->priv->menu, (GtkWidget*) ((GtkMenuItem*) quit));
238
g_signal_connect_object ((GtkMenuItem*) quit, "activate", (GCallback) __lambda3__gtk_menu_item_activate, self, 0);
239
gtk_widget_show_all ((GtkWidget*) self->priv->menu);
240
g_signal_connect_object (self->priv->icon, "button-release-event", (GCallback) __lambda4__gtk_status_icon_button_release_event, self, 0);
241
_g_object_unref0 (stop);
242
_g_object_unref0 (quit);
247
BetaRadio* beta_radio_new (void) {
248
return beta_radio_construct (TYPE_BETA_RADIO);
252
static GSList* beta_radio_getMenu (BetaRadio* self, GtkMenu* menu, GSList* group) {
253
GSList* result = NULL;
256
g_return_val_if_fail (self != NULL, NULL);
257
g_return_val_if_fail (menu != NULL, NULL);
258
list = json_soup_new_http ("http://betaradio.googlecode.com/svn/trunk/utils/list.json");
259
if (json_soup_is_array (list) == FALSE) {
261
_g_object_unref0 (list);
264
length = json_soup_length (list);
286
gboolean _tmp9_ = FALSE;
295
feed = (_tmp2_ = json_soup_get_string (_tmp1_ = json_soup_array (list, i)), _g_object_unref0 (_tmp1_), _tmp2_);
296
json = json_soup_new_http (feed);
297
if ((_tmp4_ = json_soup_is_string (_tmp3_ = json_soup_object (json, "property")) == FALSE, _g_object_unref0 (_tmp3_), _tmp4_)) {
299
_g_object_unref0 (json);
302
title = (_tmp6_ = json_soup_get_string (_tmp5_ = json_soup_sibling (json, "title")), _g_object_unref0 (_tmp5_), _tmp6_);
303
item = g_object_ref_sink ((GtkMenuItem*) gtk_menu_item_new_with_label (title));
304
gtk_menu_shell_append ((GtkMenuShell*) menu, (GtkWidget*) item);
305
submenu = g_object_ref_sink ((GtkMenu*) gtk_menu_new ());
306
gtk_menu_item_set_submenu (item, (GtkWidget*) submenu);
307
property = (_tmp8_ = json_soup_get_string (_tmp7_ = json_soup_sibling (json, "property")), _g_object_unref0 (_tmp7_), _tmp8_);
308
if (_vala_strcmp0 (property, "category") == 0) {
310
_tmp9_ = json_soup_is_array (_tmp10_ = json_soup_sibling (json, "category")) == TRUE;
311
_g_object_unref0 (_tmp10_);
316
group = beta_radio_getCategoryMenu (self, submenu, group, json);
318
gboolean _tmp11_ = FALSE;
319
if (_vala_strcmp0 (property, "channel") == 0) {
321
_tmp11_ = json_soup_is_array (_tmp12_ = json_soup_sibling (json, "channel")) == TRUE;
322
_g_object_unref0 (_tmp12_);
327
group = beta_radio_getChannelMenu (self, submenu, group, json);
330
_tmp13_ = json_soup_parent (list);
331
_g_object_unref0 (_tmp13_);
333
_g_object_unref0 (json);
335
_g_object_unref0 (item);
336
_g_object_unref0 (submenu);
342
_g_object_unref0 (list);
347
static void _lambda1_ (GtkCheckMenuItem* e, Block1Data* _data1_) {
350
self = _data1_->self;
351
g_return_if_fail (e != NULL);
352
if (self->priv->player != NULL) {
353
gst_player_stop (self->priv->player);
355
self->priv->player = (_tmp0_ = gst_player_new ("BetaRadio", _data1_->url), _g_object_unref0 (self->priv->player), _tmp0_);
356
gst_player_play (self->priv->player);
357
gtk_status_icon_set_tooltip_text (self->priv->icon, _data1_->title);
361
static void __lambda1__gtk_check_menu_item_toggled (GtkCheckMenuItem* _sender, gpointer self) {
362
_lambda1_ (_sender, self);
366
static Block1Data* block1_data_ref (Block1Data* _data1_) {
367
++_data1_->_ref_count_;
372
static void block1_data_unref (Block1Data* _data1_) {
373
if ((--_data1_->_ref_count_) == 0) {
374
_g_object_unref0 (_data1_->self);
375
_g_free0 (_data1_->title);
376
_g_free0 (_data1_->url);
377
g_slice_free (Block1Data, _data1_);
382
static GSList* beta_radio_getCategoryMenu (BetaRadio* self, GtkMenu* menu, GSList* group, JsonSoup* json) {
383
GSList* result = NULL;
385
g_return_val_if_fail (self != NULL, NULL);
386
g_return_val_if_fail (menu != NULL, NULL);
387
g_return_val_if_fail (json != NULL, NULL);
388
length = json_soup_length (json);
413
category = (_tmp3_ = json_soup_get_string (_tmp2_ = json_soup_object (_tmp1_ = json_soup_array (json, i), "title")), _g_object_unref0 (_tmp2_), _g_object_unref0 (_tmp1_), _tmp3_);
414
item = g_object_ref_sink ((GtkMenuItem*) gtk_menu_item_new_with_label (category));
415
submenu = g_object_ref_sink ((GtkMenu*) gtk_menu_new ());
416
gtk_menu_shell_append ((GtkMenuShell*) menu, (GtkWidget*) item);
417
gtk_menu_item_set_submenu (item, (GtkWidget*) submenu);
418
size = (_tmp5_ = json_soup_length (_tmp4_ = json_soup_sibling (json, "channel")), _g_object_unref0 (_tmp4_), _tmp5_);
436
GtkRadioMenuItem* radio;
438
_data1_ = g_slice_new0 (Block1Data);
439
_data1_->_ref_count_ = 1;
440
_data1_->self = g_object_ref (self);
446
block1_data_unref (_data1_);
449
_data1_->title = (_tmp9_ = json_soup_get_string (_tmp8_ = json_soup_object (_tmp7_ = json_soup_array (json, j), "title")), _g_object_unref0 (_tmp8_), _g_object_unref0 (_tmp7_), _tmp9_);
450
type = (_tmp11_ = json_soup_get_string (_tmp10_ = json_soup_sibling (json, "type")), _g_object_unref0 (_tmp10_), _tmp11_);
451
_data1_->url = (_tmp14_ = beta_radio_filter_url (self, _tmp13_ = json_soup_get_string (_tmp12_ = json_soup_sibling (json, "url")), type), _g_free0 (_tmp13_), _g_object_unref0 (_tmp12_), _tmp14_);
452
radio = g_object_ref_sink ((GtkRadioMenuItem*) gtk_radio_menu_item_new_with_label (group, _data1_->title));
453
group = gtk_radio_menu_item_get_group (radio);
454
g_signal_connect_data ((GtkCheckMenuItem*) radio, "toggled", (GCallback) __lambda1__gtk_check_menu_item_toggled, block1_data_ref (_data1_), (GClosureNotify) block1_data_unref, 0);
455
gtk_menu_shell_append ((GtkMenuShell*) submenu, (GtkWidget*) ((GtkMenuItem*) radio));
456
_tmp15_ = json_soup_grandparent (json);
457
_g_object_unref0 (_tmp15_);
459
_g_object_unref0 (radio);
460
block1_data_unref (_data1_);
464
_tmp16_ = json_soup_grandparent (json);
465
_g_object_unref0 (_tmp16_);
467
_g_object_unref0 (item);
468
_g_object_unref0 (submenu);
477
static void _lambda2_ (GtkCheckMenuItem* e, Block2Data* _data2_) {
480
self = _data2_->self;
481
g_return_if_fail (e != NULL);
482
if (self->priv->player != NULL) {
483
gst_player_stop (self->priv->player);
485
self->priv->player = (_tmp0_ = gst_player_new ("BetaRadio", _data2_->url), _g_object_unref0 (self->priv->player), _tmp0_);
486
gst_player_play (self->priv->player);
487
gtk_status_icon_set_tooltip_text (self->priv->icon, _data2_->title);
491
static void __lambda2__gtk_check_menu_item_toggled (GtkCheckMenuItem* _sender, gpointer self) {
492
_lambda2_ (_sender, self);
496
static Block2Data* block2_data_ref (Block2Data* _data2_) {
497
++_data2_->_ref_count_;
502
static void block2_data_unref (Block2Data* _data2_) {
503
if ((--_data2_->_ref_count_) == 0) {
504
_g_object_unref0 (_data2_->self);
505
_g_free0 (_data2_->title);
506
_g_free0 (_data2_->url);
507
g_slice_free (Block2Data, _data2_);
512
static GSList* beta_radio_getChannelMenu (BetaRadio* self, GtkMenu* menu, GSList* group, JsonSoup* json) {
513
GSList* result = NULL;
515
g_return_val_if_fail (self != NULL, NULL);
516
g_return_val_if_fail (menu != NULL, NULL);
517
g_return_val_if_fail (json != NULL, NULL);
518
length = json_soup_length (json);
536
GtkRadioMenuItem* radio;
538
_data2_ = g_slice_new0 (Block2Data);
539
_data2_->_ref_count_ = 1;
540
_data2_->self = g_object_ref (self);
546
block2_data_unref (_data2_);
549
_data2_->title = (_tmp3_ = json_soup_get_string (_tmp2_ = json_soup_object (_tmp1_ = json_soup_array (json, i), "title")), _g_object_unref0 (_tmp2_), _g_object_unref0 (_tmp1_), _tmp3_);
550
type = (_tmp5_ = json_soup_get_string (_tmp4_ = json_soup_sibling (json, "type")), _g_object_unref0 (_tmp4_), _tmp5_);
551
_data2_->url = (_tmp8_ = beta_radio_filter_url (self, _tmp7_ = json_soup_get_string (_tmp6_ = json_soup_sibling (json, "url")), type), _g_free0 (_tmp7_), _g_object_unref0 (_tmp6_), _tmp8_);
552
radio = g_object_ref_sink ((GtkRadioMenuItem*) gtk_radio_menu_item_new_with_label (group, _data2_->title));
553
group = gtk_radio_menu_item_get_group (radio);
554
g_signal_connect_data ((GtkCheckMenuItem*) radio, "toggled", (GCallback) __lambda2__gtk_check_menu_item_toggled, block2_data_ref (_data2_), (GClosureNotify) block2_data_unref, 0);
555
gtk_menu_shell_append ((GtkMenuShell*) menu, (GtkWidget*) ((GtkMenuItem*) radio));
556
_tmp9_ = json_soup_grandparent (json);
557
_g_object_unref0 (_tmp9_);
559
_g_object_unref0 (radio);
560
block2_data_unref (_data2_);
569
static char* string_replace (const char* self, const char* old, const char* replacement) {
571
GError * _inner_error_;
572
g_return_val_if_fail (self != NULL, NULL);
573
g_return_val_if_fail (old != NULL, NULL);
574
g_return_val_if_fail (replacement != NULL, NULL);
575
_inner_error_ = NULL;
581
regex = (_tmp1_ = g_regex_new (_tmp0_ = g_regex_escape_string (old, -1), 0, 0, &_inner_error_), _g_free0 (_tmp0_), _tmp1_);
582
if (_inner_error_ != NULL) {
583
if (_inner_error_->domain == G_REGEX_ERROR) {
584
goto __catch0_g_regex_error;
586
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
587
g_clear_error (&_inner_error_);
590
_tmp2_ = g_regex_replace_literal (regex, self, (gssize) (-1), 0, replacement, 0, &_inner_error_);
591
if (_inner_error_ != NULL) {
592
_g_regex_unref0 (regex);
593
if (_inner_error_->domain == G_REGEX_ERROR) {
594
goto __catch0_g_regex_error;
596
_g_regex_unref0 (regex);
597
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
598
g_clear_error (&_inner_error_);
602
_g_regex_unref0 (regex);
606
__catch0_g_regex_error:
610
_inner_error_ = NULL;
612
g_assert_not_reached ();
617
if (_inner_error_ != NULL) {
618
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
619
g_clear_error (&_inner_error_);
625
static char* beta_radio_filter_url (BetaRadio* self, const char* url, const char* type) {
627
gboolean _tmp0_ = FALSE;
628
g_return_val_if_fail (self != NULL, NULL);
629
g_return_val_if_fail (url != NULL, NULL);
630
g_return_val_if_fail (type != NULL, NULL);
631
if (_vala_strcmp0 (type, "mms") == 0) {
632
_tmp0_ = g_str_has_prefix (url, "http://") == TRUE;
639
result = (_tmp2_ = g_strconcat (_tmp1_ = string_replace (url, "http", "mmsh"), "\\?MSWMExt\\=.asf", NULL), _g_free0 (_tmp1_), _tmp2_);
642
result = g_strdup (url);
647
static void beta_radio_class_init (BetaRadioClass * klass) {
648
beta_radio_parent_class = g_type_class_peek_parent (klass);
649
g_type_class_add_private (klass, sizeof (BetaRadioPrivate));
650
G_OBJECT_CLASS (klass)->finalize = beta_radio_finalize;
654
static void beta_radio_instance_init (BetaRadio * self) {
655
self->priv = BETA_RADIO_GET_PRIVATE (self);
656
self->priv->icon = NULL;
657
self->priv->menu = NULL;
658
self->priv->player = NULL;
662
static void beta_radio_finalize (GObject* obj) {
664
self = BETA_RADIO (obj);
665
_g_object_unref0 (self->priv->icon);
666
_g_object_unref0 (self->priv->menu);
667
_g_object_unref0 (self->priv->player);
668
G_OBJECT_CLASS (beta_radio_parent_class)->finalize (obj);
672
GType beta_radio_get_type (void) {
673
static volatile gsize beta_radio_type_id__volatile = 0;
674
if (g_once_init_enter (&beta_radio_type_id__volatile)) {
675
static const GTypeInfo g_define_type_info = { sizeof (BetaRadioClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) beta_radio_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (BetaRadio), 0, (GInstanceInitFunc) beta_radio_instance_init, NULL };
676
GType beta_radio_type_id;
677
beta_radio_type_id = g_type_register_static (G_TYPE_OBJECT, "BetaRadio", &g_define_type_info, 0);
678
g_once_init_leave (&beta_radio_type_id__volatile, beta_radio_type_id);
680
return beta_radio_type_id__volatile;
684
static int _vala_strcmp0 (const char * str1, const char * str2) {
686
return -(str1 != str2);
691
return strcmp (str1, str2);