[tracker/libtracker-miner] Added status and progress to tracker-miner object



commit 523ae37416cc382395ff5deecf0966dc1b014f6b
Author: Martyn Russell <martyn imendio com>
Date:   Mon Aug 17 14:07:24 2009 +0100

    Added status and progress to tracker-miner object

 src/libtracker-miner/tracker-marshal.list |    1 +
 src/libtracker-miner/tracker-miner.c      |   72 +++++++++++++++++++++++++++--
 src/libtracker-miner/tracker-miner.h      |   20 +++++---
 3 files changed, 82 insertions(+), 11 deletions(-)
---
diff --git a/src/libtracker-miner/tracker-marshal.list b/src/libtracker-miner/tracker-marshal.list
index 2032ad4..f519b71 100644
--- a/src/libtracker-miner/tracker-marshal.list
+++ b/src/libtracker-miner/tracker-marshal.list
@@ -1,4 +1,5 @@
 VOID:OBJECT,BOOLEAN
 VOID:OBJECT,OBJECT,BOOLEAN,BOOLEAN
 VOID:UINT,UINT,UINT,UINT
+VOID:STRING,DOUBLE
 BOOL:OBJECT
diff --git a/src/libtracker-miner/tracker-miner.c b/src/libtracker-miner/tracker-miner.c
index 915721b..251f654 100644
--- a/src/libtracker-miner/tracker-miner.c
+++ b/src/libtracker-miner/tracker-miner.c
@@ -22,19 +22,25 @@
 
 #include <libtracker/tracker.h>
 
+#include "tracker-marshal.h"
 #include "tracker-miner.h"
 #include "tracker-miner-dbus.h"
 
 #define TRACKER_MINER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TRACKER_TYPE_MINER, TrackerMinerPrivate))
 
 struct TrackerMinerPrivate {
-	gchar *name;
 	TrackerClient *client;
+
+	gchar *name;
+	gchar *status;
+	gdouble progress;
 };
 
 enum {
 	PROP_0,
-	PROP_NAME
+	PROP_NAME,
+	PROP_STATUS,
+	PROP_PROGRESS
 };
 
 enum {
@@ -43,6 +49,7 @@ enum {
 	PAUSED,
 	RESUMED,
 	TERMINATED,
+	PROGRESS,
 	LAST_SIGNAL
 };
 
@@ -112,14 +119,40 @@ tracker_miner_class_init (TrackerMinerClass *klass)
 			      NULL, NULL,
 			      g_cclosure_marshal_VOID__VOID,
 			      G_TYPE_NONE, 0);
+	signals[PROGRESS] =
+		g_signal_new ("progress",
+			      G_OBJECT_CLASS_TYPE (object_class),
+			      G_SIGNAL_RUN_LAST,
+			      G_STRUCT_OFFSET (TrackerMinerClass, terminated),
+			      NULL, NULL,
+			      tracker_marshal_VOID__STRING_DOUBLE,
+			      G_TYPE_NONE, 2,
+			      G_TYPE_STRING,
+			      G_TYPE_DOUBLE);
 
 	g_object_class_install_property (object_class,
 					 PROP_NAME,
 					 g_param_spec_string ("name",
-							      "Miner name",
-							      "Miner name",
+							      "Mame",
+							      "Name",
 							      NULL,
 							      G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+	g_object_class_install_property (object_class,
+					 PROP_STATUS,
+					 g_param_spec_string ("status",
+							      "Status",
+							      "Status (unique to each miner)",
+							      NULL,
+							      G_PARAM_READWRITE));
+	g_object_class_install_property (object_class,
+					 PROP_PROGRESS,
+					 g_param_spec_double ("progress",
+							      "Progress",
+							      "Progress (between 0 and 1)",
+							      0.0, 
+							      1.0,
+							      0.0,
+							      G_PARAM_READWRITE));
 
 	g_type_class_add_private (object_class, sizeof (TrackerMinerPrivate));
 }
@@ -147,6 +180,14 @@ miner_set_property (GObject      *object,
 		g_free (miner->private->name);
 		miner->private->name = g_value_dup_string (value);
 		break;
+	case PROP_STATUS:
+		g_free (miner->private->status);
+		miner->private->status = g_value_dup_string (value);
+		break;
+	case PROP_PROGRESS:
+		miner->private->progress = g_value_get_double (value);
+		/* Do we signal here? */
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -165,6 +206,12 @@ miner_get_property (GObject    *object,
 	case PROP_NAME:
 		g_value_set_string (value, miner->private->name);
 		break;
+	case PROP_STATUS:
+		g_value_set_string (value, miner->private->status);
+		break;
+	case PROP_PROGRESS:
+		g_value_set_double (value, miner->private->progress);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -187,6 +234,7 @@ static gboolean
 terminate_miner_cb (TrackerMiner *miner)
 {
 	g_signal_emit (miner, signals[TERMINATED], 0);
+
 	return TRUE;
 }
 
@@ -222,6 +270,22 @@ tracker_miner_start (TrackerMiner *miner)
 	g_signal_emit (miner, signals[STARTED], 0);
 }
 
+gchar *
+tracker_miner_get_status (TrackerMiner *miner)
+{
+	g_return_val_if_fail (TRACKER_IS_MINER (miner), NULL);
+
+	return g_strdup ("Idle");
+}
+
+gdouble
+tracker_miner_get_progress (TrackerMiner *miner)
+{
+	g_return_val_if_fail (TRACKER_IS_MINER (miner), 0.0);
+
+	return 0.0;
+}
+
 /* DBus methods */
 void
 tracker_miner_pause (TrackerMiner           *miner,
diff --git a/src/libtracker-miner/tracker-miner.h b/src/libtracker-miner/tracker-miner.h
index c903c6c..e5bd133 100644
--- a/src/libtracker-miner/tracker-miner.h
+++ b/src/libtracker-miner/tracker-miner.h
@@ -45,21 +45,27 @@ struct TrackerMinerClass {
         GObjectClass parent_class;
 
         /* signals */
-        void (* started) (TrackerMiner *miner);
-        void (* stopped) (TrackerMiner *miner);
+        void (* started)    (TrackerMiner *miner);
+        void (* stopped)    (TrackerMiner *miner);
 
-        void (* paused)  (TrackerMiner *miner);
-        void (* resumed) (TrackerMiner *miner);
+        void (* paused)     (TrackerMiner *miner);
+        void (* resumed)    (TrackerMiner *miner);
 
 	void (* terminated) (TrackerMiner *miner);
+
+	void (* progress)   (TrackerMiner *miner,
+			     const gchar  *status,
+			     gdouble       progress);
 };
 
 
-GType    tracker_miner_get_type    (void) G_GNUC_CONST;
+GType                 tracker_miner_get_type (void) G_GNUC_CONST;
 
-G_CONST_RETURN gchar *tracker_miner_get_name (TrackerMiner           *miner);
-void                  tracker_miner_start    (TrackerMiner           *miner);
+void                  tracker_miner_start        (TrackerMiner           *miner);
 
+G_CONST_RETURN gchar *tracker_miner_get_name     (TrackerMiner           *miner);
+gchar                *tracker_miner_get_status   (TrackerMiner           *miner);
+gdouble               tracker_miner_get_progress (TrackerMiner           *miner);
 
 G_END_DECLS
 



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