From c80383e298287372b5bf5d852c7ff5759cf20b15 Mon Sep 17 00:00:00 2001 From: James Booth Date: Mon, 10 Dec 2012 00:08:03 +0000 Subject: Added /account rename --- src/accounts.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) (limited to 'src/accounts.c') diff --git a/src/accounts.c b/src/accounts.c index f471fbdb..22fe8693 100644 --- a/src/accounts.c +++ b/src/accounts.c @@ -95,6 +95,7 @@ accounts_add_login(const char *jid, const char *altdomain) } _save_accounts(); + p_autocomplete_add(login_ac, strdup(jid)); // already exists, update old style accounts } else { @@ -158,6 +159,65 @@ accounts_free_account(ProfAccount *account) } } +gboolean +accounts_enable(const char * const name) +{ + if (g_key_file_has_group(accounts, name)) { + g_key_file_set_boolean(accounts, name, "enabled", TRUE); + _save_accounts(); + return TRUE; + } else { + return FALSE; + } +} + +gboolean +accounts_disable(const char * const name) +{ + if (g_key_file_has_group(accounts, name)) { + g_key_file_set_boolean(accounts, name, "enabled", FALSE); + _save_accounts(); + return TRUE; + } else { + return FALSE; + } +} + +gboolean +accounts_rename(const char * const account_name, const char * const new_name) +{ + if (g_key_file_has_group(accounts, new_name)) { + return FALSE; + } + + if (!g_key_file_has_group(accounts, account_name)) { + return FALSE; + } + + 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); + } + + g_key_file_remove_group(accounts, account_name, NULL); + _save_accounts(); + + p_autocomplete_remove(login_ac, strdup(account_name)); + p_autocomplete_add(login_ac, strdup(new_name)); + + return TRUE; +} + static void _save_accounts(void) { -- cgit 1.4.1-2-gfad0