[Galago-commits] r2339 - in trunk/libgalago: . libgalago

galago-commits at freedesktop.org galago-commits at freedesktop.org
Sun Nov 20 03:44:37 PST 2005


Author: chipx86
Date: 2005-11-20 03:44:35 -0800 (Sun, 20 Nov 2005)
New Revision: 2339

Modified:
   trunk/libgalago/ChangeLog
   trunk/libgalago/libgalago/galago-status.c
Log:
Give GalagoStatus object properties, and use them when creating the object.


Modified: trunk/libgalago/ChangeLog
===================================================================
--- trunk/libgalago/ChangeLog	2005-11-20 11:20:59 UTC (rev 2338)
+++ trunk/libgalago/ChangeLog	2005-11-20 11:44:35 UTC (rev 2339)
@@ -1,3 +1,9 @@
+Sun Nov 20 03:43:45 PST 2005  Christian Hammond <chipx86 at chipx86.com>
+
+	* libgalago/galago-status.c:
+	  - Give GalagoStatus object properties, and use them when creating
+	    the object.
+
 Sun Nov 20 03:20:08 PST 2005  Christian Hammond <chipx86 at chipx86.com>
 
 	* libgalago/galago-status.c:

Modified: trunk/libgalago/libgalago/galago-status.c
===================================================================
--- trunk/libgalago/libgalago/galago-status.c	2005-11-20 11:20:59 UTC (rev 2338)
+++ trunk/libgalago/libgalago/galago-status.c	2005-11-20 11:44:35 UTC (rev 2339)
@@ -20,6 +20,7 @@
  */
 #include <libgalago/galago-private.h>
 #include <libgalago/galago-core.h>
+#include <libgalago/galago-enum-types.h>
 #include <libgalago/galago-log.h>
 #include <libgalago/galago-status.h>
 #include <stdio.h>
@@ -27,7 +28,7 @@
 
 struct _GalagoStatusPrivate
 {
-	GalagoStatusType type;
+	GalagoStatusType primitive;
 
 	GalagoPresence *presence;
 
@@ -65,6 +66,16 @@
 	"double"
 };
 
