Matthew Barnes 4e1eec
--- evolution-data-server-1.9.3/libedataserverui/e-source-selector.c.e-source-color	2006-04-26 04:21:21.000000000 -0400
Matthew Barnes 4e1eec
+++ evolution-data-server-1.9.3/libedataserverui/e-source-selector.c	2006-12-15 16:02:47.000000000 -0500
Matthew Barnes 4e1eec
@@ -411,15 +411,24 @@
Matthew Barnes 4e1eec
 			      NULL);
Matthew Barnes 4e1eec
 	} else {	
Matthew Barnes 4e1eec
 		ESource *source;
Matthew Barnes 4e1eec
-		guint32 color;
Matthew Barnes 4e1eec
 		GdkPixbuf *pixbuf = NULL;
Matthew Barnes 4e1eec
+		const gchar *color_spec;
Matthew Barnes 4e1eec
+		GdkColor color;
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
 		g_assert (E_IS_SOURCE (data));
Matthew Barnes 4e1eec
 		source = E_SOURCE (data);
Matthew Barnes 4e1eec
 		
Matthew Barnes 4e1eec
-		if (e_source_get_color (source, &color)) {
Matthew Barnes 4e1eec
+		color_spec = e_source_peek_color_spec (source);
Matthew Barnes 4e1eec
+		if (color_spec != NULL && gdk_color_parse (color_spec, &color)) {
Matthew Barnes 4e1eec
+			guint32 rgba;
Matthew Barnes 4e1eec
+
Matthew Barnes 4e1eec
 			pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, 16, 16);
Matthew Barnes 4e1eec
-			gdk_pixbuf_fill (pixbuf, color << 8);
Matthew Barnes 4e1eec
+
Matthew Barnes 4e1eec
+			rgba = (((color.red & 0xff00) << 8) |
Matthew Barnes 4e1eec
+				((color.green & 0xff00)) |
Matthew Barnes 4e1eec
+				((color.blue & 0xff00) >> 8)) << 8;
Matthew Barnes 4e1eec
+
Matthew Barnes 4e1eec
+			gdk_pixbuf_fill (pixbuf, rgba);
Matthew Barnes 4e1eec
 		}
Matthew Barnes 4e1eec
 			
Matthew Barnes 4e1eec
 		g_object_set (renderer,
Matthew Barnes 4e1eec
--- evolution-data-server-1.9.3/libedataserver/e-source.h.e-source-color	2005-08-31 00:26:10.000000000 -0400
Matthew Barnes 4e1eec
+++ evolution-data-server-1.9.3/libedataserver/e-source.h	2006-12-15 16:02:47.000000000 -0500
Matthew Barnes 4e1eec
@@ -82,20 +82,27 @@
Matthew Barnes 4e1eec
 				  const char   *relative_uri);
Matthew Barnes 4e1eec
 void  e_source_set_absolute_uri  (ESource      *source,
Matthew Barnes 4e1eec
 				  const char   *absolute_uri);
Matthew Barnes 4e1eec
+void  e_source_set_color_spec    (ESource      *source,
Matthew Barnes 4e1eec
+				  const gchar  *color_spec);
Matthew Barnes 4e1eec
 void  e_source_set_readonly      (ESource      *source,
Matthew Barnes 4e1eec
 				  gboolean      readonly);
Matthew Barnes 4e1eec
+#ifndef EDS_DISABLE_DEPRECATED
Matthew Barnes 4e1eec
 void  e_source_set_color         (ESource      *source,
Matthew Barnes 4e1eec
 				  guint32       color);
Matthew Barnes 4e1eec
 void  e_source_unset_color       (ESource      *source);
Matthew Barnes 4e1eec
+#endif
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
 ESourceGroup *e_source_peek_group         (ESource *source);
Matthew Barnes 4e1eec
 const char   *e_source_peek_uid           (ESource *source);
Matthew Barnes 4e1eec
 const char   *e_source_peek_name          (ESource *source);
Matthew Barnes 4e1eec
 const char   *e_source_peek_relative_uri  (ESource *source);
Matthew Barnes 4e1eec
 const char   *e_source_peek_absolute_uri  (ESource *source);
Matthew Barnes 4e1eec
+const char   *e_source_peek_color_spec    (ESource *source);
Matthew Barnes 4e1eec
 gboolean      e_source_get_readonly       (ESource *source);
Matthew Barnes 4e1eec
+#ifndef EDS_DISABLE_DEPRECATED
Matthew Barnes 4e1eec
 gboolean      e_source_get_color          (ESource *source,
Matthew Barnes 4e1eec
 					   guint32 *color_return);
Matthew Barnes 4e1eec
+#endif
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
 char *e_source_get_uri  (ESource *source);
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
--- evolution-data-server-1.9.3/libedataserver/e-source.c.e-source-color	2006-08-03 07:29:44.000000000 -0400
Matthew Barnes 4e1eec
+++ evolution-data-server-1.9.3/libedataserver/e-source.c	2006-12-15 16:02:47.000000000 -0500
Matthew Barnes 4e1eec
@@ -32,10 +32,6 @@
Matthew Barnes 4e1eec
 #define ES_CLASS(obj)  E_SOURCE_CLASS (G_OBJECT_GET_CLASS (obj))
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
-/* String used to put the color in the XML.  */
Matthew Barnes 4e1eec
-#define COLOR_FORMAT_STRING "%06x"
Matthew Barnes 4e1eec
-
Matthew Barnes 4e1eec
-
Matthew Barnes 4e1eec
 /* Private members.  */
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
 struct _ESourcePrivate {
Matthew Barnes 4e1eec
@@ -48,8 +44,7 @@
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
 	gboolean readonly;
Matthew Barnes 4e1eec
 	
Matthew Barnes 4e1eec
-	gboolean has_color;
Matthew Barnes 4e1eec
-	guint32 color;
Matthew Barnes 4e1eec
+	gchar *color_spec;
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
 	GHashTable *properties;
Matthew Barnes 4e1eec
 };
Matthew Barnes 4e1eec
@@ -89,6 +84,7 @@
Matthew Barnes 4e1eec
 	g_free (priv->name);
Matthew Barnes 4e1eec
 	g_free (priv->relative_uri);
Matthew Barnes 4e1eec
 	g_free (priv->absolute_uri);
Matthew Barnes 4e1eec
+	g_free (priv->color_spec);
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
 	g_hash_table_destroy (priv->properties);
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
@@ -143,6 +139,28 @@
Matthew Barnes 4e1eec
 						  g_free, g_free);
