1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-12-04 14:46:46 -05:00

Show nickname in status updates if available

This commit is contained in:
James Booth 2013-05-19 03:22:06 +01:00
parent 66e4d8f5ba
commit d9cb8c100f

View File

@ -422,25 +422,35 @@ ui_contact_online(const char * const barejid, const char * const resource,
const char * const show, const char * const status, GDateTime *last_activity)
{
Jid *jid = jid_create_from_bare_and_resource(barejid, resource);
char *display_str = NULL;
PContact contact = roster_get_contact(barejid);
GString *display_str = g_string_new("");
if (strcmp(jid->resourcepart, "__prof_default") == 0) {
display_str = jid->barejid;
// use nickname if exists
if (p_contact_name(contact) != NULL) {
g_string_append(display_str, strdup(p_contact_name(contact)));
} else {
display_str = jid->fulljid;
g_string_append(display_str, strdup(barejid));
}
_show_status_string(console, display_str, show, status, last_activity, "++",
"online");
// add resource if not default provided by profanity
if (strcmp(jid->resourcepart, "__prof_default") != 0) {
g_string_append(display_str, " (");
g_string_append(display_str, strdup(jid->resourcepart));
g_string_append(display_str, ")");
}
_show_status_string(console, display_str->str, show, status, last_activity,
"++", "online");
int win_index = _find_prof_win_index(barejid);
if (win_index != NUM_WINS) {
ProfWin *window = windows[win_index];
_show_status_string(window, display_str, show, status, last_activity, "++",
"online");
_show_status_string(window, display_str->str, show, status,
last_activity, "++", "online");
}
jid_destroy(jid);
g_string_free(display_str, TRUE);
if (win_index == current_index)
current_win_dirty = TRUE;
@ -451,22 +461,36 @@ ui_contact_offline(const char * const from, const char * const show,
const char * const status)
{
Jid *jidp = jid_create(from);
char *display_str = NULL;
PContact contact = roster_get_contact(jidp->barejid);
GString *display_str = g_string_new("");
if (strcmp(jidp->resourcepart, "__prof_default") == 0) {
display_str = jidp->barejid;
// use nickname if exists
if (p_contact_name(contact) != NULL) {
g_string_append(display_str, strdup(p_contact_name(contact)));
} else {
display_str = jidp->fulljid;
g_string_append(display_str, strdup(jidp->barejid));
}
_show_status_string(console, display_str, show, status, NULL, "--", "offline");
// add resource if not default provided by profanity
if (strcmp(jidp->resourcepart, "__prof_default") != 0) {
g_string_append(display_str, " (");
g_string_append(display_str, strdup(jidp->resourcepart));
g_string_append(display_str, ")");
}
_show_status_string(console, display_str->str, show, status, NULL, "--",
"offline");
int win_index = _find_prof_win_index(from);
if (win_index != NUM_WINS) {
ProfWin *window = windows[win_index];
_show_status_string(window, display_str, show, status, NULL, "--", "offline");
_show_status_string(window, display_str->str, show, status, NULL, "--",
"offline");
}
jid_destroy(jidp);
g_string_free(display_str, TRUE);
if (win_index == current_index)
current_win_dirty = TRUE;
}