1
/* banshee-collection.c generated by valac 0.16.1, the Vala compiler
2
* generated from banshee-collection.vala, do not modify */
5
* Copyright (C) 2011 Canonical Ltd
7
* This program is free software: you can redistribute it and/or modify
8
* it under the terms of the GNU General Public License version 3 as
9
* published by the Free Software Foundation.
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
16
* You should have received a copy of the GNU General Public License
17
* along with this program. If not, see <http://www.gnu.org/licenses/>.
19
* Authored by Alex Launi <alex.launi@canonical.com>
24
#include <glib-object.h>
34
#define UNITY_MUSIC_LENS_TYPE_BANSHEE_COLLECTION (unity_music_lens_banshee_collection_get_type ())
35
#define UNITY_MUSIC_LENS_BANSHEE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UNITY_MUSIC_LENS_TYPE_BANSHEE_COLLECTION, UnityMusicLensBansheeCollection))
36
#define UNITY_MUSIC_LENS_BANSHEE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UNITY_MUSIC_LENS_TYPE_BANSHEE_COLLECTION, UnityMusicLensBansheeCollectionClass))
37
#define UNITY_MUSIC_LENS_IS_BANSHEE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UNITY_MUSIC_LENS_TYPE_BANSHEE_COLLECTION))
38
#define UNITY_MUSIC_LENS_IS_BANSHEE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UNITY_MUSIC_LENS_TYPE_BANSHEE_COLLECTION))
39
#define UNITY_MUSIC_LENS_BANSHEE_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UNITY_MUSIC_LENS_TYPE_BANSHEE_COLLECTION, UnityMusicLensBansheeCollectionClass))
41
typedef struct _UnityMusicLensBansheeCollection UnityMusicLensBansheeCollection;
42
typedef struct _UnityMusicLensBansheeCollectionClass UnityMusicLensBansheeCollectionClass;
43
typedef struct _UnityMusicLensBansheeCollectionPrivate UnityMusicLensBansheeCollectionPrivate;
44
#define _sqlite3_close0(var) ((var == NULL) ? NULL : (var = (sqlite3_close (var), NULL)))
45
#define _g_free0(var) (var = (g_free (var), NULL))
46
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
48
#define UNITY_MUSIC_LENS_TYPE_FILTER_PARSER (unity_music_lens_filter_parser_get_type ())
49
#define UNITY_MUSIC_LENS_FILTER_PARSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UNITY_MUSIC_LENS_TYPE_FILTER_PARSER, UnityMusicLensFilterParser))
50
#define UNITY_MUSIC_LENS_FILTER_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UNITY_MUSIC_LENS_TYPE_FILTER_PARSER, UnityMusicLensFilterParserClass))
51
#define UNITY_MUSIC_LENS_IS_FILTER_PARSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UNITY_MUSIC_LENS_TYPE_FILTER_PARSER))
52
#define UNITY_MUSIC_LENS_IS_FILTER_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UNITY_MUSIC_LENS_TYPE_FILTER_PARSER))
53
#define UNITY_MUSIC_LENS_FILTER_PARSER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UNITY_MUSIC_LENS_TYPE_FILTER_PARSER, UnityMusicLensFilterParserClass))
55
typedef struct _UnityMusicLensFilterParser UnityMusicLensFilterParser;
56
typedef struct _UnityMusicLensFilterParserClass UnityMusicLensFilterParserClass;
57
#define _sqlite3_finalize0(var) ((var == NULL) ? NULL : (var = (sqlite3_finalize (var), NULL)))
59
#define UNITY_MUSIC_LENS_TYPE_TRACK (unity_music_lens_track_get_type ())
60
#define UNITY_MUSIC_LENS_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UNITY_MUSIC_LENS_TYPE_TRACK, UnityMusicLensTrack))
61
#define UNITY_MUSIC_LENS_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UNITY_MUSIC_LENS_TYPE_TRACK, UnityMusicLensTrackClass))
62
#define UNITY_MUSIC_LENS_IS_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UNITY_MUSIC_LENS_TYPE_TRACK))
63
#define UNITY_MUSIC_LENS_IS_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UNITY_MUSIC_LENS_TYPE_TRACK))
64
#define UNITY_MUSIC_LENS_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UNITY_MUSIC_LENS_TYPE_TRACK, UnityMusicLensTrackClass))
66
typedef struct _UnityMusicLensTrack UnityMusicLensTrack;
67
typedef struct _UnityMusicLensTrackClass UnityMusicLensTrackClass;
69
#define UNITY_MUSIC_LENS_TYPE_ALBUM (unity_music_lens_album_get_type ())
70
#define UNITY_MUSIC_LENS_ALBUM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UNITY_MUSIC_LENS_TYPE_ALBUM, UnityMusicLensAlbum))
71
#define UNITY_MUSIC_LENS_ALBUM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UNITY_MUSIC_LENS_TYPE_ALBUM, UnityMusicLensAlbumClass))
72
#define UNITY_MUSIC_LENS_IS_ALBUM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UNITY_MUSIC_LENS_TYPE_ALBUM))
73
#define UNITY_MUSIC_LENS_IS_ALBUM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UNITY_MUSIC_LENS_TYPE_ALBUM))
74
#define UNITY_MUSIC_LENS_ALBUM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UNITY_MUSIC_LENS_TYPE_ALBUM, UnityMusicLensAlbumClass))
76
typedef struct _UnityMusicLensAlbum UnityMusicLensAlbum;
77
typedef struct _UnityMusicLensAlbumClass UnityMusicLensAlbumClass;
79
#define UNITY_MUSIC_LENS_TYPE_CATEGORY (unity_music_lens_category_get_type ())
80
#define _g_string_free0(var) ((var == NULL) ? NULL : (var = (g_string_free (var, TRUE), NULL)))
81
#define __g_slist_free__g_object_unref0_0(var) ((var == NULL) ? NULL : (var = (_g_slist_free__g_object_unref0_ (var), NULL)))
83
#define UNITY_MUSIC_LENS_TYPE_BANSHEE_FILTER_PARSER (unity_music_lens_banshee_filter_parser_get_type ())
84
#define UNITY_MUSIC_LENS_BANSHEE_FILTER_PARSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UNITY_MUSIC_LENS_TYPE_BANSHEE_FILTER_PARSER, UnityMusicLensBansheeFilterParser))
85
#define UNITY_MUSIC_LENS_IS_BANSHEE_FILTER_PARSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UNITY_MUSIC_LENS_TYPE_BANSHEE_FILTER_PARSER))
86
#define UNITY_MUSIC_LENS_BANSHEE_FILTER_PARSER_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), UNITY_MUSIC_LENS_TYPE_BANSHEE_FILTER_PARSER, UnityMusicLensBansheeFilterParserIface))
88
typedef struct _UnityMusicLensBansheeFilterParser UnityMusicLensBansheeFilterParser;
89
typedef struct _UnityMusicLensBansheeFilterParserIface UnityMusicLensBansheeFilterParserIface;
91
#define UNITY_MUSIC_LENS_TYPE_GENRE_FILTER_PARSER (unity_music_lens_genre_filter_parser_get_type ())
92
#define UNITY_MUSIC_LENS_GENRE_FILTER_PARSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UNITY_MUSIC_LENS_TYPE_GENRE_FILTER_PARSER, UnityMusicLensGenreFilterParser))
93
#define UNITY_MUSIC_LENS_GENRE_FILTER_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UNITY_MUSIC_LENS_TYPE_GENRE_FILTER_PARSER, UnityMusicLensGenreFilterParserClass))
94
#define UNITY_MUSIC_LENS_IS_GENRE_FILTER_PARSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UNITY_MUSIC_LENS_TYPE_GENRE_FILTER_PARSER))
95
#define UNITY_MUSIC_LENS_IS_GENRE_FILTER_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UNITY_MUSIC_LENS_TYPE_GENRE_FILTER_PARSER))
96
#define UNITY_MUSIC_LENS_GENRE_FILTER_PARSER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UNITY_MUSIC_LENS_TYPE_GENRE_FILTER_PARSER, UnityMusicLensGenreFilterParserClass))
98
typedef struct _UnityMusicLensGenreFilterParser UnityMusicLensGenreFilterParser;
99
typedef struct _UnityMusicLensGenreFilterParserClass UnityMusicLensGenreFilterParserClass;
101
#define UNITY_MUSIC_LENS_TYPE_BANSHEE_GENRE_FILTER_PARSER (unity_music_lens_banshee_genre_filter_parser_get_type ())
102
#define UNITY_MUSIC_LENS_BANSHEE_GENRE_FILTER_PARSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UNITY_MUSIC_LENS_TYPE_BANSHEE_GENRE_FILTER_PARSER, UnityMusicLensBansheeGenreFilterParser))
103
#define UNITY_MUSIC_LENS_BANSHEE_GENRE_FILTER_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UNITY_MUSIC_LENS_TYPE_BANSHEE_GENRE_FILTER_PARSER, UnityMusicLensBansheeGenreFilterParserClass))
104
#define UNITY_MUSIC_LENS_IS_BANSHEE_GENRE_FILTER_PARSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UNITY_MUSIC_LENS_TYPE_BANSHEE_GENRE_FILTER_PARSER))
105
#define UNITY_MUSIC_LENS_IS_BANSHEE_GENRE_FILTER_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UNITY_MUSIC_LENS_TYPE_BANSHEE_GENRE_FILTER_PARSER))
106
#define UNITY_MUSIC_LENS_BANSHEE_GENRE_FILTER_PARSER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UNITY_MUSIC_LENS_TYPE_BANSHEE_GENRE_FILTER_PARSER, UnityMusicLensBansheeGenreFilterParserClass))
108
typedef struct _UnityMusicLensBansheeGenreFilterParser UnityMusicLensBansheeGenreFilterParser;
109
typedef struct _UnityMusicLensBansheeGenreFilterParserClass UnityMusicLensBansheeGenreFilterParserClass;
111
#define UNITY_MUSIC_LENS_TYPE_DECADE_FILTER_PARSER (unity_music_lens_decade_filter_parser_get_type ())
112
#define UNITY_MUSIC_LENS_DECADE_FILTER_PARSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UNITY_MUSIC_LENS_TYPE_DECADE_FILTER_PARSER, UnityMusicLensDecadeFilterParser))
113
#define UNITY_MUSIC_LENS_DECADE_FILTER_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UNITY_MUSIC_LENS_TYPE_DECADE_FILTER_PARSER, UnityMusicLensDecadeFilterParserClass))
114
#define UNITY_MUSIC_LENS_IS_DECADE_FILTER_PARSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UNITY_MUSIC_LENS_TYPE_DECADE_FILTER_PARSER))
115
#define UNITY_MUSIC_LENS_IS_DECADE_FILTER_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UNITY_MUSIC_LENS_TYPE_DECADE_FILTER_PARSER))
116
#define UNITY_MUSIC_LENS_DECADE_FILTER_PARSER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UNITY_MUSIC_LENS_TYPE_DECADE_FILTER_PARSER, UnityMusicLensDecadeFilterParserClass))
118
typedef struct _UnityMusicLensDecadeFilterParser UnityMusicLensDecadeFilterParser;
119
typedef struct _UnityMusicLensDecadeFilterParserClass UnityMusicLensDecadeFilterParserClass;
121
#define UNITY_MUSIC_LENS_TYPE_BANSHEE_DECADE_FILTER_PARSER (unity_music_lens_banshee_decade_filter_parser_get_type ())
122
#define UNITY_MUSIC_LENS_BANSHEE_DECADE_FILTER_PARSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UNITY_MUSIC_LENS_TYPE_BANSHEE_DECADE_FILTER_PARSER, UnityMusicLensBansheeDecadeFilterParser))
123
#define UNITY_MUSIC_LENS_BANSHEE_DECADE_FILTER_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UNITY_MUSIC_LENS_TYPE_BANSHEE_DECADE_FILTER_PARSER, UnityMusicLensBansheeDecadeFilterParserClass))
124
#define UNITY_MUSIC_LENS_IS_BANSHEE_DECADE_FILTER_PARSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UNITY_MUSIC_LENS_TYPE_BANSHEE_DECADE_FILTER_PARSER))
125
#define UNITY_MUSIC_LENS_IS_BANSHEE_DECADE_FILTER_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UNITY_MUSIC_LENS_TYPE_BANSHEE_DECADE_FILTER_PARSER))
126
#define UNITY_MUSIC_LENS_BANSHEE_DECADE_FILTER_PARSER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UNITY_MUSIC_LENS_TYPE_BANSHEE_DECADE_FILTER_PARSER, UnityMusicLensBansheeDecadeFilterParserClass))
128
typedef struct _UnityMusicLensBansheeDecadeFilterParser UnityMusicLensBansheeDecadeFilterParser;
129
typedef struct _UnityMusicLensBansheeDecadeFilterParserClass UnityMusicLensBansheeDecadeFilterParserClass;
132
UNITY_MUSIC_LENS_DATABASE_ERROR_FAILED_TO_OPEN
133
} UnityMusicLensDatabaseError;
134
#define UNITY_MUSIC_LENS_DATABASE_ERROR unity_music_lens_database_error_quark ()
135
struct _UnityMusicLensBansheeCollection {
136
GObject parent_instance;
137
UnityMusicLensBansheeCollectionPrivate * priv;
140
struct _UnityMusicLensBansheeCollectionClass {
141
GObjectClass parent_class;
144
struct _UnityMusicLensBansheeCollectionPrivate {
149
UNITY_MUSIC_LENS_CATEGORY_SONGS,
150
UNITY_MUSIC_LENS_CATEGORY_ALBUMS,
151
UNITY_MUSIC_LENS_CATEGORY_PURCHASE,
152
UNITY_MUSIC_LENS_CATEGORY_MUSIC,
153
UNITY_MUSIC_LENS_CATEGORY_RADIOS
154
} UnityMusicLensCategory;
156
struct _UnityMusicLensBansheeFilterParserIface {
157
GTypeInterface parent_iface;
161
static gpointer unity_music_lens_banshee_collection_parent_class = NULL;
163
GQuark unity_music_lens_database_error_quark (void);
164
GType unity_music_lens_banshee_collection_get_type (void) G_GNUC_CONST;
165
#define UNITY_MUSIC_LENS_BANSHEE_COLLECTION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), UNITY_MUSIC_LENS_TYPE_BANSHEE_COLLECTION, UnityMusicLensBansheeCollectionPrivate))
167
UNITY_MUSIC_LENS_BANSHEE_COLLECTION_DUMMY_PROPERTY
169
#define UNITY_MUSIC_LENS_BANSHEE_COLLECTION_MAX_RESULTS 100
170
UnityMusicLensBansheeCollection* unity_music_lens_banshee_collection_new (GError** error);
171
UnityMusicLensBansheeCollection* unity_music_lens_banshee_collection_construct (GType object_type, GError** error);
172
GType unity_music_lens_filter_parser_get_type (void) G_GNUC_CONST;
173
void unity_music_lens_banshee_collection_search (UnityMusicLensBansheeCollection* self, UnityLensSearch* search, UnitySearchType search_type, GList* filters, gint max_results, gint category_override);
174
static gchar* unity_music_lens_banshee_collection_build_sql_from_filters (UnityMusicLensBansheeCollection* self, GList* filters);
175
static gint unity_music_lens_banshee_collection_execute_sql (UnityMusicLensBansheeCollection* self, const gchar* sql, sqlite3_stmt** stmt);
176
static gchar* unity_music_lens_banshee_collection_get_album_artwork_path (UnityMusicLensBansheeCollection* self, const gchar* artwork_id);
177
UnityMusicLensTrack* unity_music_lens_track_new (void);
178
UnityMusicLensTrack* unity_music_lens_track_construct (GType object_type);
179
GType unity_music_lens_track_get_type (void) G_GNUC_CONST;
180
void unity_music_lens_track_set_title (UnityMusicLensTrack* self, const gchar* value);
181
void unity_music_lens_track_set_artist (UnityMusicLensTrack* self, const gchar* value);
182
void unity_music_lens_track_set_uri (UnityMusicLensTrack* self, const gchar* value);
183
void unity_music_lens_track_set_mime_type (UnityMusicLensTrack* self, const gchar* value);
184
void unity_music_lens_track_set_artwork_path (UnityMusicLensTrack* self, const gchar* value);
185
UnityMusicLensAlbum* unity_music_lens_album_new (void);
186
UnityMusicLensAlbum* unity_music_lens_album_construct (GType object_type);
187
GType unity_music_lens_album_get_type (void) G_GNUC_CONST;
188
void unity_music_lens_album_set_title (UnityMusicLensAlbum* self, const gchar* value);
189
void unity_music_lens_album_set_artist (UnityMusicLensAlbum* self, const gchar* value);
190
const gchar* unity_music_lens_album_get_artist (UnityMusicLensAlbum* self);
191
const gchar* unity_music_lens_album_get_title (UnityMusicLensAlbum* self);
192
void unity_music_lens_album_set_uri (UnityMusicLensAlbum* self, const gchar* value);
193
void unity_music_lens_album_set_artwork_path (UnityMusicLensAlbum* self, const gchar* value);
194
GType unity_music_lens_category_get_type (void) G_GNUC_CONST;
195
const gchar* unity_music_lens_track_get_uri (UnityMusicLensTrack* self);
196
const gchar* unity_music_lens_track_get_artwork_path (UnityMusicLensTrack* self);
197
const gchar* unity_music_lens_track_get_mime_type (UnityMusicLensTrack* self);
198
const gchar* unity_music_lens_track_get_title (UnityMusicLensTrack* self);
199
const gchar* unity_music_lens_track_get_artist (UnityMusicLensTrack* self);
200
gchar** unity_music_lens_banshee_collection_get_track_uris (UnityMusicLensBansheeCollection* self, UnityMusicLensAlbum* album, int* result_length1);
201
const gchar* unity_music_lens_album_get_uri (UnityMusicLensAlbum* self);
202
const gchar* unity_music_lens_album_get_artwork_path (UnityMusicLensAlbum* self);
203
static UnityMusicLensTrack* unity_music_lens_banshee_collection_get_track (UnityMusicLensBansheeCollection* self, sqlite3_stmt* stmt);
204
void unity_music_lens_track_set_album (UnityMusicLensTrack* self, const gchar* value);
205
void unity_music_lens_track_set_genre (UnityMusicLensTrack* self, const gchar* value);
206
void unity_music_lens_track_set_track_number (UnityMusicLensTrack* self, gint value);
207
void unity_music_lens_track_set_year (UnityMusicLensTrack* self, gint value);
208
void unity_music_lens_track_set_play_count (UnityMusicLensTrack* self, gint value);
209
void unity_music_lens_track_set_duration (UnityMusicLensTrack* self, gint value);
210
UnityMusicLensTrack* unity_music_lens_banshee_collection_get_album_track (UnityMusicLensBansheeCollection* self, const gchar* uri);
211
GSList* unity_music_lens_banshee_collection_get_album_tracks_detailed (UnityMusicLensBansheeCollection* self, const gchar* album_title, const gchar* album_artist);
212
static void _g_object_unref0_ (gpointer var);
213
static void _g_slist_free__g_object_unref0_ (GSList* self);
214
GType unity_music_lens_banshee_filter_parser_get_type (void) G_GNUC_CONST;
215
GType unity_music_lens_genre_filter_parser_get_type (void) G_GNUC_CONST;
216
UnityMusicLensBansheeGenreFilterParser* unity_music_lens_banshee_genre_filter_parser_new (UnityMusicLensGenreFilterParser* parser);
217
UnityMusicLensBansheeGenreFilterParser* unity_music_lens_banshee_genre_filter_parser_construct (GType object_type, UnityMusicLensGenreFilterParser* parser);
218
GType unity_music_lens_banshee_genre_filter_parser_get_type (void) G_GNUC_CONST;
219
GType unity_music_lens_decade_filter_parser_get_type (void) G_GNUC_CONST;
220
UnityMusicLensBansheeDecadeFilterParser* unity_music_lens_banshee_decade_filter_parser_new (UnityMusicLensDecadeFilterParser* parser);
221
UnityMusicLensBansheeDecadeFilterParser* unity_music_lens_banshee_decade_filter_parser_construct (GType object_type, UnityMusicLensDecadeFilterParser* parser);
222
GType unity_music_lens_banshee_decade_filter_parser_get_type (void) G_GNUC_CONST;
223
gchar* unity_music_lens_filter_parser_parse (UnityMusicLensFilterParser* self);
224
static void unity_music_lens_banshee_collection_finalize (GObject* obj);
225
static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
226
static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
227
static gint _vala_array_length (gpointer array);
230
GQuark unity_music_lens_database_error_quark (void) {
231
return g_quark_from_static_string ("unity_music_lens_database_error-quark");
235
UnityMusicLensBansheeCollection* unity_music_lens_banshee_collection_construct (GType object_type, GError** error) {
236
UnityMusicLensBansheeCollection * self = NULL;
237
const gchar* _tmp0_ = NULL;
238
gchar* _tmp1_ = NULL;
240
sqlite3* _tmp3_ = NULL;
245
GError * _inner_error_ = NULL;
246
self = (UnityMusicLensBansheeCollection*) g_object_new (object_type, NULL);
247
_tmp0_ = g_get_user_config_dir ();
248
_tmp1_ = g_strdup_printf ("%s/banshee-1/banshee.db", _tmp0_);
250
_tmp4_ = sqlite3_open (_tmp2_, &_tmp3_);
251
_sqlite3_close0 (self->priv->db);
252
self->priv->db = _tmp3_;
257
if (_tmp6_ != SQLITE_OK) {
260
const gchar* _tmp9_ = NULL;
263
_tmp8_ = self->priv->db;
264
_tmp9_ = sqlite3_errmsg (_tmp8_);
265
g_printerr ("failed to open db, %d, %s\n", _tmp7_, _tmp9_);
266
_tmp10_ = g_error_new_literal (UNITY_MUSIC_LENS_DATABASE_ERROR, UNITY_MUSIC_LENS_DATABASE_ERROR_FAILED_TO_OPEN, "Failed to open banshee database");
267
_inner_error_ = _tmp10_;
268
if (_inner_error_->domain == UNITY_MUSIC_LENS_DATABASE_ERROR) {
269
g_propagate_error (error, _inner_error_);
270
_g_object_unref0 (self);
273
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);
274
g_clear_error (&_inner_error_);
282
UnityMusicLensBansheeCollection* unity_music_lens_banshee_collection_new (GError** error) {
283
return unity_music_lens_banshee_collection_construct (UNITY_MUSIC_LENS_TYPE_BANSHEE_COLLECTION, error);
288
* Performs a search on the banshee db
290
static gpointer _g_object_ref0 (gpointer self) {
291
return self ? g_object_ref (self) : NULL;
295
void unity_music_lens_banshee_collection_search (UnityMusicLensBansheeCollection* self, UnityLensSearch* search, UnitySearchType search_type, GList* filters, gint max_results, gint category_override) {
296
static const gint TRACK_TITLE = 0;
297
static const gint TRACK_URI = 1;
298
static const gint TRACK_MIMETYPE = 2;
299
static const gint ALBUM_TITLE = 3;
300
static const gint ALBUM_ARTWORKID = 4;
301
static const gint ARTIST_NAME = 5;
303
sqlite3_stmt* stmt = NULL;
304
UnityLensSearch* _tmp0_;
305
DeeSerializableModel* _tmp1_;
306
DeeSerializableModel* _tmp2_;
307
DeeSerializableModel* _tmp3_;
308
DeeSerializableModel* results_model;
309
DeeSerializableModel* _tmp4_;
310
DeeSerializableModel* _tmp5_;
311
DeeSerializableModel* helper_model;
316
gchar* _tmp14_ = NULL;
320
UnityLensSearch* _tmp18_;
321
const gchar* _tmp19_;
322
const gchar* _tmp20_;
323
UnityLensSearch* _tmp21_;
324
const gchar* _tmp22_;
325
const gchar* _tmp23_;
326
UnityLensSearch* _tmp24_;
327
const gchar* _tmp25_;
328
const gchar* _tmp26_;
329
const gchar* _tmp27_;
331
gchar* _tmp29_ = NULL;
333
const gchar* _tmp30_;
334
sqlite3_stmt* _tmp31_ = NULL;
336
sqlite3_stmt* _tmp33_;
337
DeeSerializableModel* _tmp136_;
338
DeeSerializableModel* _tmp137_;
339
DeeSerializableModel* _tmp138_;
340
DeeModelIter* _tmp139_ = NULL;
342
DeeSerializableModel* _tmp140_;
343
DeeModelIter* _tmp141_ = NULL;
345
g_return_if_fail (self != NULL);
346
g_return_if_fail (search != NULL);
349
_tmp1_ = unity_lens_search_get_results_model (_tmp0_);
351
_tmp3_ = _g_object_ref0 (_tmp2_);
352
results_model = _tmp3_;
353
_tmp4_ = results_model;
354
_tmp5_ = _g_object_ref0 (_tmp4_);
355
helper_model = _tmp5_;
356
_tmp6_ = category_override;
358
DeeSequenceModel* _tmp7_;
359
DeeSerializableModel* _tmp8_;
360
DeeSerializableModel* _tmp9_;
362
gchar** _tmp11_ = NULL;
363
_tmp7_ = (DeeSequenceModel*) dee_sequence_model_new ();
364
_g_object_unref0 (helper_model);
365
helper_model = (DeeSerializableModel*) _tmp7_;
366
_tmp8_ = helper_model;
367
_tmp9_ = results_model;
368
_tmp11_ = dee_model_get_schema ((DeeModel*) _tmp9_, &_tmp10_);
369
dee_model_set_schema_full ((DeeModel*) _tmp8_, _tmp11_, (guint) _tmp10_);
371
_tmp12_ = gee_tree_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL);
374
_tmp14_ = unity_music_lens_banshee_collection_build_sql_from_filters (self, _tmp13_);
375
filters_sql = _tmp14_;
376
_tmp16_ = max_results;
377
if (_tmp16_ == (-1)) {
378
_tmp15_ = UNITY_MUSIC_LENS_BANSHEE_COLLECTION_MAX_RESULTS;
381
_tmp17_ = max_results;
385
_tmp19_ = unity_lens_search_get_search_string (_tmp18_);
388
_tmp22_ = unity_lens_search_get_search_string (_tmp21_);
391
_tmp25_ = unity_lens_search_get_search_string (_tmp24_);
393
_tmp27_ = filters_sql;
395
_tmp29_ = g_strdup_printf ("SELECT CoreTracks.Title, CoreTracks.Uri, CoreTracks.MimeType, CoreAlbu" \
396
"ms.Title, CoreAlbums.ArtworkID, CoreArtists.Name " \
397
"FROM CoreTracks \n" \
398
" CROSS JOIN CoreArtists, CoreAlbums \n" \
399
" WHERE CoreArtists.ArtistID = CoreTracks.ArtistID" \
401
" AND CoreAlbums.Albu" \
402
"mID = CoreTracks.AlbumID \n" \
403
" AND CoreTracks.Prim" \
404
"arySourceID = 1 \n" \
405
"\t\t\t\t\t\t AND ((CoreArtists.NameLowered LIKE '%%%s%%' ESCAPE '\\'" \
407
"\t\t\t\t\t\t \t AND CoreArtists.NameLowered IS NOT NULL) \n" \
408
"\t\t\t\t\t\t OR (CoreAlbums.TitleLowered LIKE '%%%s%%' ESCAPE '" \
410
"\t\t\t\t\t\t \t AND CoreAlbums.TitleLowered IS NOT NULL) \n" \
411
"\t\t\t\t\t\t \tOR (CoreTracks.TitleLowered LIKE '%%%s%%' ESCAPE '\\' " \
413
"\t\t\t\t\t\t \t AND CoreTracks.TitleLowered IS NOT NULL)\n" \
416
" ORDER BY CoreTracks.Score DESC\n" \
417
" LIMIT 0, %d;", _tmp20_, _tmp23_, _tmp26_, _tmp27_, _tmp28_);
420
_tmp32_ = unity_music_lens_banshee_collection_execute_sql (self, _tmp30_, &_tmp31_);
421
_sqlite3_finalize0 (stmt);
425
if (_tmp33_ == NULL) {
427
_g_free0 (filters_sql);
428
_g_object_unref0 (albums);
429
_g_object_unref0 (helper_model);
430
_g_object_unref0 (results_model);
431
_sqlite3_finalize0 (stmt);
439
sqlite3_stmt* _tmp37_;
446
if (!(_tmp36_ == SQLITE_ROW)) {
452
_tmp38_ = sqlite3_step (_tmp37_);
462
sqlite3_stmt* _tmp40_;
463
const gchar* _tmp41_ = NULL;
464
gchar* _tmp42_ = NULL;
466
UnityMusicLensTrack* _tmp43_;
467
UnityMusicLensTrack* track;
468
UnityMusicLensTrack* _tmp44_;
469
sqlite3_stmt* _tmp45_;
470
const gchar* _tmp46_ = NULL;
471
UnityMusicLensTrack* _tmp47_;
472
sqlite3_stmt* _tmp48_;
473
const gchar* _tmp49_ = NULL;
474
UnityMusicLensTrack* _tmp50_;
475
sqlite3_stmt* _tmp51_;
476
const gchar* _tmp52_ = NULL;
477
UnityMusicLensTrack* _tmp53_;
478
sqlite3_stmt* _tmp54_;
479
const gchar* _tmp55_ = NULL;
480
UnityMusicLensTrack* _tmp56_;
481
const gchar* _tmp57_;
482
UnityMusicLensAlbum* _tmp58_;
483
UnityMusicLensAlbum* album;
484
UnityMusicLensAlbum* _tmp59_;
485
sqlite3_stmt* _tmp60_;
486
const gchar* _tmp61_ = NULL;
487
UnityMusicLensAlbum* _tmp62_;
488
sqlite3_stmt* _tmp63_;
489
const gchar* _tmp64_ = NULL;
490
UnityMusicLensAlbum* _tmp65_;
491
UnityMusicLensAlbum* _tmp66_;
492
const gchar* _tmp67_;
493
const gchar* _tmp68_;
494
UnityMusicLensAlbum* _tmp69_;
495
const gchar* _tmp70_;
496
const gchar* _tmp71_;
497
gchar* _tmp72_ = NULL;
499
UnityMusicLensAlbum* _tmp74_;
500
const gchar* _tmp75_;
503
DeeSerializableModel* _tmp78_;
504
UnityMusicLensTrack* _tmp79_;
505
const gchar* _tmp80_;
506
const gchar* _tmp81_;
507
UnityMusicLensTrack* _tmp82_;
508
const gchar* _tmp83_;
509
const gchar* _tmp84_;
511
UnityMusicLensTrack* _tmp86_;
512
const gchar* _tmp87_;
513
const gchar* _tmp88_;
514
UnityMusicLensTrack* _tmp89_;
515
const gchar* _tmp90_;
516
const gchar* _tmp91_;
517
UnityMusicLensTrack* _tmp92_;
518
const gchar* _tmp93_;
519
const gchar* _tmp94_;
520
UnityMusicLensTrack* _tmp95_;
521
const gchar* _tmp96_;
522
const gchar* _tmp97_;
524
UnityMusicLensAlbum* _tmp99_;
525
const gchar* _tmp100_;
526
const gchar* _tmp101_;
527
UnityMusicLensAlbum* _tmp102_;
528
const gchar* _tmp103_;
529
const gchar* _tmp104_;
532
gboolean _tmp107_ = FALSE;
535
_tmp41_ = sqlite3_column_text (_tmp40_, ALBUM_ARTWORKID);
536
_tmp42_ = unity_music_lens_banshee_collection_get_album_artwork_path (self, _tmp41_);
537
artwork_path = _tmp42_;
538
_tmp43_ = unity_music_lens_track_new ();
542
_tmp46_ = sqlite3_column_text (_tmp45_, TRACK_TITLE);
543
unity_music_lens_track_set_title (_tmp44_, _tmp46_);
546
_tmp49_ = sqlite3_column_text (_tmp48_, ARTIST_NAME);
547
unity_music_lens_track_set_artist (_tmp47_, _tmp49_);
550
_tmp52_ = sqlite3_column_text (_tmp51_, TRACK_URI);
551
unity_music_lens_track_set_uri (_tmp50_, _tmp52_);
554
_tmp55_ = sqlite3_column_text (_tmp54_, TRACK_MIMETYPE);
555
unity_music_lens_track_set_mime_type (_tmp53_, _tmp55_);
557
_tmp57_ = artwork_path;
558
unity_music_lens_track_set_artwork_path (_tmp56_, _tmp57_);
559
_tmp58_ = unity_music_lens_album_new ();
563
_tmp61_ = sqlite3_column_text (_tmp60_, ALBUM_TITLE);
564
unity_music_lens_album_set_title (_tmp59_, _tmp61_);
567
_tmp64_ = sqlite3_column_text (_tmp63_, ARTIST_NAME);
568
unity_music_lens_album_set_artist (_tmp62_, _tmp64_);
571
_tmp67_ = unity_music_lens_album_get_artist (_tmp66_);
574
_tmp70_ = unity_music_lens_album_get_title (_tmp69_);
576
_tmp72_ = g_strdup_printf ("album://%s/%s", _tmp68_, _tmp71_);
578
unity_music_lens_album_set_uri (_tmp65_, _tmp73_);
581
_tmp75_ = artwork_path;
582
unity_music_lens_album_set_artwork_path (_tmp74_, _tmp75_);
583
category_id = (guint) UNITY_MUSIC_LENS_CATEGORY_SONGS;
584
_tmp76_ = category_override;
587
_tmp77_ = category_override;
588
category_id = (guint) _tmp77_;
590
_tmp78_ = helper_model;
592
_tmp80_ = unity_music_lens_track_get_uri (_tmp79_);
595
_tmp83_ = unity_music_lens_track_get_artwork_path (_tmp82_);
597
_tmp85_ = category_id;
599
_tmp87_ = unity_music_lens_track_get_mime_type (_tmp86_);
602
_tmp90_ = unity_music_lens_track_get_title (_tmp89_);
605
_tmp93_ = unity_music_lens_track_get_artist (_tmp92_);
608
_tmp96_ = unity_music_lens_track_get_uri (_tmp95_);
610
dee_model_append ((DeeModel*) _tmp78_, _tmp81_, _tmp84_, _tmp85_, _tmp88_, _tmp91_, _tmp94_, _tmp97_, NULL);
613
_tmp100_ = unity_music_lens_album_get_artist (_tmp99_);
616
_tmp103_ = unity_music_lens_album_get_title (_tmp102_);
618
_tmp105_ = g_strconcat (_tmp101_, _tmp104_, NULL);
620
_tmp107_ = gee_abstract_collection_add ((GeeAbstractCollection*) _tmp98_, _tmp106_);
625
GString* uri_list_builder;
626
UnityMusicLensAlbum* _tmp110_;
628
gchar** _tmp112_ = NULL;
630
DeeSerializableModel* _tmp120_;
631
UnityMusicLensAlbum* _tmp121_;
632
const gchar* _tmp122_;
633
const gchar* _tmp123_;
634
UnityMusicLensAlbum* _tmp124_;
635
const gchar* _tmp125_;
636
const gchar* _tmp126_;
638
UnityMusicLensAlbum* _tmp128_;
639
const gchar* _tmp129_;
640
const gchar* _tmp130_;
641
UnityMusicLensAlbum* _tmp131_;
642
const gchar* _tmp132_;
643
const gchar* _tmp133_;
645
const gchar* _tmp135_;
646
_tmp109_ = g_string_new ("");
647
uri_list_builder = _tmp109_;
649
_tmp112_ = unity_music_lens_banshee_collection_get_track_uris (self, _tmp110_, &_tmp111_);
651
gchar** uri_collection = NULL;
652
gint uri_collection_length1 = 0;
653
gint _uri_collection_size_ = 0;
655
uri_collection = _tmp112_;
656
uri_collection_length1 = _tmp111_;
657
for (uri_it = 0; uri_it < _tmp111_; uri_it = uri_it + 1) {
660
_tmp113_ = g_strdup (uri_collection[uri_it]);
665
const gchar* _tmp116_;
667
_tmp114_ = uri_list_builder;
668
g_string_append (_tmp114_, "'");
669
_tmp115_ = uri_list_builder;
671
g_string_append (_tmp115_, _tmp116_);
672
_tmp117_ = uri_list_builder;
673
g_string_append (_tmp117_, "' ");
677
uri_collection = (_vala_array_free (uri_collection, uri_collection_length1, (GDestroyNotify) g_free), NULL);
679
category_id = (guint) UNITY_MUSIC_LENS_CATEGORY_ALBUMS;
680
_tmp118_ = category_override;
683
_tmp119_ = category_override;
684
category_id = (guint) _tmp119_;
686
_tmp120_ = results_model;
688
_tmp122_ = unity_music_lens_album_get_uri (_tmp121_);
691
_tmp125_ = unity_music_lens_album_get_artwork_path (_tmp124_);
693
_tmp127_ = category_id;
695
_tmp129_ = unity_music_lens_album_get_title (_tmp128_);
698
_tmp132_ = unity_music_lens_album_get_artist (_tmp131_);
700
_tmp134_ = uri_list_builder;
701
_tmp135_ = _tmp134_->str;
702
dee_model_append ((DeeModel*) _tmp120_, _tmp123_, _tmp126_, _tmp127_, "audio/mp3", _tmp130_, _tmp133_, _tmp135_, NULL);
703
_g_string_free0 (uri_list_builder);
705
_g_object_unref0 (album);
706
_g_object_unref0 (track);
707
_g_free0 (artwork_path);
717
_tmp136_ = helper_model;
718
_tmp137_ = results_model;
719
if (_tmp136_ == _tmp137_) {
721
_g_free0 (filters_sql);
722
_g_object_unref0 (albums);
723
_g_object_unref0 (helper_model);
724
_g_object_unref0 (results_model);
725
_sqlite3_finalize0 (stmt);
728
_tmp138_ = helper_model;
729
_tmp139_ = dee_model_get_first_iter ((DeeModel*) _tmp138_);
731
_tmp140_ = helper_model;
732
_tmp141_ = dee_model_get_last_iter ((DeeModel*) _tmp140_);
735
DeeModelIter* _tmp142_;
736
DeeModelIter* _tmp143_;
737
DeeSerializableModel* _tmp144_;
738
DeeModelIter* _tmp145_;
740
GVariant** _tmp147_ = NULL;
744
DeeSerializableModel* _tmp148_;
746
gint _tmp149__length1;
747
DeeSerializableModel* _tmp150_;
748
DeeModelIter* _tmp151_;
749
DeeModelIter* _tmp152_ = NULL;
752
if (!(_tmp142_ != _tmp143_)) {
755
_tmp144_ = helper_model;
757
_tmp147_ = _tmp146_ = dee_model_get_row ((DeeModel*) _tmp144_, _tmp145_, NULL);
759
row_length1 = _vala_array_length (_tmp146_);
760
_row_size_ = row_length1;
761
_tmp148_ = results_model;
763
_tmp149__length1 = row_length1;
764
dee_model_append_row ((DeeModel*) _tmp148_, _tmp149_);
765
_tmp150_ = helper_model;
767
_tmp152_ = dee_model_next ((DeeModel*) _tmp150_, _tmp151_);
769
row = (_vala_array_free (row, row_length1, (GDestroyNotify) g_variant_unref), NULL);
772
_g_free0 (filters_sql);
773
_g_object_unref0 (albums);
774
_g_object_unref0 (helper_model);
775
_g_object_unref0 (results_model);
776
_sqlite3_finalize0 (stmt);
781
* Computes path for album artwork; checks if cover file exists, defaults to generic audio icon.
783
static gchar* unity_music_lens_banshee_collection_get_album_artwork_path (UnityMusicLensBansheeCollection* self, const gchar* artwork_id) {
784
gchar* result = NULL;
785
const gchar* _tmp0_ = NULL;
786
gchar* _tmp1_ = NULL;
787
gchar* album_art_dir;
790
gchar* _tmp4_ = NULL;
793
GFile* _tmp6_ = NULL;
796
gboolean _tmp8_ = FALSE;
797
g_return_val_if_fail (self != NULL, NULL);
798
g_return_val_if_fail (artwork_id != NULL, NULL);
799
_tmp0_ = g_get_user_cache_dir ();
800
_tmp1_ = g_strdup_printf ("%s/media-art/", _tmp0_);
801
album_art_dir = _tmp1_;
802
_tmp2_ = album_art_dir;
804
_tmp4_ = g_strdup_printf ("%s/%s.jpg", _tmp2_, _tmp3_);
805
artwork_path = _tmp4_;
806
_tmp5_ = artwork_path;
807
_tmp6_ = g_file_new_for_path (_tmp5_);
808
artwork_file = _tmp6_;
809
_tmp7_ = artwork_file;
810
_tmp8_ = g_file_query_exists (_tmp7_, NULL);
813
_tmp9_ = g_strdup ("audio-x-generic");
814
_g_free0 (artwork_path);
815
artwork_path = _tmp9_;
817
result = artwork_path;
818
_g_object_unref0 (artwork_file);
819
_g_free0 (album_art_dir);
825
* Creates Track object out of single row of Statement result data.
827
static UnityMusicLensTrack* unity_music_lens_banshee_collection_get_track (UnityMusicLensBansheeCollection* self, sqlite3_stmt* stmt) {
828
UnityMusicLensTrack* result = NULL;
829
static const gint TRACK_URI = 0;
830
static const gint TRACK_TITLE = 1;
831
static const gint ARTIST_NAME = 2;
832
static const gint ALBUM_TITLE = 3;
833
static const gint ALBUM_ARTWORKID = 4;
834
static const gint TRACK_MIMETYPE = 5;
835
static const gint TRACK_GENRE = 6;
836
static const gint TRACK_NUMBER = 7;
837
static const gint TRACK_YEAR = 8;
838
static const gint TRACK_PLAYCOUNT = 9;
839
static const gint TRACK_DURATION = 10;
840
UnityMusicLensTrack* _tmp0_;
841
UnityMusicLensTrack* track;
842
sqlite3_stmt* _tmp1_;
843
const gchar* _tmp2_ = NULL;
844
sqlite3_stmt* _tmp3_;
845
const gchar* _tmp4_ = NULL;
846
sqlite3_stmt* _tmp5_;
847
const gchar* _tmp6_ = NULL;
848
sqlite3_stmt* _tmp7_;
849
const gchar* _tmp8_ = NULL;
850
sqlite3_stmt* _tmp9_;
851
const gchar* _tmp10_ = NULL;
852
gchar* _tmp11_ = NULL;
854
sqlite3_stmt* _tmp13_;
855
const gchar* _tmp14_ = NULL;
856
sqlite3_stmt* _tmp15_;
857
const gchar* _tmp16_ = NULL;
858
sqlite3_stmt* _tmp17_;
860
sqlite3_stmt* _tmp19_;
862
sqlite3_stmt* _tmp21_;
864
sqlite3_stmt* _tmp23_;
866
g_return_val_if_fail (self != NULL, NULL);
867
g_return_val_if_fail (stmt != NULL, NULL);
868
_tmp0_ = unity_music_lens_track_new ();
871
_tmp2_ = sqlite3_column_text (_tmp1_, TRACK_URI);
872
unity_music_lens_track_set_uri (track, _tmp2_);
874
_tmp4_ = sqlite3_column_text (_tmp3_, TRACK_TITLE);
875
unity_music_lens_track_set_title (track, _tmp4_);
877
_tmp6_ = sqlite3_column_text (_tmp5_, ARTIST_NAME);
878
unity_music_lens_track_set_artist (track, _tmp6_);
880
_tmp8_ = sqlite3_column_text (_tmp7_, ALBUM_TITLE);
881
unity_music_lens_track_set_album (track, _tmp8_);
883
_tmp10_ = sqlite3_column_text (_tmp9_, ALBUM_ARTWORKID);
884
_tmp11_ = unity_music_lens_banshee_collection_get_album_artwork_path (self, _tmp10_);
886
unity_music_lens_track_set_artwork_path (track, _tmp12_);
889
_tmp14_ = sqlite3_column_text (_tmp13_, TRACK_MIMETYPE);
890
unity_music_lens_track_set_mime_type (track, _tmp14_);
892
_tmp16_ = sqlite3_column_text (_tmp15_, TRACK_GENRE);
893
unity_music_lens_track_set_genre (track, _tmp16_);
895
_tmp18_ = sqlite3_column_int (_tmp17_, TRACK_NUMBER);
896
unity_music_lens_track_set_track_number (track, _tmp18_);
898
_tmp20_ = sqlite3_column_int (_tmp19_, TRACK_YEAR);
899
unity_music_lens_track_set_year (track, _tmp20_);
901
_tmp22_ = sqlite3_column_int (_tmp21_, TRACK_PLAYCOUNT);
902
unity_music_lens_track_set_play_count (track, _tmp22_);
904
_tmp24_ = sqlite3_column_int (_tmp23_, TRACK_DURATION);
905
unity_music_lens_track_set_duration (track, _tmp24_);
912
* Returns single track.
914
UnityMusicLensTrack* unity_music_lens_banshee_collection_get_album_track (UnityMusicLensBansheeCollection* self, const gchar* uri) {
915
UnityMusicLensTrack* result = NULL;
918
sqlite3_stmt* stmt = NULL;
920
sqlite3_stmt* _tmp2_ = NULL;
923
sqlite3_stmt* _tmp4_;
926
GDestroyNotify _tmp7_;
927
sqlite3_stmt* _tmp8_;
930
g_return_val_if_fail (self != NULL, NULL);
931
g_return_val_if_fail (uri != NULL, NULL);
932
_tmp0_ = g_strdup ("SELECT \n" \
933
" CoreTracks.Uri,\n" \
934
" CoreTracks.Title,\n" \
935
" CoreArtists.Name,\n" \
936
" CoreAlbums.Title,\n" \
937
" CoreAlbums.ArtworkID,\n" \
938
" CoreTracks.MimeType,\n" \
939
" CoreTracks.Genre,\n" \
940
" CoreTracks.TrackNumber,\n" \
941
" CoreTracks.Year,\n" \
942
" CoreTracks.PlayCount,\n" \
943
" CoreTracks.Duration\n" \
944
" FROM CoreTracks \n" \
945
" CROSS JOIN CoreAlbums, CoreArtists \n" \
946
" WHERE CoreTracks.URI IS ?\n" \
947
" AND CoreArtists.ArtistID = CoreTracks.Artist" \
949
" AND CoreAlbums.AlbumID = CoreTracks.AlbumID");
952
_tmp3_ = unity_music_lens_banshee_collection_execute_sql (self, _tmp1_, &_tmp2_);
953
_sqlite3_finalize0 (stmt);
958
_tmp6_ = g_strdup (_tmp5_);
960
sqlite3_bind_text (_tmp4_, 1, _tmp6_, -1, _tmp7_);
962
_tmp9_ = sqlite3_step (_tmp8_);
965
if (_tmp10_ == SQLITE_ROW) {
966
sqlite3_stmt* _tmp11_;
967
UnityMusicLensTrack* _tmp12_ = NULL;
969
_tmp12_ = unity_music_lens_banshee_collection_get_track (self, _tmp11_);
971
_sqlite3_finalize0 (stmt);
976
_sqlite3_finalize0 (stmt);
983
* Returns all tracks of an album.
985
static void _g_object_unref0_ (gpointer var) {
986
(var == NULL) ? NULL : (var = (g_object_unref (var), NULL));
990
static void _g_slist_free__g_object_unref0_ (GSList* self) {
991
g_slist_foreach (self, (GFunc) _g_object_unref0_, NULL);
996
GSList* unity_music_lens_banshee_collection_get_album_tracks_detailed (UnityMusicLensBansheeCollection* self, const gchar* album_title, const gchar* album_artist) {
997
GSList* result = NULL;
1000
sqlite3_stmt* stmt = NULL;
1001
const gchar* _tmp1_;
1002
sqlite3_stmt* _tmp2_ = NULL;
1005
sqlite3_stmt* _tmp4_;
1006
const gchar* _tmp5_;
1008
GDestroyNotify _tmp7_;
1009
sqlite3_stmt* _tmp8_;
1010
const gchar* _tmp9_;
1012
GDestroyNotify _tmp11_;
1014
g_return_val_if_fail (self != NULL, NULL);
1015
g_return_val_if_fail (album_title != NULL, NULL);
1016
g_return_val_if_fail (album_artist != NULL, NULL);
1017
_tmp0_ = g_strdup ("SELECT \n" \
1018
" CoreTracks.Uri,\n" \
1019
" CoreTracks.Title,\n" \
1020
" CoreArtists.Name,\n" \
1021
" CoreAlbums.Title,\n" \
1022
" CoreAlbums.ArtworkID,\n" \
1023
" CoreTracks.MimeType,\n" \
1024
" CoreTracks.Genre,\n" \
1025
" CoreTracks.TrackNumber,\n" \
1026
" CoreTracks.Year,\n" \
1027
" CoreTracks.PlayCount,\n" \
1028
" CoreTracks.Duration\n" \
1029
" FROM CoreTracks \n" \
1030
" CROSS JOIN CoreAlbums, CoreArtists \n" \
1031
" WHERE CoreArtists.ArtistID = CoreTracks.ArtistID \n" \
1032
" AND CoreAlbums.AlbumID = CoreTracks.AlbumID " \
1034
" AND CoreAlbums.Title IS ?\n" \
1035
" AND CoreArtists.Name IS ?\n" \
1036
" AND CoreTracks.URI IS NOT NULL\n" \
1037
" ORDER BY CoreTracks.TrackNumber ASC");
1040
_tmp3_ = unity_music_lens_banshee_collection_execute_sql (self, _tmp1_, &_tmp2_);
1041
_sqlite3_finalize0 (stmt);
1045
_tmp5_ = album_title;
1046
_tmp6_ = g_strdup (_tmp5_);
1048
sqlite3_bind_text (_tmp4_, 1, _tmp6_, -1, _tmp7_);
1050
_tmp9_ = album_artist;
1051
_tmp10_ = g_strdup (_tmp9_);
1053
sqlite3_bind_text (_tmp8_, 2, _tmp10_, -1, _tmp11_);
1060
sqlite3_stmt* _tmp15_;
1067
if (!(_tmp14_ == SQLITE_ROW)) {
1073
_tmp16_ = sqlite3_step (_tmp15_);
1083
sqlite3_stmt* _tmp18_;
1084
UnityMusicLensTrack* _tmp19_ = NULL;
1086
_tmp19_ = unity_music_lens_banshee_collection_get_track (self, _tmp18_);
1087
tracks = g_slist_append (tracks, _tmp19_);
1098
_sqlite3_finalize0 (stmt);
1105
* returns an array like {uri://, uri://, ...}
1107
gchar** unity_music_lens_banshee_collection_get_track_uris (UnityMusicLensBansheeCollection* self, UnityMusicLensAlbum* album, int* result_length1) {
1108
gchar** result = NULL;
1109
static const gint URI_COLUMN = 0;
1111
sqlite3_stmt* stmt = NULL;
1112
UnityMusicLensAlbum* _tmp0_;
1113
const gchar* _tmp1_;
1114
const gchar* _tmp2_;
1115
UnityMusicLensAlbum* _tmp3_;
1116
const gchar* _tmp4_;
1117
const gchar* _tmp5_;
1118
gchar* _tmp6_ = NULL;
1120
const gchar* _tmp7_;
1121
sqlite3_stmt* _tmp8_ = NULL;
1123
GeeArrayList* _tmp10_;
1125
GeeArrayList* _tmp20_;
1127
gpointer* _tmp22_ = NULL;
1129
gint _tmp23__length1;
1130
g_return_val_if_fail (self != NULL, NULL);
1131
g_return_val_if_fail (album != NULL, NULL);
1133
_tmp1_ = unity_music_lens_album_get_title (_tmp0_);
1136
_tmp4_ = unity_music_lens_album_get_artist (_tmp3_);
1138
_tmp6_ = g_strdup_printf ("SELECT CoreTracks.Uri \n" \
1139
" FROM CoreTracks \n" \
1140
" CROSS JOIN CoreAlbums, CoreArtists \n" \
1141
" WHERE CoreArtists.ArtistID = CoreTracks.ArtistID \n" \
1142
" AND CoreAlbums.AlbumID = CoreTracks.AlbumID " \
1144
" AND CoreAlbums.Title IS '%s'\n" \
1145
" AND CoreArtists.Name IS '%s'\n" \
1146
" AND CoreTracks.URI IS NOT NULL\n" \
1147
" ORDER BY CoreTracks.TrackNumber ASC", _tmp2_, _tmp5_);
1150
_tmp9_ = unity_music_lens_banshee_collection_execute_sql (self, _tmp7_, &_tmp8_);
1151
_sqlite3_finalize0 (stmt);
1154
_tmp10_ = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL);
1161
sqlite3_stmt* _tmp14_;
1168
if (!(_tmp13_ == SQLITE_ROW)) {
1174
_tmp15_ = sqlite3_step (_tmp14_);
1184
GeeArrayList* _tmp17_;
1185
sqlite3_stmt* _tmp18_;
1186
const gchar* _tmp19_ = NULL;
1189
_tmp19_ = sqlite3_column_text (_tmp18_, URI_COLUMN);
1190
gee_abstract_collection_add ((GeeAbstractCollection*) _tmp17_, _tmp19_);
1201
_tmp22_ = gee_abstract_collection_to_array ((GeeAbstractCollection*) _tmp20_, &_tmp21_);
1203
_tmp23__length1 = _tmp21_;
1204
if (result_length1) {
1205
*result_length1 = _tmp23__length1;
1208
_g_object_unref0 (uris);
1210
_sqlite3_finalize0 (stmt);
1216
* returns a string like "AND (Table.Column IS filter OR Table.OtherCol IS filter2)
1217
* AND (Table.OtherColAgain IS AnotherFilter)"
1219
static gchar* unity_music_lens_banshee_collection_build_sql_from_filters (UnityMusicLensBansheeCollection* self, GList* filters) {
1220
gchar* result = NULL;
1221
gboolean _tmp0_ = FALSE;
1229
const gchar* _tmp26_;
1231
g_return_val_if_fail (self != NULL, NULL);
1233
if (_tmp1_ == NULL) {
1239
_tmp3_ = g_list_length (_tmp2_);
1240
_tmp0_ = _tmp3_ == ((guint) 0);
1245
_tmp5_ = g_strdup ("");
1249
_tmp6_ = g_string_new ("");
1253
GList* parser_collection = NULL;
1254
GList* parser_it = NULL;
1255
parser_collection = _tmp7_;
1256
for (parser_it = parser_collection; parser_it != NULL; parser_it = parser_it->next) {
1257
UnityMusicLensFilterParser* _tmp8_;
1258
UnityMusicLensFilterParser* parser = NULL;
1259
_tmp8_ = _g_object_ref0 ((UnityMusicLensFilterParser*) parser_it->data);
1262
UnityMusicLensBansheeFilterParser* bparser = NULL;
1263
UnityMusicLensFilterParser* _tmp9_;
1264
UnityMusicLensBansheeFilterParser* _tmp15_;
1265
gchar* _tmp16_ = NULL;
1267
gboolean _tmp17_ = FALSE;
1268
const gchar* _tmp18_;
1272
const gchar* _tmp23_;
1274
if (UNITY_MUSIC_LENS_IS_GENRE_FILTER_PARSER (_tmp9_)) {
1275
UnityMusicLensFilterParser* _tmp10_;
1276
UnityMusicLensBansheeGenreFilterParser* _tmp11_;
1278
_tmp11_ = unity_music_lens_banshee_genre_filter_parser_new (UNITY_MUSIC_LENS_IS_GENRE_FILTER_PARSER (_tmp10_) ? ((UnityMusicLensGenreFilterParser*) _tmp10_) : NULL);
1279
_g_object_unref0 (bparser);
1280
bparser = (UnityMusicLensBansheeFilterParser*) _tmp11_;
1282
UnityMusicLensFilterParser* _tmp12_;
1284
if (UNITY_MUSIC_LENS_IS_DECADE_FILTER_PARSER (_tmp12_)) {
1285
UnityMusicLensFilterParser* _tmp13_;
1286
UnityMusicLensBansheeDecadeFilterParser* _tmp14_;
1288
_tmp14_ = unity_music_lens_banshee_decade_filter_parser_new (UNITY_MUSIC_LENS_IS_DECADE_FILTER_PARSER (_tmp13_) ? ((UnityMusicLensDecadeFilterParser*) _tmp13_) : NULL);
1289
_g_object_unref0 (bparser);
1290
bparser = (UnityMusicLensBansheeFilterParser*) _tmp14_;
1292
g_warning ("banshee-collection.vala:363: Recieved an unimplemented filter type");
1293
_g_object_unref0 (bparser);
1294
_g_object_unref0 (parser);
1299
_tmp16_ = unity_music_lens_filter_parser_parse ((UnityMusicLensFilterParser*) _tmp15_);
1302
if (_tmp18_ == NULL) {
1305
const gchar* _tmp19_;
1307
_tmp17_ = g_strcmp0 (_tmp19_, "") == 0;
1312
_g_object_unref0 (bparser);
1313
_g_object_unref0 (parser);
1317
g_string_append (_tmp21_, " AND ");
1320
g_string_append (_tmp22_, _tmp23_);
1322
_g_object_unref0 (bparser);
1323
_g_object_unref0 (parser);
1328
g_string_append (_tmp24_, " ");
1330
_tmp26_ = _tmp25_->str;
1331
_tmp27_ = g_strdup (_tmp26_);
1333
_g_string_free0 (builder);
1338
static gint unity_music_lens_banshee_collection_execute_sql (UnityMusicLensBansheeCollection* self, const gchar* sql, sqlite3_stmt** stmt) {
1339
sqlite3_stmt* _vala_stmt = NULL;
1342
const gchar* _tmp0_;
1344
const gchar* _tmp2_;
1345
sqlite3_stmt* _tmp3_ = NULL;
1348
g_return_val_if_fail (self != NULL, 0);
1349
g_return_val_if_fail (sql != NULL, 0);
1351
g_debug ("banshee-collection.vala:383: preparing to execute sql %s\n", _tmp0_);
1352
_tmp1_ = self->priv->db;
1354
_tmp4_ = sqlite3_prepare_v2 (_tmp1_, _tmp2_, -1, &_tmp3_, NULL);
1355
_sqlite3_finalize0 (_vala_stmt);
1356
_vala_stmt = _tmp3_;
1362
const gchar* _tmp8_ = NULL;
1364
_tmp7_ = self->priv->db;
1365
_tmp8_ = sqlite3_errmsg (_tmp7_);
1366
g_warning ("banshee-collection.vala:387: SQL Error: %d, %s\n", _tmp6_, _tmp8_);
1372
_sqlite3_finalize0 (_vala_stmt);
1378
static void unity_music_lens_banshee_collection_class_init (UnityMusicLensBansheeCollectionClass * klass) {
1379
unity_music_lens_banshee_collection_parent_class = g_type_class_peek_parent (klass);
1380
g_type_class_add_private (klass, sizeof (UnityMusicLensBansheeCollectionPrivate));
1381
G_OBJECT_CLASS (klass)->finalize = unity_music_lens_banshee_collection_finalize;
1385
static void unity_music_lens_banshee_collection_instance_init (UnityMusicLensBansheeCollection * self) {
1386
self->priv = UNITY_MUSIC_LENS_BANSHEE_COLLECTION_GET_PRIVATE (self);
1390
static void unity_music_lens_banshee_collection_finalize (GObject* obj) {
1391
UnityMusicLensBansheeCollection * self;
1392
self = UNITY_MUSIC_LENS_BANSHEE_COLLECTION (obj);
1393
_sqlite3_close0 (self->priv->db);
1394
G_OBJECT_CLASS (unity_music_lens_banshee_collection_parent_class)->finalize (obj);
1399
* Abstracts talking to the banshee collection database
1401
GType unity_music_lens_banshee_collection_get_type (void) {
1402
static volatile gsize unity_music_lens_banshee_collection_type_id__volatile = 0;
1403
if (g_once_init_enter (&unity_music_lens_banshee_collection_type_id__volatile)) {
1404
static const GTypeInfo g_define_type_info = { sizeof (UnityMusicLensBansheeCollectionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) unity_music_lens_banshee_collection_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (UnityMusicLensBansheeCollection), 0, (GInstanceInitFunc) unity_music_lens_banshee_collection_instance_init, NULL };
1405
GType unity_music_lens_banshee_collection_type_id;
1406
unity_music_lens_banshee_collection_type_id = g_type_register_static (G_TYPE_OBJECT, "UnityMusicLensBansheeCollection", &g_define_type_info, 0);
1407
g_once_init_leave (&unity_music_lens_banshee_collection_type_id__volatile, unity_music_lens_banshee_collection_type_id);
1409
return unity_music_lens_banshee_collection_type_id__volatile;
1413
static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
1414
if ((array != NULL) && (destroy_func != NULL)) {
1416
for (i = 0; i < array_length; i = i + 1) {
1417
if (((gpointer*) array)[i] != NULL) {
1418
destroy_func (((gpointer*) array)[i]);
1425
static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
1426
_vala_array_destroy (array, array_length, destroy_func);
1431
static gint _vala_array_length (gpointer array) {
1435
while (((gpointer*) array)[length]) {