Matthew Barnes 4e1eec
 }
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
+/* Private methods. */
Matthew Barnes 4e1eec
+
Matthew Barnes 4e1eec
+static gboolean
Matthew Barnes 4e1eec
+set_color_spec (ESource *source,
Matthew Barnes 4e1eec
+                const gchar *color_spec)
Matthew Barnes 4e1eec
+{
Matthew Barnes 4e1eec
+	ESourcePrivate *priv = source->priv;
Matthew Barnes 4e1eec
+	gboolean do_cmp;
Matthew Barnes 4e1eec
+
Matthew Barnes 4e1eec
+	if (color_spec == priv->color_spec)
Matthew Barnes 4e1eec
+		return FALSE;
Matthew Barnes 4e1eec
+
Matthew Barnes 4e1eec
+	do_cmp = (color_spec != NULL && priv->color_spec != NULL);
Matthew Barnes 4e1eec
+	if (do_cmp && g_ascii_strcasecmp (color_spec, priv->color_spec) == 0)
Matthew Barnes 4e1eec
+		return FALSE;
Matthew Barnes 4e1eec
+
Matthew Barnes 4e1eec
+	g_free (priv->color_spec);
Matthew Barnes 4e1eec
+	priv->color_spec = g_strdup (color_spec);
Matthew Barnes 4e1eec
+
Matthew Barnes 4e1eec
+	return TRUE;
Matthew Barnes 4e1eec
+}
Matthew Barnes 4e1eec
+
Matthew Barnes 4e1eec
 /* Public methods.  */
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
 ESource *
Matthew Barnes 4e1eec
@@ -300,19 +318,22 @@
Matthew Barnes 4e1eec
 	xmlChar *name;
Matthew Barnes 4e1eec
 	xmlChar *relative_uri;
Matthew Barnes 4e1eec
 	xmlChar *absolute_uri;
