[gnome-color-manager] trivial: add a 'saved' property to GcmDevice to indicate if it's profile is backed by a keyfile



commit d75b5ce16022f8b39cb845d2dacd569bd28b0a8d
Author: Richard Hughes <richard hughsie com>
Date:   Fri Jan 1 16:42:55 2010 +0000

    trivial: add a 'saved' property to GcmDevice to indicate if it's profile is backed by a keyfile

 src/gcm-client.c |    9 +++++++++
 src/gcm-device.c |   37 +++++++++++++++++++++++++++++++++++++
 2 files changed, 46 insertions(+), 0 deletions(-)
---
diff --git a/src/gcm-client.c b/src/gcm-client.c
index 0202d73..58eb50f 100644
--- a/src/gcm-client.c
+++ b/src/gcm-client.c
@@ -658,6 +658,7 @@ gcm_client_add_unconnected_device (GcmClient *client, GKeyFile *keyfile, const g
 		      "id", id,
 		      "connected", FALSE,
 		      "title", title,
+		      "saved", TRUE,
 		      NULL);
 
 	/* load the device */
@@ -721,6 +722,9 @@ gcm_client_add_saved (GcmClient *client, GError **error)
 			gcm_client_add_unconnected_device (client, keyfile, groups[i]);
 		} else {
 			egg_debug ("found already added %s", groups[i]);
+			g_object_set (device,
+				      "saved", TRUE,
+				      NULL);
 		}
 	}
 out:
@@ -815,6 +819,11 @@ gcm_client_delete_device (GcmClient *client, GcmDevice *device, GError **error)
 	if (!ret)
 		goto out;
 
+	/* update status */
+	g_object_set (device,
+		      "saved", FALSE,
+		      NULL);
+
 	/* emit a signal */
 	egg_debug ("emit removed: %s", id);
 	g_signal_emit (client, signals[SIGNAL_REMOVED], 0, device);
diff --git a/src/gcm-device.c b/src/gcm-device.c
index b700c2a..071ef6f 100644
--- a/src/gcm-device.c
+++ b/src/gcm-device.c
@@ -52,6 +52,7 @@ static void     gcm_device_finalize	(GObject     *object);
 struct _GcmDevicePrivate
 {
 	gboolean			 connected;
+	gboolean			 saved;
 	gfloat				 gamma;
 	gfloat				 brightness;
 	gfloat				 contrast;
@@ -72,6 +73,7 @@ enum {
 	PROP_TYPE,
 	PROP_ID,
 	PROP_CONNECTED,
+	PROP_SAVED,
 	PROP_SERIAL,
 	PROP_MODEL,
 	PROP_MANUFACTURER,
@@ -197,6 +199,20 @@ gcm_device_load (GcmDevice *device, GError **error)
 		goto out;
 	}
 
+	/* has key */
+	ret = g_key_file_has_group (file, device->priv->id);
+	if (!ret) {
+		/* not fatal */
+		egg_warning ("failed to find parameters for %s", device->priv->id);
+		ret = TRUE;
+		goto out;
+	}
+
+	/* we are backed by a keyfile */
+	g_object_set (device,
+		      "saved", TRUE,
+		      NULL);
+
 	/* load data */
 	g_free (device->priv->profile_filename);
 	device->priv->profile_filename = g_key_file_get_string (file, device->priv->id, "profile", NULL);
@@ -367,6 +383,11 @@ gcm_device_save (GcmDevice *device, GError **error)
 		g_error_free (error_local);
 		goto out;
 	}
+
+	/* update status */
+	g_object_set (device,
+		      "saved", TRUE,
+		      NULL);
 out:
 	g_free (data);
 	g_free (filename);
@@ -397,6 +418,9 @@ gcm_device_get_property (GObject *object, guint prop_id, GValue *value, GParamSp
 	case PROP_CONNECTED:
 		g_value_set_boolean (value, priv->connected);
 		break;
+	case PROP_SAVED:
+		g_value_set_boolean (value, priv->saved);
+		break;
 	case PROP_SERIAL:
 		g_value_set_string (value, priv->serial);
 		break;
@@ -453,6 +477,9 @@ gcm_device_set_property (GObject *object, guint prop_id, const GValue *value, GP
 	case PROP_CONNECTED:
 		priv->connected = g_value_get_boolean (value);
 		break;
+	case PROP_SAVED:
+		priv->saved = g_value_get_boolean (value);
+		break;
 	case PROP_SERIAL:
 		g_free (priv->serial);
 		priv->serial = g_strdup (g_value_get_string (value));
@@ -533,6 +560,14 @@ gcm_device_class_init (GcmDeviceClass *klass)
 	g_object_class_install_property (object_class, PROP_CONNECTED, pspec);
 
 	/**
+	 * GcmDevice:saved:
+	 */
+	pspec = g_param_spec_boolean ("saved", NULL, NULL,
+				      FALSE,
+				      G_PARAM_READWRITE);
+	g_object_class_install_property (object_class, PROP_SAVED, pspec);
+
+	/**
 	 * GcmCalibrate:serial:
 	 */
 	pspec = g_param_spec_string ("serial", NULL, NULL,
@@ -624,6 +659,8 @@ gcm_device_init (GcmDevice *device)
 	GError *error = NULL;
 	device->priv = GCM_DEVICE_GET_PRIVATE (device);
 	device->priv->id = NULL;
+	device->priv->saved = FALSE;
+	device->priv->connected = FALSE;
 	device->priv->serial = NULL;
 	device->priv->manufacturer = NULL;
 	device->priv->model = NULL;



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