1 /* music-tree.c generated by valac 0.12.0, the Vala compiler
2 * generated from music-tree.vala, do not modify */
3
4 /* Gnome Music Player Client (GMPC)
5 * Copyright (C) 2004-2011 Qball Cow <qball@gmpclient.org>
6 * Project homepage: http://gmpclient.org/
7
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17
18 * You should have received a copy of the GNU General Public License along
19 * with this program; if not, write to the Free Software Foundation, Inc.,
20 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21 */
22
23 #include <glib.h>
24 #include <glib-object.h>
25 #include <gtk/gtk.h>
26 #include <gtktransition.h>
27 #include <stdlib.h>
28 #include <string.h>
29 #include <config.h>
30 #include "gmpc-extras.h"
31 #include <plugin.h>
32 #include <config1.h>
33 #include <libmpd/libmpdclient.h>
34 #include <libmpd/libmpd.h>
35 #include <misc.h>
36 #include <metadata.h>
37 #include <gmpc-profiles.h>
38 #include <gio/gio.h>
39
40 #define _g_free0(var) (var = (g_free (var), NULL))
41 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
42 #define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_unref (var), NULL)))
43 #define __g_list_free__g_object_unref0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__g_object_unref0_ (var), NULL)))
44 #define _meta_data_free0(var) ((var == NULL) ? NULL : (var = (meta_data_free (var), NULL)))
45 #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
46 typedef struct _GmpcProviderMusicTreeCheckDirectoryForFilesData GmpcProviderMusicTreeCheckDirectoryForFilesData;
47 #define __g_list_free__meta_data_free0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__meta_data_free0_ (var), NULL)))
48 typedef struct _GmpcProviderMusicTreeWalkBackDirectoryData GmpcProviderMusicTreeWalkBackDirectoryData;
49 #define _mpd_freeSong0(var) ((var == NULL) ? NULL : (var = (mpd_freeSong (var), NULL)))
50 typedef struct _GmpcProviderMusicTreeGetArtistArtData GmpcProviderMusicTreeGetArtistArtData;
51 typedef struct _GmpcProviderMusicTreeGetAlbumCoverData GmpcProviderMusicTreeGetAlbumCoverData;
52 typedef struct _GmpcProviderMusicTreeGetBiographyData GmpcProviderMusicTreeGetBiographyData;
53 typedef struct _GmpcProviderMusicTreeGetAlbumInfoData GmpcProviderMusicTreeGetAlbumInfoData;
54
55 struct _GmpcProviderMusicTreePrivate {
56 gchar* file_type_string;
57 };
58
59 struct _GmpcProviderMusicTreeCheckDirectoryForFilesData {
60 int _state_;
61 GObject* _source_object_;
62 GAsyncResult* _res_;
63 GSimpleAsyncResult* _async_result;
64 GmpcProviderMusicTree* self;
65 GList* list;
66 GFile* dir;
67 GRegex* query;
68 MetaDataType type;
69 gchar* _tmp0_;
70 gchar* path;
71 const gchar* _tmp1_;
72 GFileEnumerator* _tmp2_;
73 GFileEnumerator* e;
74 GList* _tmp3_;
75 GList* files;
76 GList* info_collection;
77 GList* info_it;
78 GFileInfo* _tmp4_;
79 GFileInfo* info;
80 const gchar* _tmp5_;
81 gchar* _tmp6_;
82 gchar* name;
83 gboolean _tmp7_;
84 gchar _tmp8_;
85 gboolean _tmp9_;
86 gboolean _tmp10_;
87 MetaData* _tmp11_;
88 MetaData* item;
89 const gchar* _tmp12_;
90 gchar* _tmp13_;
91 gchar* _tmp14_;
92 MetaData* _tmp15_;
93 GError * err;
94 GError * _inner_error_;
95 };
96
97 struct _GmpcProviderMusicTreeWalkBackDirectoryData {
98 int _state_;
99 GObject* _source_object_;
100 GAsyncResult* _res_;
101 GSimpleAsyncResult* _async_result;
102 GmpcProviderMusicTree* self;
103 GRegex* regex_query;
104 gchar* mpd_directory;
105 gchar* filename;
106 GList* list;
107 MetaDataType type;
108 gchar* _tmp0_;
109 gchar* base_path;
110 gchar* _tmp1_;
111 gchar* path;
112 GFile* _tmp2_;
113 GFile* dir;
114 GList* temp;
115 GList* _tmp3_;
116 GList* _tmp4_;
117 GFile* _tmp5_;
118 GList* _tmp6_;
119 GList* _tmp7_;
120 GFile* _tmp8_;
121 GList* _tmp9_;
122 GList* _tmp10_;
123 };
124
125 struct _GmpcProviderMusicTreeGetArtistArtData {
126 int _state_;
127 GObject* _source_object_;
128 GAsyncResult* _res_;
129 GSimpleAsyncResult* _async_result;
130 GmpcProviderMusicTree* self;
131 gchar* directory;
132 mpd_Song* song;
133 GmpcPluginMetaDataCallback callback;
134 gpointer callback_target;
135 GDestroyNotify callback_target_destroy_notify;
136 GList* list;
137 GRegex* regex_query;
138 gchar* _tmp0_;
139 gchar* _tmp1_;
140 gchar* _tmp2_;
141 gchar* _tmp3_;
142 GRegex* _tmp4_;
143 GRegex* _tmp5_;
144 GRegex* _tmp6_;
145 GError * erro;
146 gchar* _tmp7_;
147 gchar* _tmp8_;
148 GRegex* _tmp9_;
149 GRegex* _tmp10_;
150 GRegex* _tmp11_;
151 GError * err1;
152 GList* _tmp12_;
153 guint _tmp13_;
154 GList* _tmp14_;
155 GError * _inner_error_;
156 };
157
158 struct _GmpcProviderMusicTreeGetAlbumCoverData {
159 int _state_;
160 GObject* _source_object_;
161 GAsyncResult* _res_;
162 GSimpleAsyncResult* _async_result;
163 GmpcProviderMusicTree* self;
164 gchar* directory;
165 mpd_Song* song;
166 GmpcPluginMetaDataCallback callback;
167 gpointer callback_target;
168 GDestroyNotify callback_target_destroy_notify;
169 GList* list;
170 GRegex* regex_query;
171 gchar* _tmp0_;
172 gchar* _tmp1_;
173 gchar* _tmp2_;
174 gchar* _tmp3_;
175 GRegex* _tmp4_;
176 GRegex* _tmp5_;
177 GRegex* _tmp6_;
178 GError * erro;
179 gchar* _tmp7_;
180 gchar* _tmp8_;
181 GRegex* _tmp9_;
182 GRegex* _tmp10_;
183 GRegex* _tmp11_;
184 GError * err1;
185 GList* _tmp12_;
186 guint _tmp13_;
187 GList* _tmp14_;
188 GError * _inner_error_;
189 };
190
191 struct _GmpcProviderMusicTreeGetBiographyData {
192 int _state_;
193 GObject* _source_object_;
194 GAsyncResult* _res_;
195 GSimpleAsyncResult* _async_result;
196 GmpcProviderMusicTree* self;
197 gchar* directory;
198 mpd_Song* song;
199 GmpcPluginMetaDataCallback callback;
200 gpointer callback_target;
201 GDestroyNotify callback_target_destroy_notify;
202 GList* list;
203 GRegex* regex_query;
204 GRegex* _tmp0_;
205 GRegex* _tmp1_;
206 GError * erro;
207 GList* _tmp2_;
208 guint _tmp3_;
209 GList* _tmp4_;
210 GError * _inner_error_;
211 };
212
213 struct _GmpcProviderMusicTreeGetAlbumInfoData {
214 int _state_;
215 GObject* _source_object_;
216 GAsyncResult* _res_;
217 GSimpleAsyncResult* _async_result;
218 GmpcProviderMusicTree* self;
219 gchar* directory;
220 mpd_Song* song;
221 GmpcPluginMetaDataCallback callback;
222 gpointer callback_target;
223 GDestroyNotify callback_target_destroy_notify;
224 GList* list;
225 GRegex* regex_query;
226 gchar* _tmp0_;
227 gchar* _tmp1_;
228 GRegex* _tmp2_;
229 GRegex* _tmp3_;
230 GRegex* _tmp4_;
231 GError * erro;
232 GList* _tmp5_;
233 guint _tmp6_;
234 GList* _tmp7_;
235 GError * _inner_error_;
236 };
237
238
239 static gpointer gmpc_provider_music_tree_parent_class = NULL;
240 static GmpcPluginMetaDataIfaceIface* gmpc_provider_music_tree_gmpc_plugin_meta_data_iface_parent_iface = NULL;
241
242 #define use_transition_lp TRUE
243 #define some_unique_name_lp VERSION
244 #define log_domain_cp "Gmpc.Providers.MusicTree"
245 #define GMPC_PROVIDER_MUSIC_TREE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GMPC_PROVIDER_TYPE_MUSIC_TREE, GmpcProviderMusicTreePrivate))
246 enum {
247 GMPC_PROVIDER_MUSIC_TREE_DUMMY_PROPERTY
248 };
249 static gint* gmpc_provider_music_tree_real_get_version (GmpcPluginBase* base, int* result_length1);
250 static const gchar* gmpc_provider_music_tree_real_get_name (GmpcPluginBase* base);
251 static void gmpc_provider_music_tree_real_set_priority (GmpcPluginMetaDataIface* base, gint priority);
252 static gint gmpc_provider_music_tree_real_get_priority (GmpcPluginMetaDataIface* base);
253 static void gmpc_provider_music_tree_real_get_metadata (GmpcPluginMetaDataIface* base, const mpd_Song* song, MetaDataType type, GmpcPluginMetaDataCallback callback, void* callback_target);
254 static void gmpc_provider_music_tree_get_album_cover (GmpcProviderMusicTree* self, const gchar* directory, const mpd_Song* song, GmpcPluginMetaDataCallback callback, void* callback_target, GAsyncReadyCallback _callback_, gpointer _user_data_);
255 static void gmpc_provider_music_tree_get_album_cover_finish (GmpcProviderMusicTree* self, GAsyncResult* _res_);
256 static void gmpc_provider_music_tree_get_artist_art (GmpcProviderMusicTree* self, const gchar* directory, const mpd_Song* song, GmpcPluginMetaDataCallback callback, void* callback_target, GAsyncReadyCallback _callback_, gpointer _user_data_);
257 static void gmpc_provider_music_tree_get_artist_art_finish (GmpcProviderMusicTree* self, GAsyncResult* _res_);
258 static void gmpc_provider_music_tree_get_biography (GmpcProviderMusicTree* self, const gchar* directory, const mpd_Song* song, GmpcPluginMetaDataCallback callback, void* callback_target, GAsyncReadyCallback _callback_, gpointer _user_data_);
259 static void gmpc_provider_music_tree_get_biography_finish (GmpcProviderMusicTree* self, GAsyncResult* _res_);
260 static void gmpc_provider_music_tree_get_album_info (GmpcProviderMusicTree* self, const gchar* directory, const mpd_Song* song, GmpcPluginMetaDataCallback callback, void* callback_target, GAsyncReadyCallback _callback_, gpointer _user_data_);
261 static void gmpc_provider_music_tree_get_album_info_finish (GmpcProviderMusicTree* self, GAsyncResult* _res_);
262 static void gmpc_provider_music_tree_check_directory_for_files_data_free (gpointer _data);
263 static void gmpc_provider_music_tree_check_directory_for_files (GmpcProviderMusicTree* self, GFile* dir, GRegex* query, MetaDataType type, GAsyncReadyCallback _callback_, gpointer _user_data_);
264 static void gmpc_provider_music_tree_check_directory_for_files_finish (GmpcProviderMusicTree* self, GAsyncResult* _res_, GList** list);
265 static gboolean gmpc_provider_music_tree_check_directory_for_files_co (GmpcProviderMusicTreeCheckDirectoryForFilesData* data);
266 static void gmpc_provider_music_tree_check_directory_for_files_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
267 static void _g_object_unref0_ (gpointer var);
268 static void _g_list_free__g_object_unref0_ (GList* self);
269 static void gmpc_provider_music_tree_walk_back_directory_data_free (gpointer _data);
270 static void gmpc_provider_music_tree_walk_back_directory (GmpcProviderMusicTree* self, GRegex* regex_query, const gchar* mpd_directory, const gchar* filename, MetaDataType type, GAsyncReadyCallback _callback_, gpointer _user_data_);
271 static void gmpc_provider_music_tree_walk_back_directory_finish (GmpcProviderMusicTree* self, GAsyncResult* _res_, GList** list);
272 static gboolean gmpc_provider_music_tree_walk_back_directory_co (GmpcProviderMusicTreeWalkBackDirectoryData* data);
273 static void gmpc_provider_music_tree_walk_back_directory_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
274 static void _meta_data_free0_ (gpointer var);
275 static void _g_list_free__meta_data_free0_ (GList* self);
276 static void gmpc_provider_music_tree_get_artist_art_data_free (gpointer _data);
277 static gboolean gmpc_provider_music_tree_get_artist_art_co (GmpcProviderMusicTreeGetArtistArtData* data);
278 static void gmpc_provider_music_tree_get_artist_art_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
279 static void gmpc_provider_music_tree_get_album_cover_data_free (gpointer _data);
280 static gboolean gmpc_provider_music_tree_get_album_cover_co (GmpcProviderMusicTreeGetAlbumCoverData* data);
281 static void gmpc_provider_music_tree_get_album_cover_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
282 static void gmpc_provider_music_tree_get_biography_data_free (gpointer _data);
283 static gboolean gmpc_provider_music_tree_get_biography_co (GmpcProviderMusicTreeGetBiographyData* data);
284 static void gmpc_provider_music_tree_get_biography_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
285 static void gmpc_provider_music_tree_get_album_info_data_free (gpointer _data);
286 static gboolean gmpc_provider_music_tree_get_album_info_co (GmpcProviderMusicTreeGetAlbumInfoData* data);
287 static void gmpc_provider_music_tree_get_album_info_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
288 static GObject * gmpc_provider_music_tree_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties);
289 static void gmpc_provider_music_tree_finalize (GObject* obj);
290
291 static const gint GMPC_PROVIDER_MUSIC_TREE_version[3] = {0, 0, 2};
292
gmpc_provider_music_tree_real_get_version(GmpcPluginBase * base,int * result_length1)293 static gint* gmpc_provider_music_tree_real_get_version (GmpcPluginBase* base, int* result_length1) {
294 GmpcProviderMusicTree * self;
295 gint* result = NULL;
296 gint* _tmp0_;
297 self = (GmpcProviderMusicTree*) base;
298 _tmp0_ = GMPC_PROVIDER_MUSIC_TREE_version;
299 *result_length1 = G_N_ELEMENTS (GMPC_PROVIDER_MUSIC_TREE_version);
300 result = _tmp0_;
301 return result;
302 }
303
304
gmpc_provider_music_tree_real_get_name(GmpcPluginBase * base)305 static const gchar* gmpc_provider_music_tree_real_get_name (GmpcPluginBase* base) {
306 GmpcProviderMusicTree * self;
307 const gchar* result = NULL;
308 self = (GmpcProviderMusicTree*) base;
309 result = "Music Tree Provider";
310 return result;
311 }
312
313
gmpc_provider_music_tree_real_set_priority(GmpcPluginMetaDataIface * base,gint priority)314 static void gmpc_provider_music_tree_real_set_priority (GmpcPluginMetaDataIface* base, gint priority) {
315 GmpcProviderMusicTree * self;
316 const gchar* _tmp0_ = NULL;
317 self = (GmpcProviderMusicTree*) base;
318 _tmp0_ = gmpc_plugin_base_get_name ((GmpcPluginBase*) self);
319 cfg_set_single_value_as_int (config, _tmp0_, "priority", priority);
320 }
321
322
gmpc_provider_music_tree_real_get_priority(GmpcPluginMetaDataIface * base)323 static gint gmpc_provider_music_tree_real_get_priority (GmpcPluginMetaDataIface* base) {
324 GmpcProviderMusicTree * self;
325 gint result = 0;
326 const gchar* _tmp0_ = NULL;
327 gint _tmp1_;
328 self = (GmpcProviderMusicTree*) base;
329 _tmp0_ = gmpc_plugin_base_get_name ((GmpcPluginBase*) self);
330 _tmp1_ = cfg_get_single_value_as_int_with_default (config, _tmp0_, "priority", 0);
331 result = _tmp1_;
332 return result;
333 }
334
335
336 /********************************
337 * metadata code *
338 ********************************/
gmpc_provider_music_tree_real_get_metadata(GmpcPluginMetaDataIface * base,const mpd_Song * song,MetaDataType type,GmpcPluginMetaDataCallback callback,void * callback_target)339 static void gmpc_provider_music_tree_real_get_metadata (GmpcPluginMetaDataIface* base, const mpd_Song* song, MetaDataType type, GmpcPluginMetaDataCallback callback, void* callback_target) {
340 GmpcProviderMusicTree * self;
341 gchar* _tmp0_ = NULL;
342 gchar* id;
343 const gchar* directory;
344 const gchar* _tmp2_ = NULL;
345 gboolean _tmp3_ = FALSE;
346 gboolean _tmp5_ = FALSE;
347 gchar* _tmp6_ = NULL;
348 gchar* scheme;
349 self = (GmpcProviderMusicTree*) base;
350 g_return_if_fail (song != NULL);
351 _tmp0_ = gmpc_profiles_get_current (gmpc_profiles);
352 id = _tmp0_;
353 directory = NULL;
354 if (id != NULL) {
355 const gchar* _tmp1_ = NULL;
356 _tmp1_ = gmpc_profiles_get_music_directory (gmpc_profiles, id);
357 directory = _tmp1_;
358 }
359 if (directory == NULL) {
360 _tmp2_ = "(null)";
361 } else {
362 _tmp2_ = directory;
363 }
364 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:96: Got directory: %s", _tmp2_);
365 if (directory == NULL) {
366 _tmp3_ = TRUE;
367 } else {
368 gint _tmp4_;
369 _tmp4_ = strlen (directory);
370 _tmp3_ = _tmp4_ == 0;
371 }
372 if (_tmp3_) {
373 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:101: No Music directory specified");
374 callback (NULL, callback_target);
375 _g_free0 (id);
376 return;
377 }
378 if (song == NULL) {
379 _tmp5_ = TRUE;
380 } else {
381 _tmp5_ = song->file == NULL;
382 }
383 if (_tmp5_) {
384 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:113: No Song or no song path specified");
385 callback (NULL, callback_target);
386 _g_free0 (id);
387 return;
388 }
389 _tmp6_ = g_uri_parse_scheme (song->file);
390 scheme = _tmp6_;
391 if (scheme != NULL) {
392 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:124: Scheme '%s' indicates no local file.", scheme);
393 callback (NULL, callback_target);
394 _g_free0 (scheme);
395 _g_free0 (id);
396 return;
397 }
398 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:130: Music directory: %s", directory);
399 switch (type) {
400 case META_ALBUM_ART:
401 {
402 gmpc_provider_music_tree_get_album_cover (self, directory, song, callback, callback_target, NULL, NULL);
403 _g_free0 (scheme);
404 _g_free0 (id);
405 return;
406 }
407 case META_ARTIST_ART:
408 {
409 gmpc_provider_music_tree_get_artist_art (self, directory, song, callback, callback_target, NULL, NULL);
410 _g_free0 (scheme);
411 _g_free0 (id);
412 return;
413 }
414 case META_ARTIST_TXT:
415 {
416 gmpc_provider_music_tree_get_biography (self, directory, song, callback, callback_target, NULL, NULL);
417 _g_free0 (scheme);
418 _g_free0 (id);
419 return;
420 }
421 case META_ALBUM_TXT:
422 {
423 gmpc_provider_music_tree_get_album_info (self, directory, song, callback, callback_target, NULL, NULL);
424 _g_free0 (scheme);
425 _g_free0 (id);
426 return;
427 }
428 case META_SONG_TXT:
429 case META_SONG_GUITAR_TAB:
430 {
431 break;
432 }
433 case META_ARTIST_SIMILAR:
434 case META_SONG_SIMILAR:
435 case META_GENRE_SIMILAR:
436 {
437 break;
438 }
439 default:
440 case META_QUERY_DATA_TYPES:
441 case META_QUERY_NO_CACHE:
442 {
443 break;
444 }
445 }
446 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:166: Unsupported metadata, doing nothing ");
447 callback (NULL, callback_target);
448 _g_free0 (scheme);
449 _g_free0 (id);
450 }
451
452
gmpc_provider_music_tree_check_directory_for_files_data_free(gpointer _data)453 static void gmpc_provider_music_tree_check_directory_for_files_data_free (gpointer _data) {
454 GmpcProviderMusicTreeCheckDirectoryForFilesData* data;
455 data = _data;
456 _g_object_unref0 (data->dir);
457 _g_regex_unref0 (data->query);
458 _g_object_unref0 (data->self);
459 g_slice_free (GmpcProviderMusicTreeCheckDirectoryForFilesData, data);
460 }
461
462
_g_object_ref0(gpointer self)463 static gpointer _g_object_ref0 (gpointer self) {
464 return self ? g_object_ref (self) : NULL;
465 }
466
467
_g_regex_ref0(gpointer self)468 static gpointer _g_regex_ref0 (gpointer self) {
469 return self ? g_regex_ref (self) : NULL;
470 }
471
472
gmpc_provider_music_tree_check_directory_for_files(GmpcProviderMusicTree * self,GFile * dir,GRegex * query,MetaDataType type,GAsyncReadyCallback _callback_,gpointer _user_data_)473 static void gmpc_provider_music_tree_check_directory_for_files (GmpcProviderMusicTree* self, GFile* dir, GRegex* query, MetaDataType type, GAsyncReadyCallback _callback_, gpointer _user_data_) {
474 GmpcProviderMusicTreeCheckDirectoryForFilesData* _data_;
475 _data_ = g_slice_new0 (GmpcProviderMusicTreeCheckDirectoryForFilesData);
476 _data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, gmpc_provider_music_tree_check_directory_for_files);
477 g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, gmpc_provider_music_tree_check_directory_for_files_data_free);
478 _data_->self = _g_object_ref0 (self);
479 _data_->dir = _g_object_ref0 (dir);
480 _data_->query = _g_regex_ref0 (query);
481 _data_->type = type;
482 gmpc_provider_music_tree_check_directory_for_files_co (_data_);
483 }
484
485
gmpc_provider_music_tree_check_directory_for_files_finish(GmpcProviderMusicTree * self,GAsyncResult * _res_,GList ** list)486 static void gmpc_provider_music_tree_check_directory_for_files_finish (GmpcProviderMusicTree* self, GAsyncResult* _res_, GList** list) {
487 GmpcProviderMusicTreeCheckDirectoryForFilesData* _data_;
488 _data_ = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (_res_));
489 *list = _data_->list;
490 _data_->list = NULL;
491 }
492
493
494 /**
495 * Helper functions
496 */
gmpc_provider_music_tree_check_directory_for_files_ready(GObject * source_object,GAsyncResult * _res_,gpointer _user_data_)497 static void gmpc_provider_music_tree_check_directory_for_files_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) {
498 GmpcProviderMusicTreeCheckDirectoryForFilesData* data;
499 data = _user_data_;
500 data->_source_object_ = source_object;
501 data->_res_ = _res_;
502 gmpc_provider_music_tree_check_directory_for_files_co (data);
503 }
504
505
_g_object_unref0_(gpointer var)506 static void _g_object_unref0_ (gpointer var) {
507 (var == NULL) ? NULL : (var = (g_object_unref (var), NULL));
508 }
509
510
_g_list_free__g_object_unref0_(GList * self)511 static void _g_list_free__g_object_unref0_ (GList* self) {
512 g_list_foreach (self, (GFunc) _g_object_unref0_, NULL);
513 g_list_free (self);
514 }
515
516
string_get(const gchar * self,glong index)517 static gchar string_get (const gchar* self, glong index) {
518 gchar result = '\0';
519 g_return_val_if_fail (self != NULL, '\0');
520 result = ((gchar*) self)[index];
521 return result;
522 }
523
524
gmpc_provider_music_tree_check_directory_for_files_co(GmpcProviderMusicTreeCheckDirectoryForFilesData * data)525 static gboolean gmpc_provider_music_tree_check_directory_for_files_co (GmpcProviderMusicTreeCheckDirectoryForFilesData* data) {
526 switch (data->_state_) {
527 case 0:
528 goto _state_0;
529 case 1:
530 goto _state_1;
531 case 2:
532 goto _state_2;
533 default:
534 g_assert_not_reached ();
535 }
536 _state_0:
537 data->_tmp0_ = NULL;
538 data->_tmp0_ = g_file_get_path (data->dir);
539 data->path = data->_tmp0_;
540 data->_tmp1_ = NULL;
541 data->_tmp1_ = g_regex_get_pattern (data->query);
542 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:182: Checking %s with pattern: %s", data->path, data->_tmp1_);
543 data->_state_ = 1;
544 g_file_enumerate_children_async (data->dir, "standard,access::*", 0, G_PRIORITY_DEFAULT, NULL, gmpc_provider_music_tree_check_directory_for_files_ready, data);
545 return FALSE;
546 _state_1:
547 data->_tmp2_ = NULL;
548 data->_tmp2_ = g_file_enumerate_children_finish (data->dir, data->_res_, &data->_inner_error_);
549 data->e = data->_tmp2_;
550 if (data->_inner_error_ != NULL) {
551 goto __catch16_g_error;
552 }
553 while (TRUE) {
554 data->_state_ = 2;
555 g_file_enumerator_next_files_async (data->e, 10, G_PRIORITY_DEFAULT, NULL, gmpc_provider_music_tree_check_directory_for_files_ready, data);
556 return FALSE;
557 _state_2:
558 data->_tmp3_ = NULL;
559 data->_tmp3_ = g_file_enumerator_next_files_finish (data->e, data->_res_, &data->_inner_error_);
560 data->files = data->_tmp3_;
561 if (data->_inner_error_ != NULL) {
562 _g_object_unref0 (data->e);
563 goto __catch16_g_error;
564 }
565 if (data->files == NULL) {
566 __g_list_free__g_object_unref0_0 (data->files);
567 break;
568 }
569 {
570 data->info_collection = data->files;
571 for (data->info_it = data->info_collection; data->info_it != NULL; data->info_it = data->info_it->next) {
572 data->_tmp4_ = _g_object_ref0 ((GFileInfo*) data->info_it->data);
573 data->info = data->_tmp4_;
574 {
575 data->_tmp5_ = NULL;
576 data->_tmp5_ = g_file_info_get_name (data->info);
577 data->_tmp6_ = g_strdup (data->_tmp5_);
578 data->name = data->_tmp6_;
579 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:199: got file: %s", data->name);
580 data->_tmp8_ = string_get (data->name, (glong) 0);
581 if (data->_tmp8_ != '.') {
582 data->_tmp9_ = g_regex_match (data->query, data->name, 0, NULL);
583 data->_tmp7_ = data->_tmp9_;
584 } else {
585 data->_tmp7_ = FALSE;
586 }
587 if (data->_tmp7_) {
588 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:203: Got path: %s. Have info", data->name);
589 data->_tmp10_ = g_file_info_get_attribute_boolean (data->info, "access::can-read");
590 if (data->_tmp10_) {
591 data->_tmp11_ = NULL;
592 data->_tmp11_ = meta_data_new ();
593 data->item = data->_tmp11_;
594 data->item->type = data->type;
595 data->_tmp12_ = NULL;
596 data->_tmp12_ = gmpc_plugin_base_get_name ((GmpcPluginBase*) data->self);
597 data->item->plugin_name = data->_tmp12_;
598 data->item->content_type = META_DATA_CONTENT_URI;
599 data->_tmp13_ = NULL;
600 data->_tmp13_ = g_build_filename (data->path, data->name, NULL);
601 data->_tmp14_ = data->_tmp13_;
602 meta_data_set_uri (data->item, data->_tmp14_);
603 _g_free0 (data->_tmp14_);
604 data->_tmp15_ = data->item;
605 data->item = NULL;
606 data->list = g_list_append (data->list, data->_tmp15_);
607 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:213: Found %s/%s, adding", data->path, data->name);
608 _meta_data_free0 (data->item);
609 }
610 }
611 _g_free0 (data->name);
612 _g_object_unref0 (data->info);
613 }
614 }
615 }
616 __g_list_free__g_object_unref0_0 (data->files);
617 }
618 _g_object_unref0 (data->e);
619 goto __finally16;
620 __catch16_g_error:
621 {
622 data->err = data->_inner_error_;
623 data->_inner_error_ = NULL;
624 g_log (log_domain_cp, G_LOG_LEVEL_WARNING, "music-tree.vala:223: Error trying to walk directory '%s': %s\n", data->path, data->err->message);
625 _g_error_free0 (data->err);
626 }
627 __finally16:
628 if (data->_inner_error_ != NULL) {
629 _g_free0 (data->path);
630 g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, data->_inner_error_->message, g_quark_to_string (data->_inner_error_->domain), data->_inner_error_->code);
631 g_clear_error (&data->_inner_error_);
632 return FALSE;
633 }
634 _g_free0 (data->path);
635 if (data->_state_ == 0) {
636 g_simple_async_result_complete_in_idle (data->_async_result);
637 } else {
638 g_simple_async_result_complete (data->_async_result);
639 }
640 g_object_unref (data->_async_result);
641 return FALSE;
642 }
643
644
gmpc_provider_music_tree_walk_back_directory_data_free(gpointer _data)645 static void gmpc_provider_music_tree_walk_back_directory_data_free (gpointer _data) {
646 GmpcProviderMusicTreeWalkBackDirectoryData* data;
647 data = _data;
648 _g_regex_unref0 (data->regex_query);
649 _g_free0 (data->mpd_directory);
650 _g_free0 (data->filename);
651 _g_object_unref0 (data->self);
652 g_slice_free (GmpcProviderMusicTreeWalkBackDirectoryData, data);
653 }
654
655
gmpc_provider_music_tree_walk_back_directory(GmpcProviderMusicTree * self,GRegex * regex_query,const gchar * mpd_directory,const gchar * filename,MetaDataType type,GAsyncReadyCallback _callback_,gpointer _user_data_)656 static void gmpc_provider_music_tree_walk_back_directory (GmpcProviderMusicTree* self, GRegex* regex_query, const gchar* mpd_directory, const gchar* filename, MetaDataType type, GAsyncReadyCallback _callback_, gpointer _user_data_) {
657 GmpcProviderMusicTreeWalkBackDirectoryData* _data_;
658 _data_ = g_slice_new0 (GmpcProviderMusicTreeWalkBackDirectoryData);
659 _data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, gmpc_provider_music_tree_walk_back_directory);
660 g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, gmpc_provider_music_tree_walk_back_directory_data_free);
661 _data_->self = _g_object_ref0 (self);
662 _data_->regex_query = _g_regex_ref0 (regex_query);
663 _data_->mpd_directory = g_strdup (mpd_directory);
664 _data_->filename = g_strdup (filename);
665 _data_->type = type;
666 gmpc_provider_music_tree_walk_back_directory_co (_data_);
667 }
668
669
gmpc_provider_music_tree_walk_back_directory_finish(GmpcProviderMusicTree * self,GAsyncResult * _res_,GList ** list)670 static void gmpc_provider_music_tree_walk_back_directory_finish (GmpcProviderMusicTree* self, GAsyncResult* _res_, GList** list) {
671 GmpcProviderMusicTreeWalkBackDirectoryData* _data_;
672 _data_ = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (_res_));
673 *list = _data_->list;
674 _data_->list = NULL;
675 }
676
677
678 /**
679 * Walks back the directory 3 levels.
680 */
gmpc_provider_music_tree_walk_back_directory_ready(GObject * source_object,GAsyncResult * _res_,gpointer _user_data_)681 static void gmpc_provider_music_tree_walk_back_directory_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) {
682 GmpcProviderMusicTreeWalkBackDirectoryData* data;
683 data = _user_data_;
684 data->_source_object_ = source_object;
685 data->_res_ = _res_;
686 gmpc_provider_music_tree_walk_back_directory_co (data);
687 }
688
689
_meta_data_free0_(gpointer var)690 static void _meta_data_free0_ (gpointer var) {
691 (var == NULL) ? NULL : (var = (meta_data_free (var), NULL));
692 }
693
694
_g_list_free__meta_data_free0_(GList * self)695 static void _g_list_free__meta_data_free0_ (GList* self) {
696 g_list_foreach (self, (GFunc) _meta_data_free0_, NULL);
697 g_list_free (self);
698 }
699
700
gmpc_provider_music_tree_walk_back_directory_co(GmpcProviderMusicTreeWalkBackDirectoryData * data)701 static gboolean gmpc_provider_music_tree_walk_back_directory_co (GmpcProviderMusicTreeWalkBackDirectoryData* data) {
702 switch (data->_state_) {
703 case 0:
704 goto _state_0;
705 case 1:
706 goto _state_1;
707 case 2:
708 goto _state_2;
709 case 3:
710 goto _state_3;
711 default:
712 g_assert_not_reached ();
713 }
714 _state_0:
715 data->_tmp0_ = NULL;
716 data->_tmp0_ = g_path_get_dirname (data->filename);
717 data->base_path = data->_tmp0_;
718 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:237: Got basename: %s", data->base_path);
719 data->_tmp1_ = NULL;
720 data->_tmp1_ = g_build_filename (data->mpd_directory, data->base_path, NULL);
721 data->path = data->_tmp1_;
722 data->_tmp2_ = NULL;
723 data->_tmp2_ = g_file_new_for_path (data->path);
724 data->dir = data->_tmp2_;
725 data->temp = NULL;
726 data->_tmp3_ = NULL;
727 data->_state_ = 1;
728 gmpc_provider_music_tree_check_directory_for_files (data->self, data->dir, data->regex_query, data->type, gmpc_provider_music_tree_walk_back_directory_ready, data);
729 return FALSE;
730 _state_1:
731 gmpc_provider_music_tree_check_directory_for_files_finish (data->self, data->_res_, &data->_tmp3_);
732 __g_list_free__meta_data_free0_0 (data->temp);
733 data->temp = data->_tmp3_;
734 data->_tmp4_ = data->temp;
735 data->temp = NULL;
736 data->list = g_list_concat (data->list, data->_tmp4_);
737 data->_tmp5_ = NULL;
738 data->_tmp5_ = g_file_get_parent (data->dir);
739 _g_object_unref0 (data->dir);
740 data->dir = data->_tmp5_;
741 if (data->dir != NULL) {
742 data->_tmp6_ = NULL;
743 data->_state_ = 2;
744 gmpc_provider_music_tree_check_directory_for_files (data->self, data->dir, data->regex_query, data->type, gmpc_provider_music_tree_walk_back_directory_ready, data);
745 return FALSE;
746 _state_2:
747 gmpc_provider_music_tree_check_directory_for_files_finish (data->self, data->_res_, &data->_tmp6_);
748 __g_list_free__meta_data_free0_0 (data->temp);
749 data->temp = data->_tmp6_;
750 data->_tmp7_ = data->temp;
751 data->temp = NULL;
752 data->list = g_list_concat (data->list, data->_tmp7_);
753 data->_tmp8_ = NULL;
754 data->_tmp8_ = g_file_get_parent (data->dir);
755 _g_object_unref0 (data->dir);
756 data->dir = data->_tmp8_;
757 if (data->dir != NULL) {
758 data->_tmp9_ = NULL;
759 data->_state_ = 3;
760 gmpc_provider_music_tree_check_directory_for_files (data->self, data->dir, data->regex_query, data->type, gmpc_provider_music_tree_walk_back_directory_ready, data);
761 return FALSE;
762 _state_3:
763 gmpc_provider_music_tree_check_directory_for_files_finish (data->self, data->_res_, &data->_tmp9_);
764 __g_list_free__meta_data_free0_0 (data->temp);
765 data->temp = data->_tmp9_;
766 data->_tmp10_ = data->temp;
767 data->temp = NULL;
768 data->list = g_list_concat (data->list, data->_tmp10_);
769 }
770 }
771 __g_list_free__meta_data_free0_0 (data->temp);
772 _g_object_unref0 (data->dir);
773 _g_free0 (data->path);
774 _g_free0 (data->base_path);
775 if (data->_state_ == 0) {
776 g_simple_async_result_complete_in_idle (data->_async_result);
777 } else {
778 g_simple_async_result_complete (data->_async_result);
779 }
780 g_object_unref (data->_async_result);
781 return FALSE;
782 }
783
784
gmpc_provider_music_tree_get_artist_art_data_free(gpointer _data)785 static void gmpc_provider_music_tree_get_artist_art_data_free (gpointer _data) {
786 GmpcProviderMusicTreeGetArtistArtData* data;
787 data = _data;
788 _g_free0 (data->directory);
789 _mpd_freeSong0 (data->song);
790 _g_object_unref0 (data->self);
791 g_slice_free (GmpcProviderMusicTreeGetArtistArtData, data);
792 }
793
794
_mpd_songDup0(gpointer self)795 static gpointer _mpd_songDup0 (gpointer self) {
796 return self ? mpd_songDup (self) : NULL;
797 }
798
799
gmpc_provider_music_tree_get_artist_art(GmpcProviderMusicTree * self,const gchar * directory,const mpd_Song * song,GmpcPluginMetaDataCallback callback,void * callback_target,GAsyncReadyCallback _callback_,gpointer _user_data_)800 static void gmpc_provider_music_tree_get_artist_art (GmpcProviderMusicTree* self, const gchar* directory, const mpd_Song* song, GmpcPluginMetaDataCallback callback, void* callback_target, GAsyncReadyCallback _callback_, gpointer _user_data_) {
801 GmpcProviderMusicTreeGetArtistArtData* _data_;
802 _data_ = g_slice_new0 (GmpcProviderMusicTreeGetArtistArtData);
803 _data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, gmpc_provider_music_tree_get_artist_art);
804 g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, gmpc_provider_music_tree_get_artist_art_data_free);
805 _data_->self = _g_object_ref0 (self);
806 _data_->directory = g_strdup (directory);
807 _data_->song = _mpd_songDup0 (song);
808 _data_->callback = callback;
809 _data_->callback_target = callback_target;
810 gmpc_provider_music_tree_get_artist_art_co (_data_);
811 }
812
813
gmpc_provider_music_tree_get_artist_art_finish(GmpcProviderMusicTree * self,GAsyncResult * _res_)814 static void gmpc_provider_music_tree_get_artist_art_finish (GmpcProviderMusicTree* self, GAsyncResult* _res_) {
815 GmpcProviderMusicTreeGetArtistArtData* _data_;
816 _data_ = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (_res_));
817 }
818
819
820 /**
821 * Get artist art
822 */
gmpc_provider_music_tree_get_artist_art_ready(GObject * source_object,GAsyncResult * _res_,gpointer _user_data_)823 static void gmpc_provider_music_tree_get_artist_art_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) {
824 GmpcProviderMusicTreeGetArtistArtData* data;
825 data = _user_data_;
826 data->_source_object_ = source_object;
827 data->_res_ = _res_;
828 gmpc_provider_music_tree_get_artist_art_co (data);
829 }
830
831
gmpc_provider_music_tree_get_artist_art_co(GmpcProviderMusicTreeGetArtistArtData * data)832 static gboolean gmpc_provider_music_tree_get_artist_art_co (GmpcProviderMusicTreeGetArtistArtData* data) {
833 switch (data->_state_) {
834 case 0:
835 goto _state_0;
836 case 1:
837 goto _state_1;
838 default:
839 g_assert_not_reached ();
840 }
841 _state_0:
842 data->list = NULL;
843 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:266: Query artist art ");
844 data->regex_query = NULL;
845 if (data->song->artist != NULL) {
846 data->_tmp0_ = NULL;
847 data->_tmp0_ = g_regex_escape_string (data->song->artist, -1);
848 data->_tmp1_ = data->_tmp0_;
849 data->_tmp2_ = NULL;
850 data->_tmp2_ = g_strdup_printf ("^(artist|%s)\\.%s$", data->_tmp1_, data->self->priv->file_type_string);
851 data->_tmp3_ = data->_tmp2_;
852 data->_tmp4_ = NULL;
853 data->_tmp4_ = g_regex_new (data->_tmp3_, G_REGEX_CASELESS | G_REGEX_DOTALL, 0, &data->_inner_error_);
854 data->_tmp5_ = data->_tmp4_;
855 _g_free0 (data->_tmp3_);
856 _g_free0 (data->_tmp1_);
857 data->_tmp6_ = data->_tmp5_;
858 if (data->_inner_error_ != NULL) {
859 goto __catch17_g_error;
860 }
861 _g_regex_unref0 (data->regex_query);
862 data->regex_query = data->_tmp6_;
863 goto __finally17;
864 __catch17_g_error:
865 {
866 data->erro = data->_inner_error_;
867 data->_inner_error_ = NULL;
868 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:282: Failed to create regex: %s", data->erro->message);
869 data->callback (NULL, data->callback_target);
870 _g_error_free0 (data->erro);
871 _g_regex_unref0 (data->regex_query);
872 __g_list_free__meta_data_free0_0 (data->list);
873 if (data->_state_ == 0) {
874 g_simple_async_result_complete_in_idle (data->_async_result);
875 } else {
876 g_simple_async_result_complete (data->_async_result);
877 }
878 g_object_unref (data->_async_result);
879 return FALSE;
880 }
881 __finally17:
882 if (data->_inner_error_ != NULL) {
883 _g_regex_unref0 (data->regex_query);
884 __g_list_free__meta_data_free0_0 (data->list);
885 g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, data->_inner_error_->message, g_quark_to_string (data->_inner_error_->domain), data->_inner_error_->code);
886 g_clear_error (&data->_inner_error_);
887 return FALSE;
888 }
889 } else {
890 data->_tmp7_ = NULL;
891 data->_tmp7_ = g_strdup_printf ("^(artist)\\.%s$", data->self->priv->file_type_string);
892 data->_tmp8_ = data->_tmp7_;
893 data->_tmp9_ = NULL;
894 data->_tmp9_ = g_regex_new (data->_tmp8_, G_REGEX_CASELESS | G_REGEX_DOTALL, 0, &data->_inner_error_);
895 data->_tmp10_ = data->_tmp9_;
896 _g_free0 (data->_tmp8_);
897 data->_tmp11_ = data->_tmp10_;
898 if (data->_inner_error_ != NULL) {
899 goto __catch18_g_error;
900 }
901 _g_regex_unref0 (data->regex_query);
902 data->regex_query = data->_tmp11_;
903 goto __finally18;
904 __catch18_g_error:
905 {
906 data->err1 = data->_inner_error_;
907 data->_inner_error_ = NULL;
908 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:299: Failed to create regex: %s", data->err1->message);
909 data->callback (NULL, data->callback_target);
910 _g_error_free0 (data->err1);
911 _g_regex_unref0 (data->regex_query);
912 __g_list_free__meta_data_free0_0 (data->list);
913 if (data->_state_ == 0) {
914 g_simple_async_result_complete_in_idle (data->_async_result);
915 } else {
916 g_simple_async_result_complete (data->_async_result);
917 }
918 g_object_unref (data->_async_result);
919 return FALSE;
920 }
921 __finally18:
922 if (data->_inner_error_ != NULL) {
923 _g_regex_unref0 (data->regex_query);
924 __g_list_free__meta_data_free0_0 (data->list);
925 g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, data->_inner_error_->message, g_quark_to_string (data->_inner_error_->domain), data->_inner_error_->code);
926 g_clear_error (&data->_inner_error_);
927 return FALSE;
928 }
929 }
930 data->_tmp12_ = NULL;
931 data->_state_ = 1;
932 gmpc_provider_music_tree_walk_back_directory (data->self, data->regex_query, data->directory, data->song->file, META_ARTIST_ART, gmpc_provider_music_tree_get_artist_art_ready, data);
933 return FALSE;
934 _state_1:
935 gmpc_provider_music_tree_walk_back_directory_finish (data->self, data->_res_, &data->_tmp12_);
936 __g_list_free__meta_data_free0_0 (data->list);
937 data->list = data->_tmp12_;
938 data->_tmp13_ = g_list_length (data->list);
939 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:307: Query done, %u results", data->_tmp13_);
940 g_list_first (data->list);
941 data->_tmp14_ = data->list;
942 data->list = NULL;
943 data->callback (data->_tmp14_, data->callback_target);
944 _g_regex_unref0 (data->regex_query);
945 __g_list_free__meta_data_free0_0 (data->list);
946 if (data->_state_ == 0) {
947 g_simple_async_result_complete_in_idle (data->_async_result);
948 } else {
949 g_simple_async_result_complete (data->_async_result);
950 }
951 g_object_unref (data->_async_result);
952 return FALSE;
953 _g_regex_unref0 (data->regex_query);
954 __g_list_free__meta_data_free0_0 (data->list);
955 if (data->_state_ == 0) {
956 g_simple_async_result_complete_in_idle (data->_async_result);
957 } else {
958 g_simple_async_result_complete (data->_async_result);
959 }
960 g_object_unref (data->_async_result);
961 return FALSE;
962 }
963
964
gmpc_provider_music_tree_get_album_cover_data_free(gpointer _data)965 static void gmpc_provider_music_tree_get_album_cover_data_free (gpointer _data) {
966 GmpcProviderMusicTreeGetAlbumCoverData* data;
967 data = _data;
968 _g_free0 (data->directory);
969 _mpd_freeSong0 (data->song);
970 _g_object_unref0 (data->self);
971 g_slice_free (GmpcProviderMusicTreeGetAlbumCoverData, data);
972 }
973
974
gmpc_provider_music_tree_get_album_cover(GmpcProviderMusicTree * self,const gchar * directory,const mpd_Song * song,GmpcPluginMetaDataCallback callback,void * callback_target,GAsyncReadyCallback _callback_,gpointer _user_data_)975 static void gmpc_provider_music_tree_get_album_cover (GmpcProviderMusicTree* self, const gchar* directory, const mpd_Song* song, GmpcPluginMetaDataCallback callback, void* callback_target, GAsyncReadyCallback _callback_, gpointer _user_data_) {
976 GmpcProviderMusicTreeGetAlbumCoverData* _data_;
977 _data_ = g_slice_new0 (GmpcProviderMusicTreeGetAlbumCoverData);
978 _data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, gmpc_provider_music_tree_get_album_cover);
979 g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, gmpc_provider_music_tree_get_album_cover_data_free);
980 _data_->self = _g_object_ref0 (self);
981 _data_->directory = g_strdup (directory);
982 _data_->song = _mpd_songDup0 (song);
983 _data_->callback = callback;
984 _data_->callback_target = callback_target;
985 gmpc_provider_music_tree_get_album_cover_co (_data_);
986 }
987
988
gmpc_provider_music_tree_get_album_cover_finish(GmpcProviderMusicTree * self,GAsyncResult * _res_)989 static void gmpc_provider_music_tree_get_album_cover_finish (GmpcProviderMusicTree* self, GAsyncResult* _res_) {
990 GmpcProviderMusicTreeGetAlbumCoverData* _data_;
991 _data_ = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (_res_));
992 }
993
994
995 /**
996 * Get album cover
997 */
gmpc_provider_music_tree_get_album_cover_ready(GObject * source_object,GAsyncResult * _res_,gpointer _user_data_)998 static void gmpc_provider_music_tree_get_album_cover_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) {
999 GmpcProviderMusicTreeGetAlbumCoverData* data;
1000 data = _user_data_;
1001 data->_source_object_ = source_object;
1002 data->_res_ = _res_;
1003 gmpc_provider_music_tree_get_album_cover_co (data);
1004 }
1005
1006
gmpc_provider_music_tree_get_album_cover_co(GmpcProviderMusicTreeGetAlbumCoverData * data)1007 static gboolean gmpc_provider_music_tree_get_album_cover_co (GmpcProviderMusicTreeGetAlbumCoverData* data) {
1008 switch (data->_state_) {
1009 case 0:
1010 goto _state_0;
1011 case 1:
1012 goto _state_1;
1013 default:
1014 g_assert_not_reached ();
1015 }
1016 _state_0:
1017 data->list = NULL;
1018 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:319: Query album cover");
1019 data->regex_query = NULL;
1020 if (data->song->album != NULL) {
1021 data->_tmp0_ = NULL;
1022 data->_tmp0_ = g_regex_escape_string (data->song->album, -1);
1023 data->_tmp1_ = data->_tmp0_;
1024 data->_tmp2_ = NULL;
1025 data->_tmp2_ = g_strdup_printf ("^(folder|cover|.*%s.*)\\.%s$", data->_tmp1_, data->self->priv->file_type_string);
1026 data->_tmp3_ = data->_tmp2_;
1027 data->_tmp4_ = NULL;
1028 data->_tmp4_ = g_regex_new (data->_tmp3_, G_REGEX_CASELESS | G_REGEX_DOTALL, 0, &data->_inner_error_);
1029 data->_tmp5_ = data->_tmp4_;
1030 _g_free0 (data->_tmp3_);
1031 _g_free0 (data->_tmp1_);
1032 data->_tmp6_ = data->_tmp5_;
1033 if (data->_inner_error_ != NULL) {
1034 goto __catch19_g_error;
1035 }
1036 _g_regex_unref0 (data->regex_query);
1037 data->regex_query = data->_tmp6_;
1038 goto __finally19;
1039 __catch19_g_error:
1040 {
1041 data->erro = data->_inner_error_;
1042 data->_inner_error_ = NULL;
1043 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:335: Failed to create regex: %s", data->erro->message);
1044 data->callback (NULL, data->callback_target);
1045 _g_error_free0 (data->erro);
1046 _g_regex_unref0 (data->regex_query);
1047 __g_list_free__meta_data_free0_0 (data->list);
1048 if (data->_state_ == 0) {
1049 g_simple_async_result_complete_in_idle (data->_async_result);
1050 } else {
1051 g_simple_async_result_complete (data->_async_result);
1052 }
1053 g_object_unref (data->_async_result);
1054 return FALSE;
1055 }
1056 __finally19:
1057 if (data->_inner_error_ != NULL) {
1058 _g_regex_unref0 (data->regex_query);
1059 __g_list_free__meta_data_free0_0 (data->list);
1060 g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, data->_inner_error_->message, g_quark_to_string (data->_inner_error_->domain), data->_inner_error_->code);
1061 g_clear_error (&data->_inner_error_);
1062 return FALSE;
1063 }
1064 } else {
1065 data->_tmp7_ = NULL;
1066 data->_tmp7_ = g_strdup_printf ("^(folder|cover)\\.%s$", data->self->priv->file_type_string);
1067 data->_tmp8_ = data->_tmp7_;
1068 data->_tmp9_ = NULL;
1069 data->_tmp9_ = g_regex_new (data->_tmp8_, G_REGEX_CASELESS | G_REGEX_DOTALL, 0, &data->_inner_error_);
1070 data->_tmp10_ = data->_tmp9_;
1071 _g_free0 (data->_tmp8_);
1072 data->_tmp11_ = data->_tmp10_;
1073 if (data->_inner_error_ != NULL) {
1074 goto __catch20_g_error;
1075 }
1076 _g_regex_unref0 (data->regex_query);
1077 data->regex_query = data->_tmp11_;
1078 goto __finally20;
1079 __catch20_g_error:
1080 {
1081 data->err1 = data->_inner_error_;
1082 data->_inner_error_ = NULL;
1083 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:352: Failed to create regex: %s", data->err1->message);
1084 data->callback (NULL, data->callback_target);
1085 _g_error_free0 (data->err1);
1086 _g_regex_unref0 (data->regex_query);
1087 __g_list_free__meta_data_free0_0 (data->list);
1088 if (data->_state_ == 0) {
1089 g_simple_async_result_complete_in_idle (data->_async_result);
1090 } else {
1091 g_simple_async_result_complete (data->_async_result);
1092 }
1093 g_object_unref (data->_async_result);
1094 return FALSE;
1095 }
1096 __finally20:
1097 if (data->_inner_error_ != NULL) {
1098 _g_regex_unref0 (data->regex_query);
1099 __g_list_free__meta_data_free0_0 (data->list);
1100 g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, data->_inner_error_->message, g_quark_to_string (data->_inner_error_->domain), data->_inner_error_->code);
1101 g_clear_error (&data->_inner_error_);
1102 return FALSE;
1103 }
1104 }
1105 data->_tmp12_ = NULL;
1106 data->_state_ = 1;
1107 gmpc_provider_music_tree_walk_back_directory (data->self, data->regex_query, data->directory, data->song->file, META_ALBUM_ART, gmpc_provider_music_tree_get_album_cover_ready, data);
1108 return FALSE;
1109 _state_1:
1110 gmpc_provider_music_tree_walk_back_directory_finish (data->self, data->_res_, &data->_tmp12_);
1111 __g_list_free__meta_data_free0_0 (data->list);
1112 data->list = data->_tmp12_;
1113 g_list_first (data->list);
1114 data->_tmp13_ = g_list_length (data->list);
1115 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:361: Query done, %u results", data->_tmp13_);
1116 data->_tmp14_ = data->list;
1117 data->list = NULL;
1118 data->callback (data->_tmp14_, data->callback_target);
1119 _g_regex_unref0 (data->regex_query);
1120 __g_list_free__meta_data_free0_0 (data->list);
1121 if (data->_state_ == 0) {
1122 g_simple_async_result_complete_in_idle (data->_async_result);
1123 } else {
1124 g_simple_async_result_complete (data->_async_result);
1125 }
1126 g_object_unref (data->_async_result);
1127 return FALSE;
1128 _g_regex_unref0 (data->regex_query);
1129 __g_list_free__meta_data_free0_0 (data->list);
1130 if (data->_state_ == 0) {
1131 g_simple_async_result_complete_in_idle (data->_async_result);
1132 } else {
1133 g_simple_async_result_complete (data->_async_result);
1134 }
1135 g_object_unref (data->_async_result);
1136 return FALSE;
1137 }
1138
1139
gmpc_provider_music_tree_get_biography_data_free(gpointer _data)1140 static void gmpc_provider_music_tree_get_biography_data_free (gpointer _data) {
1141 GmpcProviderMusicTreeGetBiographyData* data;
1142 data = _data;
1143 _g_free0 (data->directory);
1144 _mpd_freeSong0 (data->song);
1145 _g_object_unref0 (data->self);
1146 g_slice_free (GmpcProviderMusicTreeGetBiographyData, data);
1147 }
1148
1149
gmpc_provider_music_tree_get_biography(GmpcProviderMusicTree * self,const gchar * directory,const mpd_Song * song,GmpcPluginMetaDataCallback callback,void * callback_target,GAsyncReadyCallback _callback_,gpointer _user_data_)1150 static void gmpc_provider_music_tree_get_biography (GmpcProviderMusicTree* self, const gchar* directory, const mpd_Song* song, GmpcPluginMetaDataCallback callback, void* callback_target, GAsyncReadyCallback _callback_, gpointer _user_data_) {
1151 GmpcProviderMusicTreeGetBiographyData* _data_;
1152 _data_ = g_slice_new0 (GmpcProviderMusicTreeGetBiographyData);
1153 _data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, gmpc_provider_music_tree_get_biography);
1154 g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, gmpc_provider_music_tree_get_biography_data_free);
1155 _data_->self = _g_object_ref0 (self);
1156 _data_->directory = g_strdup (directory);
1157 _data_->song = _mpd_songDup0 (song);
1158 _data_->callback = callback;
1159 _data_->callback_target = callback_target;
1160 gmpc_provider_music_tree_get_biography_co (_data_);
1161 }
1162
1163
gmpc_provider_music_tree_get_biography_finish(GmpcProviderMusicTree * self,GAsyncResult * _res_)1164 static void gmpc_provider_music_tree_get_biography_finish (GmpcProviderMusicTree* self, GAsyncResult* _res_) {
1165 GmpcProviderMusicTreeGetBiographyData* _data_;
1166 _data_ = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (_res_));
1167 }
1168
1169
1170 /**
1171 * Get biography
1172 */
gmpc_provider_music_tree_get_biography_ready(GObject * source_object,GAsyncResult * _res_,gpointer _user_data_)1173 static void gmpc_provider_music_tree_get_biography_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) {
1174 GmpcProviderMusicTreeGetBiographyData* data;
1175 data = _user_data_;
1176 data->_source_object_ = source_object;
1177 data->_res_ = _res_;
1178 gmpc_provider_music_tree_get_biography_co (data);
1179 }
1180
1181
gmpc_provider_music_tree_get_biography_co(GmpcProviderMusicTreeGetBiographyData * data)1182 static gboolean gmpc_provider_music_tree_get_biography_co (GmpcProviderMusicTreeGetBiographyData* data) {
1183 switch (data->_state_) {
1184 case 0:
1185 goto _state_0;
1186 case 1:
1187 goto _state_1;
1188 default:
1189 g_assert_not_reached ();
1190 }
1191 _state_0:
1192 data->list = NULL;
1193 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:372: Query biography");
1194 data->regex_query = NULL;
1195 data->_tmp0_ = NULL;
1196 data->_tmp0_ = g_regex_new ("^BIOGRAPHY(\\.txt)?$", G_REGEX_CASELESS | G_REGEX_DOTALL, 0, &data->_inner_error_);
1197 data->_tmp1_ = data->_tmp0_;
1198 if (data->_inner_error_ != NULL) {
1199 goto __catch21_g_error;
1200 }
1201 _g_regex_unref0 (data->regex_query);
1202 data->regex_query = data->_tmp1_;
1203 goto __finally21;
1204 __catch21_g_error:
1205 {
1206 data->erro = data->_inner_error_;
1207 data->_inner_error_ = NULL;
1208 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:385: Failed to create regex: %s", data->erro->message);
1209 data->callback (NULL, data->callback_target);
1210 _g_error_free0 (data->erro);
1211 _g_regex_unref0 (data->regex_query);
1212 __g_list_free__meta_data_free0_0 (data->list);
1213 if (data->_state_ == 0) {
1214 g_simple_async_result_complete_in_idle (data->_async_result);
1215 } else {
1216 g_simple_async_result_complete (data->_async_result);
1217 }
1218 g_object_unref (data->_async_result);
1219 return FALSE;
1220 }
1221 __finally21:
1222 if (data->_inner_error_ != NULL) {
1223 _g_regex_unref0 (data->regex_query);
1224 __g_list_free__meta_data_free0_0 (data->list);
1225 g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, data->_inner_error_->message, g_quark_to_string (data->_inner_error_->domain), data->_inner_error_->code);
1226 g_clear_error (&data->_inner_error_);
1227 return FALSE;
1228 }
1229 data->_tmp2_ = NULL;
1230 data->_state_ = 1;
1231 gmpc_provider_music_tree_walk_back_directory (data->self, data->regex_query, data->directory, data->song->file, META_ARTIST_TXT, gmpc_provider_music_tree_get_biography_ready, data);
1232 return FALSE;
1233 _state_1:
1234 gmpc_provider_music_tree_walk_back_directory_finish (data->self, data->_res_, &data->_tmp2_);
1235 __g_list_free__meta_data_free0_0 (data->list);
1236 data->list = data->_tmp2_;
1237 data->_tmp3_ = g_list_length (data->list);
1238 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:392: Query done, %u results", data->_tmp3_);
1239 g_list_first (data->list);
1240 data->_tmp4_ = data->list;
1241 data->list = NULL;
1242 data->callback (data->_tmp4_, data->callback_target);
1243 _g_regex_unref0 (data->regex_query);
1244 __g_list_free__meta_data_free0_0 (data->list);
1245 if (data->_state_ == 0) {
1246 g_simple_async_result_complete_in_idle (data->_async_result);
1247 } else {
1248 g_simple_async_result_complete (data->_async_result);
1249 }
1250 g_object_unref (data->_async_result);
1251 return FALSE;
1252 _g_regex_unref0 (data->regex_query);
1253 __g_list_free__meta_data_free0_0 (data->list);
1254 if (data->_state_ == 0) {
1255 g_simple_async_result_complete_in_idle (data->_async_result);
1256 } else {
1257 g_simple_async_result_complete (data->_async_result);
1258 }
1259 g_object_unref (data->_async_result);
1260 return FALSE;
1261 }
1262
1263
gmpc_provider_music_tree_get_album_info_data_free(gpointer _data)1264 static void gmpc_provider_music_tree_get_album_info_data_free (gpointer _data) {
1265 GmpcProviderMusicTreeGetAlbumInfoData* data;
1266 data = _data;
1267 _g_free0 (data->directory);
1268 _mpd_freeSong0 (data->song);
1269 _g_object_unref0 (data->self);
1270 g_slice_free (GmpcProviderMusicTreeGetAlbumInfoData, data);
1271 }
1272
1273
gmpc_provider_music_tree_get_album_info(GmpcProviderMusicTree * self,const gchar * directory,const mpd_Song * song,GmpcPluginMetaDataCallback callback,void * callback_target,GAsyncReadyCallback _callback_,gpointer _user_data_)1274 static void gmpc_provider_music_tree_get_album_info (GmpcProviderMusicTree* self, const gchar* directory, const mpd_Song* song, GmpcPluginMetaDataCallback callback, void* callback_target, GAsyncReadyCallback _callback_, gpointer _user_data_) {
1275 GmpcProviderMusicTreeGetAlbumInfoData* _data_;
1276 _data_ = g_slice_new0 (GmpcProviderMusicTreeGetAlbumInfoData);
1277 _data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, gmpc_provider_music_tree_get_album_info);
1278 g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, gmpc_provider_music_tree_get_album_info_data_free);
1279 _data_->self = _g_object_ref0 (self);
1280 _data_->directory = g_strdup (directory);
1281 _data_->song = _mpd_songDup0 (song);
1282 _data_->callback = callback;
1283 _data_->callback_target = callback_target;
1284 gmpc_provider_music_tree_get_album_info_co (_data_);
1285 }
1286
1287
gmpc_provider_music_tree_get_album_info_finish(GmpcProviderMusicTree * self,GAsyncResult * _res_)1288 static void gmpc_provider_music_tree_get_album_info_finish (GmpcProviderMusicTree* self, GAsyncResult* _res_) {
1289 GmpcProviderMusicTreeGetAlbumInfoData* _data_;
1290 _data_ = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (_res_));
1291 }
1292
1293
1294 /**
1295 * Get album information
1296 */
gmpc_provider_music_tree_get_album_info_ready(GObject * source_object,GAsyncResult * _res_,gpointer _user_data_)1297 static void gmpc_provider_music_tree_get_album_info_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) {
1298 GmpcProviderMusicTreeGetAlbumInfoData* data;
1299 data = _user_data_;
1300 data->_source_object_ = source_object;
1301 data->_res_ = _res_;
1302 gmpc_provider_music_tree_get_album_info_co (data);
1303 }
1304
1305
gmpc_provider_music_tree_get_album_info_co(GmpcProviderMusicTreeGetAlbumInfoData * data)1306 static gboolean gmpc_provider_music_tree_get_album_info_co (GmpcProviderMusicTreeGetAlbumInfoData* data) {
1307 switch (data->_state_) {
1308 case 0:
1309 goto _state_0;
1310 case 1:
1311 goto _state_1;
1312 default:
1313 g_assert_not_reached ();
1314 }
1315 _state_0:
1316 data->list = NULL;
1317 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:404: Query biography");
1318 data->regex_query = NULL;
1319 if (data->song->album == NULL) {
1320 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:410: Album is not set.");
1321 data->callback (NULL, data->callback_target);
1322 _g_regex_unref0 (data->regex_query);
1323 __g_list_free__meta_data_free0_0 (data->list);
1324 if (data->_state_ == 0) {
1325 g_simple_async_result_complete_in_idle (data->_async_result);
1326 } else {
1327 g_simple_async_result_complete (data->_async_result);
1328 }
1329 g_object_unref (data->_async_result);
1330 return FALSE;
1331 }
1332 data->_tmp0_ = NULL;
1333 data->_tmp0_ = g_strdup_printf ("^.*%s.*\\.(txt|info)$", data->song->album);
1334 data->_tmp1_ = data->_tmp0_;
1335 data->_tmp2_ = NULL;
1336 data->_tmp2_ = g_regex_new (data->_tmp1_, G_REGEX_CASELESS | G_REGEX_DOTALL, 0, &data->_inner_error_);
1337 data->_tmp3_ = data->_tmp2_;
1338 _g_free0 (data->_tmp1_);
1339 data->_tmp4_ = data->_tmp3_;
1340 if (data->_inner_error_ != NULL) {
1341 goto __catch22_g_error;
1342 }
1343 _g_regex_unref0 (data->regex_query);
1344 data->regex_query = data->_tmp4_;
1345 goto __finally22;
1346 __catch22_g_error:
1347 {
1348 data->erro = data->_inner_error_;
1349 data->_inner_error_ = NULL;
1350 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:424: Failed to create regex: %s", data->erro->message);
1351 data->callback (NULL, data->callback_target);
1352 _g_error_free0 (data->erro);
1353 _g_regex_unref0 (data->regex_query);
1354 __g_list_free__meta_data_free0_0 (data->list);
1355 if (data->_state_ == 0) {
1356 g_simple_async_result_complete_in_idle (data->_async_result);
1357 } else {
1358 g_simple_async_result_complete (data->_async_result);
1359 }
1360 g_object_unref (data->_async_result);
1361 return FALSE;
1362 }
1363 __finally22:
1364 if (data->_inner_error_ != NULL) {
1365 _g_regex_unref0 (data->regex_query);
1366 __g_list_free__meta_data_free0_0 (data->list);
1367 g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, data->_inner_error_->message, g_quark_to_string (data->_inner_error_->domain), data->_inner_error_->code);
1368 g_clear_error (&data->_inner_error_);
1369 return FALSE;
1370 }
1371 data->_tmp5_ = NULL;
1372 data->_state_ = 1;
1373 gmpc_provider_music_tree_walk_back_directory (data->self, data->regex_query, data->directory, data->song->file, META_ARTIST_TXT, gmpc_provider_music_tree_get_album_info_ready, data);
1374 return FALSE;
1375 _state_1:
1376 gmpc_provider_music_tree_walk_back_directory_finish (data->self, data->_res_, &data->_tmp5_);
1377 __g_list_free__meta_data_free0_0 (data->list);
1378 data->list = data->_tmp5_;
1379 data->_tmp6_ = g_list_length (data->list);
1380 g_log (log_domain_cp, G_LOG_LEVEL_DEBUG, "music-tree.vala:431: Query done, %u results", data->_tmp6_);
1381 g_list_first (data->list);
1382 data->_tmp7_ = data->list;
1383 data->list = NULL;
1384 data->callback (data->_tmp7_, data->callback_target);
1385 _g_regex_unref0 (data->regex_query);
1386 __g_list_free__meta_data_free0_0 (data->list);
1387 if (data->_state_ == 0) {
1388 g_simple_async_result_complete_in_idle (data->_async_result);
1389 } else {
1390 g_simple_async_result_complete (data->_async_result);
1391 }
1392 g_object_unref (data->_async_result);
1393 return FALSE;
1394 _g_regex_unref0 (data->regex_query);
1395 __g_list_free__meta_data_free0_0 (data->list);
1396 if (data->_state_ == 0) {
1397 g_simple_async_result_complete_in_idle (data->_async_result);
1398 } else {
1399 g_simple_async_result_complete (data->_async_result);
1400 }
1401 g_object_unref (data->_async_result);
1402 return FALSE;
1403 }
1404
1405
gmpc_provider_music_tree_construct(GType object_type)1406 GmpcProviderMusicTree* gmpc_provider_music_tree_construct (GType object_type) {
1407 GmpcProviderMusicTree * self = NULL;
1408 self = (GmpcProviderMusicTree*) gmpc_plugin_base_construct (object_type);
1409 return self;
1410 }
1411
1412
gmpc_provider_music_tree_new(void)1413 GmpcProviderMusicTree* gmpc_provider_music_tree_new (void) {
1414 return gmpc_provider_music_tree_construct (GMPC_PROVIDER_TYPE_MUSIC_TREE);
1415 }
1416
1417
gmpc_provider_music_tree_constructor(GType type,guint n_construct_properties,GObjectConstructParam * construct_properties)1418 static GObject * gmpc_provider_music_tree_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) {
1419 GObject * obj;
1420 GObjectClass * parent_class;
1421 GmpcProviderMusicTree * self;
1422 parent_class = G_OBJECT_CLASS (gmpc_provider_music_tree_parent_class);
1423 obj = parent_class->constructor (type, n_construct_properties, construct_properties);
1424 self = GMPC_PROVIDER_MUSIC_TREE (obj);
1425 ((GmpcPluginBase*) self)->plugin_type = 8 + 32;
1426 return obj;
1427 }
1428
1429
gmpc_provider_music_tree_class_init(GmpcProviderMusicTreeClass * klass)1430 static void gmpc_provider_music_tree_class_init (GmpcProviderMusicTreeClass * klass) {
1431 gmpc_provider_music_tree_parent_class = g_type_class_peek_parent (klass);
1432 g_type_class_add_private (klass, sizeof (GmpcProviderMusicTreePrivate));
1433 GMPC_PLUGIN_BASE_CLASS (klass)->get_version = gmpc_provider_music_tree_real_get_version;
1434 GMPC_PLUGIN_BASE_CLASS (klass)->get_name = gmpc_provider_music_tree_real_get_name;
1435 G_OBJECT_CLASS (klass)->constructor = gmpc_provider_music_tree_constructor;
1436 G_OBJECT_CLASS (klass)->finalize = gmpc_provider_music_tree_finalize;
1437 }
1438
1439
gmpc_provider_music_tree_gmpc_plugin_meta_data_iface_interface_init(GmpcPluginMetaDataIfaceIface * iface)1440 static void gmpc_provider_music_tree_gmpc_plugin_meta_data_iface_interface_init (GmpcPluginMetaDataIfaceIface * iface) {
1441 gmpc_provider_music_tree_gmpc_plugin_meta_data_iface_parent_iface = g_type_interface_peek_parent (iface);
1442 iface->set_priority = (void (*)(GmpcPluginMetaDataIface* ,gint)) gmpc_provider_music_tree_real_set_priority;
1443 iface->get_priority = (gint (*)(GmpcPluginMetaDataIface*)) gmpc_provider_music_tree_real_get_priority;
1444 iface->get_metadata = (void (*)(GmpcPluginMetaDataIface* ,const mpd_Song* ,MetaDataType ,GmpcPluginMetaDataCallback ,void*)) gmpc_provider_music_tree_real_get_metadata;
1445 }
1446
1447
gmpc_provider_music_tree_instance_init(GmpcProviderMusicTree * self)1448 static void gmpc_provider_music_tree_instance_init (GmpcProviderMusicTree * self) {
1449 gchar* _tmp0_;
1450 self->priv = GMPC_PROVIDER_MUSIC_TREE_GET_PRIVATE (self);
1451 _tmp0_ = g_strdup ("(jpg|jpeg|png|gif)");
1452 self->priv->file_type_string = _tmp0_;
1453 }
1454
1455
gmpc_provider_music_tree_finalize(GObject * obj)1456 static void gmpc_provider_music_tree_finalize (GObject* obj) {
1457 GmpcProviderMusicTree * self;
1458 self = GMPC_PROVIDER_MUSIC_TREE (obj);
1459 _g_free0 (self->priv->file_type_string);
1460 G_OBJECT_CLASS (gmpc_provider_music_tree_parent_class)->finalize (obj);
1461 }
1462
1463
gmpc_provider_music_tree_get_type(void)1464 GType gmpc_provider_music_tree_get_type (void) {
1465 static volatile gsize gmpc_provider_music_tree_type_id__volatile = 0;
1466 if (g_once_init_enter (&gmpc_provider_music_tree_type_id__volatile)) {
1467 static const GTypeInfo g_define_type_info = { sizeof (GmpcProviderMusicTreeClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gmpc_provider_music_tree_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GmpcProviderMusicTree), 0, (GInstanceInitFunc) gmpc_provider_music_tree_instance_init, NULL };
1468 static const GInterfaceInfo gmpc_plugin_meta_data_iface_info = { (GInterfaceInitFunc) gmpc_provider_music_tree_gmpc_plugin_meta_data_iface_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
1469 GType gmpc_provider_music_tree_type_id;
1470 gmpc_provider_music_tree_type_id = g_type_register_static (GMPC_PLUGIN_TYPE_BASE, "GmpcProviderMusicTree", &g_define_type_info, 0);
1471 g_type_add_interface_static (gmpc_provider_music_tree_type_id, GMPC_PLUGIN_TYPE_META_DATA_IFACE, &gmpc_plugin_meta_data_iface_info);
1472 g_once_init_leave (&gmpc_provider_music_tree_type_id__volatile, gmpc_provider_music_tree_type_id);
1473 }
1474 return gmpc_provider_music_tree_type_id__volatile;
1475 }
1476
1477
1478
1479