void privwin_incoming_msg(ProfPrivateWin *privatewin, const char *const message, GDateTime *timestamp) { assert(privatewin != NULL); ProfWin *window = (ProfWin*) privatewin; int num = wins_get_num(window); Jid *jidp = jid_create(privatewin->fulljid); if (jidp == NULL) { return; } gboolean is_current = wins_is_current(window); gboolean notify = prefs_do_chat_notify(is_current); // currently viewing chat window with sender if (wins_is_current(window)) { win_print_incoming_message(window, timestamp, jidp->resourcepart, message, PROF_MSG_PLAIN); title_bar_set_typing(FALSE); status_bar_active(num); // not currently viewing chat window with sender } else { status_bar_new(num); cons_show_incoming_private_message(jidp->resourcepart, jidp->barejid, num, privatewin->unread); win_print_incoming_message(window, timestamp, jidp->resourcepart, message, PROF_MSG_PLAIN); privatewin->unread++; if (prefs_get_boolean(PREF_FLASH)) { flash(); } } if (prefs_get_boolean(PREF_BEEP)) { beep(); } if (notify) { notify_message(jidp->resourcepart, num, message); } jid_destroy(jidp); }
void privwin_incoming_msg(ProfPrivateWin *privatewin, const char *const message, GDateTime *timestamp) { assert(privatewin != NULL); ProfWin *window = (ProfWin*) privatewin; int num = wins_get_num(window); char *display_from = get_nick_from_full_jid(privatewin->fulljid); // currently viewing chat window with sender if (wins_is_current(window)) { win_print_incoming_message(window, timestamp, display_from, message, PROF_MSG_PLAIN); title_bar_set_typing(FALSE); status_bar_active(num); // not currently viewing chat window with sender } else { privatewin->unread++; status_bar_new(num); cons_show_incoming_message(display_from, num); win_print_incoming_message(window, timestamp, display_from, message, PROF_MSG_PLAIN); if (prefs_get_boolean(PREF_FLASH)) { flash(); } } if (prefs_get_boolean(PREF_BEEP)) { beep(); } if (prefs_get_boolean(PREF_NOTIFY_MESSAGE)) { notify_message(window, display_from, message); } free(display_from); }
void chatwin_incoming_msg(ProfChatWin *chatwin, const char *const resource, const char *const message, GDateTime *timestamp, gboolean win_created, prof_enc_t enc_mode) { assert(chatwin != NULL); char *plugin_message = plugins_pre_chat_message_display(chatwin->barejid, message); ProfWin *window = (ProfWin*)chatwin; int num = wins_get_num(window); char *display_name = roster_get_msg_display_name(chatwin->barejid, resource); gboolean is_current = wins_is_current(window); gboolean notify = prefs_do_chat_notify(is_current); // currently viewing chat window with sender if (wins_is_current(window)) { win_print_incoming_message(window, timestamp, display_name, plugin_message, enc_mode); title_bar_set_typing(FALSE); status_bar_active(num); // not currently viewing chat window with sender } else { status_bar_new(num); cons_show_incoming_message(display_name, num, chatwin->unread); if (prefs_get_boolean(PREF_FLASH)) { flash(); } chatwin->unread++; if (prefs_get_boolean(PREF_CHLOG) && prefs_get_boolean(PREF_HISTORY)) { _chatwin_history(chatwin, chatwin->barejid); } // show users status first, when receiving message via delayed delivery if (timestamp && win_created) { PContact pcontact = roster_get_contact(chatwin->barejid); if (pcontact) { win_show_contact(window, pcontact); } } win_print_incoming_message(window, timestamp, display_name, plugin_message, enc_mode); } if (prefs_get_boolean(PREF_BEEP)) { beep(); } if (notify) { notify_message(display_name, num, plugin_message); } free(display_name); plugins_post_chat_message_display(chatwin->barejid, plugin_message); free(plugin_message); }