@@ -142,6 +142,8 @@ theme_init(const char *const theme_name)
|
||||
g_hash_table_insert(defaults, strdup("roster.xa.unread"), strdup("cyan"));
|
||||
g_hash_table_insert(defaults, strdup("roster.room"), strdup("green"));
|
||||
g_hash_table_insert(defaults, strdup("roster.room.unread"), strdup("green"));
|
||||
g_hash_table_insert(defaults, strdup("roster.room.trigger"), strdup("green"));
|
||||
g_hash_table_insert(defaults, strdup("roster.room.mention"), strdup("green"));
|
||||
g_hash_table_insert(defaults, strdup("occupants.header"), strdup("yellow"));
|
||||
}
|
||||
|
||||
@@ -765,6 +767,8 @@ theme_attrs(theme_item_t attrs)
|
||||
case THEME_ROSTER_XA_UNREAD: _theme_prep_fgnd("roster.xa.unread", "cyan", lookup_str, &bold); break;
|
||||
case THEME_ROSTER_ROOM: _theme_prep_fgnd("roster.room", "green", lookup_str, &bold); break;
|
||||
case THEME_ROSTER_ROOM_UNREAD: _theme_prep_fgnd("roster.room.unread", "green", lookup_str, &bold); break;
|
||||
case THEME_ROSTER_ROOM_TRIGGER: _theme_prep_fgnd("roster.room.trigger", "green", lookup_str, &bold); break;
|
||||
case THEME_ROSTER_ROOM_MENTION: _theme_prep_fgnd("roster.room.mention", "green", lookup_str, &bold); break;
|
||||
case THEME_OCCUPANTS_HEADER: _theme_prep_fgnd("occupants.header", "yellow", lookup_str, &bold); break;
|
||||
case THEME_WHITE: g_string_append(lookup_str, "white"); bold = FALSE; break;
|
||||
case THEME_WHITE_BOLD: g_string_append(lookup_str, "white"); bold = TRUE; break;
|
||||
|
||||
@@ -106,6 +106,8 @@ typedef enum {
|
||||
THEME_ROSTER_XA_UNREAD,
|
||||
THEME_ROSTER_ROOM,
|
||||
THEME_ROSTER_ROOM_UNREAD,
|
||||
THEME_ROSTER_ROOM_TRIGGER,
|
||||
THEME_ROSTER_ROOM_MENTION,
|
||||
THEME_RECEIPT_SENT,
|
||||
THEME_NONE,
|
||||
THEME_WHITE,
|
||||
|
||||
@@ -281,6 +281,13 @@ sv_ev_room_message(const char *const room_jid, const char *const nick, const cha
|
||||
if (notify) {
|
||||
mucwin->notify = TRUE;
|
||||
}
|
||||
|
||||
if (mention) {
|
||||
mucwin->unread_mentions = TRUE;
|
||||
}
|
||||
if (triggers) {
|
||||
mucwin->unread_triggers = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (triggers) {
|
||||
|
||||
@@ -2189,6 +2189,8 @@ cons_theme_properties(void)
|
||||
_cons_theme_prop(THEME_ROSTER_OFFLINE_UNREAD, "roster.offline.unread");
|
||||
_cons_theme_prop(THEME_ROSTER_ROOM, "roster.room");
|
||||
_cons_theme_prop(THEME_ROSTER_ROOM_UNREAD, "roster.room.unread");
|
||||
_cons_theme_prop(THEME_ROSTER_ROOM_TRIGGER, "roster.room.trigger");
|
||||
_cons_theme_prop(THEME_ROSTER_ROOM_MENTION, "roster.room.mention");
|
||||
|
||||
_cons_theme_prop(THEME_OCCUPANTS_HEADER, "occupants.header");
|
||||
|
||||
|
||||
@@ -479,7 +479,11 @@ _rosterwin_room(ProfLayoutSplit *layout, ProfMucWin *mucwin)
|
||||
{
|
||||
GString *msg = g_string_new(" ");
|
||||
|
||||
if (mucwin->unread > 0) {
|
||||
if (mucwin->unread_mentions) {
|
||||
wattron(layout->subwin, theme_attrs(THEME_ROSTER_ROOM_MENTION));
|
||||
} else if (mucwin->unread_triggers) {
|
||||
wattron(layout->subwin, theme_attrs(THEME_ROSTER_ROOM_TRIGGER));
|
||||
} else if (mucwin->unread > 0) {
|
||||
wattron(layout->subwin, theme_attrs(THEME_ROSTER_ROOM_UNREAD));
|
||||
} else {
|
||||
wattron(layout->subwin, theme_attrs(THEME_ROSTER_ROOM));
|
||||
@@ -514,7 +518,11 @@ _rosterwin_room(ProfLayoutSplit *layout, ProfMucWin *mucwin)
|
||||
win_sub_print(layout->subwin, msg->str, FALSE, wrap, current_indent);
|
||||
g_string_free(msg, TRUE);
|
||||
|
||||
if (mucwin->unread > 0) {
|
||||
if (mucwin->unread_mentions) {
|
||||
wattroff(layout->subwin, theme_attrs(THEME_ROSTER_ROOM_MENTION));
|
||||
} else if (mucwin->unread_triggers) {
|
||||
wattroff(layout->subwin, theme_attrs(THEME_ROSTER_ROOM_TRIGGER));
|
||||
} else if (mucwin->unread > 0) {
|
||||
wattroff(layout->subwin, theme_attrs(THEME_ROSTER_ROOM_UNREAD));
|
||||
} else {
|
||||
wattroff(layout->subwin, theme_attrs(THEME_ROSTER_ROOM));
|
||||
|
||||
@@ -117,6 +117,8 @@ typedef struct prof_muc_win_t {
|
||||
ProfWin window;
|
||||
char *roomjid;
|
||||
int unread;
|
||||
gboolean unread_mentions;
|
||||
gboolean unread_triggers;
|
||||
gboolean notify;
|
||||
gboolean showjid;
|
||||
unsigned long memcheck;
|
||||
|
||||
@@ -181,6 +181,8 @@ win_create_muc(const char *const roomjid)
|
||||
|
||||
new_win->roomjid = strdup(roomjid);
|
||||
new_win->unread = 0;
|
||||
new_win->unread_mentions = FALSE;
|
||||
new_win->unread_triggers = FALSE;
|
||||
new_win->notify = FALSE;
|
||||
if (prefs_get_boolean(PREF_OCCUPANTS_JID)) {
|
||||
new_win->showjid = TRUE;
|
||||
|
||||
@@ -228,6 +228,8 @@ wins_set_current_by_num(int i)
|
||||
ProfMucWin *mucwin = (ProfMucWin*) window;
|
||||
assert(mucwin->memcheck == PROFMUCWIN_MEMCHECK);
|
||||
mucwin->unread = 0;
|
||||
mucwin->unread_mentions = FALSE;
|
||||
mucwin->unread_triggers = FALSE;
|
||||
mucwin->notify = FALSE;
|
||||
} else if (window->type == WIN_PRIVATE) {
|
||||
ProfPrivateWin *privatewin = (ProfPrivateWin*) window;
|
||||
|
||||
Reference in New Issue
Block a user