1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-06-09 21:30:42 +00:00

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;

View File

@ -67,6 +67,8 @@ roster.dnd.unread=
roster.offline.unread=
roster.room=
roster.room.unread=
roster.room.trigger=
roster.room.mention=
occupants.header=
receipt.sent=

View File

@ -67,5 +67,7 @@ roster.dnd.unread=blue
roster.offline.unread=bold_black
roster.room=cyan
roster.room.unread=bold_cyan
roster.room.mention=bold_blue
roster.room.trigger=bold_blue
occupants.header=bold_white
receipt.sent=white

View File

@ -67,5 +67,7 @@ roster.dnd.unread=green
roster.offline.unread=bold_black
roster.room=green
roster.room.unread=green
roster.room.mention=green
roster.room.trigger=green
occupants.header=yellow
receipt.sent=red

View File

@ -67,6 +67,8 @@ roster.dnd.unread=bold_red
roster.offline.unread=bold_blue
roster.room=bold_red
roster.room.unread=bold_magenta
roster.room.mention=bold_magenta
roster.room.trigger=bold_magenta
occupants.header=bold_magenta
receipt.sent=bold_blue

View File

@ -42,8 +42,8 @@ typing=yellow
gone=red
error=red
roominfo=yellow
roommention=bold_magenta
roomtrigger=bold_red
roommention=bold_cyan
roomtrigger=bold_blue
me=blue
them=bold_green
roster.header=bold_yellow
@ -67,6 +67,8 @@ roster.dnd.unread=bold_magenta
roster.offline.unread=bold_red
roster.room=green
roster.room.unread=bold_green
roster.room.mention=bold_cyan
roster.room.trigger=bold_blue
occupants.header=bold_yellow
receipt.sent=bold_black

View File

@ -67,5 +67,7 @@ roster.dnd.unread=bold_black
roster.offline.unread=bold_black
roster.room=green
roster.room.unread=bold_green
roster.room.mention=bold_green
roster.room.trigger=bold_green
occupants.header=bold_green
receipt.sent=bold_black

View File

@ -67,5 +67,7 @@ roster.dnd.unread=bold_magenta
roster.offline.unread=bold_green
roster.room=red
roster.room.unread=bold_red
roster.room.mention=bold_red
roster.room.trigger=bold_red
occupants.header=bold_cyan
receipt.sent=red

View File

@ -67,5 +67,7 @@ roster.dnd.unread=green
roster.offline.unread=bold_black
roster.room=green
roster.room.unread=green
roster.room.mention=green
roster.room.trigger=green
occupants.header=magenta
receipt.sent=red

View File

@ -67,5 +67,7 @@ roster.dnd.unread=white
roster.offline.unread=white
roster.room=white
roster.room.unread=white
roster.room.mention=white
roster.room.trigger=white
occupants.header=white
receipt.sent=white

View File

@ -67,5 +67,7 @@ roster.dnd.unread=white
roster.offline.unread=white
roster.room=blue
roster.room.unread=blue
roster.room.mention=blue
roster.room.trigger=blue
occupants.header=black
receipt.sent=red

View File

@ -67,5 +67,7 @@ roster.dnd.unread=red
roster.offline.unread=red
roster.room=green
roster.room.unread=green
roster.room.mention=green
roster.room.trigger=green
occupants.header=yellow
receipt.sent=red

View File

@ -67,5 +67,7 @@ roster.dnd.unread=bold_red
roster.offline.unread=bold_red
roster.room=bold_green
roster.room.unread=bold_green
roster.room.mention=bold_green
roster.room.trigger=bold_green
occupants.header=bold_yellow
receipt.sent=bold_red

View File

@ -67,5 +67,7 @@ roster.dnd.unread=green
roster.offline.unread=white
roster.room=green
roster.room.unread=green
roster.room.mention=green
roster.room.trigger=green
occupants.header=magenta
receipt.sent=red

View File

@ -67,5 +67,7 @@ roster.dnd.unread=green
roster.offline.unread=bold_black
roster.room=green
roster.room.unread=green
roster.room.mention=green
roster.room.trigger=green
occupants.header=white
receipt.sent=red

View File

@ -67,5 +67,7 @@ roster.dnd.unread=red
roster.offline.unread=red
roster.room=green
roster.room.unread=green
roster.room.mention=green
roster.room.trigger=green
occupants.header=black
receipt.sent=red