[gnome-packagekit] Don't use english enumerated values in GConf, instead use seconds



commit 4b7f29fc150312188450724ba74a89022f36765f
Author: Richard Hughes <richard hughsie com>
Date:   Thu Jun 4 11:07:16 2009 +0100

    Don't use english enumerated values in GConf, instead use seconds
---
 data/gnome-packagekit.schemas.in |   18 ++++----
 src/gpk-auto-refresh.c           |   52 +++++------------------
 src/gpk-enum.c                   |   49 ----------------------
 src/gpk-enum.h                   |   15 -------
 src/gpk-prefs.c                  |   83 +++++++++++++++++++-------------------
 5 files changed, 63 insertions(+), 154 deletions(-)

diff --git a/data/gnome-packagekit.schemas.in b/data/gnome-packagekit.schemas.in
index 128b456..db94f4e 100644
--- a/data/gnome-packagekit.schemas.in
+++ b/data/gnome-packagekit.schemas.in
@@ -272,11 +272,11 @@
       <key>/schemas/apps/gnome-packagekit/frequency_get_updates</key>
       <applyto>/apps/gnome-packagekit/frequency_get_updates</applyto>
       <owner>gnome-packagekit</owner>
-      <type>string</type>
-      <default>daily</default>
+      <type>int</type>
+      <default>86400</default>
       <locale name="C">
         <short>How often to check for updates</short>
-        <long>How often to check for updates. Options are "hourly", "daily", "weekly", "never"</long>
+        <long>How often to check for updates. Value is in seconds.</long>
       </locale>
     </schema>
 
@@ -284,11 +284,11 @@
       <key>/schemas/apps/gnome-packagekit/frequency_get_upgrades</key>
       <applyto>/apps/gnome-packagekit/frequency_get_upgrades</applyto>
       <owner>gnome-packagekit</owner>
-      <type>string</type>
-      <default>weekly</default>
+      <type>int</type>
+      <default>604800</default>
       <locale name="C">
         <short>How often to check for distribution upgrades</short>
-        <long>How often to check for distribution upgrades. Options are "daily", "weekly", "never"</long>
+        <long>How often to check for distribution upgrades. Value is in seconds.</long>
       </locale>
     </schema>
 
@@ -296,11 +296,11 @@
       <key>/schemas/apps/gnome-packagekit/frequency_refresh_cache</key>
       <applyto>/apps/gnome-packagekit/frequency_refresh_cache</applyto>
       <owner>gnome-packagekit</owner>
-      <type>string</type>
-      <default>daily</default>
+      <type>int</type>
+      <default>86400</default>
       <locale name="C">
         <short>How often to refresh the package cache</short>
-        <long>How often to refresh the package cache. Options are "daily", "weekly", "never"</long>
+        <long>How often to refresh the package cache. Value is in seconds.</long>
       </locale>
     </schema>
 
diff --git a/src/gpk-auto-refresh.c b/src/gpk-auto-refresh.c
index eb4fba8..24fc6f7 100644
--- a/src/gpk-auto-refresh.c
+++ b/src/gpk-auto-refresh.c
@@ -157,52 +157,24 @@ gpk_auto_refresh_signal_get_upgrades (GpkAutoRefresh *arefresh)
 }
 
 /**
- * gpk_auto_refresh_convert_frequency:
- *
- * Return value: The number of seconds for the frequency period,
- * or zero for never or no schema
+ * gpk_auto_refresh_get_frequency_prefs:
  **/
 static guint
