[gnome-color-manager] trivial: add a device-kind property to GcmColorDevice



commit 0308f98622e21831224580f12263fe3b44daa1ec
Author: Richard Hughes <richard hughsie com>
Date:   Sat Feb 13 22:05:50 2010 +0000

    trivial: add a device-kind property to GcmColorDevice

 src/gcm-color-device.c |   44 +++++++++++++++++++++++++++-----------------
 src/gcm-color-device.h |    6 ++++++
 2 files changed, 33 insertions(+), 17 deletions(-)
---
diff --git a/src/gcm-color-device.c b/src/gcm-color-device.c
index c6b44a2..7b8005b 100644
--- a/src/gcm-color-device.c
+++ b/src/gcm-color-device.c
@@ -50,6 +50,7 @@ struct _GcmColorDevicePrivate
 	gchar				*vendor;
 	gchar				*model;
 	GUdevClient			*client;
+	GcmColorDeviceKind		 device_kind;
 };
 
 enum {
@@ -57,6 +58,7 @@ enum {
 	PROP_PRESENT,
 	PROP_VENDOR,
 	PROP_MODEL,
+	PROP_DEVICE_KIND,
 	PROP_LAST
 };
 
@@ -88,6 +90,9 @@ gcm_color_device_get_property (GObject *object, guint prop_id, GValue *value, GP
 	case PROP_MODEL:
 		g_value_set_string (value, priv->model);
 		break;
+	case PROP_DEVICE_KIND:
+		g_value_set_uint (value, priv->device_kind);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -100,21 +105,7 @@ gcm_color_device_get_property (GObject *object, guint prop_id, GValue *value, GP
 static void
 gcm_color_device_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
 {
-	GcmColorDevice *color_device = GCM_COLOR_DEVICE (object);
-	GcmColorDevicePrivate *priv = color_device->priv;
-
 	switch (prop_id) {
-	case PROP_PRESENT:
-		priv->present = g_value_get_boolean (value);
-		break;
-	case PROP_VENDOR:
-		g_free (priv->vendor);
-		priv->vendor = g_strdup (g_value_get_string (value));
-		break;
-	case PROP_MODEL:
-		g_free (priv->model);
-		priv->model = g_strdup (g_value_get_string (value));
-		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -138,7 +129,7 @@ gcm_color_device_class_init (GcmColorDeviceClass *klass)
 	 */
 	pspec = g_param_spec_boolean ("present", NULL, NULL,
 				      FALSE,
-				      G_PARAM_READWRITE);
+				      G_PARAM_READABLE);
 	g_object_class_install_property (object_class, PROP_PRESENT, pspec);
 
 	/**
@@ -146,7 +137,7 @@ gcm_color_device_class_init (GcmColorDeviceClass *klass)
 	 */
 	pspec = g_param_spec_string ("vendor", NULL, NULL,
 				     NULL,
-				     G_PARAM_READWRITE);
+				     G_PARAM_READABLE);
 	g_object_class_install_property (object_class, PROP_VENDOR, pspec);
 
 	/**
@@ -154,10 +145,18 @@ gcm_color_device_class_init (GcmColorDeviceClass *klass)
 	 */
 	pspec = g_param_spec_string ("model", NULL, NULL,
 				     NULL,
-				     G_PARAM_READWRITE);
+				     G_PARAM_READABLE);
 	g_object_class_install_property (object_class, PROP_MODEL, pspec);
 
 	/**
+	 * GcmColorDevice:device-kind:
+	 */
+	pspec = g_param_spec_uint ("device-kind", NULL, NULL,
+				   0, G_MAXUINT, GCM_COLOR_DEVICE_KIND_UNKNOWN,
+				   G_PARAM_READABLE);
+	g_object_class_install_property (object_class, PROP_DEVICE_KIND, pspec);
+
+	/**
 	 * GcmColorDevice::added:
 	 **/
 	signals[SIGNAL_CHANGED] =
@@ -197,6 +196,16 @@ gcm_color_device_device_add (GcmColorDevice *color_device, GUdevDevice *device)
 	g_free (priv->model);
 	priv->model = g_strdup (g_udev_device_get_property (device, "ID_MODEL_FROM_DATABASE"));
 
+	/* try to get type */
+	if (g_strcmp0 (priv->model, "HueyXXX") == 0) {
+		priv->device_kind = GCM_COLOR_DEVICE_KIND_HUEY;
+	} else if (g_strcmp0 (priv->model, "MunkiXXX") == 0) {
+		priv->device_kind = GCM_COLOR_DEVICE_KIND_COLOR_MUNKI;
+	} else {
+		egg_warning ("Failed to recognise color device: %s", priv->model);
+		priv->device_kind = GCM_COLOR_DEVICE_KIND_UNKNOWN;
+	}
+
 	/* signal the addition */
 	egg_debug ("emit: changed");
 	g_signal_emit (color_device, signals[SIGNAL_CHANGED], 0);
@@ -288,6 +297,7 @@ gcm_color_device_init (GcmColorDevice *color_device)
 	color_device->priv = GCM_COLOR_DEVICE_GET_PRIVATE (color_device);
 	color_device->priv->vendor = NULL;
 	color_device->priv->model = NULL;
+	color_device->priv->device_kind = GCM_COLOR_DEVICE_KIND_UNKNOWN;
 
 	/* use GUdev to find the calibration device */
 	color_device->priv->client = g_udev_client_new (subsystems);
diff --git a/src/gcm-color-device.h b/src/gcm-color-device.h
index 1c83c18..dbe7bcf 100644
--- a/src/gcm-color-device.h
+++ b/src/gcm-color-device.h
@@ -55,6 +55,12 @@ struct _GcmColorDeviceClass
 	void (*_gcm_reserved5) (void);
 };
 
+typedef enum {
+	GCM_COLOR_DEVICE_KIND_HUEY,
+	GCM_COLOR_DEVICE_KIND_COLOR_MUNKI,
+	GCM_COLOR_DEVICE_KIND_UNKNOWN
+} GcmColorDeviceKind;
+
 GType		 gcm_color_device_get_type		(void);
 GcmColorDevice	*gcm_color_device_new			(void);
 



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