mirror of
https://github.com/profanity-im/profanity.git
synced 2024-11-03 19:37:16 -05:00
Presence notifications sent to chat windows
This commit is contained in:
parent
c447e05081
commit
509888c419
4
jabber.c
4
jabber.c
@ -288,7 +288,7 @@ static int _jabber_presence_handler(xmpp_conn_t * const conn,
|
||||
xmpp_stanza_t * const stanza, void * const userdata)
|
||||
{
|
||||
char *from = xmpp_stanza_get_attribute(stanza, "from");
|
||||
char *short_from = strtok(from, "@");
|
||||
char *short_from = strtok(from, "/");
|
||||
char *type = xmpp_stanza_get_attribute(stanza, "type");
|
||||
|
||||
char *show_str, *status_str;
|
||||
@ -307,8 +307,10 @@ static int _jabber_presence_handler(xmpp_conn_t * const conn,
|
||||
|
||||
if (type == NULL) { // online
|
||||
cons_show_contact_online(short_from, show_str, status_str);
|
||||
win_show_contact_online(short_from, show_str, status_str);
|
||||
} else { // offline
|
||||
cons_show_contact_offline(short_from, show_str, status_str);
|
||||
win_show_contact_offline(short_from, show_str, status_str);
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
66
windows.c
66
windows.c
@ -125,6 +125,66 @@ void win_show_outgoing_msg(char *from, char *to, char *message)
|
||||
status_bar_active(win);
|
||||
}
|
||||
|
||||
void win_show_contact_online(char *from, char *show, char *status)
|
||||
{
|
||||
// find the chat window for recipient
|
||||
int i;
|
||||
for (i = 1; i < 10; i++)
|
||||
if (strcmp(_wins[i].from, from) == 0)
|
||||
break;
|
||||
|
||||
// if we found a window
|
||||
if (i != 10) {
|
||||
_win_show_time(i);
|
||||
wattron(_wins[i].win, COLOR_PAIR(2));
|
||||
wattron(_wins[i].win, A_BOLD);
|
||||
|
||||
wprintw(_wins[i].win, "++ %s", from);
|
||||
|
||||
if (show != NULL)
|
||||
wprintw(_wins[i].win, " is %s", show);
|
||||
else
|
||||
wprintw(_wins[i].win, " is online");
|
||||
|
||||
if (status != NULL)
|
||||
wprintw(_wins[i].win, ", \"%s\"", status);
|
||||
|
||||
wprintw(_wins[i].win, "\n");
|
||||
|
||||
wattroff(_wins[i].win, COLOR_PAIR(2));
|
||||
wattroff(_wins[i].win, A_BOLD);
|
||||
}
|
||||
}
|
||||
|
||||
void win_show_contact_offline(char *from, char *show, char *status)
|
||||
{
|
||||
// find the chat window for recipient
|
||||
int i;
|
||||
for (i = 1; i < 10; i++)
|
||||
if (strcmp(_wins[i].from, from) == 0)
|
||||
break;
|
||||
|
||||
// if we found a window
|
||||
if (i != 10) {
|
||||
_win_show_time(i);
|
||||
wattron(_wins[i].win, COLOR_PAIR(5));
|
||||
|
||||
wprintw(_wins[i].win, "-- %s", from);
|
||||
|
||||
if (show != NULL)
|
||||
wprintw(_wins[i].win, " is %s", show);
|
||||
else
|
||||
wprintw(_wins[i].win, " is offline");
|
||||
|
||||
if (status != NULL)
|
||||
wprintw(_wins[i].win, ", \"%s\"", status);
|
||||
|
||||
wprintw(_wins[i].win, "\n");
|
||||
|
||||
wattroff(_wins[i].win, COLOR_PAIR(5));
|
||||
}
|
||||
}
|
||||
|
||||
void cons_help(void)
|
||||
{
|
||||
_win_show_time(0);
|
||||
@ -210,6 +270,9 @@ void cons_show_contact_online(char *from, char *show, char *status)
|
||||
|
||||
if (show != NULL)
|
||||
wprintw(_wins[0].win, " is %s", show);
|
||||
else
|
||||
wprintw(_wins[0].win, " is online");
|
||||
|
||||
if (status != NULL)
|
||||
wprintw(_wins[0].win, ", \"%s\"", status);
|
||||
|
||||
@ -228,6 +291,9 @@ void cons_show_contact_offline(char *from, char *show, char *status)
|
||||
|
||||
if (show != NULL)
|
||||
wprintw(_wins[0].win, " is %s", show);
|
||||
else
|
||||
wprintw(_wins[0].win, " is offline");
|
||||
|
||||
if (status != NULL)
|
||||
wprintw(_wins[0].win, ", \"%s\"", status);
|
||||
|
||||
|
@ -54,6 +54,8 @@ char *win_get_recipient(void);
|
||||
void win_show_incomming_msg(char *from, char *message);
|
||||
void win_show_outgoing_msg(char *from, char *to, char *message);
|
||||
void win_handle_switch(int *ch);
|
||||
void win_show_contact_online(char *from, char *show, char *status);
|
||||
void win_show_contact_offline(char *from, char *show, char *status);
|
||||
|
||||
// console window actions
|
||||
void cons_help(void);
|
||||
|
Loading…
Reference in New Issue
Block a user