-gpk_auto_refresh_convert_frequency (GpkFreqEnum freq)
+gpk_auto_refresh_get_frequency_prefs (GpkAutoRefresh *arefresh, const gchar *key)
 {
-	if (freq == GPK_FREQ_ENUM_UNKNOWN) {
-		egg_warning ("no schema");
-		return 0;
-	}
-	if (freq == GPK_FREQ_ENUM_NEVER)
-		return 0;
-	if (freq == GPK_FREQ_ENUM_HOURLY)
-		return 60*60;
-	if (freq == GPK_FREQ_ENUM_DAILY)
-		return 60*60*24;
-	if (freq == GPK_FREQ_ENUM_WEEKLY)
-		return 60*60*24*7;
-	egg_warning ("unknown frequency enum");
-	return 0;
-}
-
-/**
- * gpk_auto_refresh_convert_frequency_text:
- **/
-static guint
-gpk_auto_refresh_convert_frequency_text (GpkAutoRefresh *arefresh, const gchar *key)
-{
-	gchar *freq_text;
-	GpkFreqEnum freq;
+	guint value;
 
 	g_return_val_if_fail (GPK_IS_AUTO_REFRESH (arefresh), 0);
 
 	/* get from gconf */
-	freq_text = gconf_client_get_string (arefresh->priv->gconf_client, key, NULL);
-	if (freq_text == NULL) {
-		egg_warning ("no schema for %s", key);
-		return 0;
+	value = gconf_client_get_int (arefresh->priv->gconf_client, key, NULL);
+	if (value == 0) {
+		egg_warning ("no schema for %s, using daily", key);
+		value = 86400;
 	}
 
 	/* convert to enum and get seconds */
-	freq = gpk_freq_enum_from_text (freq_text);
-	g_free (freq_text);
-	return gpk_auto_refresh_convert_frequency (freq);
+	return value;
 }
 
 /**
@@ -218,7 +190,7 @@ gpk_auto_refresh_maybe_refresh_cache (GpkAutoRefresh *arefresh)
 	g_return_val_if_fail (GPK_IS_AUTO_REFRESH (arefresh), FALSE);
 
 	/* if we don't want to auto check for updates, don't do this either */
-	thresh = gpk_auto_refresh_convert_frequency_text (arefresh, GPK_CONF_FREQUENCY_GET_UPDATES);
+	thresh = gpk_auto_refresh_get_frequency_prefs (arefresh, GPK_CONF_FREQUENCY_GET_UPDATES);
 	if (thresh == 0) {
 		egg_debug ("not when policy is to never refresh");
 		return FALSE;
@@ -237,7 +209,7 @@ gpk_auto_refresh_maybe_refresh_cache (GpkAutoRefresh *arefresh)
 	}
 
 	/* get this each time, as it may have changed behind out back */
-	thresh = gpk_auto_refresh_convert_frequency_text (arefresh, GPK_CONF_FREQUENCY_REFRESH_CACHE);
+	thresh = gpk_auto_refresh_get_frequency_prefs (arefresh, GPK_CONF_FREQUENCY_REFRESH_CACHE);
 	if (thresh == 0) {
 		egg_debug ("not when policy is to never refresh");
 		return FALSE;
@@ -283,7 +255,7 @@ gpk_auto_refresh_maybe_get_updates (GpkAutoRefresh *arefresh)
 	}
 
 	/* get this each time, as it may have changed behind out back */
-	thresh = gpk_auto_refresh_convert_frequency_text (arefresh, GPK_CONF_FREQUENCY_GET_UPDATES);
+	thresh = gpk_auto_refresh_get_frequency_prefs (arefresh, GPK_CONF_FREQUENCY_GET_UPDATES);
 	if (thresh == 0) {
 		egg_debug ("not when policy is set to never get updates");
 		return FALSE;
@@ -320,7 +292,7 @@ gpk_auto_refresh_maybe_get_upgrades (GpkAutoRefresh *arefresh)
 	g_return_val_if_fail (GPK_IS_AUTO_REFRESH (arefresh), FALSE);
 
 	/* get this each time, as it may have changed behind out back */
-	thresh = gpk_auto_refresh_convert_frequency_text (arefresh, GPK_CONF_FREQUENCY_GET_UPGRADES);
+	thresh = gpk_auto_refresh_get_frequency_prefs (arefresh, GPK_CONF_FREQUENCY_GET_UPGRADES);
 	if (thresh == 0) {
 		egg_debug ("not when policy is set to never check for upgrades");
 		return FALSE;
diff --git a/src/gpk-enum.c b/src/gpk-enum.c
index 3c9e3ef..8a15dfe 100644
--- a/src/gpk-enum.c
+++ b/src/gpk-enum.c
@@ -236,15 +236,6 @@ static const PkEnumMatch enum_message_icon_name[] = {
 	{0, NULL}
 };
 
-static const PkEnumMatch enum_freq[] = {
-	{GPK_FREQ_ENUM_UNKNOWN,			"unknown"},	/* fall though value */
-	{GPK_FREQ_ENUM_HOURLY,			"hourly"},
-	{GPK_FREQ_ENUM_DAILY,			"daily"},
-	{GPK_FREQ_ENUM_WEEKLY,			"weekly"},
-	{GPK_FREQ_ENUM_NEVER,			"never"},
-	{0, NULL}
-};
-
 static const PkEnumMatch enum_update[] = {
 	{GPK_UPDATE_ENUM_UNKNOWN,		"unknown"},	/* fall though value */
 	{GPK_UPDATE_ENUM_ALL,			"all"},
@@ -254,34 +245,6 @@ static const PkEnumMatch enum_update[] = {
 };
 
 /**
- * gpk_freq_enum_from_text:
- * @freq: Text describing the enumerated type
- *
- * Converts a text enumerated type to its unsigned integer representation
- *
- * Return value: the enumerated constant value, e.g. PK_SIGTYPE_ENUM_GPG
- **/
-GpkFreqEnum
-gpk_freq_enum_from_text (const gchar *freq)
-{
-	return pk_enum_find_value (enum_freq, freq);
-}
-
-/**
- * gpk_freq_enum_to_text:
- * @freq: The enumerated type value
- *
- * Converts a enumerated type to its text representation
- *
- * Return value: the enumerated constant value, e.g. "available"
- **/
-const gchar *
-gpk_freq_enum_to_text (GpkFreqEnum freq)
-{
-	return pk_enum_find_string (enum_freq, freq);
-}
-
-/**
  * gpk_update_enum_from_text:
  * @update: Text describing the enumerated type
  *
@@ -1858,18 +1821,6 @@ gpk_enum_test (gpointer data)
 	}
 	egg_test_success (test, NULL);
 
-
-	/************************************************************/
-	egg_test_title (test, "check we convert all the freq bitfield");
-	for (i=0; i<=GPK_FREQ_ENUM_UNKNOWN; i++) {
-		string = gpk_freq_enum_to_text (i);
-		if (string == NULL) {
-			egg_test_failed (test, "failed to get %i", i);
-			break;
-		}
-	}
-	egg_test_success (test, NULL);
-
 	/************************************************************/
 	egg_test_title (test, "check we convert all the update bitfield");
 	for (i=0; i<=GPK_UPDATE_ENUM_UNKNOWN; i++) {
diff --git a/src/gpk-enum.h b/src/gpk-enum.h
index d38f929..c9f1160 100644
--- a/src/gpk-enum.h
+++ b/src/gpk-enum.h
@@ -28,19 +28,6 @@
 G_BEGIN_DECLS
 
 /**
- * GpkFreqEnum:
- *
- * The frequency type
- **/
-typedef enum {
-	GPK_FREQ_ENUM_HOURLY,
-	GPK_FREQ_ENUM_DAILY,
-	GPK_FREQ_ENUM_WEEKLY,
-	GPK_FREQ_ENUM_NEVER,
-	GPK_FREQ_ENUM_UNKNOWN
-} GpkFreqEnum;
-
-/**
  * GpkUpdateEnum:
  *
  * The update type
@@ -99,8 +86,6 @@ const gchar	*gpk_role_enum_to_localised_past	(PkRoleEnum	 role)
 							 G_GNUC_CONST;
 const gchar	*gpk_role_enum_to_localised_present	(PkRoleEnum	 role)
 							 G_GNUC_CONST;
-GpkFreqEnum	 gpk_freq_enum_from_text		(const gchar	*freq);
-const gchar	*gpk_freq_enum_to_text			(GpkFreqEnum	 freq);
 GpkUpdateEnum	 gpk_update_enum_from_text		(const gchar	*update);
 const gchar	*gpk_update_enum_to_text		(GpkUpdateEnum	 update);
 const gchar	*gpk_role_enum_to_icon_name		(PkRoleEnum	 role);
diff --git a/src/gpk-prefs.c b/src/gpk-prefs.c
index bfb02a4..7e54182 100644
--- a/src/gpk-prefs.c
+++ b/src/gpk-prefs.c
@@ -56,6 +56,11 @@
 /* TRANSLATORS: don't update anything */
 #define PK_UPDATE_NONE_TEXT		_("Nothing")
 
+#define GPK_PREFS_VALUE_NEVER		(0)
+#define GPK_PREFS_VALUE_HOURLY		(60*60)
+#define GPK_PREFS_VALUE_DAILY		(60*60*24)
+#define GPK_PREFS_VALUE_WEEKLY		(60*60*24*7)
+
 static GtkBuilder *builder = NULL;
 
 /**
@@ -94,26 +99,24 @@ static void
 gpk_prefs_update_freq_combo_changed (GtkWidget *widget, gpointer data)
 {
 	gchar *value;
-	const gchar *action;
-	GpkFreqEnum freq = GPK_FREQ_ENUM_UNKNOWN;
+	guint freq = 0;
 	GConfClient *client;
 
 	client = gconf_client_get_default ();
 	value = gtk_combo_box_get_active_text (GTK_COMBO_BOX (widget));
 	if (strcmp (value, PK_FREQ_HOURLY_TEXT) == 0)
-		freq = GPK_FREQ_ENUM_HOURLY;
+		freq = GPK_PREFS_VALUE_HOURLY;
 	else if (strcmp (value, PK_FREQ_DAILY_TEXT) == 0)
-		freq = GPK_FREQ_ENUM_DAILY;
+		freq = GPK_PREFS_VALUE_DAILY;
 	else if (strcmp (value, PK_FREQ_WEEKLY_TEXT) == 0)
-		freq = GPK_FREQ_ENUM_WEEKLY;
+		freq = GPK_PREFS_VALUE_WEEKLY;
 	else if (strcmp (value, PK_FREQ_NEVER_TEXT) == 0)
-		freq = GPK_FREQ_ENUM_NEVER;
+		freq = GPK_PREFS_VALUE_NEVER;
 	else
 		g_assert (FALSE);
 
-	action = gpk_freq_enum_to_text (freq);
-	egg_debug ("Changing %s to %s", GPK_CONF_FREQUENCY_GET_UPDATES, action);
-	gconf_client_set_string (client, GPK_CONF_FREQUENCY_GET_UPDATES, action, NULL);
+	egg_debug ("Changing %s to %i", GPK_CONF_FREQUENCY_GET_UPDATES, freq);
+	gconf_client_set_int (client, GPK_CONF_FREQUENCY_GET_UPDATES, freq, NULL);
 	g_free (value);
 	g_object_unref (client);
 }
@@ -125,24 +128,22 @@ static void
 gpk_prefs_upgrade_freq_combo_changed (GtkWidget *widget, gpointer data)
 {
 	gchar *value;
-	const gchar *action;
-	GpkFreqEnum freq = GPK_FREQ_ENUM_UNKNOWN;
+	guint freq = 0;
 	GConfClient *client;
 
 	client = gconf_client_get_default ();
 	value = gtk_combo_box_get_active_text (GTK_COMBO_BOX (widget));
 	if (strcmp (value, PK_FREQ_DAILY_TEXT) == 0)
-		freq = GPK_FREQ_ENUM_DAILY;
+		freq = GPK_PREFS_VALUE_DAILY;
 	else if (strcmp (value, PK_FREQ_WEEKLY_TEXT) == 0)
-		freq = GPK_FREQ_ENUM_WEEKLY;
+		freq = GPK_PREFS_VALUE_WEEKLY;
 	else if (strcmp (value, PK_FREQ_NEVER_TEXT) == 0)
-		freq = GPK_FREQ_ENUM_NEVER;
+		freq = GPK_PREFS_VALUE_NEVER;
 	else
 		g_assert (FALSE);
 
-	action = gpk_freq_enum_to_text (freq);
-	egg_debug ("Changing %s to %s", GPK_CONF_FREQUENCY_GET_UPGRADES, action);
-	gconf_client_set_string (client, GPK_CONF_FREQUENCY_GET_UPGRADES, action, NULL);
+	egg_debug ("Changing %s to %i", GPK_CONF_FREQUENCY_GET_UPGRADES, freq);
+	gconf_client_set_int (client, GPK_CONF_FREQUENCY_GET_UPGRADES, freq, NULL);
 	g_free (value);
 	g_object_unref (client);
 }
@@ -212,23 +213,16 @@ gpk_prefs_update_freq_combo_simple_text (GtkWidget *combo_box)
 static void
 gpk_prefs_update_freq_combo_setup (void)
 {
-	gchar *value;
+	guint value;
 	gboolean is_writable;
 	GtkWidget *widget;
-	GpkFreqEnum freq;
 	GConfClient *client;
 
 	client = gconf_client_get_default ();
 	widget = GTK_WIDGET (gtk_builder_get_object (builder, "combobox_check"));
 	is_writable = gconf_client_key_is_writable (client, GPK_CONF_FREQUENCY_GET_UPDATES, NULL);
-	value = gconf_client_get_string (client, GPK_CONF_FREQUENCY_GET_UPDATES, NULL);
-	if (value == NULL) {
-		egg_warning ("invalid schema, please re-install");
-		return;
-	}
-	egg_debug ("value from gconf %s", value);
-	freq = gpk_freq_enum_from_text (value);
-	g_free (value);
+	value = gconf_client_get_int (client, GPK_CONF_FREQUENCY_GET_UPDATES, NULL);
+	egg_debug ("value from gconf %i", value);
 	g_object_unref (client);
 
 	/* do we have permission to write? */
@@ -240,8 +234,16 @@ gpk_prefs_update_freq_combo_setup (void)
 	gtk_combo_box_append_text (GTK_COMBO_BOX (widget), PK_FREQ_DAILY_TEXT);
 	gtk_combo_box_append_text (GTK_COMBO_BOX (widget), PK_FREQ_WEEKLY_TEXT);
 	gtk_combo_box_append_text (GTK_COMBO_BOX (widget), PK_FREQ_NEVER_TEXT);
-	/* we can do this as it's the same order */
-	gtk_combo_box_set_active (GTK_COMBO_BOX (widget), freq);
+
+	/* select the correct entry */
+	if (value == GPK_PREFS_VALUE_HOURLY)
+		gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0);
+	else if (value == GPK_PREFS_VALUE_DAILY)
+		gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 1);
+	else if (value == GPK_PREFS_VALUE_WEEKLY)
+		gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 2);
+	else if (value == GPK_PREFS_VALUE_NEVER)
+		gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 3);
 
 	/* only do this after else we redraw the window */
 	g_signal_connect (G_OBJECT (widget), "changed",
@@ -254,23 +256,16 @@ gpk_prefs_update_freq_combo_setup (void)
 static void
 gpk_prefs_upgrade_freq_combo_setup (void)
 {
-	gchar *value;
+	guint value;
 	gboolean is_writable;
 	GtkWidget *widget;
-	GpkFreqEnum freq;
 	GConfClient *client;
 
 	client = gconf_client_get_default ();
 	widget = GTK_WIDGET (gtk_builder_get_object (builder, "combobox_upgrade"));
 	is_writable = gconf_client_key_is_writable (client, GPK_CONF_FREQUENCY_GET_UPGRADES, NULL);
-	value = gconf_client_get_string (client, GPK_CONF_FREQUENCY_GET_UPGRADES, NULL);
-	if (value == NULL) {
-		egg_warning ("invalid schema, please re-install");
-		return;
-	}
-	egg_debug ("value from gconf %s", value);
-	freq = gpk_freq_enum_from_text (value);
-	g_free (value);
+	value = gconf_client_get_int (client, GPK_CONF_FREQUENCY_GET_UPGRADES, NULL);
+	egg_debug ("value from gconf %i", value);
 	g_object_unref (client);
 
 	/* do we have permission to write? */
@@ -281,8 +276,14 @@ gpk_prefs_upgrade_freq_combo_setup (void)
 	gtk_combo_box_append_text (GTK_COMBO_BOX (widget), PK_FREQ_DAILY_TEXT);
 	gtk_combo_box_append_text (GTK_COMBO_BOX (widget), PK_FREQ_WEEKLY_TEXT);
 	gtk_combo_box_append_text (GTK_COMBO_BOX (widget), PK_FREQ_NEVER_TEXT);
-	/* don't do daily */
-	gtk_combo_box_set_active (GTK_COMBO_BOX (widget), freq - 1);
+
+	/* select the correct entry */
+	if (value == GPK_PREFS_VALUE_DAILY)
+		gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0);
+	else if (value == GPK_PREFS_VALUE_WEEKLY)
+		gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 1);
+	else if (value == GPK_PREFS_VALUE_NEVER)
+		gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 2);
 
 	/* only do this after else we redraw the window */
 	g_signal_connect (G_OBJECT (widget), "changed",



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