1 /* 2 * Copyright (C) 2009, Nokia <ivan.frade@nokia.com> 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the 16 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 17 * Boston, MA 02110-1301, USA. 18 */ 19 20 #ifndef __LIBTRACKER_CONTROL_MANAGER_H__ 21 #define __LIBTRACKER_CONTROL_MANAGER_H__ 22 23 #if !defined (__LIBTRACKER_CONTROL_H_INSIDE__) && !defined (TRACKER_COMPILATION) 24 #error "Only <libtracker-control/tracker-control.h> can be included directly." 25 #endif 26 27 #include <gio/gio.h> 28 29 G_BEGIN_DECLS 30 31 #define TRACKER_TYPE_MINER_MANAGER (tracker_miner_manager_get_type()) 32 #define TRACKER_MINER_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TRACKER_TYPE_MINER_MANAGER, TrackerMinerManager)) 33 #define TRACKER_MINER_MANAGER_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), TRACKER_TYPE_MINER_MANAGER, TrackerMinerManagerClass)) 34 #define TRACKER_IS_MINER_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TRACKER_TYPE_MINER_MANAGER)) 35 #define TRACKER_IS_MINER_MANAGER_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), TRACKER_TYPE_MINER_MANAGER)) 36 #define TRACKER_MINER_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TRACKER_TYPE_MINER_MANAGER, TrackerMinerManagerClass)) 37 38 #define TRACKER_MINER_MANAGER_ERROR tracker_miner_manager_error_quark () 39 40 typedef struct _TrackerMinerManager TrackerMinerManager; 41 42 /** 43 * TrackerMinerManagerError: 44 * @TRACKER_MINER_MANAGER_ERROR_NOT_AVAILABLE: The miner in question 45 * is not active and can so can not be used. 46 * @TRACKER_MINER_MANAGER_ERROR_NOENT: The resource that the 47 * miner is handling (for example a file or URI) does not exist. 48 * 49 * Enumeration values used in errors returned by the 50 * #TrackerMinerManager API. 51 * 52 * Since: 0.8 53 **/ 54 typedef enum { 55 TRACKER_MINER_MANAGER_ERROR_NOT_AVAILABLE, 56 TRACKER_MINER_MANAGER_ERROR_NOENT 57 } TrackerMinerManagerError; 58 59 /** 60 * TrackerMinerManager: 61 * 62 * Object to query and control miners. 63 **/ 64 struct _TrackerMinerManager { 65 GObject parent_instance; 66 }; 67 68 /** 69 * TrackerMinerManagerClass: 70 * @miner_progress: The progress signal for all miners including name, 71 * status and progress as a percentage between 0 and 1. 72 * @miner_paused: The paused signal for all miners known about. 73 * @miner_resumed: The resumed signal for all miners known about. 74 * @miner_activated: The activated signal for all miners which 75 * indicates the miner is available on d-bus. 76 * @miner_deactivated: The deactivate for all miners which indicates 77 * the miner is no longer available on d-bus. 78 **/ 79 typedef struct { 80 GObjectClass parent_class; 81 82 void (* miner_progress) (TrackerMinerManager *manager, 83 const gchar *miner_name, 84 const gchar *status, 85 gdouble progress); 86 void (* miner_paused) (TrackerMinerManager *manager, 87 const gchar *miner_name); 88 void (* miner_resumed) (TrackerMinerManager *manager, 89 const gchar *miner_name); 90 void (* miner_activated) (TrackerMinerManager *manager, 91 const gchar *miner_name); 92 void (* miner_deactivated) (TrackerMinerManager *manager, 93 const gchar *miner_name); 94 } TrackerMinerManagerClass; 95 96 GType tracker_miner_manager_get_type (void) G_GNUC_CONST; 97 GQuark tracker_miner_manager_error_quark (void) G_GNUC_CONST; 98 99 TrackerMinerManager *tracker_miner_manager_new (void); 100 TrackerMinerManager *tracker_miner_manager_new_full (gboolean auto_start, 101 GError **error); 102 GSList * tracker_miner_manager_get_running (TrackerMinerManager *manager); 103 GSList * tracker_miner_manager_get_available (TrackerMinerManager *manager); 104 gboolean tracker_miner_manager_pause (TrackerMinerManager *manager, 105 const gchar *miner, 106 const gchar *reason, 107 guint32 *cookie); 108 gboolean tracker_miner_manager_pause_for_process (TrackerMinerManager *manager, 109 const gchar *miner, 110 const gchar *reason, 111 guint32 *cookie); 112 gboolean tracker_miner_manager_resume (TrackerMinerManager *manager, 113 const gchar *miner, 114 guint32 cookie); 115 gboolean tracker_miner_manager_is_active (TrackerMinerManager *manager, 116 const gchar *miner); 117 gboolean tracker_miner_manager_is_paused (TrackerMinerManager *manager, 118 const gchar *miner, 119 GStrv *applications, 120 GStrv *reasons); 121 gboolean tracker_miner_manager_get_status (TrackerMinerManager *manager, 122 const gchar *miner, 123 gchar **status, 124 gdouble *progress, 125 gint *remaining_time); 126 const gchar * tracker_miner_manager_get_display_name (TrackerMinerManager *manager, 127 const gchar *miner); 128 const gchar * tracker_miner_manager_get_description (TrackerMinerManager *manager, 129 const gchar *miner); 130 131 gboolean tracker_miner_manager_reindex_by_mimetype (TrackerMinerManager *manager, 132 const GStrv mimetypes, 133 GError **error); 134 gboolean tracker_miner_manager_index_file (TrackerMinerManager *manager, 135 GFile *file, 136 GCancellable *cancellable, 137 GError **error); 138 void tracker_miner_manager_index_file_async (TrackerMinerManager *manager, 139 GFile *file, 140 GCancellable *cancellable, 141 GAsyncReadyCallback callback, 142 gpointer user_data); 143 gboolean tracker_miner_manager_index_file_finish (TrackerMinerManager *manager, 144 GAsyncResult *result, 145 GError **error); 146 gboolean tracker_miner_manager_index_file_for_process (TrackerMinerManager *manager, 147 GFile *file, 148 GCancellable *cancellable, 149 GError **error); 150 void tracker_miner_manager_index_file_for_process_async (TrackerMinerManager *manager, 151 GFile *file, 152 GCancellable *cancellable, 153 GAsyncReadyCallback callback, 154 gpointer user_data); 155 gboolean tracker_miner_manager_index_file_for_process_finish (TrackerMinerManager *manager, 156 GAsyncResult *result, 157 GError **error); 158 159 G_END_DECLS 160 161 #endif /* __LIBTRACKER_CONTROL_MANAGER_H__ */ 162