Show resource in titlebar and on each message

This commit is contained in:
James Booth
2015-01-10 18:35:59 +00:00
parent 3e1832b02e
commit c3ad3c0ba6
7 changed files with 39 additions and 25 deletions

View File

@@ -328,20 +328,25 @@ ui_get_current_chat(void)
}
void
ui_incoming_msg(const char * const barejid, const char * const message, GTimeVal *tv_stamp)
ui_incoming_msg(const char * const barejid, const char * const resource, const char * const message, GTimeVal *tv_stamp)
{
gboolean win_created = FALSE;
char *display_from = NULL;
GString *user = g_string_new("");
PContact contact = roster_get_contact(barejid);
if (contact != NULL) {
if (p_contact_name(contact) != NULL) {
display_from = strdup(p_contact_name(contact));
g_string_append(user, p_contact_name(contact));
} else {
display_from = strdup(barejid);
g_string_append(user, barejid);
}
} else {
display_from = strdup(barejid);
g_string_append(user,barejid);
}
if (resource) {
g_string_append(user, "/");
g_string_append(user, resource);
}
ProfChatWin *chatwin = wins_get_chat(barejid);
@@ -362,14 +367,14 @@ ui_incoming_msg(const char * const barejid, const char * const message, GTimeVal
// currently viewing chat window with sender
if (wins_is_current(window)) {
win_print_incoming_message(window, tv_stamp, display_from, message);
win_print_incoming_message(window, tv_stamp, user->str, message);
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_from, num);
cons_show_incoming_message(user->str, num);
if (prefs_get_boolean(PREF_FLASH)) {
flash();
@@ -388,7 +393,7 @@ ui_incoming_msg(const char * const barejid, const char * const message, GTimeVal
}
}
win_print_incoming_message(window, tv_stamp, display_from, message);
win_print_incoming_message(window, tv_stamp, user->str, message);
}
int ui_index = num;
@@ -404,14 +409,14 @@ ui_incoming_msg(const char * const barejid, const char * const message, GTimeVal
gboolean is_current = wins_is_current(window);
if ( !is_current || (is_current && prefs_get_boolean(PREF_NOTIFY_MESSAGE_CURRENT)) ) {
if (prefs_get_boolean(PREF_NOTIFY_MESSAGE_TEXT)) {
notify_message(display_from, ui_index, message);
notify_message(user->str, ui_index, message);
} else {
notify_message(display_from, ui_index, NULL);
notify_message(user->str, ui_index, NULL);
}
}
}
free(display_from);
g_string_free(user, TRUE);
}
void

View File

@@ -47,6 +47,7 @@
#include "ui/windows.h"
#include "ui/window.h"
#include "roster_list.h"
#include "chat_session.h"
static WINDOW *win;
static contact_presence_t current_presence;
@@ -307,9 +308,17 @@ static void
_show_contact_presence(ProfChatWin *chatwin)
{
int bracket_attrs = theme_attrs(THEME_TITLE_BRACKET);
if (chatwin && chatwin->resource_override) {
char *resource = NULL;
ChatSession *session = chat_session_get(chatwin->barejid);
if (chatwin->resource_override) {
resource = chatwin->resource_override;
} else if (session && session->resource) {
resource = session->resource;
}
if (resource) {
wprintw(win, "/");
wprintw(win, chatwin->resource_override);
wprintw(win, resource);
}
if (prefs_get_boolean(PREF_PRESENCE)) {
@@ -318,10 +327,10 @@ _show_contact_presence(ProfChatWin *chatwin)
PContact contact = roster_get_contact(chatwin->barejid);
if (contact) {
if (chatwin && chatwin->resource_override) {
Resource *resource = p_contact_get_resource(contact, chatwin->resource_override);
if (resource) {
presence = string_from_resource_presence(resource->presence);
if (resource) {
Resource *resourcep = p_contact_get_resource(contact, resource);
if (resourcep) {
presence = string_from_resource_presence(resourcep->presence);
}
} else {
presence = p_contact_presence(contact);

View File

@@ -116,7 +116,7 @@ void ui_handle_stanza(const char * const msg);
// ui events
void ui_contact_typing(const char * const from);
void ui_incoming_msg(const char * const from, const char * const message, GTimeVal *tv_stamp);
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);
void ui_disconnected(void);