diff options
Diffstat (limited to 'src/command/commands.c')
-rw-r--r-- | src/command/commands.c | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/command/commands.c b/src/command/commands.c index 7679acb4..933c65bd 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -668,6 +668,34 @@ cmd_account(ProfWin *window, const char *const command, gchar **args) } else if (strcmp(property, "startscript") == 0) { accounts_set_script_start(account_name, value); cons_show("Updated start script for account %s: %s", account_name, value); + } else if (strcmp(property, "theme") == 0) { + if (theme_exists(value)) { + accounts_set_theme(account_name, value); + if (jabber_get_connection_status() == JABBER_CONNECTED) { + ProfAccount *account = accounts_get_account(jabber_get_account_name()); + if (account) { + if (g_strcmp0(account->name, account_name) == 0) { + theme_load(value); + ui_load_colours(); + if (prefs_get_boolean(PREF_ROSTER)) { + ui_show_roster(); + } else { + ui_hide_roster(); + } + if (prefs_get_boolean(PREF_OCCUPANTS)) { + ui_show_all_room_rosters(); + } else { + ui_hide_all_room_rosters(); + } + ui_redraw(); + } + account_free(account); + } + } + cons_show("Updated theme for account %s: %s", account_name, value); + } else { + cons_show("Theme does not exist: %s", value); + } } else if (strcmp(property, "tls") == 0) { if ((g_strcmp0(value, "force") != 0) && (g_strcmp0(value, "allow") != 0) @@ -764,6 +792,10 @@ cmd_account(ProfWin *window, const char *const command, gchar **args) accounts_clear_script_start(account_name); cons_show("Removed start script for account %s", account_name); cons_show(""); + } else if (strcmp(property, "theme") == 0) { + accounts_clear_theme(account_name); + cons_show("Removed theme for account %s", account_name); + cons_show(""); } else { cons_show("Invalid property: %s", property); cons_show(""); @@ -992,6 +1024,29 @@ cmd_disconnect(ProfWin *window, const char *const command, gchar **args) cl_ev_disconnect(); + char *theme = prefs_get_string(PREF_THEME); + if (theme) { + gboolean res = theme_load(theme); + prefs_free_string(theme); + if (!res) { + theme_load("default"); + } + } else { + theme_load("default"); + } + ui_load_colours(); + if (prefs_get_boolean(PREF_ROSTER)) { + ui_show_roster(); + } else { + ui_hide_roster(); + } + if (prefs_get_boolean(PREF_OCCUPANTS)) { + ui_show_all_room_rosters(); + } else { + ui_hide_all_room_rosters(); + } + ui_redraw(); + return TRUE; } |