summary refs log blame commit diff stats
path: root/test/tc_displayable.py
blob: 1bbffa73148ac1c2643ecf94a293a2cbfcb22aba (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ss="p">); log_info("Received authorization request from %s", barejid); ui_print_system_msg_from_recipient(barejid, "Authorization request, type '/sub allow' to accept or '/sub deny' to reject"); if (prefs_get_boolean(PREF_NOTIFY_SUB)) { notify_subscription(barejid); } break; case PRESENCE_SUBSCRIBED: cons_show("Subscription received from %s", barejid); log_info("Subscription received from %s", barejid); ui_print_system_msg_from_recipient(barejid, "Subscribed"); break; case PRESENCE_UNSUBSCRIBED: cons_show("%s deleted subscription", barejid); log_info("%s deleted subscription", barejid); ui_print_system_msg_from_recipient(barejid, "Unsubscribed"); break; default: /* unknown type */ break; } } void sv_ev_contact_offline(char *barejid, char *resource, char *status) { gboolean updated = roster_contact_offline(barejid, resource, status); if (resource && updated) { ui_contact_offline(barejid, resource, status); } rosterwin_roster(); chat_session_remove(barejid); } void sv_ev_contact_online(char *barejid, Resource *resource, GDateTime *last_activity) { gboolean updated = roster_update_presence(barejid, resource, last_activity); if (updated) { ui_contact_online(barejid, resource, last_activity); } rosterwin_roster(); chat_session_remove(barejid); } void sv_ev_leave_room(const char * const room) { muc_leave(room); ui_leave_room(room); } void sv_ev_room_destroy(const char * const room) { muc_leave(room); ui_room_destroy(room); } void sv_ev_room_destroyed(const char * const room, const char * const new_jid, const char * const password, const char * const reason) { muc_leave(room); ui_room_destroyed(room, reason, new_jid, password); } void sv_ev_room_kicked(const char * const room, const char * const actor, const char * const reason) { muc_leave(room); ui_room_kicked(room, actor, reason); } void sv_ev_room_banned(const char * const room, const char * const actor, const char * const reason) { muc_leave(room); ui_room_banned(room, actor, reason); } void sv_ev_room_occupant_offline(const char * const room, const char * const nick, const char * const show, const char * const status) { muc_roster_remove(room, nick); char *muc_status_pref = prefs_get_string(PREF_STATUSES_MUC); if (g_strcmp0(muc_status_pref, "none") != 0) { ui_room_member_offline(room, nick); } prefs_free_string(muc_status_pref); occupantswin_occupants(room); } void sv_ev_room_occupent_kicked(const char * const room, const char * const nick, const char * const actor, const char * const reason) { muc_roster_remove(room, nick); ui_room_member_kicked(room, nick, actor, reason); occupantswin_occupants(room); } void sv_ev_room_occupent_banned(const char * const room, const char * const nick, const char * const actor, const char * const reason) { muc_roster_remove(room, nick); ui_room_member_banned(room, nick, actor, reason); occupantswin_occupants(room); } void sv_ev_roster_update(const char * const barejid, const char * const name, GSList *groups, const char * const subscription, gboolean pending_out) { roster_update(barejid, name, groups, subscription, pending_out); rosterwin_roster(); } void sv_ev_xmpp_stanza(const char * const msg) { ui_handle_stanza(msg); } void sv_ev_muc_self_online(const char * const room, const char * const nick, gboolean config_required, const char * const role, const char * const affiliation, const char * const actor, const char * const reason, const char * const jid, const char * const show, const char * const status) { muc_roster_add(room, nick, jid, role, affiliation, show, status); char *old_role = muc_role_str(room); char *old_affiliation = muc_affiliation_str(room); muc_set_role(room, role); muc_set_affiliation(room, affiliation); // handle self nick change if (muc_nick_change_pending(room)) { muc_nick_change_complete(room, nick); ui_room_nick_change(room, nick); // handle roster complete } else if (!muc_roster_complete(room)) { if (muc_autojoin(room)) { ui_room_join(room, FALSE); } else { ui_room_join(room, TRUE); } iq_room_info_request(room, FALSE); muc_invites_remove(room); muc_roster_set_complete(room); // show roster if occupants list disabled by default if (!prefs_get_boolean(PREF_OCCUPANTS)) { GList *occupants = muc_roster(room); ui_room_roster(room, occupants, NULL); g_list_free(occupants); } char *subject = muc_subject(room); if (subject) { ui_room_subject(room, NULL, subject); } GList *pending_broadcasts = muc_pending_broadcasts(room); if (pending_broadcasts) { GList *curr = pending_broadcasts; while (curr) { ui_room_broadcast(room, curr->data); curr = g_list_next(curr); } } // room configuration required if (config_required) { muc_set_requires_config(room, TRUE); ui_room_requires_config(room); } // check for change in role/affiliation } else { if (prefs_get_boolean(PREF_MUC_PRIVILEGES)) { // both changed if ((g_strcmp0(role, old_role) != 0) && (g_strcmp0(affiliation, old_affiliation) != 0)) { ui_room_role_and_affiliation_change(room, role, affiliation, actor, reason); // role changed } else if (g_strcmp0(role, old_role) != 0) { ui_room_role_change(room, role, actor, reason); // affiliation changed } else if (g_strcmp0(affiliation, old_affiliation) != 0) { ui_room_affiliation_change(room, affiliation, actor, reason); } } } occupantswin_occupants(room); } void sv_ev_muc_occupant_online(const char * const room, const char * const nick, const char * const jid, const char * const role, const char * const affiliation, const char * const actor, const char * const reason, const char * const show, const char * const status) { Occupant *occupant = muc_roster_item(room, nick); const char *old_role = NULL; const char *old_affiliation = NULL; if (occupant) { old_role = muc_occupant_role_str(occupant); old_affiliation = muc_occupant_affiliation_str(occupant); } gboolean updated = muc_roster_add(room, nick, jid, role, affiliation, show, status); // not yet finished joining room if (!muc_roster_complete(room)) { return; } // handle nickname change char *old_nick = muc_roster_nick_change_complete(room, nick); if (old_nick) { ui_room_member_nick_change(room, old_nick, nick); free(old_nick); occupantswin_occupants(room); return; } // joined room if (!occupant) { char *muc_status_pref = prefs_get_string(PREF_STATUSES_MUC); if (g_strcmp0(muc_status_pref, "none") != 0) { ui_room_member_online(room, nick, role, affiliation, show, status); } prefs_free_string(muc_status_pref); occupantswin_occupants(room); return; } // presence updated if (updated) { char *muc_status_pref = prefs_get_string(PREF_STATUSES_MUC); if (g_strcmp0(muc_status_pref, "all") == 0) { ui_room_member_presence(room, nick, show, status); } prefs_free_string(muc_status_pref); occupantswin_occupants(room); // presence unchanged, check for role/affiliation change } else { if (prefs_get_boolean(PREF_MUC_PRIVILEGES)) { // both changed if ((g_strcmp0(role, old_role) != 0) && (g_strcmp0(affiliation, old_affiliation) != 0)) { ui_room_occupant_role_and_affiliation_change(room, nick, role, affiliation, actor, reason); // role changed } else if (g_strcmp0(role, old_role) != 0) { ui_room_occupant_role_change(room, nick, role, actor, reason); // affiliation changed } else if (g_strcmp0(affiliation, old_affiliation) != 0) { ui_room_occupant_affiliation_change(room, nick, affiliation, actor, reason); } } occupantswin_occupants(room); } }