1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-11-03 19:37:16 -05:00

Added ui_contact_online

This commit is contained in:
James Booth 2015-05-07 22:05:36 +01:00
parent 6fd9b179a0
commit a2c6211732
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);

View File

@ -14,31 +14,19 @@
#include "ui/stub_ui.h"
#include "muc.h"
void console_doesnt_show_online_presence_when_set_none(void **state)
{
prefs_set_string(PREF_STATUSES_CONSOLE, "none");
roster_init();
roster_add("test1@server", "bob", NULL, "both", FALSE);
Resource *resource = resource_new("resource", RESOURCE_ONLINE, NULL, 10);
sv_ev_contact_online("test1@server", resource, NULL);
roster_clear();
}
void console_shows_online_presence_when_set_online(void **state)
{
prefs_set_string(PREF_STATUSES_CONSOLE, "online");
roster_init();
roster_add("test1@server", "bob", NULL, "both", FALSE);
char *barejid = "test1@server";
roster_add(barejid, "bob", NULL, "both", FALSE);
Resource *resource = resource_new("resource", RESOURCE_ONLINE, NULL, 10);
PContact contact = roster_get_contact("test1@server");
expect_memory(cons_show_contact_online, contact, contact, sizeof(contact));
expect_memory(cons_show_contact_online, resource, resource, sizeof(resource));
expect_value(cons_show_contact_online, last_activity, NULL);
expect_memory(ui_contact_online, barejid, barejid, sizeof(barejid));
expect_memory(ui_contact_online, resource, resource, sizeof(resource));
expect_value(ui_contact_online, last_activity, NULL);
sv_ev_contact_online("test1@server", resource, NULL);
sv_ev_contact_online(barejid, resource, NULL);
roster_clear();
}
@ -47,39 +35,15 @@ void console_shows_online_presence_when_set_all(void **state)
{
prefs_set_string(PREF_STATUSES_CONSOLE, "all");
roster_init();
roster_add("test1@server", "bob", NULL, "both", FALSE);
char *barejid = "test1@server";
roster_add(barejid, "bob", NULL, "both", FALSE);
Resource *resource = resource_new("resource", RESOURCE_ONLINE, NULL, 10);
PContact contact = roster_get_contact("test1@server");
expect_memory(cons_show_contact_online, contact, contact, sizeof(contact));
expect_memory(cons_show_contact_online, resource, resource, sizeof(resource));
expect_value(cons_show_contact_online, last_activity, NULL);
expect_memory(ui_contact_online, barejid, barejid, sizeof(barejid));
expect_memory(ui_contact_online, resource, resource, sizeof(resource));
expect_value(ui_contact_online, last_activity, NULL);
sv_ev_contact_online("test1@server", resource, NULL);
roster_clear();
}
void console_doesnt_show_dnd_presence_when_set_none(void **state)
{
prefs_set_string(PREF_STATUSES_CONSOLE, "none");
roster_init();
roster_add("test1@server", "bob", NULL, "both", FALSE);
Resource *resource = resource_new("resource", RESOURCE_DND, NULL, 10);
sv_ev_contact_online("test1@server", resource, NULL);
roster_clear();
}
void console_doesnt_show_dnd_presence_when_set_online(void **state)
{
prefs_set_string(PREF_STATUSES_CONSOLE, "online");
roster_init();
roster_add("test1@server", "bob", NULL, "both", FALSE);
Resource *resource = resource_new("resource", RESOURCE_DND, NULL, 10);
sv_ev_contact_online("test1@server", resource, NULL);
sv_ev_contact_online(barejid, resource, NULL);
roster_clear();
}
@ -88,15 +52,15 @@ void console_shows_dnd_presence_when_set_all(void **state)
{
prefs_set_string(PREF_STATUSES_CONSOLE, "all");
roster_init();
roster_add("test1@server", "bob", NULL, "both", FALSE);
char *barejid = "test1@server";
roster_add(barejid, "bob", NULL, "both", FALSE);
Resource *resource = resource_new("resource", RESOURCE_ONLINE, NULL, 10);
PContact contact = roster_get_contact("test1@server");
expect_memory(cons_show_contact_online, contact, contact, sizeof(contact));
expect_memory(cons_show_contact_online, resource, resource, sizeof(resource));
expect_value(cons_show_contact_online, last_activity, NULL);
expect_memory(ui_contact_online, barejid, barejid, sizeof(barejid));
expect_memory(ui_contact_online, resource, resource, sizeof(resource));
expect_value(ui_contact_online, last_activity, NULL);
sv_ev_contact_online("test1@server", resource, NULL);
sv_ev_contact_online(barejid, resource, NULL);
roster_clear();
}

View File

@ -425,21 +425,12 @@ int main(int argc, char* argv[]) {
load_preferences,
close_preferences),
unit_test_setup_teardown(console_doesnt_show_online_presence_when_set_none,
load_preferences,
close_preferences),
unit_test_setup_teardown(console_shows_online_presence_when_set_online,
load_preferences,
close_preferences),
unit_test_setup_teardown(console_shows_online_presence_when_set_all,
load_preferences,
close_preferences),
unit_test_setup_teardown(console_doesnt_show_dnd_presence_when_set_none,
load_preferences,
close_preferences),
unit_test_setup_teardown(console_doesnt_show_dnd_presence_when_set_online,
load_preferences,
close_preferences),
unit_test_setup_teardown(console_shows_dnd_presence_when_set_all,
load_preferences,
close_preferences),

View File

@ -185,6 +185,13 @@ 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)
{
check_expected(barejid);
check_expected(resource);
check_expected(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_message_receipt(const char * const barejid, const char * const id) {}