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 #ifndef _SEARCH_ENGINE_H 24 #define _SEARCH_ENGINE_H 25 26 #include <glib.h> 27 #include <glib-object.h> 28 29 #include <gtk/gtk.h> 30 31 G_BEGIN_DECLS 32 33 enum { 34 BRASERO_SEARCH_TREE_HIT_COL = 0, 35 BRASERO_SEARCH_TREE_NB_COL 36 }; 37 38 typedef enum { 39 BRASERO_SEARCH_SCOPE_ANY = 0, 40 BRASERO_SEARCH_SCOPE_VIDEO = 1, 41 BRASERO_SEARCH_SCOPE_MUSIC = 1 << 1, 42 BRASERO_SEARCH_SCOPE_PICTURES = 1 << 2, 43 BRASERO_SEARCH_SCOPE_DOCUMENTS = 1 << 3, 44 } BraseroSearchScope; 45 46 #define BRASERO_TYPE_SEARCH_ENGINE (brasero_search_engine_get_type ()) 47 #define BRASERO_SEARCH_ENGINE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), BRASERO_TYPE_SEARCH_ENGINE, BraseroSearchEngine)) 48 #define BRASERO_IS_SEARCH_ENGINE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), BRASERO_TYPE_SEARCH_ENGINE)) 49 #define BRASERO_SEARCH_ENGINE_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), BRASERO_TYPE_SEARCH_ENGINE, BraseroSearchEngineIface)) 50 51 typedef struct _BraseroSearchEngine BraseroSearchEngine; 52 typedef struct _BraseroSearchEngineIface BraseroSearchEngineIface; 53 54 struct _BraseroSearchEngineIface { 55 GTypeInterface g_iface; 56 57 /* <Signals> */ 58 void (*search_error) (BraseroSearchEngine *search, 59 GError *error); 60 void (*search_finished) (BraseroSearchEngine *search); 61 void (*hit_removed) (BraseroSearchEngine *search, 62 gpointer hit); 63 void (*hit_added) (BraseroSearchEngine *search, 64 gpointer hit); 65 66 /* <Virtual functions> */ 67 gboolean (*is_available) (BraseroSearchEngine *search); 68 gboolean (*query_new) (BraseroSearchEngine *search, 69 const gchar *keywords); 70 gboolean (*query_set_scope) (BraseroSearchEngine *search, 71 BraseroSearchScope scope); 72 gboolean (*query_set_mime) (BraseroSearchEngine *search, 73 const gchar **mimes); 74 gboolean (*query_start) (BraseroSearchEngine *search); 75 76 gboolean (*add_hits) (BraseroSearchEngine *search, 77 GtkTreeModel *model, 78 gint range_start, 79 gint range_end); 80 81 gint (*num_hits) (BraseroSearchEngine *engine); 82 83 const gchar* (*uri_from_hit) (BraseroSearchEngine *engine, 84 gpointer hit); 85 const gchar * (*mime_from_hit) (BraseroSearchEngine *engine, 86 gpointer hit); 87 gint (*score_from_hit) (BraseroSearchEngine *engine, 88 gpointer hit); 89 }; 90 91 GType brasero_search_engine_get_type (void); 92 93 BraseroSearchEngine * 94 brasero_search_engine_new_default (void); 95 96 gboolean 97 brasero_search_engine_is_available (BraseroSearchEngine *search); 98 99 gint 100 brasero_search_engine_num_hits (BraseroSearchEngine *search); 101 102 gboolean 103 brasero_search_engine_new_query (BraseroSearchEngine *search, 104 const gchar *keywords); 105 106 gboolean 107 brasero_search_engine_set_query_scope (BraseroSearchEngine *search, 108 BraseroSearchScope scope); 109 110 gboolean 111 brasero_search_engine_set_query_mime (BraseroSearchEngine *search, 112 const gchar **mimes); 113 114 gboolean 115 brasero_search_engine_start_query (BraseroSearchEngine *search); 116 117 void 118 brasero_search_engine_query_finished (BraseroSearchEngine *search); 119 120 void 121 brasero_search_engine_query_error (BraseroSearchEngine *search, 122 GError *error); 123 124 void 125 brasero_search_engine_hit_removed (BraseroSearchEngine *search, 126 gpointer hit); 127 void 128 brasero_search_engine_hit_added (BraseroSearchEngine *search, 129 gpointer hit); 130 131 const gchar * 132 brasero_search_engine_uri_from_hit (BraseroSearchEngine *search, 133 gpointer hit); 134 const gchar * 135 brasero_search_engine_mime_from_hit (BraseroSearchEngine *search, 136 gpointer hit); 137 gint 138 brasero_search_engine_score_from_hit (BraseroSearchEngine *search, 139 gpointer hit); 140 141 gint 142 brasero_search_engine_add_hits (BraseroSearchEngine *search, 143 GtkTreeModel *model, 144 gint range_start, 145 gint range_end); 146 147 G_END_DECLS 148 149 #endif /* _SEARCH_ENGINE_H */ 150