eel r2168 - in trunk: . eel



Author: cneumair
Date: Wed Sep 10 19:54:20 2008
New Revision: 2168
URL: http://svn.gnome.org/viewvc/eel?rev=2168&view=rev

Log:
2008-09-10  Christian Neumair  <cneumair gnome org>

	* eel/eel-preferences.c (update_auto_string_array_as_quarks),
	(preferences_entry_update_auto_storage),
	(preferences_entry_remove_auto_storage),
	(eel_preferences_add_auto_string_array_as_quarks):
	* eel/eel-preferences.h:
	Add eel_preferences_add_auto_string_array_as_quarks(), which maps a
	string array to a quark array. No remove function yet, since up to now
	it is not needed. Parly fixes #551576.


Modified:
   trunk/ChangeLog
   trunk/eel/eel-preferences.c
   trunk/eel/eel-preferences.h

Modified: trunk/eel/eel-preferences.c
==============================================================================
--- trunk/eel/eel-preferences.c	(original)
+++ trunk/eel/eel-preferences.c	Wed Sep 10 19:54:20 2008
@@ -43,7 +43,8 @@
 	PREFERENCE_BOOLEAN = 1,
 	PREFERENCE_INTEGER,
 	PREFERENCE_STRING,
-	PREFERENCE_STRING_ARRAY
+	PREFERENCE_STRING_ARRAY,
+	PREFERENCE_STRING_ARRAY_AS_QUARKS
 } PreferenceType;
 
 /*
@@ -680,6 +681,30 @@
 }
 
 static void
+update_auto_string_array_as_quarks (gpointer data, gpointer callback_data)
+{
+	GQuark **storage;
+	char **value;
+	int i;
+	
+	g_assert (data != NULL);
+	g_assert (callback_data != NULL);
+
+	storage = (GQuark **)data;
+	value = (char **)callback_data;
+
+	g_free (*storage);
+	*storage = g_new (GQuark, g_strv_length (value) + 1);
+
+	if (value != NULL) {
+		for (i = 0; value[i] != NULL; ++i) {
+			(*storage)[i] = g_quark_from_string (value[i]);
+		}
+	}
+	(*storage)[i] = 0;
+}
+
+static void
 update_auto_integer_or_boolean (gpointer data, gpointer callback_data)
 {
 	g_assert (data != NULL);
@@ -717,6 +742,13 @@
 				new_string_array_value);
 		g_strfreev (new_string_array_value);
 		break;
+	case PREFERENCE_STRING_ARRAY_AS_QUARKS:
+		new_string_array_value = eel_preferences_get_string_array (entry->name);
+		g_list_foreach (entry->auto_storage_list,
+				update_auto_string_array_as_quarks,
+				new_string_array_value);
+		g_strfreev (new_string_array_value);
+		break;
 	case PREFERENCE_INTEGER:
 		new_int_value = eel_preferences_get_integer (entry->name);
 		g_list_foreach (entry->auto_storage_list,
@@ -923,6 +955,9 @@
 			case PREFERENCE_STRING_ARRAY:
 				update_auto_string_array (storage, NULL);
 				break;
+			case PREFERENCE_STRING_ARRAY_AS_QUARKS:
+				update_auto_string_array_as_quarks (storage, NULL);
+				break;
 			case PREFERENCE_BOOLEAN:
 			case PREFERENCE_INTEGER:
 				update_auto_integer_or_boolean (storage, NULL);
@@ -1169,6 +1204,27 @@
 }
 
 void
+eel_preferences_add_auto_string_array_as_quarks (const char *name,
+						 GQuark **storage)
+{
+	PreferencesEntry *entry;
+	char **value;
+
+	g_return_if_fail (name != NULL);
+	g_return_if_fail (storage != NULL);
+	g_return_if_fail (preferences_is_initialized ());
+
+	entry = preferences_global_table_lookup_or_insert (name);
+	g_assert (entry != NULL);
+
+	preferences_entry_add_auto_storage (entry, storage, PREFERENCE_STRING_ARRAY_AS_QUARKS);
+
+	value = eel_preferences_get_string_array (entry->name);
+	update_auto_string_array_as_quarks (storage, value);
+	g_free (value);
+}
+
+void
 eel_preferences_add_auto_integer (const char *name,
 				  int *storage)
 {

Modified: trunk/eel/eel-preferences.h
==============================================================================
--- trunk/eel/eel-preferences.h	(original)
+++ trunk/eel/eel-preferences.h	Wed Sep 10 19:54:20 2008
@@ -75,6 +75,8 @@
 								const char             **storage);
 void           eel_preferences_add_auto_string_array           (const char              *name,
 								char                  ***storage);
+void           eel_preferences_add_auto_string_array_as_quarks (const char              *name,
+								GQuark                 **storage);
 void           eel_preferences_add_auto_integer                (const char              *name,
 								int                     *storage);
 void           eel_preferences_add_auto_enum                   (const char              *name,



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