Added themes for roster room mention and triggers

closes #718
This commit is contained in:
James Booth
2016-01-25 00:19:26 +00:00
parent b6e9a09c64
commit 0ae975c27f
23 changed files with 63 additions and 4 deletions

View File

@@ -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;

View File

@@ -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,

View File

@@ -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) {

View File

@@ -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");

View File

@@ -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));

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;