diff options
-rw-r--r-- | src/command/command.c | 33 | ||||
-rw-r--r-- | src/config/preferences.c | 4 | ||||
-rw-r--r-- | src/config/preferences.h | 3 | ||||
-rw-r--r-- | src/profanity.c | 4 | ||||
-rw-r--r-- | src/ui/console.c | 10 | ||||
-rw-r--r-- | src/ui/ui.h | 1 |
6 files changed, 53 insertions, 2 deletions
diff --git a/src/command/command.c b/src/command/command.c index 296cf38d..95f16f93 100644 --- a/src/command/command.c +++ b/src/command/command.c @@ -94,6 +94,7 @@ static int _strtoi(char *str, int *saveptr, int min, int max); static gboolean _cmd_about(gchar **args, struct cmd_help_t help); static gboolean _cmd_account(gchar **args, struct cmd_help_t help); static gboolean _cmd_autoaway(gchar **args, struct cmd_help_t help); +static gboolean _cmd_autoconnect(gchar **args, struct cmd_help_t help); static gboolean _cmd_autoping(gchar **args, struct cmd_help_t help); static gboolean _cmd_away(gchar **args, struct cmd_help_t help); static gboolean _cmd_beep(gchar **args, struct cmd_help_t help); @@ -579,6 +580,16 @@ static struct cmd_t command_defs[] = "Switch on or off the ascii logo on start up and when the /about command is called.", NULL } } }, + { "/autoconnect", + _cmd_autoconnect, parse_args, 0, 1, cons_autoconnect_setting, + { "/autoconnect [account]", "Set account to autoconnect with.", + { "/autoconnect [account]", + "----------------------", + "Set the account to autoconnect with.", + "Will be overridden by any command line options specified.", + "Passing no account will clear the setting.", + NULL } } }, + { "/vercheck", _cmd_vercheck, parse_args, 0, 1, NULL, { "/vercheck [on|off]", "Check for a new release.", @@ -1302,6 +1313,13 @@ _cmd_complete_parameters(char *input, int *size) return; } + result = autocomplete_param_with_func(input, size, "/autoconnect", accounts_find_enabled); + if (result != NULL) { + inp_replace_input(input, result, size); + g_free(result); + return; + } + gchar *cmds[] = { "/help", "/prefs", "/log", "/disco", "/close", "/wins" }; Autocomplete completers[] = { help_ac, prefs_ac, log_ac, disco_ac, close_ac, wins_ac }; @@ -1809,7 +1827,7 @@ _cmd_help(gchar **args, struct cmd_help_t help) _cmd_show_filtered_help("Service discovery commands", filter, ARRAY_SIZE(filter)); } else if (strcmp(args[0], "settings") == 0) { - gchar *filter[] = { "/account", "/autoaway", "/autoping", "/beep", + gchar *filter[] = { "/account", "/autoaway", "/autoping", "/autoconnect", "/beep", "/chlog", "/flash", "/gone", "/grlog", "/history", "/intype", "/log", "/mouse", "/notify", "/outtype", "/prefs", "/priority", "/reconnect", "/roster", "/splash", "/states", "/statuses", "/theme", @@ -3448,6 +3466,19 @@ _cmd_splash(gchar **args, struct cmd_help_t help) } static gboolean +_cmd_autoconnect(gchar **args, struct cmd_help_t help) +{ + if (args[0] == NULL) { + prefs_set_string(PREF_CONNECT_ACCOUNT, NULL); + cons_show("Autoconnect account disabled."); + } else { + prefs_set_string(PREF_CONNECT_ACCOUNT, args[0]); + cons_show("Autoconnect account set to: %s.", args[0]); + } + return true; +} + +static gboolean _cmd_chlog(gchar **args, struct cmd_help_t help) { gboolean result = _cmd_set_boolean_preference(args[0], help, diff --git a/src/config/preferences.c b/src/config/preferences.c index 1d417e41..18f10dee 100644 --- a/src/config/preferences.c +++ b/src/config/preferences.c @@ -309,6 +309,8 @@ _get_group(preference_t pref) case PREF_AUTOAWAY_MODE: case PREF_AUTOAWAY_MESSAGE: return "presence"; + case PREF_CONNECT_ACCOUNT: + return "connection"; default: return NULL; } @@ -361,6 +363,8 @@ _get_key(preference_t pref) return "autoaway.mode"; case PREF_AUTOAWAY_MESSAGE: return "autoaway.message"; + case PREF_CONNECT_ACCOUNT: + return "account"; default: return NULL; } diff --git a/src/config/preferences.h b/src/config/preferences.h index cb1f9204..5affe002 100644 --- a/src/config/preferences.h +++ b/src/config/preferences.h @@ -56,7 +56,8 @@ typedef enum { PREF_GRLOG, PREF_AUTOAWAY_CHECK, PREF_AUTOAWAY_MODE, - PREF_AUTOAWAY_MESSAGE + PREF_AUTOAWAY_MESSAGE, + PREF_CONNECT_ACCOUNT } preference_t; void prefs_load(void); diff --git a/src/profanity.c b/src/profanity.c index 38be5531..116e8b9c 100644 --- a/src/profanity.c +++ b/src/profanity.c @@ -76,6 +76,10 @@ prof_run(const int disable_tls, char *log_level, char *account_name) char *cmd = "/connect"; snprintf(inp, sizeof(inp), "%s %s", cmd, account_name); _process_input(inp); + } else if (prefs_get_string(PREF_CONNECT_ACCOUNT) != NULL) { + char *cmd = "/connect"; + snprintf(inp, sizeof(inp), "%s %s", cmd, prefs_get_string(PREF_CONNECT_ACCOUNT)); + _process_input(inp); } while(cmd_result == TRUE) { diff --git a/src/ui/console.c b/src/ui/console.c index 1de7cf51..bbf0cef6 100644 --- a/src/ui/console.c +++ b/src/ui/console.c @@ -943,6 +943,15 @@ cons_splash_setting(void) } void +cons_autoconnect_setting(void) +{ + if (prefs_get_string(PREF_CONNECT_ACCOUNT) != NULL) + cons_show("Autoconnect (/autoconnect) : %s", prefs_get_string(PREF_CONNECT_ACCOUNT)); + else + cons_show("Autoconnect (/autoconnect) : OFF"); +} + +void cons_vercheck_setting(void) { if (prefs_get_boolean(PREF_VERCHECK)) @@ -1218,6 +1227,7 @@ cons_show_connection_prefs(void) cons_show(""); cons_reconnect_setting(); cons_autoping_setting(); + cons_autoconnect_setting(); wins_refresh_console(); cons_alert(); diff --git a/src/ui/ui.h b/src/ui/ui.h index 7fff0703..1fa932b7 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -216,6 +216,7 @@ void cons_autoaway_setting(void); void cons_reconnect_setting(void); void cons_autoping_setting(void); void cons_priority_setting(void); +void cons_autoconnect_setting(void); // status bar actions void status_bar_refresh(void); |