1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-12-04 14:46:46 -05:00

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

@ -1492,7 +1492,7 @@ _cmd_theme(gchar **args, struct cmd_help_t help)
cons_show("Usage: %s", help.usage); cons_show("Usage: %s", help.usage);
} else if (theme_load(args[1])) { } else if (theme_load(args[1])) {
ui_load_colours(); ui_load_colours();
prefs_set_theme(args[1]); prefs_set_string(PREF_THEME, args[1]);
cons_show("Loaded theme: %s", args[1]); cons_show("Loaded theme: %s", args[1]);
} else { } else {
cons_show("Couldn't find theme: %s", args[1]); cons_show("Couldn't find theme: %s", args[1]);
@ -2187,7 +2187,7 @@ _cmd_set_autoaway(gchar **args, struct cmd_help_t help)
(strcmp(value, "off") != 0)) { (strcmp(value, "off") != 0)) {
cons_show("Mode must be one of 'idle', 'away' or 'off'"); cons_show("Mode must be one of 'idle', 'away' or 'off'");
} else { } else {
prefs_set_autoaway_mode(value); prefs_set_string(PREF_AUTOAWAY_MODE, value);
cons_show("Auto away mode set to: %s.", value); cons_show("Auto away mode set to: %s.", value);
} }
@ -2205,10 +2205,10 @@ _cmd_set_autoaway(gchar **args, struct cmd_help_t help)
if (strcmp(setting, "message") == 0) { if (strcmp(setting, "message") == 0) {
if (strcmp(value, "off") == 0) { if (strcmp(value, "off") == 0) {
prefs_set_autoaway_message(NULL); prefs_set_string(PREF_AUTOAWAY_MESSAGE, NULL);
cons_show("Auto away message cleared."); cons_show("Auto away message cleared.");
} else { } else {
prefs_set_autoaway_message(value); prefs_set_string(PREF_AUTOAWAY_MESSAGE, value);
cons_show("Auto away message set to: \"%s\".", value); cons_show("Auto away message set to: \"%s\".", value);
} }

View File

@ -55,6 +55,7 @@ static gchar * _get_preferences_file(void);
static const char * _get_group(preference_t pref); static const char * _get_group(preference_t pref);
static const char * _get_key(preference_t pref); static const char * _get_key(preference_t pref);
static gboolean _get_default_boolean(preference_t pref); static gboolean _get_default_boolean(preference_t pref);
static char * _get_default_string(preference_t pref);
void void
prefs_load(void) prefs_load(void)
@ -122,16 +123,36 @@ prefs_set_boolean(preference_t pref, gboolean value)
_save_prefs(); _save_prefs();
} }
gchar * char *
prefs_get_theme(void) 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 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(); _save_prefs();
} }
@ -217,24 +238,6 @@ prefs_set_autoping(gint value)
_save_prefs(); _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 gint
prefs_get_autoaway_time(void) prefs_get_autoaway_time(void)
{ {
@ -254,23 +257,6 @@ prefs_set_autoaway_time(gint value)
_save_prefs(); _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 static void
_save_prefs(void) _save_prefs(void)
{ {
@ -317,6 +303,8 @@ _get_group(preference_t pref)
case PREF_CHLOG: case PREF_CHLOG:
return "logging"; return "logging";
case PREF_AUTOAWAY_CHECK: case PREF_AUTOAWAY_CHECK:
case PREF_AUTOAWAY_MODE:
case PREF_AUTOAWAY_MESSAGE:
return "presence"; return "presence";
default: default:
return NULL; return NULL;
@ -360,6 +348,10 @@ _get_key(preference_t pref)
return "chlog"; return "chlog";
case PREF_AUTOAWAY_CHECK: case PREF_AUTOAWAY_CHECK:
return "autoaway.check"; return "autoaway.check";
case PREF_AUTOAWAY_MODE:
return "autoaway.mode";
case PREF_AUTOAWAY_MESSAGE:
return "autoaway.message";
default: default:
return NULL; 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_TYPING,
PREF_NOTIFY_MESSAGE, PREF_NOTIFY_MESSAGE,
PREF_CHLOG, PREF_CHLOG,
PREF_AUTOAWAY_CHECK PREF_AUTOAWAY_CHECK,
PREF_AUTOAWAY_MODE,
PREF_AUTOAWAY_MESSAGE
} preference_t; } preference_t;
void prefs_load(void); void prefs_load(void);
void prefs_close(void); void prefs_close(void);
@ -65,8 +66,6 @@ void prefs_reset_boolean_choice(void);
gint prefs_get_gone(void); gint prefs_get_gone(void);
void prefs_set_gone(gint value); void prefs_set_gone(gint value);
gchar * prefs_get_theme(void);
void prefs_set_theme(gchar *value);
void prefs_set_notify_remind(gint period); void prefs_set_notify_remind(gint period);
gint prefs_get_notify_remind(void); gint prefs_get_notify_remind(void);
@ -79,16 +78,14 @@ gint prefs_get_reconnect(void);
void prefs_set_autoping(gint value); void prefs_set_autoping(gint value);
gint prefs_get_autoping(void); gint prefs_get_autoping(void);
gchar* prefs_get_autoaway_mode(void);
void prefs_set_autoaway_mode(gchar *value);
gint prefs_get_autoaway_time(void); gint prefs_get_autoaway_time(void);
void prefs_set_autoaway_time(gint value); 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); void prefs_add_login(const char *jid);
gboolean prefs_get_boolean(preference_t pref); gboolean prefs_get_boolean(preference_t pref);
void prefs_set_boolean(preference_t pref, gboolean value); 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 #endif

View File

@ -444,11 +444,11 @@ _handle_idle_time()
idle = TRUE; idle = TRUE;
// handle away mode // handle away mode
if (strcmp(prefs_get_autoaway_mode(), "away") == 0) { if (strcmp(prefs_get_string(PREF_AUTOAWAY_MODE), "away") == 0) {
presence_update(PRESENCE_AWAY, prefs_get_autoaway_message(), 0); presence_update(PRESENCE_AWAY, prefs_get_string(PREF_AUTOAWAY_MESSAGE), 0);
if (prefs_get_autoaway_message() != NULL) { if (prefs_get_string(PREF_AUTOAWAY_MESSAGE) != NULL) {
cons_show("Idle for %d minutes, status set to away, \"%s\".", cons_show("Idle for %d minutes, status set to away, \"%s\".",
prefs_get_autoaway_time(), prefs_get_autoaway_message()); prefs_get_autoaway_time(), prefs_get_string(PREF_AUTOAWAY_MESSAGE));
title_bar_set_status(PRESENCE_AWAY); title_bar_set_status(PRESENCE_AWAY);
win_current_page_off(); win_current_page_off();
} else { } else {
@ -459,9 +459,9 @@ _handle_idle_time()
} }
// handle idle mode // handle idle mode
} else if (strcmp(prefs_get_autoaway_mode(), "idle") == 0) { } else if (strcmp(prefs_get_string(PREF_AUTOAWAY_MODE), "idle") == 0) {
presence_update(PRESENCE_ONLINE, presence_update(PRESENCE_ONLINE,
prefs_get_autoaway_message(), idle_ms / 1000); prefs_get_string(PREF_AUTOAWAY_MESSAGE), idle_ms / 1000);
} }
} }
@ -471,12 +471,12 @@ _handle_idle_time()
// handle check // handle check
if (prefs_get_boolean(PREF_AUTOAWAY_CHECK)) { if (prefs_get_boolean(PREF_AUTOAWAY_CHECK)) {
if (strcmp(prefs_get_autoaway_mode(), "away") == 0) { if (strcmp(prefs_get_string(PREF_AUTOAWAY_MODE), "away") == 0) {
presence_update(PRESENCE_ONLINE, NULL, 0); presence_update(PRESENCE_ONLINE, NULL, 0);
cons_show("No longer idle, status set to online."); cons_show("No longer idle, status set to online.");
title_bar_set_status(PRESENCE_ONLINE); title_bar_set_status(PRESENCE_ONLINE);
win_current_page_off(); win_current_page_off();
} else if (strcmp(prefs_get_autoaway_mode(), "idle") == 0) { } else if (strcmp(prefs_get_string(PREF_AUTOAWAY_MODE), "idle") == 0) {
presence_update(PRESENCE_ONLINE, NULL, 0); presence_update(PRESENCE_ONLINE, NULL, 0);
title_bar_set_status(PRESENCE_ONLINE); title_bar_set_status(PRESENCE_ONLINE);
} }
@ -502,7 +502,7 @@ _init(const int disable_tls, char *log_level)
chat_log_init(); chat_log_init();
prefs_load(); prefs_load();
accounts_load(); accounts_load();
gchar *theme = prefs_get_theme(); gchar *theme = prefs_get_string(PREF_THEME);
theme_init(theme); theme_init(theme);
g_free(theme); g_free(theme);
ui_init(); ui_init();

View File

@ -1291,7 +1291,7 @@ cons_show_ui_prefs(void)
cons_show("UI preferences:"); cons_show("UI preferences:");
cons_show(""); cons_show("");
gchar *theme = prefs_get_theme(); gchar *theme = prefs_get_string(PREF_THEME);
if (theme == NULL) { if (theme == NULL) {
cons_show("Theme (/theme) : default"); cons_show("Theme (/theme) : default");
} else { } else {
@ -1411,19 +1411,19 @@ cons_show_presence_prefs(void)
cons_show("Presence preferences:"); cons_show("Presence preferences:");
cons_show(""); cons_show("");
if (strcmp(prefs_get_autoaway_mode(), "off") == 0) { if (strcmp(prefs_get_string(PREF_AUTOAWAY_MODE), "off") == 0) {
cons_show("Autoaway (/autoaway mode) : OFF"); cons_show("Autoaway (/autoaway mode) : OFF");
} else { } else {
cons_show("Autoaway (/autoaway mode) : %s", prefs_get_autoaway_mode()); cons_show("Autoaway (/autoaway mode) : %s", prefs_get_string(PREF_AUTOAWAY_MODE));
} }
cons_show("Autoaway minutes (/autoaway time) : %d minutes", prefs_get_autoaway_time()); cons_show("Autoaway minutes (/autoaway time) : %d minutes", prefs_get_autoaway_time());
if ((prefs_get_autoaway_message() == NULL) || if ((prefs_get_string(PREF_AUTOAWAY_MESSAGE) == NULL) ||
(strcmp(prefs_get_autoaway_message(), "") == 0)) { (strcmp(prefs_get_string(PREF_AUTOAWAY_MESSAGE), "") == 0)) {
cons_show("Autoaway message (/autoaway message) : OFF"); cons_show("Autoaway message (/autoaway message) : OFF");
} else { } else {
cons_show("Autoaway message (/autoaway message) : \"%s\"", prefs_get_autoaway_message()); cons_show("Autoaway message (/autoaway message) : \"%s\"", prefs_get_string(PREF_AUTOAWAY_MESSAGE));
} }
if (prefs_get_boolean(PREF_AUTOAWAY_CHECK)) { if (prefs_get_boolean(PREF_AUTOAWAY_CHECK)) {