Refactored string preferences

This commit is contained in:
James Booth
2013-02-03 03:24:13 +00:00
parent 7982b8e413
commit 069bdbc331
5 changed files with 67 additions and 67 deletions

View File

@@ -55,6 +55,7 @@ static gchar * _get_preferences_file(void);
static const char * _get_group(preference_t pref);
static const char * _get_key(preference_t pref);
static gboolean _get_default_boolean(preference_t pref);
static char * _get_default_string(preference_t pref);
void
prefs_load(void)
@@ -122,16 +123,36 @@ prefs_set_boolean(preference_t pref, gboolean value)
_save_prefs();
}
gchar *
prefs_get_theme(void)
char *
prefs_get_string(preference_t pref)
{
return g_key_file_get_string(prefs, PREF_GROUP_UI, "theme", NULL);
const char *group = _get_group(pref);
const char *key = _get_key(pref);
char *def = _get_default_string(pref);
if (!g_key_file_has_key(prefs, group, key, NULL)) {
return def;
}
char *result = g_key_file_get_string(prefs, group, key, NULL);
if (result == NULL) {
return def;
} else {
return result;
}
}
void
prefs_set_theme(gchar *value)
prefs_set_string(preference_t pref, char *value)
{
g_key_file_set_string(prefs, PREF_GROUP_UI, "theme", value);
const char *group = _get_group(pref);
const char *key = _get_key(pref);
if (value == NULL) {
g_key_file_remove_key(prefs, group, key, NULL);
} else {
g_key_file_set_string(prefs, group, key, value);
}
_save_prefs();
}
@@ -217,24 +238,6 @@ prefs_set_autoping(gint value)
_save_prefs();
}
gchar *
prefs_get_autoaway_mode(void)
{
gchar *result = g_key_file_get_string(prefs, PREF_GROUP_PRESENCE, "autoaway.mode", NULL);
if (result == NULL) {
return strdup("off");
} else {
return result;
}
}
void
prefs_set_autoaway_mode(gchar *value)
{
g_key_file_set_string(prefs, PREF_GROUP_PRESENCE, "autoaway.mode", value);
_save_prefs();
}
gint
prefs_get_autoaway_time(void)
{
@@ -254,23 +257,6 @@ prefs_set_autoaway_time(gint value)
_save_prefs();
}
gchar *
prefs_get_autoaway_message(void)
{
return g_key_file_get_string(prefs, PREF_GROUP_PRESENCE, "autoaway.message", NULL);
}
void
prefs_set_autoaway_message(gchar *value)
{
if (value == NULL) {
g_key_file_remove_key(prefs, PREF_GROUP_PRESENCE, "autoaway.message", NULL);
} else {
g_key_file_set_string(prefs, PREF_GROUP_PRESENCE, "autoaway.message", value);
}
_save_prefs();
}
static void
_save_prefs(void)
{
@@ -317,6 +303,8 @@ _get_group(preference_t pref)
case PREF_CHLOG:
return "logging";
case PREF_AUTOAWAY_CHECK:
case PREF_AUTOAWAY_MODE:
case PREF_AUTOAWAY_MESSAGE:
return "presence";
default:
return NULL;
@@ -360,6 +348,10 @@ _get_key(preference_t pref)
return "chlog";
case PREF_AUTOAWAY_CHECK:
return "autoaway.check";
case PREF_AUTOAWAY_MODE:
return "autoaway.mode";
case PREF_AUTOAWAY_MESSAGE:
return "autoaway.message";
default:
return NULL;
}
@@ -379,3 +371,14 @@ _get_default_boolean(preference_t pref)
}
}
static char *
_get_default_string(preference_t pref)
{
switch (pref)
{
case PREF_AUTOAWAY_MODE:
return "off";
default:
return NULL;
}
}

View File

@@ -51,10 +51,11 @@ typedef enum {
PREF_NOTIFY_TYPING,
PREF_NOTIFY_MESSAGE,
PREF_CHLOG,
PREF_AUTOAWAY_CHECK
PREF_AUTOAWAY_CHECK,
PREF_AUTOAWAY_MODE,
PREF_AUTOAWAY_MESSAGE
} preference_t;
void prefs_load(void);
void prefs_close(void);
@@ -65,8 +66,6 @@ void prefs_reset_boolean_choice(void);
gint prefs_get_gone(void);
void prefs_set_gone(gint value);
gchar * prefs_get_theme(void);
void prefs_set_theme(gchar *value);
void prefs_set_notify_remind(gint period);
gint prefs_get_notify_remind(void);
@@ -79,16 +78,14 @@ gint prefs_get_reconnect(void);
void prefs_set_autoping(gint value);
gint prefs_get_autoping(void);
gchar* prefs_get_autoaway_mode(void);
void prefs_set_autoaway_mode(gchar *value);
gint prefs_get_autoaway_time(void);
void prefs_set_autoaway_time(gint value);
gchar* prefs_get_autoaway_message(void);
void prefs_set_autoaway_message(gchar *value);
void prefs_add_login(const char *jid);
gboolean prefs_get_boolean(preference_t pref);
void prefs_set_boolean(preference_t pref, gboolean value);
char * prefs_get_string(preference_t pref);
void prefs_set_string(preference_t pref, char *value);
#endif