1
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
4
* Copyright (C) Philippe Rouquier 2005-2009 <bonfire-app@wanadoo.fr>
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.
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.
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.
28
#include <glib-object.h>
30
#include "brasero-search-engine.h"
32
static void brasero_search_engine_base_init (gpointer g_class);
40
} BraseroSearchEngineSignalType;
42
static guint brasero_search_engine_signals [LAST_SIGNAL] = { 0 };
45
brasero_search_engine_is_available (BraseroSearchEngine *search)
47
BraseroSearchEngineIface *iface;
49
g_return_val_if_fail (BRASERO_IS_SEARCH_ENGINE (search), FALSE);
51
iface = BRASERO_SEARCH_ENGINE_GET_IFACE (search);
52
if (!iface->is_available)
55
return (* iface->is_available) (search);
59
brasero_search_engine_start_query (BraseroSearchEngine *search)
61
BraseroSearchEngineIface *iface;
63
g_return_val_if_fail (BRASERO_IS_SEARCH_ENGINE (search), FALSE);
65
iface = BRASERO_SEARCH_ENGINE_GET_IFACE (search);
66
if (!iface->query_start)
69
return (* iface->query_start) (search);
73
brasero_search_engine_new_query (BraseroSearchEngine *search,
74
const gchar *keywords)
76
BraseroSearchEngineIface *iface;
78
g_return_val_if_fail (BRASERO_IS_SEARCH_ENGINE (search), FALSE);
80
iface = BRASERO_SEARCH_ENGINE_GET_IFACE (search);
81
if (!iface->query_new)
84
return (* iface->query_new) (search, keywords);
88
brasero_search_engine_set_query_scope (BraseroSearchEngine *search,
89
BraseroSearchScope scope)
91
BraseroSearchEngineIface *iface;
93
g_return_val_if_fail (BRASERO_IS_SEARCH_ENGINE (search), FALSE);
95
iface = BRASERO_SEARCH_ENGINE_GET_IFACE (search);
96
if (!iface->query_set_scope)
99
return (* iface->query_set_scope) (search, scope);
103
brasero_search_engine_set_query_mime (BraseroSearchEngine *search,
106
BraseroSearchEngineIface *iface;
108
g_return_val_if_fail (BRASERO_IS_SEARCH_ENGINE (search), FALSE);
110
iface = BRASERO_SEARCH_ENGINE_GET_IFACE (search);
111
if (!iface->query_set_mime)
114
return (* iface->query_set_mime) (search, mimes);
118
brasero_search_engine_add_hits (BraseroSearchEngine *search,
123
BraseroSearchEngineIface *iface;
125
g_return_val_if_fail (BRASERO_IS_SEARCH_ENGINE (search), FALSE);
127
iface = BRASERO_SEARCH_ENGINE_GET_IFACE (search);
128
if (!iface->add_hits)
131
return iface->add_hits (search, model, range_start, range_end);
135
brasero_search_engine_uri_from_hit (BraseroSearchEngine *search,
138
BraseroSearchEngineIface *iface;
140
g_return_val_if_fail (BRASERO_IS_SEARCH_ENGINE (search), NULL);
145
iface = BRASERO_SEARCH_ENGINE_GET_IFACE (search);
146
if (!iface->uri_from_hit)
149
return (* iface->uri_from_hit) (search, hit);
153
brasero_search_engine_mime_from_hit (BraseroSearchEngine *search,
156
BraseroSearchEngineIface *iface;
158
g_return_val_if_fail (BRASERO_IS_SEARCH_ENGINE (search), NULL);
163
iface = BRASERO_SEARCH_ENGINE_GET_IFACE (search);
164
if (!iface->mime_from_hit)
167
return (* iface->mime_from_hit) (search, hit);
171
brasero_search_engine_score_from_hit (BraseroSearchEngine *search,
174
BraseroSearchEngineIface *iface;
176
g_return_val_if_fail (BRASERO_IS_SEARCH_ENGINE (search), 0);
181
iface = BRASERO_SEARCH_ENGINE_GET_IFACE (search);
182
if (!iface->score_from_hit)
185
return (* iface->score_from_hit) (search, hit);
189
brasero_search_engine_num_hits (BraseroSearchEngine *search)
191
BraseroSearchEngineIface *iface;
193
g_return_val_if_fail (BRASERO_IS_SEARCH_ENGINE (search), 0);
195
iface = BRASERO_SEARCH_ENGINE_GET_IFACE (search);
196
if (!iface->num_hits)
199
return (* iface->num_hits) (search);
203
brasero_search_engine_query_finished (BraseroSearchEngine *search)
205
g_signal_emit (search,
206
brasero_search_engine_signals [SEARCH_FINISHED],
211
brasero_search_engine_hit_removed (BraseroSearchEngine *search,
214
g_signal_emit (search,
215
brasero_search_engine_signals [HIT_REMOVED],
221
brasero_search_engine_hit_added (BraseroSearchEngine *search,
224
g_signal_emit (search,
225
brasero_search_engine_signals [HIT_ADDED],
231
brasero_search_engine_query_error (BraseroSearchEngine *search,
234
g_signal_emit (search,
235
brasero_search_engine_signals [SEARCH_ERROR],
241
brasero_search_engine_get_type()
243
static GType type = 0;
246
static const GTypeInfo our_info = {
247
sizeof (BraseroSearchEngineIface),
248
brasero_search_engine_base_init,
258
type = g_type_register_static (G_TYPE_INTERFACE,
259
"BraseroSearchEngine",
263
g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);
270
brasero_search_engine_base_init (gpointer g_class)
272
static gboolean initialized = FALSE;
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),
284
g_cclosure_marshal_VOID__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),
295
g_cclosure_marshal_VOID__VOID,
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),
305
g_cclosure_marshal_VOID__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),
316
g_cclosure_marshal_VOID__POINTER,
327
#include "brasero-search-tracker.h"
329
BraseroSearchEngine *
330
brasero_search_engine_new_default (void)
332
return g_object_new (BRASERO_TYPE_SEARCH_TRACKER, NULL);
339
#include "brasero-search-beagle.h"
341
BraseroSearchEngine *
342
brasero_search_engine_new_default (void)
344
return g_object_new (BRASERO_TYPE_SEARCH_BEAGLE, NULL);
351
BraseroSearchEngine *
352
brasero_search_engine_new_default (void)