From ea267e2017c8e941166754d50180fdfbca85eefe Mon Sep 17 00:00:00 2001 From: James Booth Date: Sat, 20 Dec 2014 00:52:35 +0000 Subject: Refactored all window recipients and types Tests need fixing --- src/ui/console.c | 2 +- src/ui/core.c | 649 ++++++++++++++++++++++++++------------------------ src/ui/occupantswin.c | 2 +- src/ui/ui.h | 122 +++++----- src/ui/window.c | 8 + src/ui/windows.c | 67 +++--- src/ui/windows.h | 6 +- 7 files changed, 447 insertions(+), 409 deletions(-) (limited to 'src/ui') diff --git a/src/ui/console.c b/src/ui/console.c index fab5a4ac..3a280eb5 100644 --- a/src/ui/console.c +++ b/src/ui/console.c @@ -469,7 +469,7 @@ _cons_show_bookmarks(const GList *list) win_save_print(console, '-', NULL, NO_DATE | NO_EOL, presence_colour, "", " (private)"); } if (muc_active(item->jid)) { - ProfWin *roomwin = wins_get_by_recipient(item->jid); + ProfWin *roomwin = (ProfWin*)wins_get_muc(item->jid); if (roomwin != NULL) { int num = wins_get_num(roomwin); win_save_vprint(console, '-', NULL, NO_DATE | NO_EOL, presence_colour, "", " (%d)", num); diff --git a/src/ui/core.c b/src/ui/core.c index 2373fb77..ef203838 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -570,46 +570,58 @@ _ui_update_presence(const resource_presence_t resource_presence, static void _ui_handle_recipient_not_found(const char * const recipient, const char * const err_msg) { - ProfWin *win = wins_get_by_recipient(recipient); - GString *msg = g_string_new(""); - - // no window for intended recipient, show message in current and console - if (win == NULL) { - g_string_printf(msg, "Recipient %s not found: %s", recipient, err_msg); - cons_show_error(msg->str); + // unknown chat recipient + ProfChatWin *chatwin = wins_get_chat(recipient); + if (chatwin) { + cons_show_error("Recipient %s not found: %s", recipient, err_msg); + // TODO change super references to superclass cast + win_save_vprint(&chatwin->super, '!', NULL, 0, THEME_ERROR, "", "Recipient %s not found: %s", recipient, err_msg); + return; + } // intended recipient was invalid chat room - } else if (win->type == WIN_MUC) { - g_string_printf(msg, "Room %s not found: %s", recipient, err_msg); - cons_show_error(msg->str); - win_save_print(win, '!', NULL, 0, THEME_ERROR, "", msg->str); + ProfMucWin *mucwin = wins_get_muc(recipient); + if (mucwin) { + cons_show_error("Room %s not found: %s", recipient, err_msg); + win_save_vprint(&mucwin->super, '!', NULL, 0, THEME_ERROR, "", "Room %s not found: %s", recipient, err_msg); + return; + } - // unknown chat recipient - } else { - g_string_printf(msg, "Recipient %s not found: %s", recipient, err_msg); - cons_show_error(msg->str); - win_save_print(win, '!', NULL, 0, THEME_ERROR, "", msg->str); + // unknown private recipient + ProfPrivateWin *privatewin = wins_get_private(recipient); + if (privatewin) { + cons_show_error("Recipient %s not found: %s", recipient, err_msg); + win_save_vprint(&privatewin->super, '!', NULL, 0, THEME_ERROR, "", "Recipient %s not found: %s", recipient, err_msg); + return; } - g_string_free(msg, TRUE); + // no window + cons_show_error("Recipient %s not found: %s", recipient, err_msg); } static void _ui_handle_recipient_error(const char * const recipient, const char * const err_msg) { - ProfWin *win = wins_get_by_recipient(recipient); - GString *msg = g_string_new(""); - g_string_printf(msg, "Error from %s: %s", recipient, err_msg); - // always show in console - cons_show_error(msg->str); + cons_show_error("Error from %s: %s", recipient, err_msg); - // show in window if exists for recipient - if (win != NULL) { - win_save_print(win, '!', NULL, 0, THEME_ERROR, "", msg->str); + ProfChatWin *chatwin = wins_get_chat(recipient); + if (chatwin) { + win_save_vprint((ProfWin*)chatwin, '!', NULL, 0, THEME_ERROR, "", "Error from %s: %s", recipient, err_msg); + return; } - g_string_free(msg, TRUE); + ProfMucWin *mucwin = wins_get_muc(recipient); + if (mucwin) { + win_save_vprint((ProfWin*)mucwin, '!', NULL, 0, THEME_ERROR, "", "Error from %s: %s", recipient, err_msg); + return; + } + + ProfPrivateWin *privatewin = wins_get_private(recipient); + if (privatewin) { + win_save_vprint((ProfWin*)privatewin, '!', NULL, 0, THEME_ERROR, "", "Error from %s: %s", recipient, err_msg); + return; + } } static void @@ -918,19 +930,20 @@ _ui_next_win(void) } } +// TODO move OTR UI to new module static void _ui_gone_secure(const char * const barejid, gboolean trusted) { - ProfWin *window = wins_get_by_recipient(barejid); - if (window == NULL) { - window = wins_new_chat(barejid); - } + ProfWin *window = NULL; - if (window->type != WIN_CHAT) { - return; + ProfChatWin *chatwin = wins_get_chat(barejid); + if (chatwin) { + window = (ProfWin*)chatwin; + } else { + window = wins_new_chat(barejid); + chatwin = (ProfChatWin*)window; } - ProfChatWin *chatwin = (ProfChatWin*)window; FREE_SET_NULL(chatwin->resource); chatwin->is_otr = TRUE; @@ -959,129 +972,125 @@ _ui_gone_secure(const char * const barejid, gboolean trusted) } static void -_ui_smp_recipient_initiated(const char * const recipient) +_ui_gone_insecure(const char * const barejid) { - ProfWin *window = wins_get_by_recipient(recipient); - if (window == NULL) { - return; - } else { - win_save_vprint(window, '!', NULL, 0, 0, "", "%s wants to authenticate your identity, use '/otr secret '.", recipient); + ProfChatWin *chatwin = wins_get_chat(barejid); + if (chatwin) { + chatwin->is_otr = FALSE; + chatwin->is_trusted = FALSE; + + ProfWin *window = (ProfWin*)chatwin; + win_save_print(window, '!', NULL, 0, THEME_OTR_ENDED, "", "OTR session ended."); + if (wins_is_current(window)) { + GString *recipient_str = win_get_recipient_string(window); + title_bar_set_recipient(recipient_str->str); + g_string_free(recipient_str, TRUE); + } } } static void -_ui_smp_recipient_initiated_q(const char * const recipient, const char *question) +_ui_smp_recipient_initiated(const char * const barejid) { - ProfWin *window = wins_get_by_recipient(recipient); - if (window == NULL) { - return; - } else { - win_save_vprint(window, '!', NULL, 0, 0, "", "%s wants to authenticate your identity with the following question:", recipient); - win_save_vprint(window, '!', NULL, 0, 0, "", " %s", question); - win_save_print(window, '!', NULL, 0, 0, "", "use '/otr answer '."); + ProfChatWin *chatwin = wins_get_chat(barejid); + if (chatwin) { + win_save_vprint((ProfWin*)chatwin, '!', NULL, 0, 0, "", "%s wants to authenticate your identity, use '/otr secret '.", barejid); } } static void -_ui_smp_unsuccessful_sender(const char * const recipient) +_ui_smp_recipient_initiated_q(const char * const barejid, const char *question) { - ProfWin *window = wins_get_by_recipient(recipient); - if (window == NULL) { - return; - } else { - win_save_vprint(window, '!', NULL, 0, 0, "", "Authentication failed, the secret you entered does not match the secret entered by %s.", recipient); + ProfChatWin *chatwin = wins_get_chat(barejid); + if (chatwin) { + win_save_vprint((ProfWin*)chatwin, '!', NULL, 0, 0, "", "%s wants to authenticate your identity with the following question:", barejid); + win_save_vprint((ProfWin*)chatwin, '!', NULL, 0, 0, "", " %s", question); + win_save_print((ProfWin*)chatwin, '!', NULL, 0, 0, "", "use '/otr answer '."); } } static void -_ui_smp_unsuccessful_receiver(const char * const recipient) +_ui_smp_unsuccessful_sender(const char * const barejid) { - ProfWin *window = wins_get_by_recipient(recipient); - if (window == NULL) { - return; - } else { - win_save_vprint(window, '!', NULL, 0, 0, "", "Authentication failed, the secret entered by %s does not match yours.", recipient); + ProfChatWin *chatwin = wins_get_chat(barejid); + if (chatwin) { + win_save_vprint((ProfWin*)chatwin, '!', NULL, 0, 0, "", "Authentication failed, the secret you entered does not match the secret entered by %s.", barejid); } } static void -_ui_smp_aborted(const char * const recipient) +_ui_smp_unsuccessful_receiver(const char * const barejid) { - ProfWin *window = wins_get_by_recipient(recipient); - if (window == NULL) { - return; - } else { - win_save_print(window, '!', NULL, 0, 0, "", "SMP session aborted."); + ProfChatWin *chatwin = wins_get_chat(barejid); + if (chatwin) { + win_save_vprint((ProfWin*)chatwin, '!', NULL, 0, 0, "", "Authentication failed, the secret entered by %s does not match yours.", barejid); } } static void -_ui_smp_successful(const char * const recipient) +_ui_smp_aborted(const char * const barejid) { - ProfWin *window = wins_get_by_recipient(recipient); - if (window == NULL) { - return; - } else { - win_save_print(window, '!', NULL, 0, 0, "", "Authentication successful."); + ProfChatWin *chatwin = wins_get_chat(barejid); + if (chatwin) { + win_save_print((ProfWin*)chatwin, '!', NULL, 0, 0, "", "SMP session aborted."); } } static void -_ui_smp_answer_success(const char * const recipient) +_ui_smp_successful(const char * const barejid) { - ProfWin *window = wins_get_by_recipient(recipient); - if (window == NULL) { - return; - } else { - win_save_vprint(window, '!', NULL, 0, 0, "", "%s successfully authenticated you.", recipient); + ProfChatWin *chatwin = wins_get_chat(barejid); + if (chatwin) { + win_save_print((ProfWin*)chatwin, '!', NULL, 0, 0, "", "Authentication successful."); } } static void -_ui_smp_answer_failure(const char * const recipient) +_ui_smp_answer_success(const char * const barejid) { - ProfWin *window = wins_get_by_recipient(recipient); - if (window == NULL) { - return; - } else { - win_save_vprint(window, '!', NULL, 0, 0, "", "%s failed to authenticate you.", recipient); + ProfChatWin *chatwin = wins_get_chat(barejid); + if (chatwin) { + win_save_vprint((ProfWin*)chatwin, '!', NULL, 0, 0, "", "%s successfully authenticated you.", barejid); } } static void -_ui_gone_insecure(const char * const recipient) +_ui_smp_answer_failure(const char * const barejid) { - ProfWin *window = wins_get_by_recipient(recipient); - if (window != NULL) { - if (window->type != WIN_CHAT) { - return; - } - ProfChatWin *chatwin = (ProfChatWin*)window; - chatwin->is_otr = FALSE; - chatwin->is_trusted = FALSE; - win_save_print(window, '!', NULL, 0, THEME_OTR_ENDED, "", "OTR session ended."); + ProfChatWin *chatwin = wins_get_chat(barejid); + if (chatwin) { + win_save_vprint((ProfWin*)chatwin, '!', NULL, 0, 0, "", "%s failed to authenticate you.", barejid); + } +} - if (wins_is_current(window)) { - GString *recipient_str = win_get_recipient_string(window); - title_bar_set_recipient(recipient_str->str); - g_string_free(recipient_str, TRUE); - } +static void +_ui_otr_authenticating(const char * const barejid) +{ + ProfChatWin *chatwin = wins_get_chat(barejid); + if (chatwin) { + win_save_vprint((ProfWin*)chatwin, '!', NULL, 0, 0, "", "Authenticating %s...", barejid); } } static void -_ui_trust(const char * const recipient) +_ui_otr_authetication_waiting(const char * const barejid) { - ProfWin *window = wins_get_by_recipient(recipient); - if (window != NULL) { - if (window->type != WIN_CHAT) { - return; - } - ProfChatWin *chatwin = (ProfChatWin*)window; + ProfChatWin *chatwin = wins_get_chat(barejid); + if (chatwin) { + win_save_vprint((ProfWin*)chatwin, '!', NULL, 0, 0, "", "Awaiting authentication from %s...", barejid); + } +} + +static void +_ui_trust(const char * const barejid) +{ + ProfChatWin *chatwin = wins_get_chat(barejid); + if (chatwin) { chatwin->is_otr = TRUE; chatwin->is_trusted = TRUE; - win_save_print(window, '!', NULL, 0, THEME_OTR_TRUSTED, "", "OTR session trusted."); + ProfWin *window = (ProfWin*)chatwin; + win_save_print(window, '!', NULL, 0, THEME_OTR_TRUSTED, "", "OTR session trusted."); if (wins_is_current(window)) { GString *recipient_str = win_get_recipient_string(window); title_bar_set_recipient(recipient_str->str); @@ -1091,18 +1100,15 @@ _ui_trust(const char * const recipient) } static void -_ui_untrust(const char * const recipient) +_ui_untrust(const char * const barejid) { - ProfWin *window = wins_get_by_recipient(recipient); - if (window != NULL) { - if (window->type != WIN_CHAT) { - return; - } - ProfChatWin *chatwin = (ProfChatWin*)window; + ProfChatWin *chatwin = wins_get_chat(barejid); + if (chatwin) { chatwin->is_otr = TRUE; chatwin->is_trusted = FALSE; - win_save_print(window, '!', NULL, 0, THEME_OTR_UNTRUSTED, "", "OTR session untrusted."); + ProfWin *window = (ProfWin*)chatwin; + win_save_print(window, '!', NULL, 0, THEME_OTR_UNTRUSTED, "", "OTR session untrusted."); if (wins_is_current(window)) { GString *recipient_str = win_get_recipient_string(window); title_bar_set_recipient(recipient_str->str); @@ -1163,35 +1169,40 @@ _ui_prune_wins(void) jabber_conn_status_t conn_status = jabber_get_connection_status(); gboolean pruned = FALSE; - GSList *recipients = wins_get_prune_recipients(); - if (recipients != NULL) { + GSList *wins = wins_get_prune_wins(); + if (wins != NULL) { pruned = TRUE; } - GSList *curr = recipients; - while (curr != NULL) { - char *recipient = curr->data; - if (conn_status == JABBER_CONNECTED) { - if (prefs_get_boolean(PREF_STATES)) { + GSList *curr = wins; + while (curr != NULL) { + ProfWin *window = curr->data; - // send chat state before closing - if (chat_session_get_recipient_supports(recipient)) { - chat_session_set_gone(recipient); - message_send_gone(recipient); - chat_session_end(recipient); + // TODO move to ui_close_win + if (window->type == WIN_CHAT) { + if (conn_status == JABBER_CONNECTED) { + if (prefs_get_boolean(PREF_STATES)) { + ProfChatWin *chatwin = (ProfChatWin*)window; + + // send chat state before closing + if (chat_session_get_recipient_supports(chatwin->barejid)) { + chat_session_set_gone(chatwin->barejid); + message_send_gone(chatwin->barejid); + chat_session_end(chatwin->barejid); + } } } } - ProfWin *window = wins_get_by_recipient(recipient); + // TODO make one function int num = wins_get_num(window); ui_close_win(num); curr = g_slist_next(curr); } - if (recipients != NULL) { - g_slist_free(recipients); + if (wins != NULL) { + g_slist_free(wins); } wins_tidy(); @@ -1238,28 +1249,6 @@ _ui_current_set_otr(gboolean value) } } -static void -_ui_otr_authenticating(const char * const recipient) -{ - ProfWin *window = wins_get_by_recipient(recipient); - if (window == NULL) { - return; - } else { - win_save_vprint(window, '!', NULL, 0, 0, "", "Authenticating %s...", recipient); - } -} - -static void -_ui_otr_authetication_waiting(const char * const recipient) -{ - ProfWin *window = wins_get_by_recipient(recipient); - if (window == NULL) { - return; - } else { - win_save_vprint(window, '!', NULL, 0, 0, "", "Awaiting authentication from %s...", recipient); - } -} - static int _ui_current_win_index(void) { @@ -1312,7 +1301,7 @@ _ui_print_system_msg_from_recipient(const char * const barejid, const char *mess if (barejid == NULL || message == NULL) return; - ProfWin *window = wins_get_by_recipient(barejid); + ProfWin *window = (ProfWin*)wins_get_chat(barejid); if (window == NULL) { int num = 0; window = wins_new_chat(barejid); @@ -1347,42 +1336,52 @@ _ui_recipient_gone(const char * const barejid) display_usr = barejid; } - ProfWin *window = wins_get_by_recipient(barejid); + ProfWin *window = (ProfWin*)wins_get_chat(barejid); if (window != NULL) { win_save_vprint(window, '!', NULL, 0, THEME_GONE, "", "<- %s has left the conversation.", display_usr); } } static void -_ui_new_chat_win(const char * const to) +_ui_new_private_win(const char * const fulljid) { - // if the contact is offline, show a message - PContact contact = roster_get_contact(to); - ProfWin *window = wins_get_by_recipient(to); + ProfWin *window = (ProfWin*)wins_get_private(fulljid); int num = 0; // create new window if (window == NULL) { - Jid *jid = jid_create(to); + window = wins_new_private(fulljid); + num = wins_get_num(window); + } else { + num = wins_get_num(window); + } - if (muc_active(jid->barejid)) { - window = wins_new_private(to); - } else { - window = wins_new_chat(to); - } + ui_switch_win(num); +} + +static void +_ui_new_chat_win(const char * const barejid) +{ + ProfWin *window = (ProfWin*)wins_get_chat(barejid); + int num = 0; + + // create new window + if (window == NULL) { + window = wins_new_chat(barejid); - jid_destroy(jid); num = wins_get_num(window); if (prefs_get_boolean(PREF_CHLOG) && prefs_get_boolean(PREF_HISTORY)) { - _win_show_history(num, to); + _win_show_history(num, barejid); } + // if the contact is offline, show a message + PContact contact = roster_get_contact(barejid); if (contact != NULL) { if (strcmp(p_contact_presence(contact), "offline") == 0) { const char * const show = p_contact_presence(contact); const char * const status = p_contact_status(contact); - win_show_status_string(window, to, show, status, NULL, "--", "offline"); + win_show_status_string(window, barejid, show, status, NULL, "--", "offline"); } } } else { @@ -1403,7 +1402,7 @@ _ui_create_xmlconsole_win(void) static void _ui_open_xmlconsole_win(void) { - ProfWin *window = wins_get_by_recipient("XML Console"); + ProfWin *window = wins_get_xmlconsole(); if (window != NULL) { int num = wins_get_num(window); ui_switch_win(num); @@ -1411,41 +1410,33 @@ _ui_open_xmlconsole_win(void) } static void -_ui_outgoing_msg(const char * const from, const char * const to, +_ui_outgoing_chat_msg(const char * const from, const char * const barejid, const char * const message) { - PContact contact = roster_get_contact(to); - ProfWin *window = wins_get_by_recipient(to); + PContact contact = roster_get_contact(barejid); + ProfWin *window = (ProfWin*)wins_get_chat(barejid); int num = 0; // create new window if (window == NULL) { - Jid *jid = jid_create(to); - - if (muc_active(jid->barejid)) { - window = wins_new_private(to); - } else { - window = wins_new_chat(to); + window = wins_new_chat(barejid); #ifdef HAVE_LIBOTR - if (otr_is_secure(to)) { - ProfChatWin *chatwin = (ProfChatWin*)window; - chatwin->is_otr = TRUE; - } -#endif + if (otr_is_secure(barejid)) { + ProfChatWin *chatwin = (ProfChatWin*)window; + chatwin->is_otr = TRUE; } - - jid_destroy(jid); +#endif num = wins_get_num(window); if (prefs_get_boolean(PREF_CHLOG) && prefs_get_boolean(PREF_HISTORY)) { - _win_show_history(num, to); + _win_show_history(num, barejid); } if (contact != NULL) { if (strcmp(p_contact_presence(contact), "offline") == 0) { const char *show = p_contact_presence(contact); const char *status = p_contact_status(contact); - win_show_status_string(window, to, show, status, NULL, "--", "offline"); + win_show_status_string(window, barejid, show, status, NULL, "--", "offline"); } } @@ -1459,21 +1450,42 @@ _ui_outgoing_msg(const char * const from, const char * const to, } static void -_ui_room_join(const char * const room, gboolean focus) +_ui_outgoing_private_msg(const char * const from, const char * const fulljid, + const char * const message) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_private(fulljid); int num = 0; // create new window if (window == NULL) { - window = wins_new_muc(room); + window = wins_new_private(fulljid); + num = wins_get_num(window); + + // use existing window + } else { + num = wins_get_num(window); } - char *nick = muc_nick(room); + win_save_print(window, '-', NULL, 0, THEME_TEXT_ME, from, message); + ui_switch_win(num); +} + +static void +_ui_room_join(const char * const roomjid, gboolean focus) +{ + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); + int num = 0; + + // create new window + if (window == NULL) { + window = wins_new_muc(roomjid); + } + + char *nick = muc_nick(roomjid); win_save_vprint(window, '!', NULL, NO_EOL, THEME_ROOMINFO, "", "-> You have joined the room as %s", nick); if (prefs_get_boolean(PREF_MUC_PRIVILEGES)) { - char *role = muc_role_str(room); - char *affiliation = muc_affiliation_str(room); + char *role = muc_role_str(roomjid); + char *affiliation = muc_affiliation_str(roomjid); if (role) { win_save_vprint(window, '!', NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", role: %s", role); } @@ -1490,25 +1502,25 @@ _ui_room_join(const char * const room, gboolean focus) } else { status_bar_active(num); ProfWin *console = wins_get_console(); - char *nick = muc_nick(room); - win_save_vprint(console, '!', NULL, 0, THEME_TYPING, "", "-> Autojoined %s as %s (%d).", room, nick, num); + char *nick = muc_nick(roomjid); + win_save_vprint(console, '!', NULL, 0, THEME_TYPING, "", "-> Autojoined %s as %s (%d).", roomjid, nick, num); } } static void -_ui_switch_to_room(const char * const room) +_ui_switch_to_room(const char * const roomjid) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); int num = wins_get_num(window); num = wins_get_num(window); ui_switch_win(num); } static void -_ui_room_role_change(const char * const room, const char * const role, const char * const actor, +_ui_room_role_change(const char * const roomjid, const char * const role, const char * const actor, const char * const reason) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); win_save_vprint(window, '!', NULL, NO_EOL, THEME_ROOMINFO, "", "Your role has been changed to: %s", role); if (actor) { win_save_vprint(window, '!', NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", by: %s", actor); @@ -1520,10 +1532,10 @@ _ui_room_role_change(const char * const room, const char * const role, const cha } static void -_ui_room_affiliation_change(const char * const room, const char * const affiliation, const char * const actor, +_ui_room_affiliation_change(const char * const roomjid, const char * const affiliation, const char * const actor, const char * const reason) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); win_save_vprint(window, '!', NULL, NO_EOL, THEME_ROOMINFO, "", "Your affiliation has been changed to: %s", affiliation); if (actor) { win_save_vprint(window, '!', NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", by: %s", actor); @@ -1535,10 +1547,10 @@ _ui_room_affiliation_change(const char * const room, const char * const affiliat } static void -_ui_room_role_and_affiliation_change(const char * const room, const char * const role, const char * const affiliation, +_ui_room_role_and_affiliation_change(const char * const roomjid, const char * const role, const char * const affiliation, const char * const actor, const char * const reason) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); win_save_vprint(window, '!', NULL, NO_EOL, THEME_ROOMINFO, "", "Your role and affiliation have been changed, role: %s, affiliation: %s", role, affiliation); if (actor) { win_save_vprint(window, '!', NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", by: %s", actor); @@ -1551,10 +1563,10 @@ _ui_room_role_and_affiliation_change(const char * const room, const char * const static void -_ui_room_occupant_role_change(const char * const room, const char * const nick, const char * const role, +_ui_room_occupant_role_change(const char * const roomjid, const char * const nick, const char * const role, const char * const actor, const char * const reason) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); win_save_vprint(window, '!', NULL, NO_EOL, THEME_ROOMINFO, "", "%s's role has been changed to: %s", nick, role); if (actor) { win_save_vprint(window, '!', NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", by: %s", actor); @@ -1566,10 +1578,10 @@ _ui_room_occupant_role_change(const char * const room, const char * const nick, } static void -_ui_room_occupant_affiliation_change(const char * const room, const char * const nick, const char * const affiliation, +_ui_room_occupant_affiliation_change(const char * const roomjid, const char * const nick, const char * const affiliation, const char * const actor, const char * const reason) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); win_save_vprint(window, '!', NULL, NO_EOL, THEME_ROOMINFO, "", "%s's affiliation has been changed to: %s", nick, affiliation); if (actor) { win_save_vprint(window, '!', NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", by: %s", actor); @@ -1581,10 +1593,10 @@ _ui_room_occupant_affiliation_change(const char * const room, const char * const } static void -_ui_room_occupant_role_and_affiliation_change(const char * const room, const char * const nick, const char * const role, +_ui_room_occupant_role_and_affiliation_change(const char * const roomjid, const char * const nick, const char * const role, const char * const affiliation, const char * const actor, const char * const reason) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); win_save_vprint(window, '!', NULL, NO_EOL, THEME_ROOMINFO, "", "%s's role and affiliation have been changed, role: %s, affiliation: %s", nick, role, affiliation); if (actor) { win_save_vprint(window, '!', NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", by: %s", actor); @@ -1596,9 +1608,9 @@ _ui_room_occupant_role_and_affiliation_change(const char * const room, const cha } static void -_ui_handle_room_info_error(const char * const room, const char * const error) +_ui_handle_room_info_error(const char * const roomjid, const char * const error) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window) { win_save_vprint(window, '!', NULL, 0, 0, "", "Room info request failed: %s", error); win_save_print(window, '-', NULL, 0, 0, "", ""); @@ -1606,9 +1618,9 @@ _ui_handle_room_info_error(const char * const room, const char * const error) } static void -_ui_show_room_disco_info(const char * const room, GSList *identities, GSList *features) +_ui_show_room_disco_info(const char * const roomjid, GSList *identities, GSList *features) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window) { if (((identities != NULL) && (g_slist_length(identities) > 0)) || ((features != NULL) && (g_slist_length(features) > 0))) { @@ -1647,11 +1659,11 @@ _ui_show_room_disco_info(const char * const room, GSList *identities, GSList *fe } static void -_ui_room_roster(const char * const room, GList *roster, const char * const presence) +_ui_room_roster(const char * const roomjid, GList *roster, const char * const presence) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window == NULL) { - log_error("Received room roster but no window open for %s.", room); + log_error("Received room roster but no window open for %s.", roomjid); } else { if ((roster == NULL) || (g_list_length(roster) == 0)) { if (presence == NULL) { @@ -1687,29 +1699,29 @@ _ui_room_roster(const char * const room, GList *roster, const char * const prese } static void -_ui_handle_room_join_error(const char * const room, const char * const err) +_ui_handle_room_join_error(const char * const roomjid, const char * const err) { - cons_show_error("Error joining room %s, reason: %s", room, err); + cons_show_error("Error joining room %s, reason: %s", roomjid, err); } static void -_ui_room_member_offline(const char * const room, const char * const nick) +_ui_room_member_offline(const char * const roomjid, const char * const nick) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window == NULL) { - log_error("Received offline presence for room participant %s, but no window open for %s.", nick, room); + log_error("Received offline presence for room participant %s, but no window open for %s.", nick, roomjid); } else { win_save_vprint(window, '!', NULL, 0, THEME_OFFLINE, "", "<- %s has left the room.", nick); } } static void -_ui_room_member_kicked(const char * const room, const char * const nick, const char * const actor, +_ui_room_member_kicked(const char * const roomjid, const char * const nick, const char * const actor, const char * const reason) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window == NULL) { - log_error("Received kick for room participant %s, but no window open for %s.", nick, room); + log_error("Received kick for room participant %s, but no window open for %s.", nick, roomjid); } else { GString *message = g_string_new(nick); g_string_append(message, " has been kicked from the room"); @@ -1728,12 +1740,12 @@ _ui_room_member_kicked(const char * const room, const char * const nick, const c } static void -_ui_room_member_banned(const char * const room, const char * const nick, const char * const actor, +_ui_room_member_banned(const char * const roomjid, const char * const nick, const char * const actor, const char * const reason) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window == NULL) { - log_error("Received ban for room participant %s, but no window open for %s.", nick, room); + log_error("Received ban for room participant %s, but no window open for %s.", nick, roomjid); } else { GString *message = g_string_new(nick); g_string_append(message, " has been banned from the room"); @@ -1752,12 +1764,12 @@ _ui_room_member_banned(const char * const room, const char * const nick, const c } static void -_ui_room_member_online(const char * const room, const char * const nick, const char * const role, +_ui_room_member_online(const char * const roomjid, const char * const nick, const char * const role, const char * const affiliation, const char * const show, const char * const status) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window == NULL) { - log_error("Received online presence for room participant %s, but no window open for %s.", nick, room); + log_error("Received online presence for room participant %s, but no window open for %s.", nick, roomjid); } else { win_save_vprint(window, '!', NULL, NO_EOL, THEME_ONLINE, "", "-> %s has joined the room", nick); if (prefs_get_boolean(PREF_MUC_PRIVILEGES)) { @@ -1773,47 +1785,47 @@ _ui_room_member_online(const char * const room, const char * const nick, const c } static void -_ui_room_member_presence(const char * const room, const char * const nick, +_ui_room_member_presence(const char * const roomjid, const char * const nick, const char * const show, const char * const status) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window == NULL) { - log_error("Received presence for room participant %s, but no window open for %s.", nick, room); + log_error("Received presence for room participant %s, but no window open for %s.", nick, roomjid); } else { win_show_status_string(window, nick, show, status, NULL, "++", "online"); } } static void -_ui_room_member_nick_change(const char * const room, +_ui_room_member_nick_change(const char * const roomjid, const char * const old_nick, const char * const nick) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window == NULL) { - log_error("Received nick change for room participant %s, but no window open for %s.", old_nick, room); + log_error("Received nick change for room participant %s, but no window open for %s.", old_nick, roomjid); } else { win_save_vprint(window, '!', NULL, 0, THEME_THEM, "", "** %s is now known as %s", old_nick, nick); } } static void -_ui_room_nick_change(const char * const room, const char * const nick) +_ui_room_nick_change(const char * const roomjid, const char * const nick) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window == NULL) { - log_error("Received self nick change %s, but no window open for %s.", nick, room); + log_error("Received self nick change %s, but no window open for %s.", nick, roomjid); } else { win_save_vprint(window, '!', NULL, 0, THEME_ME, "", "** You are now known as %s", nick); } } static void -_ui_room_history(const char * const room_jid, const char * const nick, +_ui_room_history(const char * const roomjid, const char * const nick, GTimeVal tv_stamp, const char * const message) { - ProfWin *window = wins_get_by_recipient(room_jid); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window == NULL) { - log_error("Room history message received from %s, but no window open for %s", nick, room_jid); + log_error("Room history message received from %s, but no window open for %s", nick, roomjid); } else { GString *line = g_string_new(""); @@ -1834,15 +1846,15 @@ _ui_room_history(const char * const room_jid, const char * const nick, } static void -_ui_room_message(const char * const room_jid, const char * const nick, +_ui_room_message(const char * const roomjid, const char * const nick, const char * const message) { - ProfWin *window = wins_get_by_recipient(room_jid); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window == NULL) { - log_error("Room message received from %s, but no window open for %s", nick, room_jid); + log_error("Room message received from %s, but no window open for %s", nick, roomjid); } else { int num = wins_get_num(window); - char *my_nick = muc_nick(room_jid); + char *my_nick = muc_nick(roomjid); if (g_strcmp0(nick, my_nick) != 0) { if (g_strrstr(message, my_nick) != NULL) { @@ -1877,7 +1889,7 @@ _ui_room_message(const char * const room_jid, const char * const nick, ui_index = 0; } - if (strcmp(nick, muc_nick(room_jid)) != 0) { + if (strcmp(nick, muc_nick(roomjid)) != 0) { if (prefs_get_boolean(PREF_BEEP)) { beep(); } @@ -1901,7 +1913,7 @@ _ui_room_message(const char * const room_jid, const char * const nick, if (notify) { gboolean is_current = wins_is_current(window); if ( !is_current || (is_current && prefs_get_boolean(PREF_NOTIFY_ROOM_CURRENT)) ) { - Jid *jidp = jid_create(room_jid); + Jid *jidp = jid_create(roomjid); if (prefs_get_boolean(PREF_NOTIFY_ROOM_TEXT)) { notify_room_message(nick, jidp->localpart, ui_index, message); } else { @@ -1915,11 +1927,11 @@ _ui_room_message(const char * const room_jid, const char * const nick, } static void -_ui_room_requires_config(const char * const room_jid) +_ui_room_requires_config(const char * const roomjid) { - ProfWin *window = wins_get_by_recipient(room_jid); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window == NULL) { - log_error("Received room config request, but no window open for %s.", room_jid); + log_error("Received room config request, but no window open for %s.", roomjid); } else { int num = wins_get_num(window); int ui_index = num; @@ -1950,44 +1962,45 @@ _ui_room_requires_config(const char * const room_jid) } static void -_ui_room_destroy(const char * const room_jid) +_ui_room_destroy(const char * const roomjid) { - ProfWin *window = wins_get_by_recipient(room_jid); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window == NULL) { - log_error("Received room destroy result, but no window open for %s.", room_jid); + log_error("Received room destroy result, but no window open for %s.", roomjid); } else { int num = wins_get_num(window); ui_close_win(num); - cons_show("Room destroyed: %s", room_jid); + cons_show("Room destroyed: %s", roomjid); } } static void -_ui_leave_room(const char * const room) +_ui_leave_room(const char * const roomjid) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window) { int num = wins_get_num(window); ui_close_win(num); } } +// TODO move to muc ui module static void -_ui_room_destroyed(const char * const room, const char * const reason, const char * const new_jid, +_ui_room_destroyed(const char * const roomjid, const char * const reason, const char * const new_jid, const char * const password) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window == NULL) { - log_error("Received room destroy, but no window open for %s.", room); + log_error("Received room destroy, but no window open for %s.", roomjid); } else { int num = wins_get_num(window); ui_close_win(num); ProfWin *console = wins_get_console(); if (reason) { - win_save_vprint(console, '!', NULL, 0, THEME_TYPING, "", "<- Room destroyed: %s, reason: %s", room, reason); + win_save_vprint(console, '!', NULL, 0, THEME_TYPING, "", "<- Room destroyed: %s, reason: %s", roomjid, reason); } else { - win_save_vprint(console, '!', NULL, 0, THEME_TYPING, "", "<- Room destroyed: %s", room); + win_save_vprint(console, '!', NULL, 0, THEME_TYPING, "", "<- Room destroyed: %s", roomjid); } if (new_jid) { @@ -2001,17 +2014,17 @@ _ui_room_destroyed(const char * const room, const char * const reason, const cha } static void -_ui_room_kicked(const char * const room, const char * const actor, const char * const reason) +_ui_room_kicked(const char * const roomjid, const char * const actor, const char * const reason) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window == NULL) { - log_error("Received kick, but no window open for %s.", room); + log_error("Received kick, but no window open for %s.", roomjid); } else { int num = wins_get_num(window); ui_close_win(num); GString *message = g_string_new("Kicked from "); - g_string_append(message, room); + g_string_append(message, roomjid); if (actor) { g_string_append(message, " by "); g_string_append(message, actor); @@ -2028,17 +2041,17 @@ _ui_room_kicked(const char * const room, const char * const actor, const char * } static void -_ui_room_banned(const char * const room, const char * const actor, const char * const reason) +_ui_room_banned(const char * const roomjid, const char * const actor, const char * const reason) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window == NULL) { - log_error("Received ban, but no window open for %s.", room); + log_error("Received ban, but no window open for %s.", roomjid); } else { int num = wins_get_num(window); ui_close_win(num); GString *message = g_string_new("Banned from "); - g_string_append(message, room); + g_string_append(message, roomjid); if (actor) { g_string_append(message, " by "); g_string_append(message, actor); @@ -2055,11 +2068,11 @@ _ui_room_banned(const char * const room, const char * const actor, const char * } static void -_ui_room_subject(const char * const room, const char * const nick, const char * const subject) +_ui_room_subject(const char * const roomjid, const char * const nick, const char * const subject) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window == NULL) { - log_error("Received room subject, but no window open for %s.", room); + log_error("Received room subject, but no window open for %s.", roomjid); } else { int num = wins_get_num(window); @@ -2091,22 +2104,22 @@ _ui_room_subject(const char * const room, const char * const nick, const char * } static void -_ui_handle_room_kick_error(const char * const room, const char * const nick, const char * const error) +_ui_handle_room_kick_error(const char * const roomjid, const char * const nick, const char * const error) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window == NULL) { - log_error("Kick error received for %s, but no window open for %s.", nick, room); + log_error("Kick error received for %s, but no window open for %s.", nick, roomjid); } else { win_save_vprint(window, '!', NULL, 0, THEME_ERROR, "", "Error kicking %s: %s", nick, error); } } static void -_ui_room_broadcast(const char * const room_jid, const char * const message) +_ui_room_broadcast(const char * const roomjid, const char * const message) { - ProfWin *window = wins_get_by_recipient(room_jid); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window == NULL) { - log_error("Received room broadcast, but no window open for %s.", room_jid); + log_error("Received room broadcast, but no window open for %s.", roomjid); } else { int num = wins_get_num(window); @@ -2125,19 +2138,19 @@ _ui_room_broadcast(const char * const room_jid, const char * const message) } static void -_ui_handle_room_affiliation_list_error(const char * const room, const char * const affiliation, +_ui_handle_room_affiliation_list_error(const char * const roomjid, const char * const affiliation, const char * const error) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window) { win_save_vprint(window, '!', NULL, 0, THEME_ERROR, "", "Error retrieving %s list: %s", affiliation, error); } } static void -_ui_handle_room_affiliation_list(const char * const room, const char * const affiliation, GSList *jids) +_ui_handle_room_affiliation_list(const char * const roomjid, const char * const affiliation, GSList *jids) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window) { if (jids) { win_save_vprint(window, '!', NULL, 0, 0, "", "Affiliation: %s", affiliation); @@ -2156,25 +2169,25 @@ _ui_handle_room_affiliation_list(const char * const room, const char * const aff } static void -_ui_handle_room_role_list_error(const char * const room, const char * const role, const char * const error) +_ui_handle_room_role_list_error(const char * const roomjid, const char * const role, const char * const error) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window) { win_save_vprint(window, '!', NULL, 0, THEME_ERROR, "", "Error retrieving %s list: %s", role, error); } } static void -_ui_handle_room_role_list(const char * const room, const char * const role, GSList *nicks) +_ui_handle_room_role_list(const char * const roomjid, const char * const role, GSList *nicks) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window) { if (nicks) { win_save_vprint(window, '!', NULL, 0, 0, "", "Role: %s", role); GSList *curr_nick = nicks; while (curr_nick) { char *nick = curr_nick->data; - Occupant *occupant = muc_roster_item(room, nick); + Occupant *occupant = muc_roster_item(roomjid, nick); if (occupant) { if (occupant->jid) { win_save_vprint(window, '!', NULL, 0, 0, "", " %s (%s)", nick, occupant->jid); @@ -2195,20 +2208,20 @@ _ui_handle_room_role_list(const char * const room, const char * const role, GSLi } static void -_ui_handle_room_affiliation_set_error(const char * const room, const char * const jid, const char * const affiliation, +_ui_handle_room_affiliation_set_error(const char * const roomjid, const char * const jid, const char * const affiliation, const char * const error) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window) { win_save_vprint(window, '!', NULL, 0, THEME_ERROR, "", "Error setting %s affiliation for %s: %s", affiliation, jid, error); } } static void -_ui_handle_room_role_set_error(const char * const room, const char * const nick, const char * const role, +_ui_handle_room_role_set_error(const char * const roomjid, const char * const nick, const char * const role, const char * const error) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window) { win_save_vprint(window, '!', NULL, 0, THEME_ERROR, "", "Error setting %s role for %s: %s", role, nick, error); } @@ -2251,7 +2264,7 @@ _ui_chat_win_contact_online(PContact contact, Resource *resource, GDateTime *las char *display_str = p_contact_create_display_string(contact, resource->name); const char *barejid = p_contact_barejid(contact); - ProfWin *window = wins_get_by_recipient(barejid); + ProfWin *window = (ProfWin*)wins_get_chat(barejid); if (window != NULL) { win_show_status_string(window, display_str, show, resource->status, last_activity, "++", "online"); @@ -2267,7 +2280,7 @@ _ui_chat_win_contact_offline(PContact contact, char *resource, char *status) char *display_str = p_contact_create_display_string(contact, resource); const char *barejid = p_contact_barejid(contact); - ProfWin *window = wins_get_by_recipient(barejid); + ProfWin *window = (ProfWin*)wins_get_chat(barejid); if (window != NULL) { win_show_status_string(window, display_str, "offline", status, NULL, "--", "offline"); @@ -2643,14 +2656,14 @@ _ui_handle_room_configuration(const char * const room, DataForm *form) } static void -_ui_handle_room_configuration_form_error(const char * const room, const char * const message) +_ui_handle_room_configuration_form_error(const char * const roomjid, const char * const message) { ProfWin *window = NULL; GString *message_str = g_string_new(""); - if (room) { - window = wins_get_by_recipient(room); - g_string_printf(message_str, "Could not get room configuration for %s", room); + if (roomjid) { + window = (ProfWin*)wins_get_muc(roomjid); + g_string_printf(message_str, "Could not get room configuration for %s", roomjid); } else { window = wins_get_console(); g_string_printf(message_str, "Could not get room configuration"); @@ -2667,18 +2680,18 @@ _ui_handle_room_configuration_form_error(const char * const room, const char * c } static void -_ui_handle_room_config_submit_result(const char * const room) +_ui_handle_room_config_submit_result(const char * const roomjid) { ProfWin *muc_window = NULL; ProfWin *form_window = NULL; int num; - if (room) { - GString *form_recipient = g_string_new(room); - g_string_append(form_recipient, " config"); + if (roomjid) { + muc_window = (ProfWin*)wins_get_muc(roomjid); - muc_window = wins_get_by_recipient(room); - form_window = wins_get_by_recipient(form_recipient->str); + GString *form_recipient = g_string_new(roomjid); + g_string_append(form_recipient, " config"); + form_window = (ProfWin*) wins_get_muc_conf(form_recipient->str); g_string_free(form_recipient, TRUE); if (form_window) { @@ -2692,7 +2705,7 @@ _ui_handle_room_config_submit_result(const char * const room) win_save_print(muc_window, '!', NULL, 0, THEME_ROOMINFO, "", "Room configuration successful"); } else { ui_switch_win(1); - cons_show("Room configuration successful: %s", room); + cons_show("Room configuration successful: %s", roomjid); } } else { cons_show("Room configuration successful"); @@ -2700,18 +2713,18 @@ _ui_handle_room_config_submit_result(const char * const room) } static void -_ui_handle_room_config_submit_result_error(const char * const room, const char * const message) +_ui_handle_room_config_submit_result_error(const char * const roomjid, const char * const message) { ProfWin *console = wins_get_console(); ProfWin *muc_window = NULL; ProfWin *form_window = NULL; - if (room) { - GString *form_recipient = g_string_new(room); - g_string_append(form_recipient, " config"); + if (roomjid) { + muc_window = (ProfWin*)wins_get_muc(roomjid); - muc_window = wins_get_by_recipient(room); - form_window = wins_get_by_recipient(form_recipient->str); + GString *form_recipient = g_string_new(roomjid); + g_string_append(form_recipient, " config"); + form_window = (ProfWin*) wins_get_muc_conf(form_recipient->str); g_string_free(form_recipient, TRUE); if (form_window) { @@ -2728,9 +2741,9 @@ _ui_handle_room_config_submit_result_error(const char * const room, const char * } } else { if (message) { - win_save_vprint(console, '!', NULL, 0, THEME_ERROR, "", "Configuration error for %s: %s", room, message); + win_save_vprint(console, '!', NULL, 0, THEME_ERROR, "", "Configuration error for %s: %s", roomjid, message); } else { - win_save_vprint(console, '!', NULL, 0, THEME_ERROR, "", "Configuration error for %s", room); + win_save_vprint(console, '!', NULL, 0, THEME_ERROR, "", "Configuration error for %s", roomjid); } } } else { @@ -2840,19 +2853,19 @@ _ui_show_lines(ProfWin *window, const gchar** lines) } static void -_ui_room_show_occupants(const char * const room) +_ui_room_show_occupants(const char * const roomjid) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window && !win_has_active_subwin(window)) { wins_show_subwin(window); - occupantswin_occupants(room); + occupantswin_occupants(roomjid); } } static void -_ui_room_hide_occupants(const char * const room) +_ui_room_hide_occupants(const char * const roomjid) { - ProfWin *window = wins_get_by_recipient(room); + ProfWin *window = (ProfWin*)wins_get_muc(roomjid); if (window && win_has_active_subwin(window)) { wins_hide_subwin(window); } @@ -3092,7 +3105,9 @@ ui_init_module(void) ui_print_system_msg_from_recipient = _ui_print_system_msg_from_recipient; ui_recipient_gone = _ui_recipient_gone; ui_new_chat_win = _ui_new_chat_win; - ui_outgoing_msg = _ui_outgoing_msg; + ui_new_private_win = _ui_new_private_win; + ui_outgoing_chat_msg = _ui_outgoing_chat_msg; + ui_outgoing_private_msg = _ui_outgoing_private_msg; ui_room_join = _ui_room_join; ui_room_roster = _ui_room_roster; ui_room_member_offline = _ui_room_member_offline; diff --git a/src/ui/occupantswin.c b/src/ui/occupantswin.c index e3cfec28..2afc3e26 100644 --- a/src/ui/occupantswin.c +++ b/src/ui/occupantswin.c @@ -57,7 +57,7 @@ _occuptantswin_occupant(ProfLayoutSplit *layout, Occupant *occupant) static void _occupantswin_occupants(const char * const roomjid) { - ProfMucWin *mucwin = wins_get_muc_win(roomjid); + ProfMucWin *mucwin = wins_get_muc(roomjid); if (mucwin) { GList *occupants = muc_roster(roomjid); if (occupants) { diff --git a/src/ui/ui.h b/src/ui/ui.h index 5d6352b3..ec8d38c0 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -73,23 +73,28 @@ void (*ui_next_win)(void); void (*ui_previous_win)(void); void (*ui_gone_secure)(const char * const barejid, gboolean trusted); -void (*ui_gone_insecure)(const char * const recipient); -void (*ui_trust)(const char * const recipient); -void (*ui_untrust)(const char * const recipient); -void (*ui_smp_recipient_initiated)(const char * const recipient); -void (*ui_smp_recipient_initiated_q)(const char * const recipient, const char *question); +void (*ui_gone_insecure)(const char * const barejid); +void (*ui_trust)(const char * const barejid); +void (*ui_untrust)(const char * const barejid); +// TODO rename other recipients to barejid etc +void (*ui_smp_recipient_initiated)(const char * const barejid); +void (*ui_smp_recipient_initiated_q)(const char * const barejid, const char *question); -void (*ui_smp_successful)(const char * const recipient); -void (*ui_smp_unsuccessful_sender)(const char * const recipient); -void (*ui_smp_unsuccessful_receiver)(const char * const recipient); -void (*ui_smp_aborted)(const char * const recipient); +void (*ui_smp_successful)(const char * const barejid); +void (*ui_smp_unsuccessful_sender)(const char * const barejid); +void (*ui_smp_unsuccessful_receiver)(const char * const barejid); +void (*ui_smp_aborted)(const char * const barejid); -void (*ui_smp_answer_success)(const char * const recipient); -void (*ui_smp_answer_failure)(const char * const recipient); +void (*ui_smp_answer_success)(const char * const barejid); +void (*ui_smp_answer_failure)(const char * const barejid); + +void (*ui_otr_authenticating)(const char * const barejid); +void (*ui_otr_authetication_waiting)(const char * const recipient); unsigned long (*ui_get_idle_time)(void); void (*ui_reset_idle_time)(void); -void (*ui_new_chat_win)(const char * const to); +void (*ui_new_chat_win)(const char * const barejid); +void (*ui_new_private_win)(const char * const fulljid); void (*ui_print_system_msg_from_recipient)(const char * const barejid, const char *message); gint (*ui_unread)(void); void (*ui_close_connected_win)(int index); @@ -108,9 +113,6 @@ void (*ui_current_print_line)(const char * const msg, ...); void (*ui_current_print_formatted_line)(const char show_char, int attrs, const char * const msg, ...); void (*ui_current_error_line)(const char * const msg); -void (*ui_otr_authenticating)(const char * const recipient); -void (*ui_otr_authetication_waiting)(const char * const recipient); - win_type_t (*ui_win_type)(int index); void (*ui_close_win)(int index); gboolean (*ui_win_exists)(int index); @@ -126,56 +128,62 @@ void (*ui_incoming_private_msg)(const char * const fulljid, const char * const m void (*ui_disconnected)(void); void (*ui_recipient_gone)(const char * const barejid); -void (*ui_outgoing_msg)(const char * const from, const char * const to, + +void (*ui_outgoing_chat_msg)(const char * const from, const char * const barejid, + const char * const message); +void (*ui_outgoing_private_msg)(const char * const from, const char * const fulljid, const char * const message); -void (*ui_room_join)(const char * const room, gboolean focus); -void (*ui_switch_to_room)(const char * const room); -void (*ui_room_role_change)(const char * const room, const char * const role, const char * const actor, + +void (*ui_room_join)(const char * const roomjid, gboolean focus); +void (*ui_switch_to_room)(const char * const roomjid); + +// TODO change all room -> roomjid +void (*ui_room_role_change)(const char * const roomjid, const char * const role, const char * const actor, const char * const reason); -void (*ui_room_affiliation_change)(const char * const room, const char * const affiliation, const char * const actor, +void (*ui_room_affiliation_change)(const char * const roomjid, const char * const affiliation, const char * const actor, const char * const reason); -void (*ui_room_role_and_affiliation_change)(const char * const room, const char * const role, +void (*ui_room_role_and_affiliation_change)(const char * const roomjid, const char * const role, const char * const affiliation, const char * const actor, const char * const reason); -void (*ui_room_occupant_role_change)(const char * const room, const char * const nick, const char * const role, +void (*ui_room_occupant_role_change)(const char * const roomjid, const char * const nick, const char * const role, const char * const actor, const char * const reason); -void (*ui_room_occupant_affiliation_change)(const char * const room, const char * const nick, const char * const affiliation, +void (*ui_room_occupant_affiliation_change)(const char * const roomjid, const char * const nick, const char * const affiliation, const char * const actor, const char * const reason); -void (*ui_room_occupant_role_and_affiliation_change)(const char * const room, const char * const nick, const char * const role, +void (*ui_room_occupant_role_and_affiliation_change)(const char * const roomjid, const char * const nick, const char * const role, const char * const affiliation, const char * const actor, const char * const reason); -void (*ui_room_roster)(const char * const room, GList *occupants, const char * const presence); -void (*ui_room_history)(const char * const room_jid, const char * const nick, +void (*ui_room_roster)(const char * const roomjid, GList *occupants, const char * const presence); +void (*ui_room_history)(const char * const roomjid, const char * const nick, GTimeVal tv_stamp, const char * const message); -void (*ui_room_message)(const char * const room_jid, const char * const nick, +void (*ui_room_message)(const char * const roomjid, const char * const nick, const char * const message); -void (*ui_room_subject)(const char * const room, const char * const nick, const char * const subject); -void (*ui_room_requires_config)(const char * const room_jid); -void (*ui_room_destroy)(const char * const room_jid); +void (*ui_room_subject)(const char * const roomjid, const char * const nick, const char * const subject); +void (*ui_room_requires_config)(const char * const roomjid); +void (*ui_room_destroy)(const char * const roomjid); void (*ui_show_room_info)(ProfMucWin *mucwin); void (*ui_show_room_role_list)(ProfMucWin *mucwin, muc_role_t role); void (*ui_show_room_affiliation_list)(ProfMucWin *mucwin, muc_affiliation_t affiliation); -void (*ui_handle_room_info_error)(const char * const room, const char * const error); -void (*ui_show_room_disco_info)(const char * const room, GSList *identities, GSList *features); -void (*ui_room_destroyed)(const char * const room, const char * const reason, const char * const new_jid, +void (*ui_handle_room_info_error)(const char * const roomjid, const char * const error); +void (*ui_show_room_disco_info)(const char * const roomjid, GSList *identities, GSList *features); +void (*ui_room_destroyed)(const char * const roomjid, const char * const reason, const char * const new_jid, const char * const password); -void (*ui_room_kicked)(const char * const room, const char * const actor, const char * const reason); -void (*ui_room_member_kicked)(const char * const room, const char * const nick, const char * const actor, +void (*ui_room_kicked)(const char * const roomjid, const char * const actor, const char * const reason); +void (*ui_room_member_kicked)(const char * const roomjid, const char * const nick, const char * const actor, const char * const reason); -void (*ui_room_banned)(const char * const room, const char * const actor, const char * const reason); -void (*ui_room_member_banned)(const char * const room, const char * const nick, const char * const actor, +void (*ui_room_banned)(const char * const roomjid, const char * const actor, const char * const reason); +void (*ui_room_member_banned)(const char * const roomjid, const char * const nick, const char * const actor, const char * const reason); -void (*ui_leave_room)(const char * const room); -void (*ui_room_broadcast)(const char * const room_jid, +void (*ui_leave_room)(const char * const roomjid); +void (*ui_room_broadcast)(const char * const roomjid, const char * const message); -void (*ui_room_member_offline)(const char * const room, const char * const nick); -void (*ui_room_member_online)(const char * const room, const char * const nick, const char * const roles, +void (*ui_room_member_offline)(const char * const roomjid, const char * const nick); +void (*ui_room_member_online)(const char * const roomjid, const char * const nick, const char * const roles, const char * const affiliation, const char * const show, const char * const status); -void (*ui_room_member_nick_change)(const char * const room, +void (*ui_room_member_nick_change)(const char * const roomjid, const char * const old_nick, const char * const nick); -void (*ui_room_nick_change)(const char * const room, const char * const nick); -void (*ui_room_member_presence)(const char * const room, +void (*ui_room_nick_change)(const char * const roomjid, const char * const nick); +void (*ui_room_member_presence)(const char * const roomjid, const char * const nick, const char * const show, const char * const status); -void (*ui_room_show_occupants)(const char * const room); -void (*ui_room_hide_occupants)(const char * const room); +void (*ui_room_show_occupants)(const char * const roomjid); +void (*ui_room_hide_occupants)(const char * const roomjid); void (*ui_show_roster)(void); void (*ui_hide_roster)(void); void (*ui_roster_add)(const char * const barejid, const char * const name); @@ -190,21 +198,21 @@ void (*ui_handle_recipient_not_found)(const char * const recipient, const char * void (*ui_handle_recipient_error)(const char * const recipient, const char * const err_msg); void (*ui_handle_error)(const char * const err_msg); void (*ui_clear_win_title)(void); -void (*ui_handle_room_join_error)(const char * const room, const char * const err); +void (*ui_handle_room_join_error)(const char * const roomjid, const char * const err); void (*ui_handle_room_configuration)(const char * const room, DataForm *form); -void (*ui_handle_room_configuration_form_error)(const char * const room, const char * const message); -void (*ui_handle_room_config_submit_result)(const char * const room); -void (*ui_handle_room_config_submit_result_error)(const char * const room, const char * const message); -void (*ui_handle_room_affiliation_list_error)(const char * const room, const char * const affiliation, +void (*ui_handle_room_configuration_form_error)(const char * const roomjid, const char * const message); +void (*ui_handle_room_config_submit_result)(const char * const roomjid); +void (*ui_handle_room_config_submit_result_error)(const char * const roomjid, const char * const message); +void (*ui_handle_room_affiliation_list_error)(const char * const roomjid, const char * const affiliation, const char * const error); -void (*ui_handle_room_affiliation_list)(const char * const room, const char * const affiliation, GSList *jids); -void (*ui_handle_room_affiliation_set_error)(const char * const room, const char * const jid, +void (*ui_handle_room_affiliation_list)(const char * const roomjid, const char * const affiliation, GSList *jids); +void (*ui_handle_room_affiliation_set_error)(const char * const roomjid, const char * const jid, const char * const affiliation, const char * const error); -void (*ui_handle_room_role_set_error)(const char * const room, const char * const nick, const char * const role, +void (*ui_handle_room_role_set_error)(const char * const roomjid, const char * const nick, const char * const role, const char * const error); -void (*ui_handle_room_role_list_error)(const char * const room, const char * const role, const char * const error); -void (*ui_handle_room_role_list)(const char * const room, const char * const role, GSList *nicks); -void (*ui_handle_room_kick_error)(const char * const room, const char * const nick, const char * const error); +void (*ui_handle_room_role_list_error)(const char * const roomjid, const char * const role, const char * const error); +void (*ui_handle_room_role_list)(const char * const roomjid, const char * const role, GSList *nicks); +void (*ui_handle_room_kick_error)(const char * const roomjid, const char * const nick, const char * const error); void (*ui_show_form)(ProfMucConfWin *confwin); void (*ui_show_form_field)(ProfWin *window, DataForm *form, char *tag); void (*ui_show_form_help)(ProfMucConfWin *confwin); diff --git a/src/ui/window.c b/src/ui/window.c index 9f96212a..6849da9d 100644 --- a/src/ui/window.c +++ b/src/ui/window.c @@ -141,6 +141,8 @@ win_create_chat(const char * const barejid) new_win->is_trusted = FALSE; new_win->history_shown = FALSE; + new_win->memcheck = PROFCHATWIN_MEMCHECK; + return &new_win->super; } @@ -177,6 +179,8 @@ win_create_muc(const char * const roomjid) new_win->roomjid = strdup(roomjid); new_win->super.unread = 0; + new_win->memcheck = PROFMUCWIN_MEMCHECK; + return &new_win->super; } @@ -191,6 +195,8 @@ win_create_muc_config(const char * const title, DataForm *form) new_win->from = strdup(title); new_win->form = form; + new_win->memcheck = PROFCONFWIN_MEMCHECK; + return &new_win->super; } @@ -204,6 +210,8 @@ win_create_private(const char * const fulljid) new_win->fulljid = strdup(fulljid); + new_win->memcheck = PROFPRIVATEWIN_MEMCHECK; + return &new_win->super; } diff --git a/src/ui/windows.c b/src/ui/windows.c index 3bdff9a2..e62fc240 100644 --- a/src/ui/windows.c +++ b/src/ui/windows.c @@ -99,7 +99,7 @@ wins_get_chat(const char * const barejid) } ProfMucConfWin * -wins_get_muc_conf_win(const char * const title) +wins_get_muc_conf(const char * const title) { GList *values = g_hash_table_get_values(windows); GList *curr = values; @@ -121,16 +121,18 @@ wins_get_muc_conf_win(const char * const title) } ProfMucWin * -wins_get_muc_win(const char * const roomjid) +wins_get_muc(const char * const roomjid) { GList *values = g_hash_table_get_values(windows); GList *curr = values; while (curr != NULL) { ProfWin *window = curr->data; - if ((g_strcmp0(window->from, roomjid) == 0) && window->type == WIN_MUC) { - g_list_free(values); - return (ProfMucWin*)window; + if (window->type == WIN_MUC) { + ProfMucWin *mucwin = (ProfMucWin*)window; + if (g_strcmp0(mucwin->roomjid, roomjid) == 0) { + return mucwin; + } } curr = g_list_next(curr); } @@ -372,7 +374,7 @@ wins_get_num(ProfWin *window) while (curr != NULL) { gconstpointer num_p = curr->data; ProfWin *curr_win = g_hash_table_lookup(windows, num_p); - if (g_strcmp0(curr_win->from, window->from) == 0) { + if (curr_win == window) { g_list_free(keys); return GPOINTER_TO_INT(num_p); } @@ -426,7 +428,7 @@ wins_is_current(ProfWin *window) { ProfWin *current_window = wins_get_current(); - if (g_strcmp0(current_window->from, window->from) == 0) { + if (current_window == window) { return TRUE; } else { return FALSE; @@ -438,10 +440,10 @@ wins_new_xmlconsole(void) { GList *keys = g_hash_table_get_keys(windows); int result = get_next_available_win_num(keys); - ProfWin *new = win_create_xmlconsole(); - g_hash_table_insert(windows, GINT_TO_POINTER(result), new); + ProfWin *newwin = win_create_xmlconsole(); + g_hash_table_insert(windows, GINT_TO_POINTER(result), newwin); g_list_free(keys); - return new; + return newwin; } ProfWin * @@ -449,10 +451,10 @@ wins_new_chat(const char * const barejid) { GList *keys = g_hash_table_get_keys(windows); int result = get_next_available_win_num(keys); - ProfWin *new = win_create_chat(barejid); - g_hash_table_insert(windows, GINT_TO_POINTER(result), new); + ProfWin *newwin = win_create_chat(barejid); + g_hash_table_insert(windows, GINT_TO_POINTER(result), newwin); g_list_free(keys); - return new; + return newwin; } ProfWin * @@ -460,10 +462,10 @@ wins_new_muc(const char * const roomjid) { GList *keys = g_hash_table_get_keys(windows); int result = get_next_available_win_num(keys); - ProfWin *new = win_create_muc(roomjid); - g_hash_table_insert(windows, GINT_TO_POINTER(result), new); + ProfWin *newwin = win_create_muc(roomjid); + g_hash_table_insert(windows, GINT_TO_POINTER(result), newwin); g_list_free(keys); - return new; + return newwin; } ProfWin * @@ -471,10 +473,10 @@ wins_new_muc_config(const char * const title, DataForm *form) { GList *keys = g_hash_table_get_keys(windows); int result = get_next_available_win_num(keys); - ProfWin *new = win_create_muc_config(title, form); - g_hash_table_insert(windows, GINT_TO_POINTER(result), new); + ProfWin *newwin = win_create_muc_config(title, form); + g_hash_table_insert(windows, GINT_TO_POINTER(result), newwin); g_list_free(keys); - return new; + return newwin; } ProfWin * @@ -482,10 +484,10 @@ wins_new_private(const char * const fulljid) { GList *keys = g_hash_table_get_keys(windows); int result = get_next_available_win_num(keys); - ProfWin *new = win_create_private(fulljid); - g_hash_table_insert(windows, GINT_TO_POINTER(result), new); + ProfWin *newwin = win_create_private(fulljid); + g_hash_table_insert(windows, GINT_TO_POINTER(result), newwin); g_list_free(keys); - return new; + return newwin; } int @@ -627,7 +629,8 @@ wins_get_chat_recipients(void) while (curr != NULL) { ProfWin *window = curr->data; if (window->type == WIN_CHAT) { - result = g_slist_append(result, window->from); + ProfChatWin *chatwin = (ProfChatWin*)window; + result = g_slist_append(result, chatwin->barejid); } curr = g_list_next(curr); } @@ -636,7 +639,7 @@ wins_get_chat_recipients(void) } GSList * -wins_get_prune_recipients(void) +wins_get_prune_wins(void) { GSList *result = NULL; GList *values = g_hash_table_get_values(windows); @@ -649,7 +652,7 @@ wins_get_prune_recipients(void) window->type != WIN_MUC_CONFIG && window->type != WIN_XML && window->type != WIN_CONSOLE) { - result = g_slist_append(result, window->from); + result = g_slist_append(result, window); } curr = g_list_next(curr); } @@ -813,9 +816,10 @@ wins_create_summary(void) case WIN_CHAT: chat_string = g_string_new(""); - PContact contact = roster_get_contact(window->from); + ProfChatWin *chatwin = (ProfChatWin*)window; + PContact contact = roster_get_contact(chatwin->barejid); if (contact == NULL) { - g_string_printf(chat_string, "%d: Chat %s", ui_index, window->from); + g_string_printf(chat_string, "%d: Chat %s", ui_index, chatwin->barejid); } else { const char *display_name = p_contact_name_or_jid(contact); g_string_printf(chat_string, "%d: Chat %s", ui_index, display_name); @@ -839,7 +843,8 @@ wins_create_summary(void) case WIN_PRIVATE: priv_string = g_string_new(""); - g_string_printf(priv_string, "%d: Private %s", ui_index, window->from); + ProfPrivateWin *privatewin = (ProfPrivateWin*)window; + g_string_printf(priv_string, "%d: Private %s", ui_index, privatewin->fulljid); if (window->unread > 0) { GString *priv_unread = g_string_new(""); @@ -855,7 +860,8 @@ wins_create_summary(void) case WIN_MUC: muc_string = g_string_new(""); - g_string_printf(muc_string, "%d: Room %s", ui_index, window->from); + ProfMucWin *mucwin = (ProfMucWin*)window; + g_string_printf(muc_string, "%d: Room %s", ui_index, mucwin->roomjid); if (window->unread > 0) { GString *muc_unread = g_string_new(""); @@ -871,7 +877,8 @@ wins_create_summary(void) case WIN_MUC_CONFIG: muc_config_string = g_string_new(""); - g_string_printf(muc_config_string, "%d: %s", ui_index, window->from); + ProfMucConfWin *confwin = (ProfMucConfWin*)window; + g_string_printf(muc_config_string, "%d: %s", ui_index, confwin->from); if (win_has_modified_form(window)) { g_string_append(muc_config_string, " *"); } diff --git a/src/ui/windows.h b/src/ui/windows.h index 4eb2e50e..2bb2561d 100644 --- a/src/ui/windows.h +++ b/src/ui/windows.h @@ -45,8 +45,8 @@ ProfWin * wins_new_private(const char * const fulljid); ProfWin * wins_get_console(void); ProfChatWin *wins_get_chat(const char * const barejid); -ProfMucWin * wins_get_muc_win(const char * const roomjid); -ProfMucConfWin * wins_get_muc_conf_win(const char * const title); +ProfMucWin * wins_get_muc(const char * const roomjid); +ProfMucConfWin * wins_get_muc_conf(const char * const title); ProfPrivateWin *wins_get_private(const char * const fulljid); // TODO remove @@ -75,7 +75,7 @@ gboolean wins_is_current(ProfWin *window); int wins_get_total_unread(void); void wins_resize_all(void); GSList * wins_get_chat_recipients(void); -GSList * wins_get_prune_recipients(void); +GSList * wins_get_prune_wins(void); void wins_lost_connection(void); gboolean wins_tidy(void); GSList * wins_create_summary(void); -- cgit 1.4.1-2-gfad0