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