[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