From de9e621bb776b91aecfca02973fbfcbe16b38162 Mon Sep 17 00:00:00 2001 From: Will Song Date: Thu, 27 Nov 2014 11:42:23 -0600 Subject: add default account property and commands associated with them --- src/command/commands.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'src/command') diff --git a/src/command/commands.c b/src/command/commands.c index fc95f521..ba6b44fc 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -243,6 +243,37 @@ cmd_account(gchar **args, struct cmd_help_t help) cons_show(""); } } + } else if (strcmp(command, "default") == 0) { + if(g_strv_length(args) == 1){ + char *def = prefs_get_string(PREF_DEFAULT_ACCOUNT); + + if(def){ + cons_show("The default account is %s.", def); + free(def); + } else { + cons_show("No default account."); + } + } else if(g_strv_length(args) == 2){ + if(strcmp(args[1], "off") == 0){ + prefs_set_string(PREF_DEFAULT_ACCOUNT, NULL); + cons_show("Removed default account."); + } else { + cons_show("Usage: %s", help.usage); + } + } else if(g_strv_length(args) == 3) { + if(strcmp(args[1], "set") == 0){ + if(accounts_get_account(args[2])){ + prefs_set_string(PREF_DEFAULT_ACCOUNT, args[2]); + cons_show("Default account set to %s.", args[2]); + } else { + cons_show("Account %s does not exist.", args[2]); + } + } else { + cons_show("Usage: %s", help.usage); + } + } else { + cons_show("Usage: %s", help.usage); + } } else if (strcmp(command, "set") == 0) { if (g_strv_length(args) != 4) { cons_show("Usage: %s", help.usage); -- cgit 1.4.1-2-gfad0 From 48778265e73d6dc45c9b85a574144ab9bc2ce07d Mon Sep 17 00:00:00 2001 From: Will Song Date: Thu, 27 Nov 2014 12:07:18 -0600 Subject: add a bit of default account autocomplete --- src/command/command.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src/command') diff --git a/src/command/command.c b/src/command/command.c index 6c52af2a..095943ec 100644 --- a/src/command/command.c +++ b/src/command/command.c @@ -1054,6 +1054,7 @@ static Autocomplete theme_load_ac; static Autocomplete account_ac; static Autocomplete account_set_ac; static Autocomplete account_clear_ac; +static Autocomplete account_default_ac; static Autocomplete disco_ac; static Autocomplete close_ac; static Autocomplete wins_ac; @@ -1216,6 +1217,7 @@ cmd_init(void) autocomplete_add(account_ac, "remove"); autocomplete_add(account_ac, "enable"); autocomplete_add(account_ac, "disable"); + autocomplete_add(account_ac, "default"); autocomplete_add(account_ac, "rename"); autocomplete_add(account_ac, "set"); autocomplete_add(account_ac, "clear"); @@ -1242,6 +1244,10 @@ cmd_init(void) autocomplete_add(account_clear_ac, "port"); autocomplete_add(account_clear_ac, "otr"); + account_default_ac = autocomplete_new(); + autocomplete_add(account_default_ac, "set"); + autocomplete_add(account_default_ac, "off"); + close_ac = autocomplete_new(); autocomplete_add(close_ac, "read"); autocomplete_add(close_ac, "all"); @@ -1442,6 +1448,7 @@ cmd_uninit(void) autocomplete_free(account_ac); autocomplete_free(account_set_ac); autocomplete_free(account_clear_ac); + autocomplete_free(account_default_ac); autocomplete_free(disco_ac); autocomplete_free(close_ac); autocomplete_free(wins_ac); @@ -1613,6 +1620,7 @@ cmd_reset_autocomplete() autocomplete_reset(account_ac); autocomplete_reset(account_set_ac); autocomplete_reset(account_clear_ac); + autocomplete_reset(account_default_ac); autocomplete_reset(disco_ac); autocomplete_reset(close_ac); autocomplete_reset(wins_ac); @@ -2784,7 +2792,8 @@ _account_autocomplete(char *input, int *size) int i = 0; gchar *account_choice[] = { "/account set", "/account show", "/account enable", - "/account disable", "/account rename", "/account clear", "/account remove" }; + "/account disable", "/account rename", "/account clear", "/account remove", + "/account default set" }; for (i = 0; i < ARRAY_SIZE(account_choice); i++) { found = autocomplete_param_with_func(input, size, account_choice[i], -- cgit 1.4.1-2-gfad0 From b5a40f5b04c8e4fc669dabb4dddbad534d618ce4 Mon Sep 17 00:00:00 2001 From: Will Song Date: Thu, 27 Nov 2014 12:11:47 -0600 Subject: finish /account default ac --- src/command/command.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/command') diff --git a/src/command/command.c b/src/command/command.c index 095943ec..36205960 100644 --- a/src/command/command.c +++ b/src/command/command.c @@ -2790,6 +2790,11 @@ _account_autocomplete(char *input, int *size) g_strfreev(args); + found = autocomplete_param_with_ac(input, size, "/account default", account_default_ac, TRUE); + if(found){ + return found; + } + int i = 0; gchar *account_choice[] = { "/account set", "/account show", "/account enable", "/account disable", "/account rename", "/account clear", "/account remove", -- cgit 1.4.1-2-gfad0 From b23c60953f126277c7a06fa226c2eb10a0fe6638 Mon Sep 17 00:00:00 2001 From: Will Song Date: Thu, 27 Nov 2014 12:28:16 -0600 Subject: add some tooltip messages for /account and /connect --- src/command/command.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/command') diff --git a/src/command/command.c b/src/command/command.c index 36205960..0603cb74 100644 --- a/src/command/command.c +++ b/src/command/command.c @@ -128,16 +128,18 @@ static struct cmd_t command_defs[] = NULL } } }, { "/connect", - cmd_connect, parse_args, 1, 5, NULL, - { "/connect account [server value] [port value]", "Login to a chat service.", - { "/connect account [server value] [port value]", + cmd_connect, parse_args, 0, 5, NULL, + { "/connect [account] [server value] [port value]", "Login to a chat service.", + { "/connect [account] [server value] [port value]", "--------------------------------------------", "Connect to an XMPP service using the specified account.", "Use the server property to specify a server if required.", "Change the default port (5222, or 5223 for SSL) with the port property.", "An account is automatically created if one does not exist.", + "If no account is specified, then the default account is used." "See the /account command for more details.", "", + "Example: /connect", "Example: /connect myuser@gmail.com", "Example: /connect myuser@mycompany.com server talk.google.com", "Example: /connect bob@someplace port 5678", @@ -889,6 +891,7 @@ static struct cmd_t command_defs[] = "show account : Show information about an account.", "enable account : Enable the account, it will be used for autocomplete.", "disable account : Disable the account.", + "default [set|off] [account] : Set the default account.", "add account : Create a new account.", "remove account : Remove an account.", "rename account newname : Rename account to newname.", -- cgit 1.4.1-2-gfad0 From 3b13c00df4c99239180d42ea347413061342cf5a Mon Sep 17 00:00:00 2001 From: Will Song Date: Thu, 27 Nov 2014 13:18:54 -0600 Subject: /connect supports default account --- src/command/commands.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/command') diff --git a/src/command/commands.c b/src/command/commands.c index ba6b44fc..e217e7e8 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -83,6 +83,7 @@ gboolean cmd_connect(gchar **args, struct cmd_help_t help) { gboolean result = FALSE; + char *def = prefs_get_string(PREF_DEFAULT_ACCOUNT); jabber_conn_status_t conn_status = jabber_get_connection_status(); @@ -93,7 +94,7 @@ cmd_connect(gchar **args, struct cmd_help_t help) gchar *opt_keys[] = { "server", "port", NULL }; gboolean parsed; - GHashTable *options = parse_options(&args[1], opt_keys, &parsed); + GHashTable *options = parse_options(&args[args[0] ? 1 : 0], opt_keys, &parsed); if (!parsed) { cons_show("Usage: %s", help.usage); cons_show(""); @@ -115,6 +116,15 @@ cmd_connect(gchar **args, struct cmd_help_t help) options_destroy(options); char *user = args[0]; + if(!user){ + if(def){ + user = def; + cons_show("Using default account %s.", user); + } else { + cons_show("No default account."); + return TRUE; + } + } char *lower = g_utf8_strdown(user, -1); char *jid; @@ -146,6 +156,8 @@ cmd_connect(gchar **args, struct cmd_help_t help) result = TRUE; } + g_free(def); + return result; } -- cgit 1.4.1-2-gfad0 From 6a3285795a52ae0d177d079e9ee23bb092ef76d7 Mon Sep 17 00:00:00 2001 From: Will Song Date: Thu, 27 Nov 2014 20:26:10 -0600 Subject: removing the account connected to the default account removes the default account as well --- src/command/commands.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/command') diff --git a/src/command/commands.c b/src/command/commands.c index e217e7e8..c294a16b 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -206,13 +206,19 @@ cmd_account(gchar **args, struct cmd_help_t help) if(!account_name) { cons_show("Usage: %s", help.usage); } else { + char *def = prefs_get_string(PREF_DEFAULT_ACCOUNT); if(accounts_remove(account_name)){ cons_show("Account %s removed.", account_name); + if(def && strcmp(def, account_name) == 0){ + prefs_set_string(PREF_DEFAULT_ACCOUNT, NULL); + cons_show("Default account removed because the corresponding account was removed."); + } } else { cons_show("Failed to remove account %s.", account_name); cons_show("Either the account does not exist, or an unknown error occurred."); } cons_show(""); + g_free(def); } } else if (strcmp(command, "enable") == 0) { char *account_name = args[1]; -- cgit 1.4.1-2-gfad0 From eb2986d531c624eef2819dc8a611c4b5330ae723 Mon Sep 17 00:00:00 2001 From: Will Song Date: Sun, 21 Dec 2014 20:09:55 -0600 Subject: added warning about options not being used --- src/command/commands.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/command') diff --git a/src/command/commands.c b/src/command/commands.c index c294a16b..2abb2d51 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -113,8 +113,6 @@ cmd_connect(gchar **args, struct cmd_help_t help) } } - options_destroy(options); - char *user = args[0]; if(!user){ if(def){ @@ -135,6 +133,8 @@ cmd_connect(gchar **args, struct cmd_help_t help) account->password = ui_ask_password(); } cons_show("Connecting with account %s as %s", account->name, jid); + if(g_hash_table_contains(options, "port") || g_hash_table_contains(options, "server")) + cons_show("Ignoring extra connect options. Please set them with /account set"); conn_status = jabber_connect_with_account(account); account_free(account); } else { @@ -151,6 +151,8 @@ cmd_connect(gchar **args, struct cmd_help_t help) log_info("Connection attempt for %s failed", jid); } + options_destroy(options); + free(jid); result = TRUE; -- cgit 1.4.1-2-gfad0