~ubuntu-branches/debian/experimental/brasero/experimental

« back to all changes in this revision

Viewing changes to src/brasero-search-engine.c

  • Committer: Bazaar Package Importer
  • Author(s): Josselin Mouette
  • Date: 2011-03-29 16:33:51 UTC
  • mfrom: (1.3.18 upstream) (5.2.8 sid)
  • Revision ID: james.westby@ubuntu.com-20110329163351-ac3wgbh4mplmhnht
Tags: 2.91.93-1
* Only depend on growisofs instead of dvd+rw-tools.
* New upstream pre-release.
* Update build-dependencies, package names, and paths.
* Require totem-plparser 2.32 since its soname changed.
* Do not include GIR package for now, since the versioning is broken 
  (see Bugzilla #646069).
* 01_pkglibdir.patch: dropped, upstream now has a variable we can use 
  for that effect.
* 11_nautilus_menu_no_display.patch, 31_link_libice.patch, 
  50_checksum.patch: dropped, merged upstream.
* 90_relibtoolize.patch: dropped, unnecessary.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
 
2
/*
 
3
 * Brasero
 
4
 * Copyright (C) Philippe Rouquier 2005-2009 <bonfire-app@wanadoo.fr>
 
5
 * 
 
6
 *  Brasero is free software; you can redistribute it and/or modify
 
7
 *  it under the terms of the GNU General Public License as published by
 
8
 *  the Free Software Foundation; either version 2 of the License, or
 
9
 *  (at your option) any later version.
 
10
 * 
 
11
 * brasero 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.
 
14
 * See the GNU General Public License for more details.
 
15
 * 
 
16
 * You should have received a copy of the GNU General Public License
 
17
 * along with brasero.  If not, write to:
 
18
 *      The Free Software Foundation, Inc.,
 
19
 *      51 Franklin Street, Fifth Floor
 
20
 *      Boston, MA  02110-1301, USA.
 
21
 */
 
22
 
 
23
#ifdef HAVE_CONFIG_H
 
24
#  include <config.h>
 
25
#endif
 
26
 
 
27
#include <glib.h>
 
28
#include <glib-object.h>
 
29
 
 
30
#include "brasero-search-engine.h"
 
31
 
 
32
static void brasero_search_engine_base_init (gpointer g_class);
 
33
 
 
34
typedef enum {
 
35
        SEARCH_FINISHED,
 
36
        SEARCH_ERROR,
 
37
        HIT_REMOVED,
 
38
        HIT_ADDED,
 
39
        LAST_SIGNAL
 
40
} BraseroSearchEngineSignalType;
 
41
 
 
42
static guint brasero_search_engine_signals [LAST_SIGNAL] = { 0 };
 
43
 
 
44
gboolean
 
45
brasero_search_engine_is_available (BraseroSearchEngine *search)
 
46
{
 
47
        BraseroSearchEngineIface *iface;
 
48
 
 
49
        g_return_val_if_fail (BRASERO_IS_SEARCH_ENGINE (search), FALSE);
 
50
 
 
51
        iface = BRASERO_SEARCH_ENGINE_GET_IFACE (search);
 
52
        if (!iface->is_available)
 
53
                return FALSE;
 
54
 
 
55
        return (* iface->is_available) (search);
 
56
}
 
57
 
 
58
gboolean
 
59
brasero_search_engine_start_query (BraseroSearchEngine *search)
 
60
{
 
61
        BraseroSearchEngineIface *iface;
 
62
 
 
63
        g_return_val_if_fail (BRASERO_IS_SEARCH_ENGINE (search), FALSE);
 
64
 
 
65
        iface = BRASERO_SEARCH_ENGINE_GET_IFACE (search);
 
66
        if (!iface->query_start)
 
67
                return FALSE;
 
68
 
 
69
        return (* iface->query_start) (search);
 
70
}
 
71
 
 
72
gboolean
 
73
brasero_search_engine_new_query (BraseroSearchEngine *search,
 
74
                                 const gchar *keywords)
 
75
{
 
76
        BraseroSearchEngineIface *iface;
 
77
 
 
78
        g_return_val_if_fail (BRASERO_IS_SEARCH_ENGINE (search), FALSE);
 
79
 
 
80
        iface = BRASERO_SEARCH_ENGINE_GET_IFACE (search);
 
81
        if (!iface->query_new)
 
82
                return FALSE;
 
83
 
 
84
        return (* iface->query_new) (search, keywords);
 
85
}
 
86
 
 
87
gboolean
 
88
brasero_search_engine_set_query_scope (BraseroSearchEngine *search,
 
89
                                       BraseroSearchScope scope)
 
90
{
 
91
        BraseroSearchEngineIface *iface;
 
92
 
 
93
        g_return_val_if_fail (BRASERO_IS_SEARCH_ENGINE (search), FALSE);
 
94
 
 
95
        iface = BRASERO_SEARCH_ENGINE_GET_IFACE (search);
 
96
        if (!iface->query_set_scope)
 
97
                return FALSE;
 
98
 
 
99
        return (* iface->query_set_scope) (search, scope);
 
100
}
 
101
 
 
102
gboolean
 
103
brasero_search_engine_set_query_mime (BraseroSearchEngine *search,
 
104
                                      const gchar **mimes)
 
105
{
 
106
        BraseroSearchEngineIface *iface;
 
107
 
 
108
        g_return_val_if_fail (BRASERO_IS_SEARCH_ENGINE (search), FALSE);
 
109
 
 
110
        iface = BRASERO_SEARCH_ENGINE_GET_IFACE (search);
 
111
        if (!iface->query_set_mime)
 
112
                return FALSE;
 
113
 
 
114
        return (* iface->query_set_mime) (search, mimes);
 
115
}
 
116
 
 
117
gboolean
 
118
brasero_search_engine_add_hits (BraseroSearchEngine *search,
 
119
                                GtkTreeModel *model,
 
120
                                gint range_start,
 
121
                                gint range_end)
 
122
{
 
123
        BraseroSearchEngineIface *iface;
 
124
 
 
125
        g_return_val_if_fail (BRASERO_IS_SEARCH_ENGINE (search), FALSE);
 
126
 
 
127
        iface = BRASERO_SEARCH_ENGINE_GET_IFACE (search);
 
128
        if (!iface->add_hits)
 
129
                return FALSE;
 
130
 
 
131
        return iface->add_hits (search, model, range_start, range_end);
 
132
}
 
133
 
 
134
const gchar *
 
135
brasero_search_engine_uri_from_hit (BraseroSearchEngine *search,
 
136
                                     gpointer hit)
 
137
{
 
138
        BraseroSearchEngineIface *iface;
 
139
 
 
140
        g_return_val_if_fail (BRASERO_IS_SEARCH_ENGINE (search), NULL);
 
141
 
 
142
        if (!hit)
 
143
                return NULL;
 
144
 
 
145
        iface = BRASERO_SEARCH_ENGINE_GET_IFACE (search);
 
146
        if (!iface->uri_from_hit)
 
147
                return FALSE;
 
148
 
 
149
        return (* iface->uri_from_hit) (search, hit);
 
150
}
 
151
 
 
152
const gchar *
 
153
brasero_search_engine_mime_from_hit (BraseroSearchEngine *search,
 
154
                                     gpointer hit)
 
155
{
 
156
        BraseroSearchEngineIface *iface;
 
157
 
 
158
        g_return_val_if_fail (BRASERO_IS_SEARCH_ENGINE (search), NULL);
 
159
 
 
160
        if (!hit)
 
161
                return NULL;
 
162
 
 
163
        iface = BRASERO_SEARCH_ENGINE_GET_IFACE (search);
 
164
        if (!iface->mime_from_hit)
 
165
                return FALSE;
 
166
 
 
167
        return (* iface->mime_from_hit) (search, hit);
 
168
}
 
169
 
 
170
gint
 
171
brasero_search_engine_score_from_hit (BraseroSearchEngine *search,
 
172
                                      gpointer hit)
 
173
{
 
174
        BraseroSearchEngineIface *iface;
 
175
 
 
176
        g_return_val_if_fail (BRASERO_IS_SEARCH_ENGINE (search), 0);
 
177
 
 
178
        if (!hit)
 
179
                return 0;
 
180
 
 
181
        iface = BRASERO_SEARCH_ENGINE_GET_IFACE (search);
 
182
        if (!iface->score_from_hit)
 
183
                return FALSE;
 
184
 
 
185
        return (* iface->score_from_hit) (search, hit);
 
186
}
 
187
 
 
188
gint
 
189
brasero_search_engine_num_hits (BraseroSearchEngine *search)
 
190
{
 
191
        BraseroSearchEngineIface *iface;
 
192
 
 
193
        g_return_val_if_fail (BRASERO_IS_SEARCH_ENGINE (search), 0);
 
194
 
 
195
        iface = BRASERO_SEARCH_ENGINE_GET_IFACE (search);
 
196
        if (!iface->num_hits)
 
197
                return FALSE;
 
198
 
 
199
        return (* iface->num_hits) (search);
 
200
}
 
201
 
 
202
void
 
203
brasero_search_engine_query_finished (BraseroSearchEngine *search)
 
204
{
 
205
        g_signal_emit (search,
 
206
                       brasero_search_engine_signals [SEARCH_FINISHED],
 
207
                       0);
 
208
}
 
209
 
 
210
void
 
211
brasero_search_engine_hit_removed (BraseroSearchEngine *search,
 
212
                                   gpointer hit)
 
213
{
 
214
        g_signal_emit (search,
 
215
                       brasero_search_engine_signals [HIT_REMOVED],
 
216
                       0,
 
217
                       hit);
 
218
}
 
219
 
 
220
void
 
221
brasero_search_engine_hit_added (BraseroSearchEngine *search,
 
222
                                 gpointer hit)
 
223
{
 
224
        g_signal_emit (search,
 
225
                       brasero_search_engine_signals [HIT_ADDED],
 
226
                       0,
 
227
                       hit);
 
228
}
 
229
 
 
230
void
 
231
brasero_search_engine_query_error (BraseroSearchEngine *search,
 
232
                                   GError *error)
 
233
{
 
234
        g_signal_emit (search,
 
235
                       brasero_search_engine_signals [SEARCH_ERROR],
 
236
                       0,
 
237
                       error);
 
238
}
 
239
 
 
240
GType
 
241
brasero_search_engine_get_type()
 
242
{
 
243
        static GType type = 0;
 
244
 
 
245
        if(type == 0) {
 
246
                static const GTypeInfo our_info = {
 
247
                        sizeof (BraseroSearchEngineIface),
 
248
                        brasero_search_engine_base_init,
 
249
                        NULL,
 
250
                        NULL,
 
251
                        NULL,
 
252
                        NULL,
 
253
                        0,
 
254
                        0,
 
255
                        NULL
 
256
                };
 
257
 
 
258
                type = g_type_register_static (G_TYPE_INTERFACE, 
 
259
                                               "BraseroSearchEngine",
 
260
                                               &our_info,
 
261
                                               0);
 
262
 
 
263
                g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);
 
264
        }
 
265
 
 
266
        return type;
 
267
}
 
