From 842f5c5f998f3c1a1c5464470c64d691218e14a5 Mon Sep 17 00:00:00 2001 From: James Booth Date: Thu, 31 Jan 2013 01:13:53 +0000 Subject: [PATCH 1/3] Added presence.last and presence.login properties to /account rename --- src/accounts.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/accounts.c b/src/accounts.c index d7149b77..ea61af8f 100644 --- a/src/accounts.c +++ b/src/accounts.c @@ -272,6 +272,18 @@ accounts_rename(const char * const account_name, const char * const new_name) free(resource); } + char *presence_last = g_key_file_get_string(accounts, account_name, "presence.last", NULL); + if (presence_last != NULL) { + g_key_file_set_string(accounts, new_name, "presence.last", presence_last); + free(presence_last); + } + + char *presence_login = g_key_file_get_string(accounts, account_name, "presence.login", NULL); + if (presence_login != NULL) { + g_key_file_set_string(accounts, new_name, "presence.login", presence_login); + free(presence_login); + } + g_key_file_remove_group(accounts, account_name, NULL); _save_accounts(); From 67cfe50e4cb7553df26b84133dd21cd89fe668d5 Mon Sep 17 00:00:00 2001 From: James Booth Date: Thu, 31 Jan 2013 01:18:05 +0000 Subject: [PATCH 2/3] Added presence.last and presence.login when creating new account --- src/accounts.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/accounts.c b/src/accounts.c index ea61af8f..6b8114ba 100644 --- a/src/accounts.c +++ b/src/accounts.c @@ -129,6 +129,8 @@ accounts_add(const char *account_name, const char *altdomain) if (altdomain != NULL) { g_key_file_set_string(accounts, account_name, "server", altdomain); } + g_key_file_set_string(accounts, account_name, "presence.last", "online"); + g_key_file_set_string(accounts, account_name, "presence.login", "online"); _save_accounts(); autocomplete_add(all_ac, strdup(account_name)); From 8c03bb97764725ed676ce4414aadd9fda441622b Mon Sep 17 00:00:00 2001 From: James Booth Date: Thu, 31 Jan 2013 01:37:42 +0000 Subject: [PATCH 3/3] Refactor renaming accounts --- src/accounts.c | 37 +++++++++---------------------------- 1 file changed, 9 insertions(+), 28 deletions(-) diff --git a/src/accounts.c b/src/accounts.c index 6b8114ba..e802fc8b 100644 --- a/src/accounts.c +++ b/src/accounts.c @@ -39,6 +39,8 @@ static GKeyFile *accounts; static Autocomplete all_ac; static Autocomplete enabled_ac; +static gchar *string_keys[] = {"jid", "server", "resource", "presence.last", "presence.login"}; + static void _fix_legacy_accounts(const char * const account_name); static void _save_accounts(void); @@ -256,34 +258,13 @@ accounts_rename(const char * const account_name, const char * const new_name) g_key_file_set_boolean(accounts, new_name, "enabled", g_key_file_get_boolean(accounts, account_name, "enabled", NULL)); - char *jid = g_key_file_get_string(accounts, account_name, "jid", NULL); - if (jid != NULL) { - g_key_file_set_string(accounts, new_name, "jid", jid); - free(jid); - } - - char *server = g_key_file_get_string(accounts, account_name, "server", NULL); - if (server != NULL) { - g_key_file_set_string(accounts, new_name, "server", server); - free(server); - } - - char *resource = g_key_file_get_string(accounts, account_name, "resource", NULL); - if (resource != NULL) { - g_key_file_set_string(accounts, new_name, "resource", resource); - free(resource); - } - - char *presence_last = g_key_file_get_string(accounts, account_name, "presence.last", NULL); - if (presence_last != NULL) { - g_key_file_set_string(accounts, new_name, "presence.last", presence_last); - free(presence_last); - } - - char *presence_login = g_key_file_get_string(accounts, account_name, "presence.login", NULL); - if (presence_login != NULL) { - g_key_file_set_string(accounts, new_name, "presence.login", presence_login); - free(presence_login); + int i; + for (i = 0; i < ARRAY_SIZE(string_keys); i++) { + char *value = g_key_file_get_string(accounts, account_name, string_keys[i], NULL); + if (value != NULL) { + g_key_file_set_string(accounts, new_name, string_keys[i], value); + free(value); + } } g_key_file_remove_group(accounts, account_name, NULL);