From 8045b949a7089be12fb7caaf2e4f355900c94e74 Mon Sep 17 00:00:00 2001 From: James Booth Date: Mon, 26 Aug 2013 18:06:33 +0100 Subject: Refactor _cmd_close --- src/command/command.c | 21 ++------------------- src/ui/core.c | 38 ++++++++++++++++++++++++++++++++++++++ src/ui/ui.h | 2 ++ 3 files changed, 42 insertions(+), 19 deletions(-) diff --git a/src/command/command.c b/src/command/command.c index ad9b28b2..c8304736 100644 --- a/src/command/command.c +++ b/src/command/command.c @@ -3035,21 +3035,12 @@ _cmd_close(gchar **args, struct cmd_help_t help) { jabber_conn_status_t conn_status = jabber_get_connection_status(); int index = 0; - int curr = 0; int count = 0; if (args[0] == NULL) { index = ui_current_win_index(); } else if (strcmp(args[0], "all") == 0) { - for (curr = 1; curr <= 9; curr++) { - if (ui_win_exists(curr)) { - if (conn_status == JABBER_CONNECTED) { - ui_close_connected_win(curr); - } - ui_close_win(curr); - count++; - } - } + count = ui_close_all_wins(); if (count == 0) { cons_show("No windows to close."); } else if (count == 1) { @@ -3059,15 +3050,7 @@ _cmd_close(gchar **args, struct cmd_help_t help) } return TRUE; } else if (strcmp(args[0], "read") == 0) { - for (curr = 1; curr <= 9; curr++) { - if (ui_win_exists(curr) && (ui_win_unread(curr) == 0)) { - if (conn_status == JABBER_CONNECTED) { - ui_close_connected_win(curr); - } - ui_close_win(curr); - count++; - } - } + count = ui_close_read_wins(); if (count == 0) { cons_show("No windows to close."); } else if (count == 1) { diff --git a/src/ui/core.c b/src/ui/core.c index 1e13de68..3186aba5 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -567,6 +567,44 @@ ui_close_connected_win(int index) } } +int +ui_close_all_wins(void) +{ + int curr = 0, count = 0; + jabber_conn_status_t conn_status = jabber_get_connection_status(); + + for (curr = 1; curr <= 9; curr++) { + if (ui_win_exists(curr)) { + if (conn_status == JABBER_CONNECTED) { + ui_close_connected_win(curr); + } + ui_close_win(curr); + count++; + } + } + + return count; +} + +int +ui_close_read_wins(void) +{ + int curr = 0, count = 0; + jabber_conn_status_t conn_status = jabber_get_connection_status(); + + for (curr = 1; curr <= 9; curr++) { + if (ui_win_exists(curr) && (ui_win_unread(curr) == 0)) { + if (conn_status == JABBER_CONNECTED) { + ui_close_connected_win(curr); + } + ui_close_win(curr); + count++; + } + } + + return count; +} + void ui_switch_win(const int i) { diff --git a/src/ui/ui.h b/src/ui/ui.h index eec4aac5..f3163b6e 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -60,6 +60,8 @@ void ui_print_error_from_recipient(const char * const from, const char *err_msg) void ui_print_system_msg_from_recipient(const char * const from, const char *message); gint ui_unread(void); void ui_close_connected_win(int index); +int ui_close_all_wins(void); +int ui_close_read_wins(void); // current window actions void ui_close_current(void); -- cgit 1.4.1-2-gfad0