From 73cc9bfcf2e961bede38bd98b9753ba32af0604b Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Sun, 17 Nov 2013 16:09:14 -0500 Subject: [PATCH] simplify groupchat counter --- src/chat.c | 5 ++--- src/global_commands.c | 5 ++--- src/groupchat.c | 30 +++++++++++------------------- src/groupchat.h | 1 - 4 files changed, 15 insertions(+), 26 deletions(-) diff --git a/src/chat.c b/src/chat.c index b6693f4..e7f85f9 100644 --- a/src/chat.c +++ b/src/chat.c @@ -16,6 +16,7 @@ extern char *DATA_FILE; extern int store_data(Tox *m, char *path); +extern int num_groupchats; static void chat_onMessage(ToxWindow *self, Tox *m, int num, uint8_t *msg, uint16_t len) { @@ -225,9 +226,7 @@ static void chat_onGroupInvite(ToxWindow *self, Tox *m, int friendnumber, uint8_ wprintw(ctx->history, "%s has invited you to a group chat.\n", name); - int ngc = get_num_groupchats(); - - if (ngc < 0 || ngc > MAX_GROUPCHAT_NUM) { + if (num_groupchats >= MAX_GROUPCHAT_NUM) { wprintw(ctx->history, "Maximum number of group chats has been reached. Discarding invite.\n"); return; } diff --git a/src/global_commands.c b/src/global_commands.c index 6967a43..4ad1ed9 100644 --- a/src/global_commands.c +++ b/src/global_commands.c @@ -16,6 +16,7 @@ extern char *DATA_FILE; extern uint8_t pending_frnd_requests[MAX_FRIENDS_NUM][TOX_CLIENT_ID_SIZE]; extern uint8_t num_frnd_requests; +extern int num_groupchats; /* command functions */ void cmd_accept(WINDOW *window, ToxWindow *prompt, Tox *m, int num, int argc, char (*argv)[MAX_STR_SIZE]) @@ -172,9 +173,7 @@ void cmd_connect(WINDOW *window, ToxWindow *prompt, Tox *m, int num, int argc, c void cmd_groupchat(WINDOW *window, ToxWindow *prompt, Tox *m, int num, int argc, char (*argv)[MAX_STR_SIZE]) { - int ngc = get_num_groupchats(); - - if (ngc < 0 || ngc > MAX_GROUPCHAT_NUM) { + if (num_groupchats >= MAX_GROUPCHAT_NUM) { wprintw(window, "\nMaximum number of group chats has been reached.\n"); return; } diff --git a/src/groupchat.c b/src/groupchat.c index 1f60ea9..f556563 100644 --- a/src/groupchat.c +++ b/src/groupchat.c @@ -15,37 +15,28 @@ #include "misc_tools.h" static GroupChat groupchats[MAX_GROUPCHAT_NUM]; -static int group_chat_index = 0; +static int max_groupchat_index = 0; +int num_groupchats = 0; ToxWindow new_group_chat(Tox *m, ToxWindow *prompt, int groupnum); extern char *DATA_FILE; extern int store_data(Tox *m, char *path); -int get_num_groupchats(void) -{ - int i; - - for (i = 0; i <= group_chat_index; ++i) { - if (!groupchats[i].active) - return i; - } - - return -1; -} - int init_groupchat_win(ToxWindow *prompt, Tox *m, int groupnum) { int i; - for (i = 0; i <= group_chat_index; ++i) { + for (i = 0; i <= max_groupchat_index; ++i) { if (!groupchats[i].active) { groupchats[i].chatwin = add_window(m, new_group_chat(m, prompt, groupnum)); groupchats[i].active = true; set_active_window(groupchats[i].chatwin); - if (i == group_chat_index) - ++group_chat_index; + if (i == max_groupchat_index) + ++max_groupchat_index; + + ++num_groupchats; return 0; } @@ -57,16 +48,17 @@ int init_groupchat_win(ToxWindow *prompt, Tox *m, int groupnum) static void close_groupchatwin(Tox *m, int groupnum) { tox_del_groupchat(m, groupnum); - memset(&groupchats[groupnum], 0, sizeof(GroupChat)); + memset(&(groupchats[groupnum]), 0, sizeof(GroupChat)); int i; - for (i = group_chat_index; i > 0; --i) { + for (i = max_groupchat_index; i > 0; --i) { if (groupchats[i-1].active) break; } - group_chat_index = i; + --num_groupchats; + max_groupchat_index = i; } static void print_groupchat_help(ChatContext *ctx) diff --git a/src/groupchat.h b/src/groupchat.h index c31b5f9..3434430 100644 --- a/src/groupchat.h +++ b/src/groupchat.h @@ -3,4 +3,3 @@ */ int init_groupchat_win(ToxWindow *prompt, Tox *m, int groupnum); -int get_num_groupchats(void);