Matthew Barnes 4e1eec
-	xmlChar *color_string;
Matthew Barnes 4e1eec
-	gboolean retval;
Matthew Barnes 4e1eec
+	xmlChar *color_spec;
Matthew Barnes 4e1eec
+	xmlChar *color;
Matthew Barnes 4e1eec
+	gboolean retval = FALSE;
Matthew Barnes 4e1eec
 	gboolean changed = FALSE;
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
 	name = xmlGetProp (node, "name");
Matthew Barnes 4e1eec
 	relative_uri = xmlGetProp (node, "relative_uri");
Matthew Barnes 4e1eec
 	absolute_uri = xmlGetProp (node, "uri");
Matthew Barnes 4e1eec
-	color_string = xmlGetProp (node, "color");
Matthew Barnes 4e1eec
+	color_spec = xmlGetProp (node, "color_spec");
Matthew Barnes 4e1eec
+	color = xmlGetProp (node, "color");  /* obsolete */
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
-	if (name == NULL || (relative_uri == NULL && absolute_uri == NULL)) {
Matthew Barnes 4e1eec
-		retval = FALSE;
Matthew Barnes 4e1eec
+	if (name == NULL || (relative_uri == NULL && absolute_uri == NULL))
Matthew Barnes 4e1eec
+		goto done;
Matthew Barnes 4e1eec
+
Matthew Barnes 4e1eec
+	if (color_spec != NULL && color != NULL)
Matthew Barnes 4e1eec
 		goto done;
Matthew Barnes 4e1eec
-	}
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
 	if (source->priv->name == NULL
Matthew Barnes 4e1eec
 	    || strcmp (name, source->priv->name) != 0
Matthew Barnes 4e1eec
@@ -334,21 +355,15 @@
Matthew Barnes 4e1eec
 		changed = TRUE;
Matthew Barnes 4e1eec
 	}
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
-	if (color_string == NULL) {
Matthew Barnes 4e1eec
-		if (source->priv->has_color) {
Matthew Barnes 4e1eec
-			source->priv->has_color = FALSE;
Matthew Barnes 4e1eec
-			changed = TRUE;
Matthew Barnes 4e1eec
-		}
Matthew Barnes 4e1eec
+	if (color == NULL) {
Matthew Barnes 4e1eec
+		/* It is okay for color_spec to be NULL. */
Matthew Barnes 4e1eec
+		changed |= set_color_spec (source, color_spec);
Matthew Barnes 4e1eec
 	} else {
Matthew Barnes 4e1eec
-		guint32 color = 0;
Matthew Barnes 4e1eec
-
Matthew Barnes 4e1eec
-		sscanf (color_string, COLOR_FORMAT_STRING, &color;;
Matthew Barnes 4e1eec
-		if (! source->priv->has_color || source->priv->color != color) {
Matthew Barnes 4e1eec
-			source->priv->has_color = TRUE;
Matthew Barnes 4e1eec
-			source->priv->color = color;
Matthew Barnes 4e1eec
-			changed = TRUE;
Matthew Barnes 4e1eec
-		}
Matthew Barnes 4e1eec
+		gchar buffer[8];
Matthew Barnes 4e1eec
+		g_snprintf (buffer, sizeof (buffer), "#%s", color);
Matthew Barnes 4e1eec
+		changed |= set_color_spec (source, buffer);
Matthew Barnes 4e1eec
 	}
Matthew Barnes 4e1eec
+
Matthew Barnes 4e1eec
 	if (g_hash_table_size (source->priv->properties) && !node->children) {
Matthew Barnes 4e1eec
 		g_hash_table_destroy (source->priv->properties);
Matthew Barnes 4e1eec
 		source->priv->properties = g_hash_table_new_full (g_str_hash, g_str_equal,
Matthew Barnes 4e1eec
@@ -387,8 +402,8 @@
Matthew Barnes 4e1eec
 		xmlFree (relative_uri);
Matthew Barnes 4e1eec
 	if (absolute_uri != NULL)
Matthew Barnes 4e1eec
 		xmlFree (absolute_uri);
Matthew Barnes 4e1eec
-	if (color_string != NULL)
Matthew Barnes 4e1eec
-		xmlFree (color_string);
Matthew Barnes 4e1eec
+	if (color_spec != NULL)
Matthew Barnes 4e1eec
+		xmlFree (color_spec);
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
 	return retval;
Matthew Barnes 4e1eec
 }
Matthew Barnes 4e1eec
@@ -552,18 +567,12 @@
Matthew Barnes 4e1eec
 e_source_set_color (ESource *source,
Matthew Barnes 4e1eec
 		    guint32 color)
Matthew Barnes 4e1eec
 {
Matthew Barnes 4e1eec
-	g_return_if_fail (E_IS_SOURCE (source));
Matthew Barnes 4e1eec
+	gchar color_spec[8];
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
-	if (source->priv->readonly)
Matthew Barnes 4e1eec
-		return;
Matthew Barnes 4e1eec
-	
Matthew Barnes 4e1eec
-	if (source->priv->has_color && source->priv->color == color)
Matthew Barnes 4e1eec
-		return;
Matthew Barnes 4e1eec
-
Matthew Barnes 4e1eec
-	source->priv->has_color = TRUE;
Matthew Barnes 4e1eec
-	source->priv->color = color;
Matthew Barnes 4e1eec
+	g_return_if_fail (E_IS_SOURCE (source));
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
-	g_signal_emit (source, signals[CHANGED], 0);
Matthew Barnes 4e1eec
+	g_snprintf (color_spec, sizeof (color_spec), "#%06x", color);
Matthew Barnes 4e1eec
+	e_source_set_color_spec (source, color_spec);
Matthew Barnes 4e1eec
 }
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
 void
Matthew Barnes 4e1eec
@@ -571,13 +580,29 @@
Matthew Barnes 4e1eec
 {
Matthew Barnes 4e1eec
 	g_return_if_fail (E_IS_SOURCE (source));
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
-	if (! source->priv->has_color)
Matthew Barnes 4e1eec
-		return;
Matthew Barnes 4e1eec
-
Matthew Barnes 4e1eec
-	source->priv->has_color = FALSE;
Matthew Barnes 4e1eec
-	g_signal_emit (source, signals[CHANGED], 0);
Matthew Barnes 4e1eec
+	e_source_set_color_spec (source, NULL);
Matthew Barnes 4e1eec
 }
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
+/**
Matthew Barnes 4e1eec
+ * e_source_set_color_spec:
Matthew Barnes 4e1eec
+ * @source: an ESource
Matthew Barnes 4e1eec
+ * @color_spec: a string specifying the color
Matthew Barnes 4e1eec
+ *
Matthew Barnes 4e1eec
+ * Store a textual representation of a color in @source.  The @color_spec
Matthew Barnes 4e1eec
+ * string should be parsable by #gdk_color_parse(), or %NULL to unset the
Matthew Barnes 4e1eec
+ * color in @source.
Matthew Barnes 4e1eec
+ *
Matthew Barnes 4e1eec
+ * Since: 1.10
Matthew Barnes 4e1eec
+ **/
Matthew Barnes 4e1eec
+void
Matthew Barnes 4e1eec
+e_source_set_color_spec (ESource *source,
Matthew Barnes 4e1eec
+		         const gchar *color_spec)
Matthew Barnes 4e1eec
+{
Matthew Barnes 4e1eec
+	g_return_if_fail (E_IS_SOURCE (source));
Matthew Barnes 4e1eec
+
Matthew Barnes 4e1eec
+	if (!source->priv->readonly && set_color_spec (source, color_spec))
Matthew Barnes 4e1eec
+		g_signal_emit (source, signals[CHANGED], 0);
Matthew Barnes 4e1eec
+}
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
 ESourceGroup *
Matthew Barnes 4e1eec
 e_source_peek_group (ESource *source)
Matthew Barnes 4e1eec
@@ -619,6 +644,25 @@
Matthew Barnes 4e1eec
 	return source->priv->absolute_uri;
Matthew Barnes 4e1eec
 }
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
+/**
Matthew Barnes 4e1eec
+ * e_source_peek_color_spec:
Matthew Barnes 4e1eec
+ * @source: an ESource
Matthew Barnes 4e1eec
+ * 
Matthew Barnes 4e1eec
+ * Return the textual representation of the color for @source, or %NULL if it
Matthew Barnes 4e1eec
+ * has none.  The returned string should be parsable by #gdk_color_parse().
Matthew Barnes 4e1eec
+ * 
Matthew Barnes 4e1eec
+ * Return value: a string specifying the color
Matthew Barnes 4e1eec
+ *
Matthew Barnes 4e1eec
+ * Since: 1.10
Matthew Barnes 4e1eec
+ **/
Matthew Barnes 4e1eec
+const char *
Matthew Barnes 4e1eec
+e_source_peek_color_spec (ESource *source)
Matthew Barnes 4e1eec
+{
Matthew Barnes 4e1eec
+	g_return_val_if_fail (E_IS_SOURCE (source), NULL);
Matthew Barnes 4e1eec
+
Matthew Barnes 4e1eec
+	return source->priv->color_spec;
Matthew Barnes 4e1eec
+}
Matthew Barnes 4e1eec
+
Matthew Barnes 4e1eec
 gboolean
Matthew Barnes 4e1eec
 e_source_get_readonly (ESource *source)
Matthew Barnes 4e1eec
 {
Matthew Barnes 4e1eec
@@ -643,13 +687,21 @@
Matthew Barnes 4e1eec
 e_source_get_color (ESource *source,
Matthew Barnes 4e1eec
 		    guint32 *color_return)
Matthew Barnes 4e1eec
 {
Matthew Barnes 4e1eec
+	const gchar *color_spec;
Matthew Barnes 4e1eec
+	guint32 color;
Matthew Barnes 4e1eec
+
Matthew Barnes 4e1eec
 	g_return_val_if_fail (E_IS_SOURCE (source), FALSE);
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
-	if (! source->priv->has_color)
Matthew Barnes 4e1eec
+	color_spec = e_source_peek_color_spec (source);
Matthew Barnes 4e1eec
+
Matthew Barnes 4e1eec
+	if (color_spec == NULL)
Matthew Barnes 4e1eec
+		return FALSE;
Matthew Barnes 4e1eec
+
Matthew Barnes 4e1eec
+	if (sscanf (color_spec, "#%06x", &color) != 1)
Matthew Barnes 4e1eec
 		return FALSE;
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
 	if (color_return != NULL)
Matthew Barnes 4e1eec
-		*color_return = source->priv->color;
Matthew Barnes 4e1eec
+		*color_return = color;
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
 	return TRUE;
Matthew Barnes 4e1eec
 }
Matthew Barnes 4e1eec
@@ -689,8 +741,6 @@
Matthew Barnes 4e1eec
 			 xmlNodePtr parent_node)
Matthew Barnes 4e1eec
 {
Matthew Barnes 4e1eec
 	ESourcePrivate *priv;
Matthew Barnes 4e1eec
-	gboolean has_color;
Matthew Barnes 4e1eec
-	guint32 color;
Matthew Barnes 4e1eec
 	xmlNodePtr node;
Matthew Barnes 4e1eec
 	const char *abs_uri = NULL, *relative_uri = NULL;
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
@@ -709,13 +759,9 @@
Matthew Barnes 4e1eec
 		xmlSetProp (node, "uri", abs_uri);
Matthew Barnes 4e1eec
 	if (relative_uri)
Matthew Barnes 4e1eec
 		xmlSetProp (node, "relative_uri", relative_uri);
Matthew Barnes 4e1eec
-	
Matthew Barnes 4e1eec
-	has_color = e_source_get_color (source, &color;;
Matthew Barnes 4e1eec
-	if (has_color) {
Matthew Barnes 4e1eec
-		char *color_string = g_strdup_printf (COLOR_FORMAT_STRING, color);
Matthew Barnes 4e1eec
-		xmlSetProp (node, "color", color_string);
Matthew Barnes 4e1eec
-		g_free (color_string);
Matthew Barnes 4e1eec
-	}
Matthew Barnes 4e1eec
+
Matthew Barnes 4e1eec
+	if (priv->color_spec != NULL)
Matthew Barnes 4e1eec
+		xmlSetProp (node, "color_spec", priv->color_spec);
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
 	if (g_hash_table_size (priv->properties) != 0) {
Matthew Barnes 4e1eec
 		xmlNodePtr properties_node;
Matthew Barnes 4e1eec
@@ -848,7 +894,6 @@
Matthew Barnes 4e1eec
 e_source_copy (ESource *source)
Matthew Barnes 4e1eec
 {
Matthew Barnes 4e1eec
 	ESource *new_source;
Matthew Barnes 4e1eec
-	guint32  color;
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
 	g_return_val_if_fail (E_IS_SOURCE (source), NULL);
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
@@ -857,8 +902,7 @@
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
 	e_source_set_name (new_source, e_source_peek_name (source));
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
-	if (e_source_get_color (source, &color))
Matthew Barnes 4e1eec
-		e_source_set_color (new_source, color);
Matthew Barnes 4e1eec
+	new_source->priv->color_spec = g_strdup (source->priv->color_spec);
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
 	new_source->priv->absolute_uri = g_strdup (e_source_peek_absolute_uri (source));
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
--- evolution-data-server-1.9.3/libedataserver/test-source-list.c.e-source-color	2005-10-14 07:31:40.000000000 -0400
Matthew Barnes 4e1eec
+++ evolution-data-server-1.9.3/libedataserver/test-source-list.c	2006-12-15 16:02:47.000000000 -0500
Matthew Barnes 4e1eec
@@ -91,17 +91,16 @@
Matthew Barnes 4e1eec
 dump_source (ESource *source)
Matthew Barnes 4e1eec
 {
Matthew Barnes 4e1eec
 	char *uri = e_source_get_uri (source);
Matthew Barnes 4e1eec
-	gboolean has_color;
Matthew Barnes 4e1eec
-	guint32 color;
Matthew Barnes 4e1eec
+	const gchar *color_spec;
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
 	g_print ("\tSource %s\n", e_source_peek_uid (source));
Matthew Barnes 4e1eec
 	g_print ("\t\tname: %s\n", e_source_peek_name (source));
Matthew Barnes 4e1eec
 	g_print ("\t\trelative_uri: %s\n", e_source_peek_relative_uri (source));
Matthew Barnes 4e1eec
 	g_print ("\t\tabsolute_uri: %s\n", uri);
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
-	has_color = e_source_get_color (source, &color;;
Matthew Barnes 4e1eec
-	if (has_color)
Matthew Barnes 4e1eec
-		g_print ("\t\tcolor: %06x\n", color);
Matthew Barnes 4e1eec
+	color_spec = e_source_peek_color_spec (source);
Matthew Barnes 4e1eec
+	if (color_spec != NULL)
Matthew Barnes 4e1eec
+		g_print ("\t\tcolor: %s\n", color_spec);
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
 	g_print ("\t\tproperties:\n");
Matthew Barnes 4e1eec
 	e_source_foreach_property (source, (GHFunc) dump_property, NULL);
Matthew Barnes 4e1eec
@@ -429,7 +428,6 @@
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
 	if (set_color_arg != NULL) {
Matthew Barnes 4e1eec
 		ESource *source;
Matthew Barnes 4e1eec
-		guint32 color;
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
 		if (add_source_arg == NULL && source_arg == NULL) {
Matthew Barnes 4e1eec
 			fprintf (stderr,
Matthew Barnes 4e1eec
@@ -442,8 +440,7 @@
Matthew Barnes 4e1eec
 		else
Matthew Barnes 4e1eec
 			source = e_source_list_peek_source_by_uid (list, source_arg);
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
-		sscanf (set_color_arg, "%06x", &color;;
Matthew Barnes 4e1eec
-		e_source_set_color (source, color);
Matthew Barnes 4e1eec
+		e_source_set_color_spec (source, set_color_arg);
Matthew Barnes 4e1eec
 		e_source_list_sync (list, NULL);
Matthew Barnes 4e1eec
 	}
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
@@ -461,7 +458,7 @@
Matthew Barnes 4e1eec
 		else
Matthew Barnes 4e1eec
 			source = e_source_list_peek_source_by_uid (list, source_arg);
Matthew Barnes 4e1eec
 
Matthew Barnes 4e1eec
-		e_source_unset_color (source);
Matthew Barnes 4e1eec
+		e_source_set_color_spec (source, NULL);
Matthew Barnes 4e1eec
 		e_source_list_sync (list, NULL);
Matthew Barnes 4e1eec
 	}
Matthew Barnes 4e1eec