268
 
 
269
static void
 
270
brasero_search_engine_base_init (gpointer g_class)
 
271
{
 
272
        static gboolean initialized = FALSE;
 
273
 
 
274
        if (initialized)
 
275
                return;
 
276
 
 
277
        brasero_search_engine_signals [SEARCH_ERROR] =
 
278
            g_signal_new ("search_error",
 
279
                          BRASERO_TYPE_SEARCH_ENGINE,
 
280
                          G_SIGNAL_RUN_LAST|G_SIGNAL_ACTION|G_SIGNAL_NO_RECURSE,
 
281
                          G_STRUCT_OFFSET (BraseroSearchEngineIface, search_error),
 
282
                          NULL,
 
283
                          NULL,
 
284
                          g_cclosure_marshal_VOID__POINTER,
 
285
                          G_TYPE_NONE,
 
286
                          1,
 
287
                          G_TYPE_POINTER);
 
288
        brasero_search_engine_signals [SEARCH_FINISHED] =
 
289
            g_signal_new ("search_finished",
 
290
                          BRASERO_TYPE_SEARCH_ENGINE,
 
291
                          G_SIGNAL_RUN_LAST|G_SIGNAL_ACTION|G_SIGNAL_NO_RECURSE,
 
292
                          G_STRUCT_OFFSET (BraseroSearchEngineIface, search_finished),
 
293
                          NULL,
 
294
                          NULL,
 
295
                          g_cclosure_marshal_VOID__VOID,
 
296
                          G_TYPE_NONE,
 
297
                          0);
 
298
        brasero_search_engine_signals [HIT_REMOVED] =
 
299
            g_signal_new ("hit_removed",
 
300
                          BRASERO_TYPE_SEARCH_ENGINE,
 
301
                          G_SIGNAL_RUN_LAST|G_SIGNAL_ACTION|G_SIGNAL_NO_RECURSE,
 
302
                          G_STRUCT_OFFSET (BraseroSearchEngineIface, hit_removed),
 
303
                          NULL,
 
304
                          NULL,
 
305
                          g_cclosure_marshal_VOID__POINTER,
 
306
                          G_TYPE_NONE,
 
307
                          1,
 
308
                          G_TYPE_POINTER);
 
309
        brasero_search_engine_signals [HIT_ADDED] =
 
310
            g_signal_new ("hit_added",
 
311
                          BRASERO_TYPE_SEARCH_ENGINE,
 
312
                          G_SIGNAL_RUN_LAST|G_SIGNAL_ACTION|G_SIGNAL_NO_RECURSE,
 
313
                          G_STRUCT_OFFSET (BraseroSearchEngineIface, hit_added),
 
314
                          NULL,
 
315
                          NULL,
 
316
                          g_cclosure_marshal_VOID__POINTER,
 
317
                          G_TYPE_NONE,
 
318
                          1,
 
319
                          G_TYPE_POINTER);
 
320
        initialized = TRUE;
 
321
}
 
322
 
 
323
#ifdef BUILD_SEARCH
 
324
 
 
325
#ifdef BUILD_TRACKER
 
326
 
 
327
#include "brasero-search-tracker.h"
 
328
 
 
329
BraseroSearchEngine *
 
330
brasero_search_engine_new_default (void)
 
331
{
 
332
        return g_object_new (BRASERO_TYPE_SEARCH_TRACKER, NULL);
 
333
}
 
334
 
 
335
#endif
 
336
 
 
337
#ifdef BUILD_BEAGLE
 
338
 
 
339
#include "brasero-search-beagle.h"
 
340
 
 
341
BraseroSearchEngine *
 
342
brasero_search_engine_new_default (void)
 
343
{
 
344
        return g_object_new (BRASERO_TYPE_SEARCH_BEAGLE, NULL);
 
345
}
 
346
 
 
347
#endif
 
348
 
 
349
#else
 
350
 
 
351
BraseroSearchEngine *
 
352
brasero_search_engine_new_default (void)
 
353
{
 
354
        return NULL;
 
355
}
 
356
 
 
357
#endif