[tracker] TrackerMinerManager: add get_status() and is_paused().



commit fc0acc7b0c5846f0126fdb6f23cb84c2e775ba1b
Author: Carlos Garnacho <carlos lanedo com>
Date:   Fri Oct 2 11:51:39 2009 +0200

    TrackerMinerManager: add get_status() and is_paused().

 src/libtracker-miner/tracker-miner-manager.c |  110 ++++++++++++++++++++++++++
 src/libtracker-miner/tracker-miner-manager.h |   10 +++
 2 files changed, 120 insertions(+), 0 deletions(-)
---
diff --git a/src/libtracker-miner/tracker-miner-manager.c b/src/libtracker-miner/tracker-miner-manager.c
index ff0461c..405e77e 100644
--- a/src/libtracker-miner/tracker-miner-manager.c
+++ b/src/libtracker-miner/tracker-miner-manager.c
@@ -591,6 +591,116 @@ tracker_miner_manager_is_active (TrackerMinerManager *manager,
 	return active;
 }
 
+gboolean
+tracker_miner_manager_get_status (TrackerMinerManager  *manager,
+				  const gchar          *miner,
+				  gchar               **status,
+				  gdouble              *progress)
+{
+	DBusGProxy *proxy;
+	GError *error = NULL;
+	gdouble p;
+	gchar *st;
+
+	g_return_val_if_fail (TRACKER_IS_MINER_MANAGER (manager), FALSE);
+	g_return_val_if_fail (miner != NULL, FALSE);
+
+	proxy = find_miner_proxy (manager, miner);
+
+	if (!proxy) {
+		g_critical ("No D-Bus proxy found for miner '%s'", miner);
+		return FALSE;
+	}
+
+	org_freedesktop_Tracker1_Miner_get_progress (proxy, &p, &error);
+
+	if (error) {
+		g_critical ("Could not get miner progress for '%s': %s", miner,
+			    error->message);
+		g_error_free (error);
+
+		return FALSE;
+	}
+
+	org_freedesktop_Tracker1_Miner_get_status (proxy, &st, &error);
+
+	if (error) {
+		g_critical ("Could not get miner status for '%s': %s", miner,
+			    error->message);
+		g_error_free (error);
+
+		return FALSE;
+	}
+
+	if (status) {
+		*status = st;
+	} else {
+		g_free (st);
+	}
+
+	if (progress) {
+		*progress = p;
+	}
+
+	return TRUE;
+}
+
+gboolean
+tracker_miner_manager_is_paused (TrackerMinerManager *manager,
+				 const gchar         *miner,
+				 GStrv               *applications,
+				 GStrv               *reasons)
+{
+	DBusGProxy *proxy;
+	GStrv apps, r;
+	GError *error = NULL;
+	gboolean paused;
+
+	if (applications) {
+		*applications = NULL;
+	}
+
+	if (reasons) {
+		*reasons = NULL;
+	}
+
+	g_return_val_if_fail (TRACKER_IS_MINER_MANAGER (manager), TRUE);
+	g_return_val_if_fail (miner != NULL, TRUE);
+
+	proxy = find_miner_proxy (manager, miner);
+
+	if (!proxy) {
+		g_critical ("No D-Bus proxy found for miner '%s'", miner);
+		return FALSE;
+	}
+
+	org_freedesktop_Tracker1_Miner_get_pause_details (proxy, &apps, &r, &error);
+
+	if (error) {
+		g_critical ("Could not get pause details for miner '%s': %s", miner,
+			    error->message);
+		g_error_free (error);
+
+		return TRUE;
+	}
+
+	paused = (g_strv_length (apps) > 0);
+
+	if (applications) {
+		*applications = apps;
+	} else {
+		g_strfreev (apps);
+	}
+
+	if (reasons) {
+		*reasons = r;
+	} else  {
+		g_strfreev (r);
+	}
+
+	return paused;
+}
+
 const gchar *
 tracker_miner_manager_get_display_name (TrackerMinerManager *manager,
 					const gchar         *miner)
diff --git a/src/libtracker-miner/tracker-miner-manager.h b/src/libtracker-miner/tracker-miner-manager.h
index 9ce77f4..6cfc857 100644
--- a/src/libtracker-miner/tracker-miner-manager.h
+++ b/src/libtracker-miner/tracker-miner-manager.h
@@ -74,6 +74,16 @@ gboolean tracker_miner_manager_resume (TrackerMinerManager *manager,
 gboolean tracker_miner_manager_is_active (TrackerMinerManager *manager,
 					  const gchar         *miner);
 
+gboolean tracker_miner_manager_is_paused (TrackerMinerManager *manager,
+					  const gchar         *miner,
+					  GStrv               *applications,
+					  GStrv               *reasons);
+
+gboolean tracker_miner_manager_get_status (TrackerMinerManager  *manager,
+					   const gchar          *miner,
+					   gchar               **status,
+					   gdouble              *progress);
+
 const gchar * tracker_miner_manager_get_display_name (TrackerMinerManager *manager,
 						      const gchar         *miner);
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]