diff --git a/src/config/theme.c b/src/config/theme.c index 14e7260c..c03c2dd4 100644 --- a/src/config/theme.c +++ b/src/config/theme.c @@ -89,6 +89,7 @@ static struct colours_t { NCURSES_COLOR_T error; NCURSES_COLOR_T incoming; NCURSES_COLOR_T roominfo; + NCURSES_COLOR_T roommention; NCURSES_COLOR_T me; NCURSES_COLOR_T them; NCURSES_COLOR_T otrstartedtrusted; @@ -202,29 +203,30 @@ theme_init_colours(void) // room chat init_pair(19, colour_prefs.roominfo, colour_prefs.bkgnd); + init_pair(20, colour_prefs.roommention, colour_prefs.bkgnd); // statuses - init_pair(20, colour_prefs.online, colour_prefs.bkgnd); - init_pair(21, colour_prefs.offline, colour_prefs.bkgnd); - init_pair(22, colour_prefs.away, colour_prefs.bkgnd); - init_pair(23, colour_prefs.chat, colour_prefs.bkgnd); - init_pair(24, colour_prefs.dnd, colour_prefs.bkgnd); - init_pair(25, colour_prefs.xa, colour_prefs.bkgnd); + init_pair(21, colour_prefs.online, colour_prefs.bkgnd); + init_pair(22, colour_prefs.offline, colour_prefs.bkgnd); + init_pair(23, colour_prefs.away, colour_prefs.bkgnd); + init_pair(24, colour_prefs.chat, colour_prefs.bkgnd); + init_pair(25, colour_prefs.dnd, colour_prefs.bkgnd); + init_pair(26, colour_prefs.xa, colour_prefs.bkgnd); // states - init_pair(26, colour_prefs.typing, colour_prefs.bkgnd); - init_pair(27, colour_prefs.gone, colour_prefs.bkgnd); + init_pair(27, colour_prefs.typing, colour_prefs.bkgnd); + init_pair(28, colour_prefs.gone, colour_prefs.bkgnd); // subscription status - init_pair(28, colour_prefs.subscribed, colour_prefs.bkgnd); - init_pair(29, colour_prefs.unsubscribed, colour_prefs.bkgnd); + init_pair(29, colour_prefs.subscribed, colour_prefs.bkgnd); + init_pair(30, colour_prefs.unsubscribed, colour_prefs.bkgnd); // otr messages - init_pair(30, colour_prefs.otrstartedtrusted, colour_prefs.bkgnd); - init_pair(31, colour_prefs.otrstarteduntrusted, colour_prefs.bkgnd); - init_pair(32, colour_prefs.otrended, colour_prefs.bkgnd); - init_pair(33, colour_prefs.otrtrusted, colour_prefs.bkgnd); - init_pair(34, colour_prefs.otruntrusted, colour_prefs.bkgnd); + init_pair(31, colour_prefs.otrstartedtrusted, colour_prefs.bkgnd); + init_pair(32, colour_prefs.otrstarteduntrusted, colour_prefs.bkgnd); + init_pair(33, colour_prefs.otrended, colour_prefs.bkgnd); + init_pair(34, colour_prefs.otrtrusted, colour_prefs.bkgnd); + init_pair(35, colour_prefs.otruntrusted, colour_prefs.bkgnd); } static NCURSES_COLOR_T @@ -399,6 +401,10 @@ _load_colours(void) _set_colour(roominfo_val, &colour_prefs.roominfo, COLOR_YELLOW); g_free(roominfo_val); + gchar *roommention_val = g_key_file_get_string(theme, "colours", "roommention", NULL); + _set_colour(roommention_val, &colour_prefs.roommention, COLOR_YELLOW); + g_free(roommention_val); + gchar *me_val = g_key_file_get_string(theme, "colours", "me", NULL); _set_colour(me_val, &colour_prefs.me, COLOR_YELLOW); g_free(me_val); diff --git a/src/config/theme.h b/src/config/theme.h index afc9a93c..858fabae 100644 --- a/src/config/theme.h +++ b/src/config/theme.h @@ -51,21 +51,22 @@ #define COLOUR_ME COLOR_PAIR(17) #define COLOUR_THEM COLOR_PAIR(18) #define COLOUR_ROOMINFO COLOR_PAIR(19) -#define COLOUR_ONLINE COLOR_PAIR(20) -#define COLOUR_OFFLINE COLOR_PAIR(21) -#define COLOUR_AWAY COLOR_PAIR(22) -#define COLOUR_CHAT COLOR_PAIR(23) -#define COLOUR_DND COLOR_PAIR(24) -#define COLOUR_XA COLOR_PAIR(25) -#define COLOUR_TYPING COLOR_PAIR(26) -#define COLOUR_GONE COLOR_PAIR(27) -#define COLOUR_SUBSCRIBED COLOR_PAIR(28) -#define COLOUR_UNSUBSCRIBED COLOR_PAIR(29) -#define COLOUR_OTR_STARTED_TRUSTED COLOR_PAIR(30) -#define COLOUR_OTR_STARTED_UNTRUSTED COLOR_PAIR(31) -#define COLOUR_OTR_ENDED COLOR_PAIR(32) -#define COLOUR_OTR_TRUSTED COLOR_PAIR(33) -#define COLOUR_OTR_UNTRUSTED COLOR_PAIR(34) +#define COLOUR_ROOMMENTION COLOR_PAIR(20) +#define COLOUR_ONLINE COLOR_PAIR(21) +#define COLOUR_OFFLINE COLOR_PAIR(22) +#define COLOUR_AWAY COLOR_PAIR(23) +#define COLOUR_CHAT COLOR_PAIR(24) +#define COLOUR_DND COLOR_PAIR(25) +#define COLOUR_XA COLOR_PAIR(26) +#define COLOUR_TYPING COLOR_PAIR(27) +#define COLOUR_GONE COLOR_PAIR(28) +#define COLOUR_SUBSCRIBED COLOR_PAIR(29) +#define COLOUR_UNSUBSCRIBED COLOR_PAIR(30) +#define COLOUR_OTR_STARTED_TRUSTED COLOR_PAIR(31) +#define COLOUR_OTR_STARTED_UNTRUSTED COLOR_PAIR(32) +#define COLOUR_OTR_ENDED COLOR_PAIR(33) +#define COLOUR_OTR_TRUSTED COLOR_PAIR(34) +#define COLOUR_OTR_UNTRUSTED COLOR_PAIR(35) void theme_init(const char * const theme_name); void theme_init_colours(void); diff --git a/src/ui/core.c b/src/ui/core.c index 996a0c7a..5688caa8 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -1652,9 +1652,10 @@ _ui_room_message(const char * const room_jid, const char * const nick, { ProfWin *window = wins_get_by_recipient(room_jid); int num = wins_get_num(window); + char *my_nick = muc_get_room_nick(room_jid); win_print_time(window, '-'); - if (strcmp(nick, muc_get_room_nick(room_jid)) != 0) { + if (strcmp(nick, my_nick) != 0) { if (strncmp(message, "/me ", 4) == 0) { wattron(window->win, COLOUR_THEM); wprintw(window->win, "*%s ", nick); @@ -1663,7 +1664,13 @@ _ui_room_message(const char * const room_jid, const char * const nick, wattroff(window->win, COLOUR_THEM); } else { _win_show_user(window->win, nick, 1); - _win_show_message(window->win, message); + if (g_strrstr(message, my_nick) != NULL) { + wattron(window->win, COLOUR_ROOMMENTION); + _win_show_message(window->win, message); + wattroff(window->win, COLOUR_ROOMMENTION); + } else { + _win_show_message(window->win, message); + } } } else { @@ -1693,7 +1700,7 @@ _ui_room_message(const char * const room_jid, const char * const nick, win_update_virtual(current); } - if (strcmp(nick, muc_get_room_nick(room_jid)) != 0) { + if (strcmp(nick, my_nick) != 0) { if (prefs_get_boolean(PREF_FLASH)) { flash(); } diff --git a/themes/boothj5 b/themes/boothj5 index 4efc2b1c..82f3f0e8 100644 --- a/themes/boothj5 +++ b/themes/boothj5 @@ -23,6 +23,7 @@ gone=red error=red incoming=yellow roominfo=blue +roommention=cyan me=blue them=green titlebar.unencrypted=red