+enum
+{
+	PROP_0,
+	PROP_TYPE,
+	PROP_PRESENCE,
+	PROP_ID,
+	PROP_NAME,
+	PROP_EXCLUSIVE
+};
+
 static GHashTable *status_id_map_table = NULL;
 
 static GalagoStatusAttr *status_attr_new(const char *id,
@@ -80,6 +91,10 @@
 static void *galago_status_dbus_message_get(DBusMessageIter *iter);
 static gchar *galago_status_dbus_get_signature(void);
 static const gchar *galago_status_attr_dbus_get_signature(void);
+static void galago_status_set_property(GObject *object, guint prop_id,
+									   const GValue *value, GParamSpec *pspec);
+static void galago_status_get_property(GObject *object, guint prop_id,
+									   GValue *value, GParamSpec *pspec);
 
 static GalagoObjectClass *parent_class = NULL;
 
@@ -88,15 +103,49 @@
 static void
 galago_status_class_init(GalagoStatusClass *klass)
 {
-	GalagoObjectClass *object_class = GALAGO_OBJECT_CLASS(klass);
+	GObjectClass      *gobject_class = G_OBJECT_CLASS(klass);
+	GalagoObjectClass *object_class  = GALAGO_OBJECT_CLASS(klass);
 
 	parent_class = g_type_class_peek_parent(klass);
 
-
 	object_class->destroy             = galago_status_destroy;
 	object_class->dbus_message_append = galago_status_dbus_message_append;
 	object_class->dbus_message_get    = galago_status_dbus_message_get;
 	object_class->dbus_get_signature  = galago_status_dbus_get_signature;
+
+	gobject_class->set_property = galago_status_set_property;
+	gobject_class->get_property = galago_status_get_property;
+
+	g_object_class_install_property(gobject_class, PROP_TYPE,
+		g_param_spec_enum("primitive", "Primitive",
+						  "The primitive type this status is based on",
+						  GALAGO_TYPE_STATUS_TYPE,
+						  GALAGO_STATUS_UNSET,
+						  G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+
+	g_object_class_install_property(gobject_class, PROP_PRESENCE,
+		g_param_spec_object("presence", "Presence",
+							"The presence object that this status belongs to",
+							GALAGO_TYPE_PRESENCE,
+							G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+
+	g_object_class_install_property(gobject_class, PROP_ID,
+		g_param_spec_string("id", "ID",
+							"The status's ID",
+							NULL,
+							G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+
+	g_object_class_install_property(gobject_class, PROP_NAME,
+		g_param_spec_string("name", "Name",
+							"The status's descriptive name",
+							NULL,
+							G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+
+	g_object_class_install_property(gobject_class, PROP_EXCLUSIVE,
+		g_param_spec_boolean("exclusive", "Exclusive",
+							 "The status's exclusive state",
+							 FALSE,
+							 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
 }
 
 static void
@@ -335,7 +384,77 @@
 		NULL);
 }
 
+static void
+galago_status_set_property(GObject *object, guint prop_id,
+						   const GValue *value, GParamSpec *pspec)
+{
+	GalagoStatus *status = GALAGO_STATUS(object);
 
+	switch (prop_id)
+	{
+		case PROP_TYPE:
+			status->priv->primitive =
+				(GalagoStatusType)g_value_get_enum(value);
+			break;
+
+		case PROP_PRESENCE:
+			galago_status_set_presence(status,
+				(GalagoPresence *)g_value_get_object(value));
+			break;
+
+		case PROP_ID:
+			status->priv->id = g_value_dup_string(value);
+			break;
+
+		case PROP_NAME:
+			status->priv->name = g_value_dup_string(value);
+			break;
+
+		case PROP_EXCLUSIVE:
+			status->priv->exclusive = g_value_get_boolean(value);
+			break;
+
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+			break;
+	}
+}
+
+static void
+galago_status_get_property(GObject *object, guint prop_id,
+						   GValue *value, GParamSpec *pspec)
+{
+	GalagoStatus *status = GALAGO_STATUS(object);
+
+	switch (prop_id)
+	{
+		case PROP_TYPE:
+			g_value_set_enum(value, galago_status_get_primitive(status));
+			break;
+
+		case PROP_PRESENCE:
+			g_value_set_object(value, galago_status_get_presence(status));
+			break;
+
+		case PROP_ID:
+			g_value_set_string(value, galago_status_get_id(status));
+			break;
+
+		case PROP_NAME:
+			g_value_set_string(value, galago_status_get_name(status));
+			break;
+
+		case PROP_EXCLUSIVE:
+			g_value_set_boolean(value, galago_status_is_exclusive(status));
+			break;
+
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+			break;
+	}
+}
+
+
 /**************************************************************************
  * Status ID to Name mapping
  **************************************************************************/
@@ -377,7 +496,6 @@
 galago_status_new(GalagoStatusType type, const char *id, const char *name,
 				  gboolean exclusive)
 {
-	GalagoStatus *status;
 	const char *name2;
 
 	g_return_val_if_fail(galago_is_initted(),           NULL);
@@ -391,14 +509,12 @@
 	g_return_val_if_fail(name  != NULL, NULL);
 	g_return_val_if_fail(*name != '\0', NULL);
 
-	status = g_object_new(GALAGO_TYPE_STATUS, NULL);
-
-	status->priv->type      = type;
-	status->priv->id        = g_strdup(id);
-	status->priv->name      = g_strdup(name);
-	status->priv->exclusive = exclusive;
-
-	return status;
+	return g_object_new(GALAGO_TYPE_STATUS,
+						"primitive", type,
+						"id", id,
+						"name", name,
+						"exclusive", exclusive,
+						NULL);
 }
 
 GalagoStatus *
@@ -474,7 +590,7 @@
 	g_return_val_if_fail(status != NULL,           GALAGO_STATUS_UNSET);
 	g_return_val_if_fail(GALAGO_IS_STATUS(status), GALAGO_STATUS_UNSET);
 
-	return status->priv->type;
+	return status->priv->primitive;
 }
 
 const char *



More information about the galago-commits mailing list