/* * Copyright (C) 2005-2009 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ #include "para.h" #include "gui.h" #include #define NUM_THEMES 2 static int current_theme_num; static void init_theme_simple(struct gui_theme *t) { struct stat_item_data *d = t->data; t->name = "simple"; t->author = "Andre Noll"; t->lines_min = 5; t->top_lines_min = 2; t->cols_min = 40; t->top_lines_default = 2; t->sb_bg = COLOR_CYAN; t->sb_fg = COLOR_BLACK; t->cmd_bg = COLOR_WHITE; t->cmd_fg = COLOR_BLACK; t->output_bg = COLOR_BLUE; t->output_fg = COLOR_WHITE; t->msg_bg = COLOR_BLUE; t->msg_fg = COLOR_YELLOW; t->err_msg_bg = COLOR_RED; t->err_msg_fg = COLOR_WHITE; t->welcome_bg = COLOR_BLUE; t->welcome_fg = COLOR_WHITE; t->sep_bg = COLOR_BLUE; t->sep_fg = COLOR_CYAN; t->default_fg = COLOR_WHITE; t->default_bg = COLOR_BLUE; t->sep_str = "*"; d[SI_BASENAME].prefix = ""; d[SI_BASENAME].postfix = ""; d[SI_BASENAME].fg = COLOR_WHITE; d[SI_BASENAME].bg = COLOR_BLUE; d[SI_BASENAME].align = CENTER; d[SI_BASENAME].x = 0; d[SI_BASENAME].y = 7; d[SI_BASENAME].len = 100; d[SI_STATUS].prefix = "para_server: "; d[SI_STATUS].postfix = ""; d[SI_STATUS].fg = COLOR_WHITE; d[SI_STATUS].bg = COLOR_BLUE; d[SI_STATUS].align = CENTER; d[SI_STATUS].x = 0; d[SI_STATUS].y = 60; d[SI_STATUS].len = 50; d[SI_AUDIOD_STATUS].prefix = "para_audiod: "; d[SI_AUDIOD_STATUS].postfix = ""; d[SI_AUDIOD_STATUS].fg = COLOR_WHITE; d[SI_AUDIOD_STATUS].bg = COLOR_BLUE; d[SI_AUDIOD_STATUS].align = CENTER; d[SI_AUDIOD_STATUS].x = 50; d[SI_AUDIOD_STATUS].y = 60; d[SI_AUDIOD_STATUS].len = 50; } static void init_theme_colorful_blackness(struct gui_theme *t) { struct stat_item_data *d = t->data; t->name = "colorful blackness"; t->author = "Andre Noll"; /* minimal number of lines that is needed to display all * information provided by this theme */ t->lines_min = 15; t->cols_min = 80; t->top_lines_min = 9; t->top_lines_default = 11; /* default number of lines */ t->sb_bg = COLOR_GREEN; /* status bar background */ t->sb_fg = COLOR_BLACK; /* status bar foreground */ t->cmd_bg = COLOR_BLACK; t->cmd_fg = COLOR_YELLOW; t->output_bg = COLOR_BLACK; t->output_fg = COLOR_CYAN; t->msg_bg = COLOR_BLACK; t->msg_fg = COLOR_WHITE; t->err_msg_bg = COLOR_RED; t->err_msg_fg = COLOR_WHITE; t->welcome_bg = COLOR_BLUE; t->welcome_fg = COLOR_WHITE; t->sep_bg = COLOR_BLACK; /* color of the separator */ t->sep_fg = COLOR_BLUE; t->sep_str = "-"; t->default_bg = COLOR_BLACK; t->default_fg = COLOR_MAGENTA; d[SI_PLAY_TIME].prefix = ""; d[SI_PLAY_TIME].postfix = ""; d[SI_PLAY_TIME].fg = COLOR_CYAN; d[SI_PLAY_TIME].bg = COLOR_BLACK; d[SI_PLAY_TIME].align = CENTER; d[SI_PLAY_TIME].x = 0; d[SI_PLAY_TIME].y = 7; d[SI_PLAY_TIME].len = 35; d[SI_BASENAME].prefix = ""; d[SI_BASENAME].postfix = ""; d[SI_BASENAME].fg = COLOR_CYAN; d[SI_BASENAME].bg = COLOR_BLACK; d[SI_BASENAME].align = LEFT; d[SI_BASENAME].x = 35; d[SI_BASENAME].y = 7; d[SI_BASENAME].len = 65; d[SI_STATUS].prefix = ""; d[SI_STATUS].postfix = " "; d[SI_STATUS].fg = COLOR_RED; d[SI_STATUS].bg = COLOR_BLACK; d[SI_STATUS].align = RIGHT; d[SI_STATUS].x = 0; d[SI_STATUS].y = 17; d[SI_STATUS].len = 11; d[SI_STATUS_FLAGS].prefix = "("; d[SI_STATUS_FLAGS].postfix = ")"; d[SI_STATUS_FLAGS].fg = COLOR_RED; d[SI_STATUS_FLAGS].bg = COLOR_BLACK; d[SI_STATUS_FLAGS].align = LEFT; d[SI_STATUS_FLAGS].x = 11; d[SI_STATUS_FLAGS].y = 17; d[SI_STATUS_FLAGS].len = 10; d[SI_IMAGE_ID].prefix = "img: "; d[SI_IMAGE_ID].postfix = ""; d[SI_IMAGE_ID].fg = COLOR_RED; d[SI_IMAGE_ID].bg = COLOR_BLACK; d[SI_IMAGE_ID].align = CENTER; d[SI_IMAGE_ID].x = 21; d[SI_IMAGE_ID].y = 17; d[SI_IMAGE_ID].len = 10; d[SI_LYRICS_ID].prefix = "lyr: "; d[SI_LYRICS_ID].postfix = ""; d[SI_LYRICS_ID].fg = COLOR_RED; d[SI_LYRICS_ID].bg = COLOR_BLACK; d[SI_LYRICS_ID].align = CENTER; d[SI_LYRICS_ID].x = 31; d[SI_LYRICS_ID].y = 17; d[SI_LYRICS_ID].len = 11; d[SI_FORMAT].prefix = "format: "; d[SI_FORMAT].postfix = ""; d[SI_FORMAT].fg = COLOR_RED; d[SI_FORMAT].bg = COLOR_BLACK; d[SI_FORMAT].align = CENTER; d[SI_FORMAT].x = 42; d[SI_FORMAT].y = 17; d[SI_FORMAT].len = 18; d[SI_NUM_PLAYED].prefix = "#"; d[SI_NUM_PLAYED].postfix = ""; d[SI_NUM_PLAYED].fg = COLOR_RED; d[SI_NUM_PLAYED].bg = COLOR_BLACK; d[SI_NUM_PLAYED].align = LEFT; d[SI_NUM_PLAYED].x = 60; d[SI_NUM_PLAYED].y = 17; d[SI_NUM_PLAYED].len = 5; d[SI_BITRATE].prefix = ""; d[SI_BITRATE].postfix = ""; d[SI_BITRATE].fg = COLOR_RED; d[SI_BITRATE].bg = COLOR_BLACK; d[SI_BITRATE].align = CENTER; d[SI_BITRATE].x = 65; d[SI_BITRATE].y = 17; d[SI_BITRATE].len = 13; d[SI_FREQUENCY].prefix = ""; d[SI_FREQUENCY].postfix = ""; d[SI_FREQUENCY].fg = COLOR_RED; d[SI_FREQUENCY].bg = COLOR_BLACK; d[SI_FREQUENCY].align = CENTER; d[SI_FREQUENCY].x = 78; d[SI_FREQUENCY].y = 17; d[SI_FREQUENCY].len = 10; d[SI_SCORE].prefix = "sc: "; d[SI_SCORE].postfix = ""; d[SI_SCORE].fg = COLOR_RED; d[SI_SCORE].bg = COLOR_BLACK; d[SI_SCORE].align = CENTER; d[SI_SCORE].x = 88; d[SI_SCORE].y = 17; d[SI_SCORE].len = 10; d[SI_AUDIOD_STATUS].prefix = ""; d[SI_AUDIOD_STATUS].postfix = ""; d[SI_AUDIOD_STATUS].fg = COLOR_MAGENTA; d[SI_AUDIOD_STATUS].bg = COLOR_BLACK; d[SI_AUDIOD_STATUS].align = CENTER; d[SI_AUDIOD_STATUS].x = 0; d[SI_AUDIOD_STATUS].y = 27; d[SI_AUDIOD_STATUS].len = 5; d[SI_DECODER_FLAGS].prefix = "["; d[SI_DECODER_FLAGS].postfix = "]"; d[SI_DECODER_FLAGS].fg = COLOR_MAGENTA; d[SI_DECODER_FLAGS].bg = COLOR_BLACK; d[SI_DECODER_FLAGS].align = CENTER; d[SI_DECODER_FLAGS].x = 5; d[SI_DECODER_FLAGS].y = 27; d[SI_DECODER_FLAGS].len = 10; d[SI_MTIME].prefix = "mod: "; d[SI_MTIME].postfix = ""; d[SI_MTIME].fg = COLOR_MAGENTA; d[SI_MTIME].bg = COLOR_BLACK; d[SI_MTIME].align = CENTER; d[SI_MTIME].x = 15; d[SI_MTIME].y = 27; d[SI_MTIME].len = 22; d[SI_FILE_SIZE].prefix = ""; d[SI_FILE_SIZE].postfix = "kb"; d[SI_FILE_SIZE].fg = COLOR_MAGENTA; d[SI_FILE_SIZE].bg = COLOR_BLACK; d[SI_FILE_SIZE].align = CENTER; d[SI_FILE_SIZE].x = 37; d[SI_FILE_SIZE].y = 27; d[SI_FILE_SIZE].len = 10; d[SI_CHANNELS].prefix = ""; d[SI_CHANNELS].postfix = "ch"; d[SI_CHANNELS].fg = COLOR_MAGENTA; d[SI_CHANNELS].bg = COLOR_BLACK; d[SI_CHANNELS].align = CENTER; d[SI_CHANNELS].x = 47; d[SI_CHANNELS].y = 27; d[SI_CHANNELS].len = 5; d[SI_LAST_PLAYED].prefix = "lp: "; d[SI_LAST_PLAYED].postfix = ""; d[SI_LAST_PLAYED].fg = COLOR_MAGENTA; d[SI_LAST_PLAYED].bg = COLOR_BLACK; d[SI_LAST_PLAYED].align = CENTER; d[SI_LAST_PLAYED].x = 52; d[SI_LAST_PLAYED].y = 27; d[SI_LAST_PLAYED].len = 21; d[SI_NUM_CHUNKS].prefix = ""; d[SI_NUM_CHUNKS].postfix = "x"; d[SI_NUM_CHUNKS].fg = COLOR_MAGENTA; d[SI_NUM_CHUNKS].bg = COLOR_BLACK; d[SI_NUM_CHUNKS].align = RIGHT; d[SI_NUM_CHUNKS].x = 73; d[SI_NUM_CHUNKS].y = 27; d[SI_NUM_CHUNKS].len = 11; d[SI_CHUNK_TIME].prefix = ""; d[SI_CHUNK_TIME].postfix = "ms"; d[SI_CHUNK_TIME].fg = COLOR_MAGENTA; d[SI_CHUNK_TIME].bg = COLOR_BLACK; d[SI_CHUNK_TIME].align = LEFT; d[SI_CHUNK_TIME].x = 84; d[SI_CHUNK_TIME].y = 27; d[SI_CHUNK_TIME].len = 8; d[SI_AMPLIFICATION].prefix = "amp:"; d[SI_AMPLIFICATION].postfix = ""; d[SI_AMPLIFICATION].fg = COLOR_MAGENTA; d[SI_AMPLIFICATION].bg = COLOR_BLACK; d[SI_AMPLIFICATION].align = RIGHT; d[SI_AMPLIFICATION].x = 92; d[SI_AMPLIFICATION].y = 27; d[SI_AMPLIFICATION].len = 8; d[SI_AUDIO_FILE_INFO].prefix = ""; d[SI_AUDIO_FILE_INFO].postfix = ""; d[SI_AUDIO_FILE_INFO].fg = COLOR_GREEN; d[SI_AUDIO_FILE_INFO].bg = COLOR_BLACK; d[SI_AUDIO_FILE_INFO].align = CENTER; d[SI_AUDIO_FILE_INFO].x = 0; d[SI_AUDIO_FILE_INFO].y = 43; d[SI_AUDIO_FILE_INFO].len = 100; d[SI_TAGINFO1].prefix = ""; d[SI_TAGINFO1].postfix = ""; d[SI_TAGINFO1].fg = COLOR_GREEN; d[SI_TAGINFO1].bg = COLOR_BLACK; d[SI_TAGINFO1].align = CENTER; d[SI_TAGINFO1].x = 0; d[SI_TAGINFO1].y = 53; d[SI_TAGINFO1].len = 100; d[SI_TAGINFO2].prefix = ""; d[SI_TAGINFO2].postfix = ""; d[SI_TAGINFO2].fg = COLOR_GREEN; d[SI_TAGINFO2].bg = COLOR_BLACK; d[SI_TAGINFO2].align = CENTER; d[SI_TAGINFO2].x = 0; d[SI_TAGINFO2].y = 63; d[SI_TAGINFO2].len = 100; d[SI_AFS_MODE].prefix = ""; d[SI_AFS_MODE].postfix = ""; d[SI_AFS_MODE].fg = COLOR_YELLOW; d[SI_AFS_MODE].bg = COLOR_BLACK; d[SI_AFS_MODE].align = CENTER; d[SI_AFS_MODE].x = 0; d[SI_AFS_MODE].y = 77; d[SI_AFS_MODE].len = 100; d[SI_ATTRIBUTES_TXT].prefix = ""; d[SI_ATTRIBUTES_TXT].postfix = ""; d[SI_ATTRIBUTES_TXT].fg = COLOR_YELLOW; d[SI_ATTRIBUTES_TXT].bg = COLOR_BLACK; d[SI_ATTRIBUTES_TXT].align = CENTER; d[SI_ATTRIBUTES_TXT].x = 0; d[SI_ATTRIBUTES_TXT].y = 87; d[SI_ATTRIBUTES_TXT].len = 100; d[SI_DIRECTORY].prefix = "dir: "; d[SI_DIRECTORY].postfix = ""; d[SI_DIRECTORY].fg = COLOR_YELLOW; d[SI_DIRECTORY].bg = COLOR_BLACK; d[SI_DIRECTORY].align = CENTER; d[SI_DIRECTORY].x = 0; d[SI_DIRECTORY].y = 97; d[SI_DIRECTORY].len = 100; } void init_theme(int num, struct gui_theme *t) { int i; FOR_EACH_STATUS_ITEM(i) t->data[i].len = 0; current_theme_num = num; return (num % NUM_THEMES)? init_theme_simple(t) : init_theme_colorful_blackness(t); } void prev_theme(struct gui_theme *t) { return init_theme(++current_theme_num, t); } void next_theme(struct gui_theme *t) { return init_theme(--current_theme_num, t); }