Merge branch 'master' into openpgp

This commit is contained in:
James Booth
2015-05-07 22:06:02 +01:00
6 changed files with 64 additions and 95 deletions

View File

@@ -280,42 +280,12 @@ sv_ev_contact_offline(char *barejid, char *resource, char *status)
}
void
sv_ev_contact_online(char *barejid, Resource *resource,
GDateTime *last_activity)
sv_ev_contact_online(char *barejid, Resource *resource, GDateTime *last_activity)
{
gboolean updated = roster_update_presence(barejid, resource, last_activity);
if (updated) {
char *show_console = prefs_get_string(PREF_STATUSES_CONSOLE);
char *show_chat_win = prefs_get_string(PREF_STATUSES_CHAT);
PContact contact = roster_get_contact(barejid);
if (p_contact_subscription(contact)) {
if (strcmp(p_contact_subscription(contact), "none") != 0) {
// show in console if "all"
if (g_strcmp0(show_console, "all") == 0) {
cons_show_contact_online(contact, resource, last_activity);
// show in console of "online" and presence online
} else if (g_strcmp0(show_console, "online") == 0 &&
resource->presence == RESOURCE_ONLINE) {
cons_show_contact_online(contact, resource, 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);
// 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);
}
}
}
prefs_free_string(show_console);
prefs_free_string(show_chat_win);
ui_contact_online(barejid, resource, last_activity);
}
rosterwin_roster();

View File

@@ -319,6 +319,42 @@ ui_chat_win_exists(const char * const barejid)
return (chatwin != NULL);
}
void
ui_contact_online(char *barejid, Resource *resource, GDateTime *last_activity)
{
char *show_console = prefs_get_string(PREF_STATUSES_CONSOLE);
char *show_chat_win = prefs_get_string(PREF_STATUSES_CHAT);
PContact contact = roster_get_contact(barejid);
// show nothing
if (g_strcmp0(p_contact_subscription(contact), "none") == 0) {
free(show_console);
free(show_chat_win);
return;
}
// show in console if "all"
if (g_strcmp0(show_console, "all") == 0) {
cons_show_contact_online(contact, resource, last_activity);
// show in console of "online" and presence online
} else if (g_strcmp0(show_console, "online") == 0 && resource->presence == RESOURCE_ONLINE) {
cons_show_contact_online(contact, resource, 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);
// 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);
}
free(show_console);
free(show_chat_win);
}
void
ui_contact_typing(const char * const barejid, const char * const resource)
{

View File

@@ -112,6 +112,7 @@ char * ui_ask_password(void);
void ui_handle_stanza(const char * const msg);
// ui events
void ui_contact_online(char *barejid, Resource *resource, GDateTime *last_activity);
void ui_contact_typing(const char * const barejid, const char * const resource);
void ui_incoming_msg(const char * const from, const char * const resource, const char * const message, GTimeVal *tv_stamp);
void ui_incoming_private_msg(const char * const fulljid, const char * const message, GTimeVal *tv_stamp);