diff options
-rw-r--r-- | src/ui/chatwin.c | 25 | ||||
-rw-r--r-- | src/ui/core.c | 20 | ||||
-rw-r--r-- | src/ui/ui.h | 4 | ||||
-rw-r--r-- | tests/unittests/ui/stub_ui.c | 4 |
4 files changed, 30 insertions, 23 deletions
diff --git a/src/ui/chatwin.c b/src/ui/chatwin.c index 591635bb..0e78fc24 100644 --- a/src/ui/chatwin.c +++ b/src/ui/chatwin.c @@ -304,33 +304,28 @@ chatwin_outgoing_carbon(ProfChatWin *chatwin, const char *const message) } void -ui_chat_win_contact_online(PContact contact, Resource *resource, GDateTime *last_activity) +chatwin_contact_online(ProfChatWin *chatwin, Resource *resource, GDateTime *last_activity) { + assert(chatwin != NULL); + const char *show = string_from_resource_presence(resource->presence); + PContact contact = roster_get_contact(chatwin->barejid); char *display_str = p_contact_create_display_string(contact, resource->name); - const char *barejid = p_contact_barejid(contact); - ProfWin *window = (ProfWin*)wins_get_chat(barejid); - if (window) { - win_show_status_string(window, display_str, show, resource->status, - last_activity, "++", "online"); - - } + win_show_status_string((ProfWin*)chatwin, display_str, show, resource->status, last_activity, "++", "online"); free(display_str); } void -ui_chat_win_contact_offline(PContact contact, char *resource, char *status) +chatwin_contact_offline(ProfChatWin *chatwin, char *resource, char *status) { + assert(chatwin != NULL); + + PContact contact = roster_get_contact(chatwin->barejid); char *display_str = p_contact_create_display_string(contact, resource); - const char *barejid = p_contact_barejid(contact); - ProfWin *window = (ProfWin*)wins_get_chat(barejid); - if (window) { - win_show_status_string(window, display_str, "offline", status, NULL, "--", - "offline"); - } + win_show_status_string((ProfWin*)chatwin, display_str, "offline", status, NULL, "--", "offline"); free(display_str); } diff --git a/src/ui/core.c b/src/ui/core.c index d8c9aa4e..eb36ba22 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -323,11 +323,17 @@ ui_contact_online(char *barejid, Resource *resource, GDateTime *last_activity) // show in chat win if "all" if (g_strcmp0(show_chat_win, "all") == 0) { - ui_chat_win_contact_online(contact, resource, last_activity); + ProfChatWin *chatwin = wins_get_chat(barejid); + if (chatwin) { + chatwin_contact_online(chatwin, resource, last_activity); + } // show in char win if "online" and presence online } else if (g_strcmp0(show_chat_win, "online") == 0 && resource->presence == RESOURCE_ONLINE) { - ui_chat_win_contact_online(contact, resource, last_activity); + ProfChatWin *chatwin = wins_get_chat(barejid); + if (chatwin) { + chatwin_contact_online(chatwin, resource, last_activity); + } } free(show_console); @@ -1790,11 +1796,17 @@ ui_contact_offline(char *barejid, char *resource, char *status) // show in chat win if "all" if (g_strcmp0(show_chat_win, "all") == 0) { - ui_chat_win_contact_offline(contact, resource, status); + ProfChatWin *chatwin = wins_get_chat(barejid); + if (chatwin) { + chatwin_contact_offline(chatwin, resource, status); + } // show in char win if "online" and presence online } else if (g_strcmp0(show_chat_win, "online") == 0) { - ui_chat_win_contact_offline(contact, resource, status); + ProfChatWin *chatwin = wins_get_chat(barejid); + if (chatwin) { + chatwin_contact_offline(chatwin, resource, status); + } } } } diff --git a/src/ui/ui.h b/src/ui/ui.h index fa8e45f1..100ca10a 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -168,8 +168,8 @@ void ui_contact_already_in_group(const char *const contact, const char *const gr void ui_contact_not_in_group(const char *const contact, const char *const group); void ui_group_added(const char *const contact, const char *const group); void ui_group_removed(const char *const contact, const char *const group); -void ui_chat_win_contact_online(PContact contact, Resource *resource, GDateTime *last_activity); -void ui_chat_win_contact_offline(PContact contact, char *resource, char *status); +void chatwin_contact_online(ProfChatWin *chatwin, Resource *resource, GDateTime *last_activity); +void chatwin_contact_offline(ProfChatWin *chatwin, char *resource, char *status); void ui_contact_offline(char *barejid, char *resource, char *status); void ui_handle_recipient_not_found(const char *const recipient, const char *const err_msg); void ui_handle_recipient_error(const char *const recipient, const char *const err_msg); diff --git a/tests/unittests/ui/stub_ui.c b/tests/unittests/ui/stub_ui.c index 83d59135..5e0ac484 100644 --- a/tests/unittests/ui/stub_ui.c +++ b/tests/unittests/ui/stub_ui.c @@ -243,8 +243,8 @@ void ui_contact_already_in_group(const char * const contact, const char * const void ui_contact_not_in_group(const char * const contact, const char * const group) {} void ui_group_added(const char * const contact, const char * const group) {} void ui_group_removed(const char * const contact, const char * const group) {} -void ui_chat_win_contact_online(PContact contact, Resource *resource, GDateTime *last_activity) {} -void ui_chat_win_contact_offline(PContact contact, char *resource, char *status) {} +void chatwin_contact_online(ProfChatWin *chatwin, Resource *resource, GDateTime *last_activity) {} +void chatwin_contact_offline(ProfChatWin *chatwin, char *resource, char *status) {} void ui_contact_offline(char *barejid, char *resource, char *status) {} |