[vdr-plugin-skinflatplus] 02/15: Imported Upstream version 0.4.3+git20141202
Tobias Grimm
tiber-guest at moszumanska.debian.org
Wed Feb 11 20:44:21 UTC 2015
This is an automated email from the git hooks/post-receive script.
tiber-guest pushed a commit to branch master
in repository vdr-plugin-skinflatplus.
commit 16e3178f3b90dae9a76eade13f9d5d933800dce2
Author: etobi <git at e-tobi.net>
Date: Wed Feb 11 19:21:23 2015 +0100
Imported Upstream version 0.4.3+git20141202
---
COPYING | 340 ++
HISTORY | 254 +
MV_Themes.HISTORY | 112 +
MV_Themes.INFO | 76 +
Makefile | 165 +
README | 110 +
baserender.c | 1655 +++++++
baserender.h | 183 +
complexcontent.c | 301 ++
complexcontent.h | 172 +
config.c | 861 ++++
config.h | 319 ++
configs/MV_default | 145 +
configs/default | 102 +
configs/fnu_default | 102 +
configs/skin flat | 102 +
contrib/eventsview-flatplus.sql | 11 +
contrib/flatPlus-MVFonts-info.txt | 6 +
contrib/flatPlus_MV_Update.sh | 125 +
decors/10_rect_sml.decor | 73 +
decors/11_rect_mid.decor | 73 +
decors/12_rect_big.decor | 73 +
decors/20_round_sml.decor | 73 +
decors/21_round_mid.decor | 73 +
decors/22_round_big.decor | 73 +
decors/30_invert-round_sml.decor | 73 +
decors/31_invert-round_mid.decor | 73 +
decors/32_invert-round_big.decor | 73 +
decors/40_rect-alpha_sml.decor | 73 +
decors/41_rect-alpha_mid.decor | 73 +
decors/42_rect-alpha_big.decor | 73 +
decors/50_round-alpha_sml.decor | 73 +
decors/51_round-alpha_mid.decor | 73 +
decors/52_round-alpha_big.decor | 73 +
decors/60_invert-round-alpha_sml.decor | 73 +
decors/61_invert-round-alpha_mid.decor | 73 +
decors/62_invert-round-alpha_big.decor | 73 +
decors/70_MV_rect_sml.decor | 73 +
decors/99_none.decor | 73 +
displaychannel.c | 724 +++
displaychannel.h | 63 +
displaymenu.c | 4924 ++++++++++++++++++++
displaymenu.h | 134 +
displaymessage.c | 22 +
displaymessage.h | 12 +
displayreplay.c | 625 +++
displayreplay.h | 48 +
displaytracks.c | 115 +
displaytracks.h | 25 +
displayvolume.c | 76 +
displayvolume.h | 21 +
femonreceiver.c | 189 +
femonreceiver.h | 62 +
flat.c | 84 +
flat.h | 223 +
fnu_anthra_themes.HISTORY | 9 +
fnu_anthra_themes.INFO | 42 +
icons/COPYRIGHT | 17 +
icons/MVBeige/1280x720.png | 1 +
icons/MVBeige/1440x1080.png | 1 +
icons/MVBeige/169.png | 1 +
icons/MVBeige/169w.png | 1 +
icons/MVBeige/1920x1080.png | 1 +
icons/MVBeige/221.png | 1 +
icons/MVBeige/352x576.png | 1 +
icons/MVBeige/43.png | 1 +
icons/MVBeige/480x576.png | 1 +
icons/MVBeige/528x576.png | 1 +
icons/MVBeige/544x576.png | 1 +
icons/MVBeige/704x576.png | 1 +
icons/MVBeige/720x576.png | 1 +
icons/MVBeige/960x720.png | 1 +
icons/MVBeige/blank.png | 1 +
icons/MVBeige/changroup.png | Bin 0 -> 749 bytes
icons/MVBeige/chart1b.png | 1 +
icons/MVBeige/chart2b.png | 1 +
icons/MVBeige/chart3b.png | 1 +
icons/MVBeige/chart4b.png | 1 +
icons/MVBeige/chart5b.png | 1 +
icons/MVBeige/chart6b.png | 1 +
icons/MVBeige/chart7.png | 1 +
icons/MVBeige/chart7b.png | 1 +
icons/MVBeige/crypted.png | 1 +
icons/MVBeige/forward.png | 1 +
icons/MVBeige/forward_sel.png | Bin 0 -> 3273 bytes
icons/MVBeige/hd.png | 1 +
icons/MVBeige/message_error.png | 1 +
icons/MVBeige/message_info.png | 1 +
icons/MVBeige/message_status.png | 1 +
icons/MVBeige/message_warning.png | 1 +
icons/MVBeige/pause.png | 1 +
icons/MVBeige/pause_sel.png | Bin 0 -> 3119 bytes
icons/MVBeige/play.png | 1 +
icons/MVBeige/play_sel.png | Bin 0 -> 4044 bytes
icons/MVBeige/prev.png | 1 +
icons/MVBeige/prev_sel.png | Bin 0 -> 4806 bytes
icons/MVBeige/radio.png | 1 +
icons/MVBeige/recording.png | 1 +
icons/MVBeige/recording_cutted.png | Bin 0 -> 2063 bytes
icons/MVBeige/recording_cutted_cur.png | 1 +
icons/MVBeige/recording_cutted_extra.png | Bin 0 -> 2140 bytes
icons/MVBeige/recording_new.png | Bin 0 -> 8134 bytes
icons/MVBeige/recording_new_cur.png | 1 +
icons/MVBeige/rewind.png | 1 +
icons/MVBeige/rewind_sel.png | Bin 0 -> 3427 bytes
icons/MVBeige/sd.png | 1 +
icons/MVBeige/skip.png | 1 +
icons/MVBeige/skip_sel.png | Bin 0 -> 4715 bytes
icons/MVBeige/text_arrowturn.png | 1 +
icons/MVBeige/text_arrowturn_cur.png | 1 +
icons/MVBeige/text_arrowturn_sel.png | 1 +
icons/MVBeige/text_new.png | 1 +
icons/MVBeige/text_new_cur.png | 1 +
icons/MVBeige/text_new_sel.png | 1 +
icons/MVBeige/text_rec.png | 1 +
icons/MVBeige/text_rec_cur.png | 1 +
icons/MVBeige/text_rec_sel.png | 1 +
icons/MVBeige/text_timer_full.png | 1 +
icons/MVBeige/text_timer_full_cur.png | 1 +
icons/MVBeige/text_timer_full_sel.png | 1 +
icons/MVBeige/text_timer_partial.png | 1 +
icons/MVBeige/text_timer_partial_cur.png | 1 +
icons/MVBeige/text_timer_partial_sel.png | 1 +
icons/MVBeige/text_vps.png | 1 +
icons/MVBeige/text_vps_cur.png | 1 +
icons/MVBeige/text_vps_sel.png | 1 +
icons/MVBeige/timerActive.png | 1 +
icons/MVBeige/timerInactive.png | 1 +
icons/MVBeige/timerRecording.png | 1 +
icons/MVBeige/timer_full.png | Bin 0 -> 4797 bytes
icons/MVBeige/timer_full_cur.png | 1 +
icons/MVBeige/timer_partial.png | Bin 0 -> 2598 bytes
icons/MVBeige/timer_partial_cur.png | 1 +
icons/MVBeige/topbar_timer.png | 1 +
icons/MVBeige/topbar_timerconflict_high.png | 1 +
icons/MVBeige/topbar_timerconflict_low.png | 1 +
icons/MVBeige/tv.png | 1 +
icons/MVBeige/uncrypted.png | 1 +
icons/MVBeige/unknown_asp.png | 1 +
icons/MVBeige/unknown_res.png | 1 +
icons/MVBeige/vps.png | Bin 0 -> 5446 bytes
icons/MVBeige/vps_cur.png | 1 +
icons/MVBerry/1280x720.png | 1 +
icons/MVBerry/1440x1080.png | 1 +
icons/MVBerry/169.png | 1 +
icons/MVBerry/169w.png | 1 +
icons/MVBerry/1920x1080.png | 1 +
icons/MVBerry/221.png | 1 +
icons/MVBerry/352x576.png | 1 +
icons/MVBerry/43.png | 1 +
icons/MVBerry/480x576.png | 1 +
icons/MVBerry/528x576.png | 1 +
icons/MVBerry/544x576.png | 1 +
icons/MVBerry/704x576.png | 1 +
icons/MVBerry/720x576.png | 1 +
icons/MVBerry/960x720.png | 1 +
icons/MVBerry/blank.png | 1 +
icons/MVBerry/changroup.png | Bin 0 -> 750 bytes
icons/MVBerry/chart1b.png | 1 +
icons/MVBerry/chart2b.png | 1 +
icons/MVBerry/chart3b.png | 1 +
icons/MVBerry/chart4b.png | 1 +
icons/MVBerry/chart5b.png | 1 +
icons/MVBerry/chart6b.png | 1 +
icons/MVBerry/chart7.png | 1 +
icons/MVBerry/chart7b.png | 1 +
icons/MVBerry/crypted.png | 1 +
icons/MVBerry/forward.png | 1 +
icons/MVBerry/forward_sel.png | Bin 0 -> 3015 bytes
icons/MVBerry/hd.png | 1 +
icons/MVBerry/message_error.png | 1 +
icons/MVBerry/message_info.png | 1 +
icons/MVBerry/message_status.png | 1 +
icons/MVBerry/message_warning.png | 1 +
icons/MVBerry/pause.png | 1 +
icons/MVBerry/pause_sel.png | Bin 0 -> 2739 bytes
icons/MVBerry/play.png | 1 +
icons/MVBerry/play_sel.png | Bin 0 -> 3585 bytes
icons/MVBerry/prev.png | 1 +
icons/MVBerry/prev_sel.png | Bin 0 -> 4141 bytes
icons/MVBerry/radio.png | 1 +
icons/MVBerry/recording.png | 1 +
icons/MVBerry/recording_cutted.png | Bin 0 -> 2069 bytes
icons/MVBerry/recording_cutted_cur.png | 1 +
icons/MVBerry/recording_cutted_extra.png | Bin 0 -> 2143 bytes
icons/MVBerry/recording_new.png | Bin 0 -> 7411 bytes
icons/MVBerry/recording_new_cur.png | 1 +
icons/MVBerry/rewind.png | 1 +
icons/MVBerry/rewind_sel.png | Bin 0 -> 3082 bytes
icons/MVBerry/sd.png | 1 +
icons/MVBerry/skip.png | 1 +
icons/MVBerry/skip_sel.png | Bin 0 -> 4158 bytes
icons/MVBerry/text_arrowturn.png | 1 +
icons/MVBerry/text_arrowturn_cur.png | 1 +
icons/MVBerry/text_arrowturn_sel.png | 1 +
icons/MVBerry/text_new.png | 1 +
icons/MVBerry/text_new_cur.png | 1 +
icons/MVBerry/text_new_sel.png | 1 +
icons/MVBerry/text_rec.png | 1 +
icons/MVBerry/text_rec_cur.png | 1 +
icons/MVBerry/text_rec_sel.png | 1 +
icons/MVBerry/text_timer_full.png | 1 +
icons/MVBerry/text_timer_full_cur.png | 1 +
icons/MVBerry/text_timer_full_sel.png | 1 +
icons/MVBerry/text_timer_partial.png | 1 +
icons/MVBerry/text_timer_partial_cur.png | 1 +
icons/MVBerry/text_timer_partial_sel.png | 1 +
icons/MVBerry/text_vps.png | 1 +
icons/MVBerry/text_vps_cur.png | 1 +
icons/MVBerry/text_vps_sel.png | 1 +
icons/MVBerry/timerActive.png | 1 +
icons/MVBerry/timerInactive.png | 1 +
icons/MVBerry/timerRecording.png | 1 +
icons/MVBerry/timer_full.png | Bin 0 -> 4789 bytes
icons/MVBerry/timer_full_cur.png | 1 +
icons/MVBerry/timer_partial.png | Bin 0 -> 2486 bytes
icons/MVBerry/timer_partial_cur.png | 1 +
icons/MVBerry/topbar_timer.png | 1 +
icons/MVBerry/topbar_timerconflict_high.png | 1 +
icons/MVBerry/topbar_timerconflict_low.png | 1 +
icons/MVBerry/tv.png | 1 +
icons/MVBerry/uncrypted.png | 1 +
icons/MVBerry/unknown_asp.png | 1 +
icons/MVBerry/unknown_res.png | 1 +
icons/MVBerry/vps.png | Bin 0 -> 5313 bytes
icons/MVBerry/vps_cur.png | 1 +
icons/MVBlood/1280x720.png | 1 +
icons/MVBlood/1440x1080.png | 1 +
icons/MVBlood/169.png | 1 +
icons/MVBlood/169w.png | 1 +
icons/MVBlood/1920x1080.png | 1 +
icons/MVBlood/221.png | 1 +
icons/MVBlood/352x576.png | 1 +
icons/MVBlood/43.png | 1 +
icons/MVBlood/480x576.png | 1 +
icons/MVBlood/528x576.png | 1 +
icons/MVBlood/544x576.png | 1 +
icons/MVBlood/704x576.png | 1 +
icons/MVBlood/720x576.png | 1 +
icons/MVBlood/960x720.png | 1 +
icons/MVBlood/blank.png | 1 +
icons/MVBlood/changroup.png | Bin 0 -> 746 bytes
icons/MVBlood/chart1b.png | 1 +
icons/MVBlood/chart2b.png | 1 +
icons/MVBlood/chart3b.png | 1 +
icons/MVBlood/chart4b.png | 1 +
icons/MVBlood/chart5b.png | 1 +
icons/MVBlood/chart6b.png | 1 +
icons/MVBlood/chart7.png | 1 +
icons/MVBlood/chart7b.png | 1 +
icons/MVBlood/crypted.png | 1 +
icons/MVBlood/forward.png | 1 +
icons/MVBlood/forward_sel.png | Bin 0 -> 2817 bytes
icons/MVBlood/hd.png | 1 +
icons/MVBlood/message_error.png | 1 +
icons/MVBlood/message_info.png | 1 +
icons/MVBlood/message_status.png | 1 +
icons/MVBlood/message_warning.png | 1 +
icons/MVBlood/pause.png | 1 +
icons/MVBlood/pause_sel.png | Bin 0 -> 2439 bytes
icons/MVBlood/play.png | 1 +
icons/MVBlood/play_sel.png | Bin 0 -> 3333 bytes
icons/MVBlood/prev.png | 1 +
icons/MVBlood/prev_sel.png | Bin 0 -> 3724 bytes
icons/MVBlood/radio.png | 1 +
icons/MVBlood/recording.png | 1 +
icons/MVBlood/recording_cutted.png | Bin 0 -> 2067 bytes
icons/MVBlood/recording_cutted_cur.png | Bin 0 -> 2080 bytes
icons/MVBlood/recording_cutted_extra.png | Bin 0 -> 2136 bytes
icons/MVBlood/recording_new.png | Bin 0 -> 6880 bytes
icons/MVBlood/recording_new_cur.png | Bin 0 -> 5775 bytes
icons/MVBlood/rewind.png | 1 +
icons/MVBlood/rewind_sel.png | Bin 0 -> 2847 bytes
icons/MVBlood/sd.png | 1 +
icons/MVBlood/skip.png | 1 +
icons/MVBlood/skip_sel.png | Bin 0 -> 3785 bytes
icons/MVBlood/text_arrowturn.png | 1 +
icons/MVBlood/text_arrowturn_cur.png | 1 +
icons/MVBlood/text_arrowturn_sel.png | 1 +
icons/MVBlood/text_new.png | 1 +
icons/MVBlood/text_new_cur.png | 1 +
icons/MVBlood/text_new_sel.png | 1 +
icons/MVBlood/text_rec.png | 1 +
icons/MVBlood/text_rec_cur.png | 1 +
icons/MVBlood/text_rec_sel.png | 1 +
icons/MVBlood/text_timer_full.png | 1 +
icons/MVBlood/text_timer_full_cur.png | 1 +
icons/MVBlood/text_timer_full_sel.png | 1 +
icons/MVBlood/text_timer_partial.png | 1 +
icons/MVBlood/text_timer_partial_cur.png | 1 +
icons/MVBlood/text_timer_partial_sel.png | 1 +
icons/MVBlood/text_vps.png | 1 +
icons/MVBlood/text_vps_cur.png | 1 +
icons/MVBlood/text_vps_sel.png | 1 +
icons/MVBlood/timerActive.png | 1 +
icons/MVBlood/timerInactive.png | 1 +
icons/MVBlood/timerRecording.png | 1 +
icons/MVBlood/timer_full.png | Bin 0 -> 4833 bytes
icons/MVBlood/timer_full_cur.png | Bin 0 -> 4864 bytes
icons/MVBlood/timer_partial.png | Bin 0 -> 2395 bytes
icons/MVBlood/timer_partial_cur.png | Bin 0 -> 2218 bytes
icons/MVBlood/topbar_timer.png | 1 +
icons/MVBlood/topbar_timerconflict_high.png | 1 +
icons/MVBlood/topbar_timerconflict_low.png | 1 +
icons/MVBlood/tv.png | 1 +
icons/MVBlood/uncrypted.png | 1 +
icons/MVBlood/unknown_asp.png | 1 +
icons/MVBlood/unknown_res.png | 1 +
icons/MVBlood/vps.png | Bin 0 -> 5172 bytes
icons/MVBlood/vps_cur.png | Bin 0 -> 4920 bytes
icons/MVBlue/1280x720.png | 1 +
icons/MVBlue/1440x1080.png | 1 +
icons/MVBlue/169.png | 1 +
icons/MVBlue/169w.png | 1 +
icons/MVBlue/1920x1080.png | 1 +
icons/MVBlue/221.png | 1 +
icons/MVBlue/352x576.png | 1 +
icons/MVBlue/43.png | 1 +
icons/MVBlue/480x576.png | 1 +
icons/MVBlue/528x576.png | 1 +
icons/MVBlue/544x576.png | 1 +
icons/MVBlue/704x576.png | 1 +
icons/MVBlue/720x576.png | 1 +
icons/MVBlue/960x720.png | 1 +
icons/MVBlue/blank.png | 1 +
icons/MVBlue/changroup.png | Bin 0 -> 743 bytes
icons/MVBlue/chart1b.png | 1 +
icons/MVBlue/chart2b.png | 1 +
icons/MVBlue/chart3b.png | 1 +
icons/MVBlue/chart4b.png | 1 +
icons/MVBlue/chart5b.png | 1 +
icons/MVBlue/chart6b.png | 1 +
icons/MVBlue/chart7.png | 1 +
icons/MVBlue/chart7b.png | 1 +
icons/MVBlue/crypted.png | 1 +
icons/MVBlue/forward.png | 1 +
icons/MVBlue/forward_sel.png | Bin 0 -> 2916 bytes
icons/MVBlue/hd.png | 1 +
icons/MVBlue/message_error.png | 1 +
icons/MVBlue/message_info.png | 1 +
icons/MVBlue/message_status.png | 1 +
icons/MVBlue/message_warning.png | 1 +
icons/MVBlue/pause.png | 1 +
icons/MVBlue/pause_sel.png | Bin 0 -> 2720 bytes
icons/MVBlue/play.png | 1 +
icons/MVBlue/play_sel.png | Bin 0 -> 3450 bytes
icons/MVBlue/prev.png | 1 +
icons/MVBlue/prev_sel.png | Bin 0 -> 4049 bytes
icons/MVBlue/radio.png | 1 +
icons/MVBlue/recording.png | 1 +
icons/MVBlue/recording_cutted.png | Bin 0 -> 2019 bytes
icons/MVBlue/recording_cutted_cur.png | 1 +
icons/MVBlue/recording_cutted_extra.png | Bin 0 -> 2054 bytes
icons/MVBlue/recording_new.png | Bin 0 -> 7310 bytes
icons/MVBlue/recording_new_cur.png | 1 +
icons/MVBlue/rewind.png | 1 +
icons/MVBlue/rewind_sel.png | Bin 0 -> 2950 bytes
icons/MVBlue/sd.png | 1 +
icons/MVBlue/skip.png | 1 +
icons/MVBlue/skip_sel.png | Bin 0 -> 3994 bytes
icons/MVBlue/text_arrowturn.png | 1 +
icons/MVBlue/text_arrowturn_cur.png | 1 +
icons/MVBlue/text_arrowturn_sel.png | 1 +
icons/MVBlue/text_new.png | 1 +
icons/MVBlue/text_new_cur.png | 1 +
icons/MVBlue/text_new_sel.png | 1 +
icons/MVBlue/text_rec.png | 1 +
icons/MVBlue/text_rec_cur.png | 1 +
icons/MVBlue/text_rec_sel.png | 1 +
icons/MVBlue/text_timer_full.png | 1 +
icons/MVBlue/text_timer_full_cur.png | 1 +
icons/MVBlue/text_timer_full_sel.png | 1 +
icons/MVBlue/text_timer_partial.png | 1 +
icons/MVBlue/text_timer_partial_cur.png | 1 +
icons/MVBlue/text_timer_partial_sel.png | 1 +
icons/MVBlue/text_vps.png | 1 +
icons/MVBlue/text_vps_cur.png | 1 +
icons/MVBlue/text_vps_sel.png | 1 +
icons/MVBlue/timerActive.png | 1 +
icons/MVBlue/timerInactive.png | 1 +
icons/MVBlue/timerRecording.png | 1 +
icons/MVBlue/timer_full.png | Bin 0 -> 4662 bytes
icons/MVBlue/timer_full_cur.png | 1 +
icons/MVBlue/timer_partial.png | Bin 0 -> 2329 bytes
icons/MVBlue/timer_partial_cur.png | 1 +
icons/MVBlue/topbar_timer.png | 1 +
icons/MVBlue/topbar_timerconflict_high.png | 1 +
icons/MVBlue/topbar_timerconflict_low.png | 1 +
icons/MVBlue/tv.png | 1 +
icons/MVBlue/uncrypted.png | 1 +
icons/MVBlue/unknown_asp.png | 1 +
icons/MVBlue/unknown_res.png | 1 +
icons/MVBlue/vps.png | Bin 0 -> 4967 bytes
icons/MVBlue/vps_cur.png | 1 +
icons/MVCappuchino/1280x720.png | 1 +
icons/MVCappuchino/1440x1080.png | 1 +
icons/MVCappuchino/169.png | 1 +
icons/MVCappuchino/169w.png | 1 +
icons/MVCappuchino/1920x1080.png | 1 +
icons/MVCappuchino/221.png | 1 +
icons/MVCappuchino/352x576.png | 1 +
icons/MVCappuchino/43.png | 1 +
icons/MVCappuchino/480x576.png | 1 +
icons/MVCappuchino/528x576.png | 1 +
icons/MVCappuchino/544x576.png | 1 +
icons/MVCappuchino/704x576.png | 1 +
icons/MVCappuchino/720x576.png | 1 +
icons/MVCappuchino/960x720.png | 1 +
icons/MVCappuchino/blank.png | 1 +
icons/MVCappuchino/changroup.png | Bin 0 -> 764 bytes
icons/MVCappuchino/chart1b.png | 1 +
icons/MVCappuchino/chart2b.png | 1 +
icons/MVCappuchino/chart3b.png | 1 +
icons/MVCappuchino/chart4b.png | 1 +
icons/MVCappuchino/chart5b.png | 1 +
icons/MVCappuchino/chart6b.png | 1 +
icons/MVCappuchino/chart7.png | 1 +
icons/MVCappuchino/chart7b.png | 1 +
icons/MVCappuchino/crypted.png | 1 +
icons/MVCappuchino/forward.png | 1 +
icons/MVCappuchino/forward_sel.png | Bin 0 -> 3147 bytes
icons/MVCappuchino/hd.png | 1 +
icons/MVCappuchino/message_error.png | 1 +
icons/MVCappuchino/message_info.png | 1 +
icons/MVCappuchino/message_status.png | 1 +
icons/MVCappuchino/message_warning.png | 1 +
icons/MVCappuchino/pause.png | 1 +
icons/MVCappuchino/pause_sel.png | Bin 0 -> 2911 bytes
icons/MVCappuchino/play.png | 1 +
icons/MVCappuchino/play_sel.png | Bin 0 -> 3805 bytes
icons/MVCappuchino/prev.png | 1 +
icons/MVCappuchino/prev_sel.png | Bin 0 -> 4469 bytes
icons/MVCappuchino/radio.png | 1 +
icons/MVCappuchino/recording.png | 1 +
icons/MVCappuchino/recording_cutted.png | Bin 0 -> 2047 bytes
icons/MVCappuchino/recording_cutted_cur.png | 1 +
icons/MVCappuchino/recording_cutted_extra.png | Bin 0 -> 2116 bytes
icons/MVCappuchino/recording_new.png | Bin 0 -> 7731 bytes
icons/MVCappuchino/recording_new_cur.png | 1 +
icons/MVCappuchino/rewind.png | 1 +
icons/MVCappuchino/rewind_sel.png | Bin 0 -> 3217 bytes
icons/MVCappuchino/sd.png | 1 +
icons/MVCappuchino/skip.png | 1 +
icons/MVCappuchino/skip_sel.png | Bin 0 -> 4401 bytes
icons/MVCappuchino/text_arrowturn.png | 1 +
icons/MVCappuchino/text_arrowturn_cur.png | 1 +
icons/MVCappuchino/text_arrowturn_sel.png | 1 +
icons/MVCappuchino/text_new.png | 1 +
icons/MVCappuchino/text_new_cur.png | 1 +
icons/MVCappuchino/text_new_sel.png | 1 +
icons/MVCappuchino/text_rec.png | 1 +
icons/MVCappuchino/text_rec_cur.png | 1 +
icons/MVCappuchino/text_rec_sel.png | 1 +
icons/MVCappuchino/text_timer_full.png | 1 +
icons/MVCappuchino/text_timer_full_cur.png | 1 +
icons/MVCappuchino/text_timer_full_sel.png | 1 +
icons/MVCappuchino/text_timer_partial.png | 1 +
icons/MVCappuchino/text_timer_partial_cur.png | 1 +
icons/MVCappuchino/text_timer_partial_sel.png | 1 +
icons/MVCappuchino/text_vps.png | 1 +
icons/MVCappuchino/text_vps_cur.png | 1 +
icons/MVCappuchino/text_vps_sel.png | 1 +
icons/MVCappuchino/timerActive.png | 1 +
icons/MVCappuchino/timerInactive.png | 1 +
icons/MVCappuchino/timerRecording.png | 1 +
icons/MVCappuchino/timer_full.png | Bin 0 -> 4842 bytes
icons/MVCappuchino/timer_full_cur.png | 1 +
icons/MVCappuchino/timer_partial.png | Bin 0 -> 2568 bytes
icons/MVCappuchino/timer_partial_cur.png | 1 +
icons/MVCappuchino/topbar_timer.png | 1 +
icons/MVCappuchino/topbar_timerconflict_high.png | 1 +
icons/MVCappuchino/topbar_timerconflict_low.png | 1 +
icons/MVCappuchino/tv.png | 1 +
icons/MVCappuchino/uncrypted.png | 1 +
icons/MVCappuchino/unknown_asp.png | 1 +
icons/MVCappuchino/unknown_res.png | 1 +
icons/MVCappuchino/vps.png | Bin 0 -> 5461 bytes
icons/MVCappuchino/vps_cur.png | 1 +
icons/MVChocolate/1280x720.png | 1 +
icons/MVChocolate/1440x1080.png | 1 +
icons/MVChocolate/169.png | 1 +
icons/MVChocolate/169w.png | 1 +
icons/MVChocolate/1920x1080.png | 1 +
icons/MVChocolate/221.png | 1 +
icons/MVChocolate/352x576.png | 1 +
icons/MVChocolate/43.png | 1 +
icons/MVChocolate/480x576.png | 1 +
icons/MVChocolate/528x576.png | 1 +
icons/MVChocolate/544x576.png | 1 +
icons/MVChocolate/704x576.png | 1 +
icons/MVChocolate/720x576.png | 1 +
icons/MVChocolate/960x720.png | 1 +
icons/MVChocolate/blank.png | 1 +
icons/MVChocolate/changroup.png | Bin 0 -> 761 bytes
icons/MVChocolate/chart1b.png | 1 +
icons/MVChocolate/chart2b.png | 1 +
icons/MVChocolate/chart3b.png | 1 +
icons/MVChocolate/chart4b.png | 1 +
icons/MVChocolate/chart5b.png | 1 +
icons/MVChocolate/chart6b.png | 1 +
icons/MVChocolate/chart7.png | 1 +
icons/MVChocolate/chart7b.png | 1 +
icons/MVChocolate/crypted.png | 1 +
icons/MVChocolate/forward.png | 1 +
icons/MVChocolate/forward_sel.png | Bin 0 -> 2978 bytes
icons/MVChocolate/hd.png | 1 +
icons/MVChocolate/message_error.png | 1 +
icons/MVChocolate/message_info.png | 1 +
icons/MVChocolate/message_status.png | 1 +
icons/MVChocolate/message_warning.png | 1 +
icons/MVChocolate/pause.png | 1 +
icons/MVChocolate/pause_sel.png | Bin 0 -> 2700 bytes
icons/MVChocolate/play.png | 1 +
icons/MVChocolate/play_sel.png | Bin 0 -> 3608 bytes
icons/MVChocolate/prev.png | 1 +
icons/MVChocolate/prev_sel.png | Bin 0 -> 4156 bytes
icons/MVChocolate/radio.png | 1 +
icons/MVChocolate/recording.png | 1 +
icons/MVChocolate/recording_cutted.png | Bin 0 -> 2065 bytes
icons/MVChocolate/recording_cutted_cur.png | 1 +
icons/MVChocolate/recording_cutted_extra.png | Bin 0 -> 2142 bytes
icons/MVChocolate/recording_new.png | Bin 0 -> 7425 bytes
icons/MVChocolate/recording_new_cur.png | 1 +
icons/MVChocolate/rewind.png | 1 +
icons/MVChocolate/rewind_sel.png | Bin 0 -> 3057 bytes
icons/MVChocolate/sd.png | 1 +
icons/MVChocolate/skip.png | 1 +
icons/MVChocolate/skip_sel.png | Bin 0 -> 4127 bytes
icons/MVChocolate/text_arrowturn.png | 1 +
icons/MVChocolate/text_arrowturn_cur.png | 1 +
icons/MVChocolate/text_arrowturn_sel.png | 1 +
icons/MVChocolate/text_new.png | 1 +
icons/MVChocolate/text_new_cur.png | 1 +
icons/MVChocolate/text_new_sel.png | 1 +
icons/MVChocolate/text_rec.png | 1 +
icons/MVChocolate/text_rec_cur.png | 1 +
icons/MVChocolate/text_rec_sel.png | 1 +
icons/MVChocolate/text_timer_full.png | 1 +
icons/MVChocolate/text_timer_full_cur.png | 1 +
icons/MVChocolate/text_timer_full_sel.png | 1 +
icons/MVChocolate/text_timer_partial.png | 1 +
icons/MVChocolate/text_timer_partial_cur.png | 1 +
icons/MVChocolate/text_timer_partial_sel.png | 1 +
icons/MVChocolate/text_vps.png | 1 +
icons/MVChocolate/text_vps_cur.png | 1 +
icons/MVChocolate/text_vps_sel.png | 1 +
icons/MVChocolate/timerActive.png | 1 +
icons/MVChocolate/timerInactive.png | 1 +
icons/MVChocolate/timerRecording.png | 1 +
icons/MVChocolate/timer_full.png | Bin 0 -> 4884 bytes
icons/MVChocolate/timer_full_cur.png | 1 +
icons/MVChocolate/timer_partial.png | Bin 0 -> 2516 bytes
icons/MVChocolate/timer_partial_cur.png | 1 +
icons/MVChocolate/topbar_timer.png | 1 +
icons/MVChocolate/topbar_timerconflict_high.png | 1 +
icons/MVChocolate/topbar_timerconflict_low.png | 1 +
icons/MVChocolate/tv.png | 1 +
icons/MVChocolate/uncrypted.png | 1 +
icons/MVChocolate/unknown_asp.png | 1 +
icons/MVChocolate/unknown_res.png | 1 +
icons/MVChocolate/vps.png | Bin 0 -> 5432 bytes
icons/MVChocolate/vps_cur.png | 1 +
icons/MVCyan/1280x720.png | 1 +
icons/MVCyan/1440x1080.png | 1 +
icons/MVCyan/169.png | 1 +
icons/MVCyan/169w.png | 1 +
icons/MVCyan/1920x1080.png | 1 +
icons/MVCyan/221.png | 1 +
icons/MVCyan/352x576.png | 1 +
icons/MVCyan/43.png | 1 +
icons/MVCyan/480x576.png | 1 +
icons/MVCyan/528x576.png | 1 +
icons/MVCyan/544x576.png | 1 +
icons/MVCyan/704x576.png | 1 +
icons/MVCyan/720x576.png | 1 +
icons/MVCyan/960x720.png | 1 +
icons/MVCyan/blank.png | 1 +
icons/MVCyan/changroup.png | Bin 0 -> 760 bytes
icons/MVCyan/chart1b.png | 1 +
icons/MVCyan/chart2b.png | 1 +
icons/MVCyan/chart3b.png | 1 +
icons/MVCyan/chart4b.png | 1 +
icons/MVCyan/chart5b.png | 1 +
icons/MVCyan/chart6b.png | 1 +
icons/MVCyan/chart7.png | 1 +
icons/MVCyan/chart7b.png | 1 +
icons/MVCyan/crypted.png | 1 +
icons/MVCyan/forward.png | 1 +
icons/MVCyan/forward_sel.png | Bin 0 -> 3116 bytes
icons/MVCyan/hd.png | 1 +
icons/MVCyan/message_error.png | 1 +
icons/MVCyan/message_info.png | 1 +
icons/MVCyan/message_status.png | 1 +
icons/MVCyan/message_warning.png | 1 +
icons/MVCyan/pause.png | 1 +
icons/MVCyan/pause_sel.png | Bin 0 -> 2912 bytes
icons/MVCyan/play.png | 1 +
icons/MVCyan/play_sel.png | Bin 0 -> 3777 bytes
icons/MVCyan/prev.png | 1 +
icons/MVCyan/prev_sel.png | Bin 0 -> 4369 bytes
icons/MVCyan/radio.png | 1 +
icons/MVCyan/recording.png | 1 +
icons/MVCyan/recording_cutted.png | Bin 0 -> 2065 bytes
icons/MVCyan/recording_cutted_cur.png | 1 +
icons/MVCyan/recording_cutted_extra.png | Bin 0 -> 2140 bytes
icons/MVCyan/recording_new.png | Bin 0 -> 7667 bytes
icons/MVCyan/recording_new_cur.png | 1 +
icons/MVCyan/rewind.png | 1 +
icons/MVCyan/rewind_sel.png | Bin 0 -> 3220 bytes
icons/MVCyan/sd.png | 1 +
icons/MVCyan/skip.png | 1 +
icons/MVCyan/skip_sel.png | Bin 0 -> 4382 bytes
icons/MVCyan/text_arrowturn.png | 1 +
icons/MVCyan/text_arrowturn_cur.png | 1 +
icons/MVCyan/text_arrowturn_sel.png | 1 +
icons/MVCyan/text_new.png | 1 +
icons/MVCyan/text_new_cur.png | 1 +
icons/MVCyan/text_new_sel.png | 1 +
icons/MVCyan/text_rec.png | 1 +
icons/MVCyan/text_rec_cur.png | 1 +
icons/MVCyan/text_rec_sel.png | 1 +
icons/MVCyan/text_timer_full.png | 1 +
icons/MVCyan/text_timer_full_cur.png | 1 +
icons/MVCyan/text_timer_full_sel.png | 1 +
icons/MVCyan/text_timer_partial.png | 1 +
icons/MVCyan/text_timer_partial_cur.png | 1 +
icons/MVCyan/text_timer_partial_sel.png | 1 +
icons/MVCyan/text_vps.png | 1 +
icons/MVCyan/text_vps_cur.png | 1 +
icons/MVCyan/text_vps_sel.png | 1 +
icons/MVCyan/timerActive.png | 1 +
icons/MVCyan/timerInactive.png | 1 +
icons/MVCyan/timerRecording.png | 1 +
icons/MVCyan/timer_full.png | Bin 0 -> 4795 bytes
icons/MVCyan/timer_full_cur.png | 1 +
icons/MVCyan/timer_partial.png | Bin 0 -> 2520 bytes
icons/MVCyan/timer_partial_cur.png | 1 +
icons/MVCyan/topbar_timer.png | 1 +
icons/MVCyan/topbar_timerconflict_high.png | 1 +
icons/MVCyan/topbar_timerconflict_low.png | 1 +
icons/MVCyan/tv.png | 1 +
icons/MVCyan/uncrypted.png | 1 +
icons/MVCyan/unknown_asp.png | 1 +
icons/MVCyan/unknown_res.png | 1 +
icons/MVCyan/vps.png | Bin 0 -> 5263 bytes
icons/MVCyan/vps_cur.png | 1 +
icons/MVDeepBlue/1280x720.png | 1 +
icons/MVDeepBlue/1440x1080.png | 1 +
icons/MVDeepBlue/169.png | 1 +
icons/MVDeepBlue/169w.png | 1 +
icons/MVDeepBlue/1920x1080.png | 1 +
icons/MVDeepBlue/221.png | 1 +
icons/MVDeepBlue/352x576.png | 1 +
icons/MVDeepBlue/43.png | 1 +
icons/MVDeepBlue/480x576.png | 1 +
icons/MVDeepBlue/528x576.png | 1 +
icons/MVDeepBlue/544x576.png | 1 +
icons/MVDeepBlue/704x576.png | 1 +
icons/MVDeepBlue/720x576.png | 1 +
icons/MVDeepBlue/960x720.png | 1 +
icons/MVDeepBlue/blank.png | 1 +
icons/MVDeepBlue/changroup.png | Bin 0 -> 746 bytes
icons/MVDeepBlue/chart1b.png | 1 +
icons/MVDeepBlue/chart2b.png | 1 +
icons/MVDeepBlue/chart3b.png | 1 +
icons/MVDeepBlue/chart4b.png | 1 +
icons/MVDeepBlue/chart5b.png | 1 +
icons/MVDeepBlue/chart6b.png | 1 +
icons/MVDeepBlue/chart7.png | 1 +
icons/MVDeepBlue/chart7b.png | 1 +
icons/MVDeepBlue/crypted.png | 1 +
icons/MVDeepBlue/forward.png | 1 +
icons/MVDeepBlue/forward_sel.png | Bin 0 -> 2923 bytes
icons/MVDeepBlue/hd.png | 1 +
icons/MVDeepBlue/message_error.png | 1 +
icons/MVDeepBlue/message_info.png | 1 +
icons/MVDeepBlue/message_status.png | 1 +
icons/MVDeepBlue/message_warning.png | 1 +
icons/MVDeepBlue/pause.png | 1 +
icons/MVDeepBlue/pause_sel.png | Bin 0 -> 2685 bytes
icons/MVDeepBlue/play.png | 1 +
icons/MVDeepBlue/play_sel.png | Bin 0 -> 3534 bytes
icons/MVDeepBlue/prev.png | 1 +
icons/MVDeepBlue/prev_sel.png | Bin 0 -> 4047 bytes
icons/MVDeepBlue/radio.png | 1 +
icons/MVDeepBlue/recording.png | 1 +
icons/MVDeepBlue/recording_cutted.png | Bin 0 -> 2072 bytes
icons/MVDeepBlue/recording_cutted_cur.png | Bin 0 -> 2070 bytes
icons/MVDeepBlue/recording_cutted_extra.png | Bin 0 -> 2108 bytes
icons/MVDeepBlue/recording_new.png | Bin 0 -> 7313 bytes
icons/MVDeepBlue/recording_new_cur.png | Bin 0 -> 5780 bytes
icons/MVDeepBlue/rewind.png | 1 +
icons/MVDeepBlue/rewind_sel.png | Bin 0 -> 3032 bytes
icons/MVDeepBlue/sd.png | 1 +
icons/MVDeepBlue/skip.png | 1 +
icons/MVDeepBlue/skip_sel.png | Bin 0 -> 4012 bytes
icons/MVDeepBlue/text_arrowturn.png | 1 +
icons/MVDeepBlue/text_arrowturn_cur.png | 1 +
icons/MVDeepBlue/text_arrowturn_sel.png | 1 +
icons/MVDeepBlue/text_new.png | 1 +
icons/MVDeepBlue/text_new_cur.png | 1 +
icons/MVDeepBlue/text_new_sel.png | 1 +
icons/MVDeepBlue/text_rec.png | 1 +
icons/MVDeepBlue/text_rec_cur.png | 1 +
icons/MVDeepBlue/text_rec_sel.png | 1 +
icons/MVDeepBlue/text_timer_full.png | 1 +
icons/MVDeepBlue/text_timer_full_cur.png | 1 +
icons/MVDeepBlue/text_timer_full_sel.png | 1 +
icons/MVDeepBlue/text_timer_partial.png | 1 +
icons/MVDeepBlue/text_timer_partial_cur.png | 1 +
icons/MVDeepBlue/text_timer_partial_sel.png | 1 +
icons/MVDeepBlue/text_vps.png | 1 +
icons/MVDeepBlue/text_vps_cur.png | 1 +
icons/MVDeepBlue/text_vps_sel.png | 1 +
icons/MVDeepBlue/timerActive.png | 1 +
icons/MVDeepBlue/timerInactive.png | 1 +
icons/MVDeepBlue/timerRecording.png | 1 +
icons/MVDeepBlue/timer_full.png | Bin 0 -> 4783 bytes
icons/MVDeepBlue/timer_full_cur.png | Bin 0 -> 4885 bytes
icons/MVDeepBlue/timer_partial.png | Bin 0 -> 2376 bytes
icons/MVDeepBlue/timer_partial_cur.png | Bin 0 -> 2189 bytes
icons/MVDeepBlue/topbar_timer.png | 1 +
icons/MVDeepBlue/topbar_timerconflict_high.png | 1 +
icons/MVDeepBlue/topbar_timerconflict_low.png | 1 +
icons/MVDeepBlue/tv.png | 1 +
icons/MVDeepBlue/uncrypted.png | 1 +
icons/MVDeepBlue/unknown_asp.png | 1 +
icons/MVDeepBlue/unknown_res.png | 1 +
icons/MVDeepBlue/vps.png | Bin 0 -> 5076 bytes
icons/MVDeepBlue/vps_cur.png | Bin 0 -> 4956 bytes
icons/MVFog/1280x720.png | 1 +
icons/MVFog/1440x1080.png | 1 +
icons/MVFog/169.png | 1 +
icons/MVFog/169w.png | 1 +
icons/MVFog/1920x1080.png | 1 +
icons/MVFog/221.png | 1 +
icons/MVFog/352x576.png | 1 +
icons/MVFog/43.png | 1 +
icons/MVFog/480x576.png | 1 +
icons/MVFog/528x576.png | 1 +
icons/MVFog/544x576.png | 1 +
icons/MVFog/704x576.png | 1 +
icons/MVFog/720x576.png | 1 +
icons/MVFog/960x720.png | 1 +
icons/MVFog/blank.png | 1 +
icons/MVFog/changroup.png | Bin 0 -> 763 bytes
icons/MVFog/chart1b.png | 1 +
icons/MVFog/chart2b.png | 1 +
icons/MVFog/chart3b.png | 1 +
icons/MVFog/chart4b.png | 1 +
icons/MVFog/chart5b.png | 1 +
icons/MVFog/chart6b.png | 1 +
icons/MVFog/chart7.png | 1 +
icons/MVFog/chart7b.png | 1 +
icons/MVFog/crypted.png | 1 +
icons/MVFog/forward.png | 1 +
icons/MVFog/forward_sel.png | Bin 0 -> 2313 bytes
icons/MVFog/hd.png | 1 +
icons/MVFog/message_error.png | 1 +
icons/MVFog/message_info.png | 1 +
icons/MVFog/message_status.png | 1 +
icons/MVFog/message_warning.png | 1 +
icons/MVFog/pause.png | 1 +
icons/MVFog/pause_sel.png | Bin 0 -> 1791 bytes
icons/MVFog/play.png | 1 +
icons/MVFog/play_sel.png | Bin 0 -> 2532 bytes
icons/MVFog/prev.png | 1 +
icons/MVFog/prev_sel.png | Bin 0 -> 2828 bytes
icons/MVFog/radio.png | 1 +
icons/MVFog/recording.png | 1 +
icons/MVFog/recording_cutted.png | Bin 0 -> 2056 bytes
icons/MVFog/recording_cutted_cur.png | Bin 0 -> 2033 bytes
icons/MVFog/recording_cutted_extra.png | Bin 0 -> 2090 bytes
icons/MVFog/recording_new.png | Bin 0 -> 5148 bytes
icons/MVFog/recording_new_cur.png | Bin 0 -> 7909 bytes
icons/MVFog/rewind.png | 1 +
icons/MVFog/rewind_sel.png | Bin 0 -> 2380 bytes
icons/MVFog/sd.png | 1 +
icons/MVFog/skip.png | 1 +
icons/MVFog/skip_sel.png | Bin 0 -> 2872 bytes
icons/MVFog/text_arrowturn.png | 1 +
icons/MVFog/text_arrowturn_cur.png | 1 +
icons/MVFog/text_arrowturn_sel.png | 1 +
icons/MVFog/text_new.png | 1 +
icons/MVFog/text_new_cur.png | 1 +
icons/MVFog/text_new_sel.png | 1 +
icons/MVFog/text_rec.png | 1 +
icons/MVFog/text_rec_cur.png | 1 +
icons/MVFog/text_rec_sel.png | 1 +
icons/MVFog/text_timer_full.png | 1 +
icons/MVFog/text_timer_full_cur.png | 1 +
icons/MVFog/text_timer_full_sel.png | 1 +
icons/MVFog/text_timer_partial.png | 1 +
icons/MVFog/text_timer_partial_cur.png | 1 +
icons/MVFog/text_timer_partial_sel.png | 1 +
icons/MVFog/text_vps.png | 1 +
icons/MVFog/text_vps_cur.png | 1 +
icons/MVFog/text_vps_sel.png | 1 +
icons/MVFog/timerActive.png | 1 +
icons/MVFog/timerInactive.png | 1 +
icons/MVFog/timerRecording.png | 1 +
icons/MVFog/timer_full.png | Bin 0 -> 4828 bytes
icons/MVFog/timer_full_cur.png | Bin 0 -> 4692 bytes
icons/MVFog/timer_partial.png | Bin 0 -> 2150 bytes
icons/MVFog/timer_partial_cur.png | Bin 0 -> 2582 bytes
icons/MVFog/topbar_timer.png | 1 +
icons/MVFog/topbar_timerconflict_high.png | 1 +
icons/MVFog/topbar_timerconflict_low.png | 1 +
icons/MVFog/tv.png | 1 +
icons/MVFog/uncrypted.png | 1 +
icons/MVFog/unknown_asp.png | 1 +
icons/MVFog/unknown_res.png | 1 +
icons/MVFog/vps.png | Bin 0 -> 4803 bytes
icons/MVFog/vps_cur.png | Bin 0 -> 5464 bytes
icons/MVGrapefruit/1280x720.png | 1 +
icons/MVGrapefruit/1440x1080.png | 1 +
icons/MVGrapefruit/169.png | 1 +
icons/MVGrapefruit/169w.png | 1 +
icons/MVGrapefruit/1920x1080.png | 1 +
icons/MVGrapefruit/221.png | 1 +
icons/MVGrapefruit/352x576.png | 1 +
icons/MVGrapefruit/43.png | 1 +
icons/MVGrapefruit/480x576.png | 1 +
icons/MVGrapefruit/528x576.png | 1 +
icons/MVGrapefruit/544x576.png | 1 +
icons/MVGrapefruit/704x576.png | 1 +
icons/MVGrapefruit/720x576.png | 1 +
icons/MVGrapefruit/960x720.png | 1 +
icons/MVGrapefruit/blank.png | 1 +
icons/MVGrapefruit/changroup.png | Bin 0 -> 746 bytes
icons/MVGrapefruit/chart1b.png | 1 +
icons/MVGrapefruit/chart2b.png | 1 +
icons/MVGrapefruit/chart3b.png | 1 +
icons/MVGrapefruit/chart4b.png | 1 +
icons/MVGrapefruit/chart5b.png | 1 +
icons/MVGrapefruit/chart6b.png | 1 +
icons/MVGrapefruit/chart7.png | 1 +
icons/MVGrapefruit/chart7b.png | 1 +
icons/MVGrapefruit/crypted.png | 1 +
icons/MVGrapefruit/forward.png | 1 +
icons/MVGrapefruit/forward_sel.png | Bin 0 -> 2995 bytes
icons/MVGrapefruit/hd.png | 1 +
icons/MVGrapefruit/message_error.png | 1 +
icons/MVGrapefruit/message_info.png | 1 +
icons/MVGrapefruit/message_status.png | 1 +
icons/MVGrapefruit/message_warning.png | 1 +
icons/MVGrapefruit/pause.png | 1 +
icons/MVGrapefruit/pause_sel.png | Bin 0 -> 2758 bytes
icons/MVGrapefruit/play.png | 1 +
icons/MVGrapefruit/play_sel.png | Bin 0 -> 3665 bytes
icons/MVGrapefruit/prev.png | 1 +
icons/MVGrapefruit/prev_sel.png | Bin 0 -> 4187 bytes
icons/MVGrapefruit/radio.png | 1 +
icons/MVGrapefruit/recording.png | 1 +
icons/MVGrapefruit/recording_cutted.png | Bin 0 -> 2066 bytes
icons/MVGrapefruit/recording_cutted_cur.png | 1 +
icons/MVGrapefruit/recording_cutted_extra.png | Bin 0 -> 2134 bytes
icons/MVGrapefruit/recording_new.png | Bin 0 -> 7504 bytes
icons/MVGrapefruit/recording_new_cur.png | 1 +
icons/MVGrapefruit/rewind.png | 1 +
icons/MVGrapefruit/rewind_sel.png | Bin 0 -> 3105 bytes
icons/MVGrapefruit/sd.png | 1 +
icons/MVGrapefruit/skip.png | 1 +
icons/MVGrapefruit/skip_sel.png | Bin 0 -> 4140 bytes
icons/MVGrapefruit/text_arrowturn.png | 1 +
icons/MVGrapefruit/text_arrowturn_cur.png | 1 +
icons/MVGrapefruit/text_arrowturn_sel.png | 1 +
icons/MVGrapefruit/text_new.png | 1 +
icons/MVGrapefruit/text_new_cur.png | 1 +
icons/MVGrapefruit/text_new_sel.png | 1 +
icons/MVGrapefruit/text_rec.png | 1 +
icons/MVGrapefruit/text_rec_cur.png | 1 +
icons/MVGrapefruit/text_rec_sel.png | 1 +
icons/MVGrapefruit/text_timer_full.png | 1 +
icons/MVGrapefruit/text_timer_full_cur.png | 1 +
icons/MVGrapefruit/text_timer_full_sel.png | 1 +
icons/MVGrapefruit/text_timer_partial.png | 1 +
icons/MVGrapefruit/text_timer_partial_cur.png | 1 +
icons/MVGrapefruit/text_timer_partial_sel.png | 1 +
icons/MVGrapefruit/text_vps.png | 1 +
icons/MVGrapefruit/text_vps_cur.png | 1 +
icons/MVGrapefruit/text_vps_sel.png | 1 +
icons/MVGrapefruit/timerActive.png | 1 +
icons/MVGrapefruit/timerInactive.png | 1 +
icons/MVGrapefruit/timerRecording.png | 1 +
icons/MVGrapefruit/timer_full.png | Bin 0 -> 4796 bytes
icons/MVGrapefruit/timer_full_cur.png | 1 +
icons/MVGrapefruit/timer_partial.png | Bin 0 -> 2469 bytes
icons/MVGrapefruit/timer_partial_cur.png | 1 +
icons/MVGrapefruit/topbar_timer.png | 1 +
icons/MVGrapefruit/topbar_timerconflict_high.png | 1 +
icons/MVGrapefruit/topbar_timerconflict_low.png | 1 +
icons/MVGrapefruit/tv.png | 1 +
icons/MVGrapefruit/uncrypted.png | 1 +
icons/MVGrapefruit/unknown_asp.png | 1 +
icons/MVGrapefruit/unknown_res.png | 1 +
icons/MVGrapefruit/vps.png | Bin 0 -> 5264 bytes
icons/MVGrapefruit/vps_cur.png | 1 +
icons/MVGreen/1280x720.png | 1 +
icons/MVGreen/1440x1080.png | 1 +
icons/MVGreen/169.png | 1 +
icons/MVGreen/169w.png | 1 +
icons/MVGreen/1920x1080.png | 1 +
icons/MVGreen/221.png | 1 +
icons/MVGreen/352x576.png | 1 +
icons/MVGreen/43.png | 1 +
icons/MVGreen/480x576.png | 1 +
icons/MVGreen/528x576.png | 1 +
icons/MVGreen/544x576.png | 1 +
icons/MVGreen/704x576.png | 1 +
icons/MVGreen/720x576.png | 1 +
icons/MVGreen/960x720.png | 1 +
icons/MVGreen/blank.png | 1 +
icons/MVGreen/changroup.png | Bin 0 -> 742 bytes
icons/MVGreen/chart1b.png | 1 +
icons/MVGreen/chart2b.png | 1 +
icons/MVGreen/chart3b.png | 1 +
icons/MVGreen/chart4b.png | 1 +
icons/MVGreen/chart5b.png | 1 +
icons/MVGreen/chart6b.png | 1 +
icons/MVGreen/chart7.png | 1 +
icons/MVGreen/chart7b.png | 1 +
icons/MVGreen/crypted.png | 1 +
icons/MVGreen/forward.png | 1 +
icons/MVGreen/forward_sel.png | Bin 0 -> 2428 bytes
icons/MVGreen/hd.png | 1 +
icons/MVGreen/message_error.png | 1 +
icons/MVGreen/message_info.png | 1 +
icons/MVGreen/message_status.png | 1 +
icons/MVGreen/message_warning.png | 1 +
icons/MVGreen/pause.png | 1 +
icons/MVGreen/pause_sel.png | Bin 0 -> 2210 bytes
icons/MVGreen/play.png | 1 +
icons/MVGreen/play_sel.png | Bin 0 -> 2844 bytes
icons/MVGreen/prev.png | 1 +
icons/MVGreen/prev_sel.png | Bin 0 -> 3202 bytes
icons/MVGreen/radio.png | 1 +
icons/MVGreen/recording.png | 1 +
icons/MVGreen/recording_cutted.png | Bin 0 -> 1972 bytes
icons/MVGreen/recording_cutted_cur.png | 1 +
icons/MVGreen/recording_cutted_extra.png | Bin 0 -> 2004 bytes
icons/MVGreen/recording_new.png | Bin 0 -> 6017 bytes
icons/MVGreen/recording_new_cur.png | 1 +
icons/MVGreen/rewind.png | 1 +
icons/MVGreen/rewind_sel.png | Bin 0 -> 2490 bytes
icons/MVGreen/sd.png | 1 +
icons/MVGreen/skip.png | 1 +
icons/MVGreen/skip_sel.png | Bin 0 -> 3260 bytes
icons/MVGreen/text_arrowturn.png | 1 +
icons/MVGreen/text_arrowturn_cur.png | 1 +
icons/MVGreen/text_arrowturn_sel.png | 1 +
icons/MVGreen/text_new.png | 1 +
icons/MVGreen/text_new_cur.png | 1 +
icons/MVGreen/text_new_sel.png | 1 +
icons/MVGreen/text_rec.png | 1 +
icons/MVGreen/text_rec_cur.png | 1 +
icons/MVGreen/text_rec_sel.png | 1 +
icons/MVGreen/text_timer_full.png | 1 +
icons/MVGreen/text_timer_full_cur.png | 1 +
icons/MVGreen/text_timer_full_sel.png | 1 +
icons/MVGreen/text_timer_partial.png | 1 +
icons/MVGreen/text_timer_partial_cur.png | 1 +
icons/MVGreen/text_timer_partial_sel.png | 1 +
icons/MVGreen/text_vps.png | 1 +
icons/MVGreen/text_vps_cur.png | 1 +
icons/MVGreen/text_vps_sel.png | 1 +
icons/MVGreen/timerActive.png | 1 +
icons/MVGreen/timerInactive.png | 1 +
icons/MVGreen/timerRecording.png | 1 +
icons/MVGreen/timer_full.png | Bin 0 -> 4625 bytes
icons/MVGreen/timer_full_cur.png | 1 +
icons/MVGreen/timer_partial.png | Bin 0 -> 2100 bytes
icons/MVGreen/timer_partial_cur.png | 1 +
icons/MVGreen/topbar_timer.png | 1 +
icons/MVGreen/topbar_timerconflict_high.png | 1 +
icons/MVGreen/topbar_timerconflict_low.png | 1 +
icons/MVGreen/tv.png | 1 +
icons/MVGreen/uncrypted.png | 1 +
icons/MVGreen/unknown_asp.png | 1 +
icons/MVGreen/unknown_res.png | 1 +
icons/MVGreen/vps.png | Bin 0 -> 4651 bytes
icons/MVGreen/vps_cur.png | 1 +
icons/MVGreen2/1280x720.png | 1 +
icons/MVGreen2/1440x1080.png | 1 +
icons/MVGreen2/169.png | 1 +
icons/MVGreen2/169w.png | 1 +
icons/MVGreen2/1920x1080.png | 1 +
icons/MVGreen2/221.png | 1 +
icons/MVGreen2/352x576.png | 1 +
icons/MVGreen2/43.png | 1 +
icons/MVGreen2/480x576.png | 1 +
icons/MVGreen2/528x576.png | 1 +
icons/MVGreen2/544x576.png | 1 +
icons/MVGreen2/704x576.png | 1 +
icons/MVGreen2/720x576.png | 1 +
icons/MVGreen2/960x720.png | 1 +
icons/MVGreen2/blank.png | 1 +
icons/MVGreen2/changroup.png | Bin 0 -> 742 bytes
icons/MVGreen2/chart1b.png | 1 +
icons/MVGreen2/chart2b.png | 1 +
icons/MVGreen2/chart3b.png | 1 +
icons/MVGreen2/chart4b.png | 1 +
icons/MVGreen2/chart5b.png | 1 +
icons/MVGreen2/chart6b.png | 1 +
icons/MVGreen2/chart7.png | 1 +
icons/MVGreen2/chart7b.png | 1 +
icons/MVGreen2/crypted.png | 1 +
icons/MVGreen2/forward.png | 1 +
icons/MVGreen2/forward_sel.png | Bin 0 -> 2428 bytes
icons/MVGreen2/hd.png | 1 +
icons/MVGreen2/message_error.png | 1 +
icons/MVGreen2/message_info.png | 1 +
icons/MVGreen2/message_status.png | 1 +
icons/MVGreen2/message_warning.png | 1 +
icons/MVGreen2/pause.png | 1 +
icons/MVGreen2/pause_sel.png | Bin 0 -> 2210 bytes
icons/MVGreen2/play.png | 1 +
icons/MVGreen2/play_sel.png | Bin 0 -> 2844 bytes
icons/MVGreen2/prev.png | 1 +
icons/MVGreen2/prev_sel.png | Bin 0 -> 3202 bytes
icons/MVGreen2/radio.png | 1 +
icons/MVGreen2/recording.png | 1 +
icons/MVGreen2/recording_cutted.png | Bin 0 -> 1972 bytes
icons/MVGreen2/recording_cutted_cur.png | Bin 0 -> 2080 bytes
icons/MVGreen2/recording_cutted_extra.png | Bin 0 -> 2004 bytes
icons/MVGreen2/recording_new.png | Bin 0 -> 6017 bytes
icons/MVGreen2/recording_new_cur.png | Bin 0 -> 5806 bytes
icons/MVGreen2/rewind.png | 1 +
icons/MVGreen2/rewind_sel.png | Bin 0 -> 2490 bytes
icons/MVGreen2/sd.png | 1 +
icons/MVGreen2/skip.png | 1 +
icons/MVGreen2/skip_sel.png | Bin 0 -> 3260 bytes
icons/MVGreen2/text_arrowturn.png | 1 +
icons/MVGreen2/text_arrowturn_cur.png | 1 +
icons/MVGreen2/text_arrowturn_sel.png | 1 +
icons/MVGreen2/text_new.png | 1 +
icons/MVGreen2/text_new_cur.png | 1 +
icons/MVGreen2/text_new_sel.png | 1 +
icons/MVGreen2/text_rec.png | 1 +
icons/MVGreen2/text_rec_cur.png | 1 +
icons/MVGreen2/text_rec_sel.png | 1 +
icons/MVGreen2/text_timer_full.png | 1 +
icons/MVGreen2/text_timer_full_cur.png | 1 +
icons/MVGreen2/text_timer_full_sel.png | 1 +
icons/MVGreen2/text_timer_partial.png | 1 +
icons/MVGreen2/text_timer_partial_cur.png | 1 +
icons/MVGreen2/text_timer_partial_sel.png | 1 +
icons/MVGreen2/text_vps.png | 1 +
icons/MVGreen2/text_vps_cur.png | 1 +
icons/MVGreen2/text_vps_sel.png | 1 +
icons/MVGreen2/timerActive.png | 1 +
icons/MVGreen2/timerInactive.png | 1 +
icons/MVGreen2/timerRecording.png | 1 +
icons/MVGreen2/timer_full.png | Bin 0 -> 4625 bytes
icons/MVGreen2/timer_full_cur.png | Bin 0 -> 4864 bytes
icons/MVGreen2/timer_partial.png | Bin 0 -> 2100 bytes
icons/MVGreen2/timer_partial_cur.png | Bin 0 -> 2218 bytes
icons/MVGreen2/topbar_timer.png | 1 +
icons/MVGreen2/topbar_timerconflict_high.png | 1 +
icons/MVGreen2/topbar_timerconflict_low.png | 1 +
icons/MVGreen2/tv.png | 1 +
icons/MVGreen2/uncrypted.png | 1 +
icons/MVGreen2/unknown_asp.png | 1 +
icons/MVGreen2/unknown_res.png | 1 +
icons/MVGreen2/vps.png | Bin 0 -> 4651 bytes
icons/MVGreen2/vps_cur.png | Bin 0 -> 4920 bytes
icons/MVGrey/1280x720.png | 1 +
icons/MVGrey/1440x1080.png | 1 +
icons/MVGrey/169.png | 1 +
icons/MVGrey/169w.png | 1 +
icons/MVGrey/1920x1080.png | 1 +
icons/MVGrey/221.png | 1 +
icons/MVGrey/352x576.png | 1 +
icons/MVGrey/43.png | 1 +
icons/MVGrey/480x576.png | 1 +
icons/MVGrey/528x576.png | 1 +
icons/MVGrey/544x576.png | 1 +
icons/MVGrey/704x576.png | 1 +
icons/MVGrey/720x576.png | 1 +
icons/MVGrey/960x720.png | 1 +
icons/MVGrey/blank.png | 1 +
icons/MVGrey/changroup.png | Bin 0 -> 764 bytes
icons/MVGrey/chart1b.png | 1 +
icons/MVGrey/chart2b.png | 1 +
icons/MVGrey/chart3b.png | 1 +
icons/MVGrey/chart4b.png | 1 +
icons/MVGrey/chart5b.png | 1 +
icons/MVGrey/chart6b.png | 1 +
icons/MVGrey/chart7.png | 1 +
icons/MVGrey/chart7b.png | 1 +
icons/MVGrey/crypted.png | 1 +
icons/MVGrey/forward.png | 1 +
icons/MVGrey/forward_sel.png | Bin 0 -> 3180 bytes
icons/MVGrey/hd.png | 1 +
icons/MVGrey/message_error.png | 1 +
icons/MVGrey/message_info.png | 1 +
icons/MVGrey/message_status.png | 1 +
icons/MVGrey/message_warning.png | 1 +
icons/MVGrey/pause.png | 1 +
icons/MVGrey/pause_sel.png | Bin 0 -> 2901 bytes
icons/MVGrey/play.png | 1 +
icons/MVGrey/play_sel.png | Bin 0 -> 3847 bytes
icons/MVGrey/prev.png | 1 +
icons/MVGrey/prev_sel.png | Bin 0 -> 4513 bytes
icons/MVGrey/radio.png | 1 +
icons/MVGrey/recording.png | 1 +
icons/MVGrey/recording_cutted.png | Bin 0 -> 2068 bytes
icons/MVGrey/recording_cutted_cur.png | 1 +
icons/MVGrey/recording_cutted_extra.png | Bin 0 -> 2138 bytes
icons/MVGrey/recording_new.png | Bin 0 -> 7733 bytes
icons/MVGrey/recording_new_cur.png | 1 +
icons/MVGrey/rewind.png | 1 +
icons/MVGrey/rewind_sel.png | Bin 0 -> 3254 bytes
icons/MVGrey/sd.png | 1 +
icons/MVGrey/skip.png | 1 +
icons/MVGrey/skip_sel.png | Bin 0 -> 4454 bytes
icons/MVGrey/text_arrowturn.png | 1 +
icons/MVGrey/text_arrowturn_cur.png | 1 +
icons/MVGrey/text_arrowturn_sel.png | 1 +
icons/MVGrey/text_new.png | 1 +
icons/MVGrey/text_new_cur.png | 1 +
icons/MVGrey/text_new_sel.png | 1 +
icons/MVGrey/text_rec.png | 1 +
icons/MVGrey/text_rec_cur.png | 1 +
icons/MVGrey/text_rec_sel.png | 1 +
icons/MVGrey/text_timer_full.png | 1 +
icons/MVGrey/text_timer_full_cur.png | 1 +
icons/MVGrey/text_timer_full_sel.png | 1 +
icons/MVGrey/text_timer_partial.png | 1 +
icons/MVGrey/text_timer_partial_cur.png | 1 +
icons/MVGrey/text_timer_partial_sel.png | 1 +
icons/MVGrey/text_vps.png | 1 +
icons/MVGrey/text_vps_cur.png | 1 +
icons/MVGrey/text_vps_sel.png | 1 +
icons/MVGrey/timerActive.png | 1 +
icons/MVGrey/timerInactive.png | 1 +
icons/MVGrey/timerRecording.png | 1 +
icons/MVGrey/timer_full.png | Bin 0 -> 4877 bytes
icons/MVGrey/timer_full_cur.png | 1 +
icons/MVGrey/timer_partial.png | Bin 0 -> 2540 bytes
icons/MVGrey/timer_partial_cur.png | 1 +
icons/MVGrey/topbar_timer.png | 1 +
icons/MVGrey/topbar_timerconflict_high.png | 1 +
icons/MVGrey/topbar_timerconflict_low.png | 1 +
icons/MVGrey/tv.png | 1 +
icons/MVGrey/uncrypted.png | 1 +
icons/MVGrey/unknown_asp.png | 1 +
icons/MVGrey/unknown_res.png | 1 +
icons/MVGrey/vps.png | Bin 0 -> 5397 bytes
icons/MVGrey/vps_cur.png | 1 +
icons/MVHelloKitty/1280x720.png | 1 +
icons/MVHelloKitty/1440x1080.png | 1 +
icons/MVHelloKitty/169.png | 1 +
icons/MVHelloKitty/169w.png | 1 +
icons/MVHelloKitty/1920x1080.png | 1 +
icons/MVHelloKitty/221.png | 1 +
icons/MVHelloKitty/352x576.png | 1 +
icons/MVHelloKitty/43.png | 1 +
icons/MVHelloKitty/480x576.png | 1 +
icons/MVHelloKitty/528x576.png | 1 +
icons/MVHelloKitty/544x576.png | 1 +
icons/MVHelloKitty/704x576.png | 1 +
icons/MVHelloKitty/720x576.png | 1 +
icons/MVHelloKitty/960x720.png | 1 +
icons/MVHelloKitty/blank.png | 1 +
icons/MVHelloKitty/changroup.png | Bin 0 -> 750 bytes
icons/MVHelloKitty/chart1b.png | 1 +
icons/MVHelloKitty/chart2b.png | 1 +
icons/MVHelloKitty/chart3b.png | 1 +
icons/MVHelloKitty/chart4b.png | 1 +
icons/MVHelloKitty/chart5b.png | 1 +
icons/MVHelloKitty/chart6b.png | 1 +
icons/MVHelloKitty/chart7.png | 1 +
icons/MVHelloKitty/chart7b.png | 1 +
icons/MVHelloKitty/crypted.png | 1 +
icons/MVHelloKitty/forward.png | 1 +
icons/MVHelloKitty/forward_sel.png | Bin 0 -> 3392 bytes
icons/MVHelloKitty/hd.png | 1 +
icons/MVHelloKitty/message_error.png | 1 +
icons/MVHelloKitty/message_info.png | 1 +
icons/MVHelloKitty/message_status.png | 1 +
icons/MVHelloKitty/message_warning.png | 1 +
icons/MVHelloKitty/pause.png | 1 +
icons/MVHelloKitty/pause_sel.png | Bin 0 -> 3332 bytes
icons/MVHelloKitty/play.png | 1 +
icons/MVHelloKitty/play_sel.png | Bin 0 -> 4204 bytes
icons/MVHelloKitty/prev.png | 1 +
icons/MVHelloKitty/prev_sel.png | Bin 0 -> 5088 bytes
icons/MVHelloKitty/radio.png | 1 +
icons/MVHelloKitty/recording.png | 1 +
icons/MVHelloKitty/recording_cutted.png | Bin 0 -> 2070 bytes
icons/MVHelloKitty/recording_cutted_cur.png | 1 +
icons/MVHelloKitty/recording_cutted_extra.png | Bin 0 -> 2132 bytes
icons/MVHelloKitty/recording_new.png | Bin 0 -> 8359 bytes
icons/MVHelloKitty/recording_new_cur.png | 1 +
icons/MVHelloKitty/rewind.png | 1 +
icons/MVHelloKitty/rewind_sel.png | Bin 0 -> 3551 bytes
icons/MVHelloKitty/sd.png | 1 +
icons/MVHelloKitty/skip.png | 1 +
icons/MVHelloKitty/skip_sel.png | Bin 0 -> 4983 bytes
icons/MVHelloKitty/text_arrowturn.png | 1 +
icons/MVHelloKitty/text_arrowturn_cur.png | 1 +
icons/MVHelloKitty/text_arrowturn_sel.png | 1 +
icons/MVHelloKitty/text_new.png | 1 +
icons/MVHelloKitty/text_new_cur.png | 1 +
icons/MVHelloKitty/text_new_sel.png | 1 +
icons/MVHelloKitty/text_rec.png | 1 +
icons/MVHelloKitty/text_rec_cur.png | 1 +
icons/MVHelloKitty/text_rec_sel.png | 1 +
icons/MVHelloKitty/text_timer_full.png | 1 +
icons/MVHelloKitty/text_timer_full_cur.png | 1 +
icons/MVHelloKitty/text_timer_full_sel.png | 1 +
icons/MVHelloKitty/text_timer_partial.png | 1 +
icons/MVHelloKitty/text_timer_partial_cur.png | 1 +
icons/MVHelloKitty/text_timer_partial_sel.png | 1 +
icons/MVHelloKitty/text_vps.png | 1 +
icons/MVHelloKitty/text_vps_cur.png | 1 +
icons/MVHelloKitty/text_vps_sel.png | 1 +
icons/MVHelloKitty/timerActive.png | 1 +
icons/MVHelloKitty/timerInactive.png | 1 +
icons/MVHelloKitty/timerRecording.png | 1 +
icons/MVHelloKitty/timer_full.png | Bin 0 -> 4800 bytes
icons/MVHelloKitty/timer_full_cur.png | 1 +
icons/MVHelloKitty/timer_partial.png | Bin 0 -> 2611 bytes
icons/MVHelloKitty/timer_partial_cur.png | 1 +
icons/MVHelloKitty/topbar_timer.png | 1 +
icons/MVHelloKitty/topbar_timerconflict_high.png | 1 +
icons/MVHelloKitty/topbar_timerconflict_low.png | 1 +
icons/MVHelloKitty/tv.png | 1 +
icons/MVHelloKitty/uncrypted.png | 1 +
icons/MVHelloKitty/unknown_asp.png | 1 +
icons/MVHelloKitty/unknown_res.png | 1 +
icons/MVHelloKitty/vps.png | Bin 0 -> 5504 bytes
icons/MVHelloKitty/vps_cur.png | 1 +
icons/MVHelloKitty2/1280x720.png | 1 +
icons/MVHelloKitty2/1440x1080.png | 1 +
icons/MVHelloKitty2/169.png | 1 +
icons/MVHelloKitty2/169w.png | 1 +
icons/MVHelloKitty2/1920x1080.png | 1 +
icons/MVHelloKitty2/221.png | 1 +
icons/MVHelloKitty2/352x576.png | 1 +
icons/MVHelloKitty2/43.png | 1 +
icons/MVHelloKitty2/480x576.png | 1 +
icons/MVHelloKitty2/528x576.png | 1 +
icons/MVHelloKitty2/544x576.png | 1 +
icons/MVHelloKitty2/704x576.png | 1 +
icons/MVHelloKitty2/720x576.png | 1 +
icons/MVHelloKitty2/960x720.png | 1 +
icons/MVHelloKitty2/blank.png | 1 +
icons/MVHelloKitty2/changroup.png | Bin 0 -> 750 bytes
icons/MVHelloKitty2/chart1b.png | 1 +
icons/MVHelloKitty2/chart2b.png | 1 +
icons/MVHelloKitty2/chart3b.png | 1 +
icons/MVHelloKitty2/chart4b.png | 1 +
icons/MVHelloKitty2/chart5b.png | 1 +
icons/MVHelloKitty2/chart6b.png | 1 +
icons/MVHelloKitty2/chart7.png | 1 +
icons/MVHelloKitty2/chart7b.png | 1 +
icons/MVHelloKitty2/crypted.png | 1 +
icons/MVHelloKitty2/forward.png | 1 +
icons/MVHelloKitty2/forward_sel.png | Bin 0 -> 3392 bytes
icons/MVHelloKitty2/hd.png | 1 +
icons/MVHelloKitty2/message_error.png | 1 +
icons/MVHelloKitty2/message_info.png | 1 +
icons/MVHelloKitty2/message_status.png | 1 +
icons/MVHelloKitty2/message_warning.png | 1 +
icons/MVHelloKitty2/pause.png | 1 +
icons/MVHelloKitty2/pause_sel.png | Bin 0 -> 3332 bytes
icons/MVHelloKitty2/play.png | 1 +
icons/MVHelloKitty2/play_sel.png | Bin 0 -> 4204 bytes
icons/MVHelloKitty2/prev.png | 1 +
icons/MVHelloKitty2/prev_sel.png | Bin 0 -> 5088 bytes
icons/MVHelloKitty2/radio.png | 1 +
icons/MVHelloKitty2/recording.png | 1 +
icons/MVHelloKitty2/recording_cutted.png | Bin 0 -> 2070 bytes
icons/MVHelloKitty2/recording_cutted_cur.png | Bin 0 -> 2047 bytes
icons/MVHelloKitty2/recording_cutted_extra.png | Bin 0 -> 2132 bytes
icons/MVHelloKitty2/recording_new.png | Bin 0 -> 8359 bytes
icons/MVHelloKitty2/recording_new_cur.png | Bin 0 -> 8339 bytes
icons/MVHelloKitty2/rewind.png | 1 +
icons/MVHelloKitty2/rewind_sel.png | Bin 0 -> 3551 bytes
icons/MVHelloKitty2/sd.png | 1 +
icons/MVHelloKitty2/skip.png | 1 +
icons/MVHelloKitty2/skip_sel.png | Bin 0 -> 4983 bytes
icons/MVHelloKitty2/text_arrowturn.png | 1 +
icons/MVHelloKitty2/text_arrowturn_cur.png | 1 +
icons/MVHelloKitty2/text_arrowturn_sel.png | 1 +
icons/MVHelloKitty2/text_new.png | 1 +
icons/MVHelloKitty2/text_new_cur.png | 1 +
icons/MVHelloKitty2/text_new_sel.png | 1 +
icons/MVHelloKitty2/text_rec.png | 1 +
icons/MVHelloKitty2/text_rec_cur.png | 1 +
icons/MVHelloKitty2/text_rec_sel.png | 1 +
icons/MVHelloKitty2/text_timer_full.png | 1 +
icons/MVHelloKitty2/text_timer_full_cur.png | 1 +
icons/MVHelloKitty2/text_timer_full_sel.png | 1 +
icons/MVHelloKitty2/text_timer_partial.png | 1 +
icons/MVHelloKitty2/text_timer_partial_cur.png | 1 +
icons/MVHelloKitty2/text_timer_partial_sel.png | 1 +
icons/MVHelloKitty2/text_vps.png | 1 +
icons/MVHelloKitty2/text_vps_cur.png | 1 +
icons/MVHelloKitty2/text_vps_sel.png | 1 +
icons/MVHelloKitty2/timerActive.png | 1 +
icons/MVHelloKitty2/timerInactive.png | 1 +
icons/MVHelloKitty2/timerRecording.png | 1 +
icons/MVHelloKitty2/timer_full.png | Bin 0 -> 4800 bytes
icons/MVHelloKitty2/timer_full_cur.png | Bin 0 -> 4778 bytes
icons/MVHelloKitty2/timer_partial.png | Bin 0 -> 2611 bytes
icons/MVHelloKitty2/timer_partial_cur.png | Bin 0 -> 2625 bytes
icons/MVHelloKitty2/topbar_timer.png | 1 +
icons/MVHelloKitty2/topbar_timerconflict_high.png | 1 +
icons/MVHelloKitty2/topbar_timerconflict_low.png | 1 +
icons/MVHelloKitty2/tv.png | 1 +
icons/MVHelloKitty2/uncrypted.png | 1 +
icons/MVHelloKitty2/unknown_asp.png | 1 +
icons/MVHelloKitty2/unknown_res.png | 1 +
icons/MVHelloKitty2/vps.png | Bin 0 -> 5504 bytes
icons/MVHelloKitty2/vps_cur.png | Bin 0 -> 5507 bytes
icons/MVIndigo/1280x720.png | 1 +
icons/MVIndigo/1440x1080.png | 1 +
icons/MVIndigo/169.png | 1 +
icons/MVIndigo/169w.png | 1 +
icons/MVIndigo/1920x1080.png | 1 +
icons/MVIndigo/221.png | 1 +
icons/MVIndigo/352x576.png | 1 +
icons/MVIndigo/43.png | 1 +
icons/MVIndigo/480x576.png | 1 +
icons/MVIndigo/528x576.png | 1 +
icons/MVIndigo/544x576.png | 1 +
icons/MVIndigo/704x576.png | 1 +
icons/MVIndigo/720x576.png | 1 +
icons/MVIndigo/960x720.png | 1 +
icons/MVIndigo/blank.png | 1 +
icons/MVIndigo/changroup.png | Bin 0 -> 750 bytes
icons/MVIndigo/chart1b.png | 1 +
icons/MVIndigo/chart2b.png | 1 +
icons/MVIndigo/chart3b.png | 1 +
icons/MVIndigo/chart4b.png | 1 +
icons/MVIndigo/chart5b.png | 1 +
icons/MVIndigo/chart6b.png | 1 +
icons/MVIndigo/chart7.png | 1 +
icons/MVIndigo/chart7b.png | 1 +
icons/MVIndigo/crypted.png | 1 +
icons/MVIndigo/forward.png | 1 +
icons/MVIndigo/forward_sel.png | Bin 0 -> 3115 bytes
icons/MVIndigo/hd.png | 1 +
icons/MVIndigo/message_error.png | 1 +
icons/MVIndigo/message_info.png | 1 +
icons/MVIndigo/message_status.png | 1 +
icons/MVIndigo/message_warning.png | 1 +
icons/MVIndigo/pause.png | 1 +
icons/MVIndigo/pause_sel.png | Bin 0 -> 2816 bytes
icons/MVIndigo/play.png | 1 +
icons/MVIndigo/play_sel.png | Bin 0 -> 3792 bytes
icons/MVIndigo/prev.png | 1 +
icons/MVIndigo/prev_sel.png | Bin 0 -> 4377 bytes
icons/MVIndigo/radio.png | 1 +
icons/MVIndigo/recording.png | 1 +
icons/MVIndigo/recording_cutted.png | Bin 0 -> 2067 bytes
icons/MVIndigo/recording_cutted_cur.png | 1 +
icons/MVIndigo/recording_cutted_extra.png | Bin 0 -> 2139 bytes
icons/MVIndigo/recording_new.png | Bin 0 -> 7708 bytes
icons/MVIndigo/recording_new_cur.png | 1 +
icons/MVIndigo/rewind.png | 1 +
icons/MVIndigo/rewind_sel.png | Bin 0 -> 3231 bytes
icons/MVIndigo/sd.png | 1 +
icons/MVIndigo/skip.png | 1 +
icons/MVIndigo/skip_sel.png | Bin 0 -> 4331 bytes
icons/MVIndigo/text_arrowturn.png | 1 +
icons/MVIndigo/text_arrowturn_cur.png | 1 +
icons/MVIndigo/text_arrowturn_sel.png | 1 +
icons/MVIndigo/text_new.png | 1 +
icons/MVIndigo/text_new_cur.png | 1 +
icons/MVIndigo/text_new_sel.png | 1 +
icons/MVIndigo/text_rec.png | 1 +
icons/MVIndigo/text_rec_cur.png | 1 +
icons/MVIndigo/text_rec_sel.png | 1 +
icons/MVIndigo/text_timer_full.png | 1 +
icons/MVIndigo/text_timer_full_cur.png | 1 +
icons/MVIndigo/text_timer_full_sel.png | 1 +
icons/MVIndigo/text_timer_partial.png | 1 +
icons/MVIndigo/text_timer_partial_cur.png | 1 +
icons/MVIndigo/text_timer_partial_sel.png | 1 +
icons/MVIndigo/text_vps.png | 1 +
icons/MVIndigo/text_vps_cur.png | 1 +
icons/MVIndigo/text_vps_sel.png | 1 +
icons/MVIndigo/timerActive.png | 1 +
icons/MVIndigo/timerInactive.png | 1 +
icons/MVIndigo/timerRecording.png | 1 +
icons/MVIndigo/timer_full.png | Bin 0 -> 4797 bytes
icons/MVIndigo/timer_full_cur.png | 1 +
icons/MVIndigo/timer_partial.png | Bin 0 -> 2476 bytes
icons/MVIndigo/timer_partial_cur.png | 1 +
icons/MVIndigo/topbar_timer.png | 1 +
icons/MVIndigo/topbar_timerconflict_high.png | 1 +
icons/MVIndigo/topbar_timerconflict_low.png | 1 +
icons/MVIndigo/tv.png | 1 +
icons/MVIndigo/uncrypted.png | 1 +
icons/MVIndigo/unknown_asp.png | 1 +
icons/MVIndigo/unknown_res.png | 1 +
icons/MVIndigo/vps.png | Bin 0 -> 5255 bytes
icons/MVIndigo/vps_cur.png | 1 +
icons/MVLightBlue/1280x720.png | 1 +
icons/MVLightBlue/1440x1080.png | 1 +
icons/MVLightBlue/169.png | 1 +
icons/MVLightBlue/169w.png | 1 +
icons/MVLightBlue/1920x1080.png | 1 +
icons/MVLightBlue/221.png | 1 +
icons/MVLightBlue/352x576.png | 1 +
icons/MVLightBlue/43.png | 1 +
icons/MVLightBlue/480x576.png | 1 +
icons/MVLightBlue/528x576.png | 1 +
icons/MVLightBlue/544x576.png | 1 +
icons/MVLightBlue/704x576.png | 1 +
icons/MVLightBlue/720x576.png | 1 +
icons/MVLightBlue/960x720.png | 1 +
icons/MVLightBlue/blank.png | 1 +
icons/MVLightBlue/changroup.png | Bin 0 -> 745 bytes
icons/MVLightBlue/chart1b.png | 1 +
icons/MVLightBlue/chart2b.png | 1 +
icons/MVLightBlue/chart3b.png | 1 +
icons/MVLightBlue/chart4b.png | 1 +
icons/MVLightBlue/chart5b.png | 1 +
icons/MVLightBlue/chart6b.png | 1 +
icons/MVLightBlue/chart7.png | 1 +
icons/MVLightBlue/chart7b.png | 1 +
icons/MVLightBlue/crypted.png | 1 +
icons/MVLightBlue/forward.png | 1 +
icons/MVLightBlue/forward_sel.png | Bin 0 -> 3165 bytes
icons/MVLightBlue/hd.png | 1 +
icons/MVLightBlue/message_error.png | 1 +
icons/MVLightBlue/message_info.png | 1 +
icons/MVLightBlue/message_status.png | 1 +
icons/MVLightBlue/message_warning.png | 1 +
icons/MVLightBlue/pause.png | 1 +
icons/MVLightBlue/pause_sel.png | Bin 0 -> 3028 bytes
icons/MVLightBlue/play.png | 1 +
icons/MVLightBlue/play_sel.png | Bin 0 -> 3900 bytes
icons/MVLightBlue/prev.png | 1 +
icons/MVLightBlue/prev_sel.png | Bin 0 -> 4538 bytes
icons/MVLightBlue/radio.png | 1 +
icons/MVLightBlue/recording.png | 1 +
icons/MVLightBlue/recording_cutted.png | Bin 0 -> 2069 bytes
icons/MVLightBlue/recording_cutted_cur.png | 1 +
icons/MVLightBlue/recording_cutted_extra.png | Bin 0 -> 2127 bytes
icons/MVLightBlue/recording_new.png | Bin 0 -> 7912 bytes
icons/MVLightBlue/recording_new_cur.png | 1 +
icons/MVLightBlue/rewind.png | 1 +
icons/MVLightBlue/rewind_sel.png | Bin 0 -> 3299 bytes
icons/MVLightBlue/sd.png | 1 +
icons/MVLightBlue/skip.png | 1 +
icons/MVLightBlue/skip_sel.png | Bin 0 -> 4551 bytes
icons/MVLightBlue/text_arrowturn.png | 1 +
icons/MVLightBlue/text_arrowturn_cur.png | 1 +
icons/MVLightBlue/text_arrowturn_sel.png | 1 +
icons/MVLightBlue/text_new.png | 1 +
icons/MVLightBlue/text_new_cur.png | 1 +
icons/MVLightBlue/text_new_sel.png | 1 +
icons/MVLightBlue/text_rec.png | 1 +
icons/MVLightBlue/text_rec_cur.png | 1 +
icons/MVLightBlue/text_rec_sel.png | 1 +
icons/MVLightBlue/text_timer_full.png | 1 +
icons/MVLightBlue/text_timer_full_cur.png | 1 +
icons/MVLightBlue/text_timer_full_sel.png | 1 +
icons/MVLightBlue/text_timer_partial.png | 1 +
icons/MVLightBlue/text_timer_partial_cur.png | 1 +
icons/MVLightBlue/text_timer_partial_sel.png | 1 +
icons/MVLightBlue/text_vps.png | 1 +
icons/MVLightBlue/text_vps_cur.png | 1 +
icons/MVLightBlue/text_vps_sel.png | 1 +
icons/MVLightBlue/timerActive.png | 1 +
icons/MVLightBlue/timerInactive.png | 1 +
icons/MVLightBlue/timerRecording.png | 1 +
icons/MVLightBlue/timer_full.png | Bin 0 -> 4803 bytes
icons/MVLightBlue/timer_full_cur.png | 1 +
icons/MVLightBlue/timer_partial.png | Bin 0 -> 2521 bytes
icons/MVLightBlue/timer_partial_cur.png | 1 +
icons/MVLightBlue/topbar_timer.png | 1 +
icons/MVLightBlue/topbar_timerconflict_high.png | 1 +
icons/MVLightBlue/topbar_timerconflict_low.png | 1 +
icons/MVLightBlue/tv.png | 1 +
icons/MVLightBlue/uncrypted.png | 1 +
icons/MVLightBlue/unknown_asp.png | 1 +
icons/MVLightBlue/unknown_res.png | 1 +
icons/MVLightBlue/vps.png | Bin 0 -> 5331 bytes
icons/MVLightBlue/vps_cur.png | 1 +
icons/MVLightGreen/1280x720.png | 1 +
icons/MVLightGreen/1440x1080.png | 1 +
icons/MVLightGreen/169.png | 1 +
icons/MVLightGreen/169w.png | 1 +
icons/MVLightGreen/1920x1080.png | 1 +
icons/MVLightGreen/221.png | 1 +
icons/MVLightGreen/352x576.png | 1 +
icons/MVLightGreen/43.png | 1 +
icons/MVLightGreen/480x576.png | 1 +
icons/MVLightGreen/528x576.png | 1 +
icons/MVLightGreen/544x576.png | 1 +
icons/MVLightGreen/704x576.png | 1 +
icons/MVLightGreen/720x576.png | 1 +
icons/MVLightGreen/960x720.png | 1 +
icons/MVLightGreen/blank.png | 1 +
icons/MVLightGreen/changroup.png | Bin 0 -> 750 bytes
icons/MVLightGreen/chart1b.png | 1 +
icons/MVLightGreen/chart2b.png | 1 +
icons/MVLightGreen/chart3b.png | 1 +
icons/MVLightGreen/chart4b.png | 1 +
icons/MVLightGreen/chart5b.png | 1 +
icons/MVLightGreen/chart6b.png | 1 +
icons/MVLightGreen/chart7.png | 1 +
icons/MVLightGreen/chart7b.png | 1 +
icons/MVLightGreen/crypted.png | 1 +
icons/MVLightGreen/forward.png | 1 +
icons/MVLightGreen/forward_sel.png | Bin 0 -> 2999 bytes
icons/MVLightGreen/hd.png | 1 +
icons/MVLightGreen/message_error.png | 1 +
icons/MVLightGreen/message_info.png | 1 +
icons/MVLightGreen/message_status.png | 1 +
icons/MVLightGreen/message_warning.png | 1 +
icons/MVLightGreen/pause.png | 1 +
icons/MVLightGreen/pause_sel.png | Bin 0 -> 2792 bytes
icons/MVLightGreen/play.png | 1 +
icons/MVLightGreen/play_sel.png | Bin 0 -> 3694 bytes
icons/MVLightGreen/prev.png | 1 +
icons/MVLightGreen/prev_sel.png | Bin 0 -> 4258 bytes
icons/MVLightGreen/radio.png | 1 +
icons/MVLightGreen/recording.png | 1 +
icons/MVLightGreen/recording_cutted.png | Bin 0 -> 2066 bytes
icons/MVLightGreen/recording_cutted_cur.png | 1 +
icons/MVLightGreen/recording_cutted_extra.png | Bin 0 -> 2138 bytes
icons/MVLightGreen/recording_new.png | Bin 0 -> 7479 bytes
icons/MVLightGreen/recording_new_cur.png | 1 +
icons/MVLightGreen/rewind.png | 1 +
icons/MVLightGreen/rewind_sel.png | Bin 0 -> 3127 bytes
icons/MVLightGreen/sd.png | 1 +
icons/MVLightGreen/skip.png | 1 +
icons/MVLightGreen/skip_sel.png | Bin 0 -> 4206 bytes
icons/MVLightGreen/text_arrowturn.png | 1 +
icons/MVLightGreen/text_arrowturn_cur.png | 1 +
icons/MVLightGreen/text_arrowturn_sel.png | 1 +
icons/MVLightGreen/text_new.png | 1 +
icons/MVLightGreen/text_new_cur.png | 1 +
icons/MVLightGreen/text_new_sel.png | 1 +
icons/MVLightGreen/text_rec.png | 1 +
icons/MVLightGreen/text_rec_cur.png | 1 +
icons/MVLightGreen/text_rec_sel.png | 1 +
icons/MVLightGreen/text_timer_full.png | 1 +
icons/MVLightGreen/text_timer_full_cur.png | 1 +
icons/MVLightGreen/text_timer_full_sel.png | 1 +
icons/MVLightGreen/text_timer_partial.png | 1 +
icons/MVLightGreen/text_timer_partial_cur.png | 1 +
icons/MVLightGreen/text_timer_partial_sel.png | 1 +
icons/MVLightGreen/text_vps.png | 1 +
icons/MVLightGreen/text_vps_cur.png | 1 +
icons/MVLightGreen/text_vps_sel.png | 1 +
icons/MVLightGreen/timerActive.png | 1 +
icons/MVLightGreen/timerInactive.png | 1 +
icons/MVLightGreen/timerRecording.png | 1 +
icons/MVLightGreen/timer_full.png | Bin 0 -> 4796 bytes
icons/MVLightGreen/timer_full_cur.png | 1 +
icons/MVLightGreen/timer_partial.png | Bin 0 -> 2495 bytes
icons/MVLightGreen/timer_partial_cur.png | 1 +
icons/MVLightGreen/topbar_timer.png | 1 +
icons/MVLightGreen/topbar_timerconflict_high.png | 1 +
icons/MVLightGreen/topbar_timerconflict_low.png | 1 +
icons/MVLightGreen/tv.png | 1 +
icons/MVLightGreen/uncrypted.png | 1 +
icons/MVLightGreen/unknown_asp.png | 1 +
icons/MVLightGreen/unknown_res.png | 1 +
icons/MVLightGreen/vps.png | Bin 0 -> 5287 bytes
icons/MVLightGreen/vps_cur.png | 1 +
icons/MVMint/1280x720.png | 1 +
icons/MVMint/1440x1080.png | 1 +
icons/MVMint/169.png | 1 +
icons/MVMint/169w.png | 1 +
icons/MVMint/1920x1080.png | 1 +
icons/MVMint/221.png | 1 +
icons/MVMint/352x576.png | 1 +
icons/MVMint/43.png | 1 +
icons/MVMint/480x576.png | 1 +
icons/MVMint/528x576.png | 1 +
icons/MVMint/544x576.png | 1 +
icons/MVMint/704x576.png | 1 +
icons/MVMint/720x576.png | 1 +
icons/MVMint/960x720.png | 1 +
icons/MVMint/blank.png | 1 +
icons/MVMint/changroup.png | Bin 0 -> 743 bytes
icons/MVMint/chart1b.png | 1 +
icons/MVMint/chart2b.png | 1 +
icons/MVMint/chart3b.png | 1 +
icons/MVMint/chart4b.png | 1 +
icons/MVMint/chart5b.png | 1 +
icons/MVMint/chart6b.png | 1 +
icons/MVMint/chart7.png | 1 +
icons/MVMint/chart7b.png | 1 +
icons/MVMint/crypted.png | 1 +
icons/MVMint/forward.png | 1 +
icons/MVMint/forward_sel.png | Bin 0 -> 2990 bytes
icons/MVMint/hd.png | 1 +
icons/MVMint/message_error.png | 1 +
icons/MVMint/message_info.png | 1 +
icons/MVMint/message_status.png | 1 +
icons/MVMint/message_warning.png | 1 +
icons/MVMint/pause.png | 1 +
icons/MVMint/pause_sel.png | Bin 0 -> 2883 bytes
icons/MVMint/play.png | 1 +
icons/MVMint/play_sel.png | Bin 0 -> 3619 bytes
icons/MVMint/prev.png | 1 +
icons/MVMint/prev_sel.png | Bin 0 -> 4321 bytes
icons/MVMint/radio.png | 1 +
icons/MVMint/recording.png | 1 +
icons/MVMint/recording_cutted.png | Bin 0 -> 2022 bytes
icons/MVMint/recording_cutted_cur.png | 1 +
icons/MVMint/recording_cutted_extra.png | Bin 0 -> 2072 bytes
icons/MVMint/recording_new.png | Bin 0 -> 7442 bytes
icons/MVMint/recording_new_cur.png | 1 +
icons/MVMint/rewind.png | 1 +
icons/MVMint/rewind_sel.png | Bin 0 -> 3100 bytes
icons/MVMint/sd.png | 1 +
icons/MVMint/skip.png | 1 +
icons/MVMint/skip_sel.png | Bin 0 -> 4251 bytes
icons/MVMint/text_arrowturn.png | 1 +
icons/MVMint/text_arrowturn_cur.png | 1 +
icons/MVMint/text_arrowturn_sel.png | 1 +
icons/MVMint/text_new.png | 1 +
icons/MVMint/text_new_cur.png | 1 +
icons/MVMint/text_new_sel.png | 1 +
icons/MVMint/text_rec.png | 1 +
icons/MVMint/text_rec_cur.png | 1 +
icons/MVMint/text_rec_sel.png | 1 +
icons/MVMint/text_timer_full.png | 1 +
icons/MVMint/text_timer_full_cur.png | 1 +
icons/MVMint/text_timer_full_sel.png | 1 +
icons/MVMint/text_timer_partial.png | 1 +
icons/MVMint/text_timer_partial_cur.png | 1 +
icons/MVMint/text_timer_partial_sel.png | 1 +
icons/MVMint/text_vps.png | 1 +
icons/MVMint/text_vps_cur.png | 1 +
icons/MVMint/text_vps_sel.png | 1 +
icons/MVMint/timerActive.png | 1 +
icons/MVMint/timerInactive.png | 1 +
icons/MVMint/timerRecording.png | 1 +
icons/MVMint/timer_full.png | Bin 0 -> 4710 bytes
icons/MVMint/timer_full_cur.png | 1 +
icons/MVMint/timer_partial.png | Bin 0 -> 2375 bytes
icons/MVMint/timer_partial_cur.png | 1 +
icons/MVMint/topbar_timer.png | 1 +
icons/MVMint/topbar_timerconflict_high.png | 1 +
icons/MVMint/topbar_timerconflict_low.png | 1 +
icons/MVMint/tv.png | 1 +
icons/MVMint/uncrypted.png | 1 +
icons/MVMint/unknown_asp.png | 1 +
icons/MVMint/unknown_res.png | 1 +
icons/MVMint/vps.png | Bin 0 -> 5122 bytes
icons/MVMint/vps_cur.png | 1 +
icons/MVNuts/1280x720.png | 1 +
icons/MVNuts/1440x1080.png | 1 +
icons/MVNuts/169.png | 1 +
icons/MVNuts/169w.png | 1 +
icons/MVNuts/1920x1080.png | 1 +
icons/MVNuts/221.png | 1 +
icons/MVNuts/352x576.png | 1 +
icons/MVNuts/43.png | 1 +
icons/MVNuts/480x576.png | 1 +
icons/MVNuts/528x576.png | 1 +
icons/MVNuts/544x576.png | 1 +
icons/MVNuts/704x576.png | 1 +
icons/MVNuts/720x576.png | 1 +
icons/MVNuts/960x720.png | 1 +
icons/MVNuts/blank.png | 1 +
icons/MVNuts/changroup.png | Bin 0 -> 760 bytes
icons/MVNuts/chart1b.png | 1 +
icons/MVNuts/chart2b.png | 1 +
icons/MVNuts/chart3b.png | 1 +
icons/MVNuts/chart4b.png | 1 +
icons/MVNuts/chart5b.png | 1 +
icons/MVNuts/chart6b.png | 1 +
icons/MVNuts/chart7.png | 1 +
icons/MVNuts/chart7b.png | 1 +
icons/MVNuts/crypted.png | 1 +
icons/MVNuts/forward.png | 1 +
icons/MVNuts/forward_sel.png | Bin 0 -> 3114 bytes
icons/MVNuts/hd.png | 1 +
icons/MVNuts/message_error.png | 1 +
icons/MVNuts/message_info.png | 1 +
icons/MVNuts/message_status.png | 1 +
icons/MVNuts/message_warning.png | 1 +
icons/MVNuts/pause.png | 1 +
icons/MVNuts/pause_sel.png | Bin 0 -> 2947 bytes
icons/MVNuts/play.png | 1 +
icons/MVNuts/play_sel.png | Bin 0 -> 3773 bytes
icons/MVNuts/prev.png | 1 +
icons/MVNuts/prev_sel.png | Bin 0 -> 4446 bytes
icons/MVNuts/radio.png | 1 +
icons/MVNuts/recording.png | 1 +
icons/MVNuts/recording_cutted.png | Bin 0 -> 2069 bytes
icons/MVNuts/recording_cutted_cur.png | 1 +
icons/MVNuts/recording_cutted_extra.png | Bin 0 -> 2140 bytes
icons/MVNuts/recording_new.png | Bin 0 -> 7699 bytes
icons/MVNuts/recording_new_cur.png | 1 +
icons/MVNuts/rewind.png | 1 +
icons/MVNuts/rewind_sel.png | Bin 0 -> 3211 bytes
icons/MVNuts/sd.png | 1 +
icons/MVNuts/skip.png | 1 +
icons/MVNuts/skip_sel.png | Bin 0 -> 4426 bytes
icons/MVNuts/text_arrowturn.png | 1 +
icons/MVNuts/text_arrowturn_cur.png | 1 +
icons/MVNuts/text_arrowturn_sel.png | 1 +
icons/MVNuts/text_new.png | 1 +
icons/MVNuts/text_new_cur.png | 1 +
icons/MVNuts/text_new_sel.png | 1 +
icons/MVNuts/text_rec.png | 1 +
icons/MVNuts/text_rec_cur.png | 1 +
icons/MVNuts/text_rec_sel.png | 1 +
icons/MVNuts/text_timer_full.png | 1 +
icons/MVNuts/text_timer_full_cur.png | 1 +
icons/MVNuts/text_timer_full_sel.png | 1 +
icons/MVNuts/text_timer_partial.png | 1 +
icons/MVNuts/text_timer_partial_cur.png | 1 +
icons/MVNuts/text_timer_partial_sel.png | 1 +
icons/MVNuts/text_vps.png | 1 +
icons/MVNuts/text_vps_cur.png | 1 +
icons/MVNuts/text_vps_sel.png | 1 +
icons/MVNuts/timerActive.png | 1 +
icons/MVNuts/timerInactive.png | 1 +
icons/MVNuts/timerRecording.png | 1 +
icons/MVNuts/timer_full.png | Bin 0 -> 4793 bytes
icons/MVNuts/timer_full_cur.png | 1 +
icons/MVNuts/timer_partial.png | Bin 0 -> 2517 bytes
icons/MVNuts/timer_partial_cur.png | 1 +
icons/MVNuts/topbar_timer.png | 1 +
icons/MVNuts/topbar_timerconflict_high.png | 1 +
icons/MVNuts/topbar_timerconflict_low.png | 1 +
icons/MVNuts/tv.png | 1 +
icons/MVNuts/uncrypted.png | 1 +
icons/MVNuts/unknown_asp.png | 1 +
icons/MVNuts/unknown_res.png | 1 +
icons/MVNuts/vps.png | Bin 0 -> 5304 bytes
icons/MVNuts/vps_cur.png | 1 +
icons/MVOlive/1280x720.png | 1 +
icons/MVOlive/1440x1080.png | 1 +
icons/MVOlive/169.png | 1 +
icons/MVOlive/169w.png | 1 +
icons/MVOlive/1920x1080.png | 1 +
icons/MVOlive/221.png | 1 +
icons/MVOlive/352x576.png | 1 +
icons/MVOlive/43.png | 1 +
icons/MVOlive/480x576.png | 1 +
icons/MVOlive/528x576.png | 1 +
icons/MVOlive/544x576.png | 1 +
icons/MVOlive/704x576.png | 1 +
icons/MVOlive/720x576.png | 1 +
icons/MVOlive/960x720.png | 1 +
icons/MVOlive/blank.png | 1 +
icons/MVOlive/changroup.png | Bin 0 -> 764 bytes
icons/MVOlive/chart1b.png | 1 +
icons/MVOlive/chart2b.png | 1 +
icons/MVOlive/chart3b.png | 1 +
icons/MVOlive/chart4b.png | 1 +
icons/MVOlive/chart5b.png | 1 +
icons/MVOlive/chart6b.png | 1 +
icons/MVOlive/chart7.png | 1 +
icons/MVOlive/chart7b.png | 1 +
icons/MVOlive/crypted.png | 1 +
icons/MVOlive/forward.png | 1 +
icons/MVOlive/forward_sel.png | Bin 0 -> 3163 bytes
icons/MVOlive/hd.png | 1 +
icons/MVOlive/message_error.png | 1 +
icons/MVOlive/message_info.png | 1 +
icons/MVOlive/message_status.png | 1 +
icons/MVOlive/message_warning.png | 1 +
icons/MVOlive/pause.png | 1 +
icons/MVOlive/pause_sel.png | Bin 0 -> 2900 bytes
icons/MVOlive/play.png | 1 +
icons/MVOlive/play_sel.png | Bin 0 -> 3833 bytes
icons/MVOlive/prev.png | 1 +
icons/MVOlive/prev_sel.png | Bin 0 -> 4493 bytes
icons/MVOlive/radio.png | 1 +
icons/MVOlive/recording.png | 1 +
icons/MVOlive/recording_cutted.png | Bin 0 -> 2067 bytes
icons/MVOlive/recording_cutted_cur.png | 1 +
icons/MVOlive/recording_cutted_extra.png | Bin 0 -> 2140 bytes
icons/MVOlive/recording_new.png | Bin 0 -> 7739 bytes
icons/MVOlive/recording_new_cur.png | 1 +
icons/MVOlive/rewind.png | 1 +
icons/MVOlive/rewind_sel.png | Bin 0 -> 3265 bytes
icons/MVOlive/sd.png | 1 +
icons/MVOlive/skip.png | 1 +
icons/MVOlive/skip_sel.png | Bin 0 -> 4405 bytes
icons/MVOlive/text_arrowturn.png | 1 +
icons/MVOlive/text_arrowturn_cur.png | 1 +
icons/MVOlive/text_arrowturn_sel.png | 1 +
icons/MVOlive/text_new.png | 1 +
icons/MVOlive/text_new_cur.png | 1 +
icons/MVOlive/text_new_sel.png | 1 +
icons/MVOlive/text_rec.png | 1 +
icons/MVOlive/text_rec_cur.png | 1 +
icons/MVOlive/text_rec_sel.png | 1 +
icons/MVOlive/text_timer_full.png | 1 +
icons/MVOlive/text_timer_full_cur.png | 1 +
icons/MVOlive/text_timer_full_sel.png | 1 +
icons/MVOlive/text_timer_partial.png | 1 +
icons/MVOlive/text_timer_partial_cur.png | 1 +
icons/MVOlive/text_timer_partial_sel.png | 1 +
icons/MVOlive/text_vps.png | 1 +
icons/MVOlive/text_vps_cur.png | 1 +
icons/MVOlive/text_vps_sel.png | 1 +
icons/MVOlive/timerActive.png | 1 +
icons/MVOlive/timerInactive.png | 1 +
icons/MVOlive/timerRecording.png | 1 +
icons/MVOlive/timer_full.png | Bin 0 -> 4881 bytes
icons/MVOlive/timer_full_cur.png | 1 +
icons/MVOlive/timer_partial.png | Bin 0 -> 2549 bytes
icons/MVOlive/timer_partial_cur.png | 1 +
icons/MVOlive/topbar_timer.png | 1 +
icons/MVOlive/topbar_timerconflict_high.png | 1 +
icons/MVOlive/topbar_timerconflict_low.png | 1 +
icons/MVOlive/tv.png | 1 +
icons/MVOlive/uncrypted.png | 1 +
icons/MVOlive/unknown_asp.png | 1 +
icons/MVOlive/unknown_res.png | 1 +
icons/MVOlive/vps.png | Bin 0 -> 5439 bytes
icons/MVOlive/vps_cur.png | 1 +
icons/MVOrange/1280x720.png | 1 +
icons/MVOrange/1440x1080.png | 1 +
icons/MVOrange/169.png | 1 +
icons/MVOrange/169w.png | 1 +
icons/MVOrange/1920x1080.png | 1 +
icons/MVOrange/221.png | 1 +
icons/MVOrange/352x576.png | 1 +
icons/MVOrange/43.png | 1 +
icons/MVOrange/480x576.png | 1 +
icons/MVOrange/528x576.png | 1 +
icons/MVOrange/544x576.png | 1 +
icons/MVOrange/704x576.png | 1 +
icons/MVOrange/720x576.png | 1 +
icons/MVOrange/960x720.png | 1 +
icons/MVOrange/blank.png | 1 +
icons/MVOrange/changroup.png | Bin 0 -> 744 bytes
icons/MVOrange/chart1b.png | 1 +
icons/MVOrange/chart2b.png | 1 +
icons/MVOrange/chart3b.png | 1 +
icons/MVOrange/chart4b.png | 1 +
icons/MVOrange/chart5b.png | 1 +
icons/MVOrange/chart6b.png | 1 +
icons/MVOrange/chart7.png | 1 +
icons/MVOrange/chart7b.png | 1 +
icons/MVOrange/crypted.png | 1 +
icons/MVOrange/forward.png | 1 +
icons/MVOrange/forward_sel.png | Bin 0 -> 3165 bytes
icons/MVOrange/hd.png | 1 +
icons/MVOrange/message_error.png | 1 +
icons/MVOrange/message_info.png | 1 +
icons/MVOrange/message_status.png | 1 +
icons/MVOrange/message_warning.png | 1 +
icons/MVOrange/pause.png | 1 +
icons/MVOrange/pause_sel.png | Bin 0 -> 3013 bytes
icons/MVOrange/play.png | 1 +
icons/MVOrange/play_sel.png | Bin 0 -> 3829 bytes
icons/MVOrange/prev.png | 1 +
icons/MVOrange/prev_sel.png | Bin 0 -> 4530 bytes
icons/MVOrange/radio.png | 1 +
icons/MVOrange/recording.png | 1 +
icons/MVOrange/recording_cutted.png | Bin 0 -> 2074 bytes
icons/MVOrange/recording_cutted_cur.png | 1 +
icons/MVOrange/recording_cutted_extra.png | Bin 0 -> 2112 bytes
icons/MVOrange/recording_new.png | Bin 0 -> 7773 bytes
icons/MVOrange/recording_new_cur.png | 1 +
icons/MVOrange/rewind.png | 1 +
icons/MVOrange/rewind_sel.png | Bin 0 -> 3224 bytes
icons/MVOrange/sd.png | 1 +
icons/MVOrange/skip.png | 1 +
icons/MVOrange/skip_sel.png | Bin 0 -> 4521 bytes
icons/MVOrange/text_arrowturn.png | 1 +
icons/MVOrange/text_arrowturn_cur.png | 1 +
icons/MVOrange/text_arrowturn_sel.png | 1 +
icons/MVOrange/text_new.png | 1 +
icons/MVOrange/text_new_cur.png | 1 +
icons/MVOrange/text_new_sel.png | 1 +
icons/MVOrange/text_rec.png | 1 +
icons/MVOrange/text_rec_cur.png | 1 +
icons/MVOrange/text_rec_sel.png | 1 +
icons/MVOrange/text_timer_full.png | 1 +
icons/MVOrange/text_timer_full_cur.png | 1 +
icons/MVOrange/text_timer_full_sel.png | 1 +
icons/MVOrange/text_timer_partial.png | 1 +
icons/MVOrange/text_timer_partial_cur.png | 1 +
icons/MVOrange/text_timer_partial_sel.png | 1 +
icons/MVOrange/text_vps.png | 1 +
icons/MVOrange/text_vps_cur.png | 1 +
icons/MVOrange/text_vps_sel.png | 1 +
icons/MVOrange/timerActive.png | 1 +
icons/MVOrange/timerInactive.png | 1 +
icons/MVOrange/timerRecording.png | 1 +
icons/MVOrange/timer_full.png | Bin 0 -> 4792 bytes
icons/MVOrange/timer_full_cur.png | 1 +
icons/MVOrange/timer_partial.png | Bin 0 -> 2483 bytes
icons/MVOrange/timer_partial_cur.png | 1 +
icons/MVOrange/topbar_timer.png | 1 +
icons/MVOrange/topbar_timerconflict_high.png | 1 +
icons/MVOrange/topbar_timerconflict_low.png | 1 +
icons/MVOrange/tv.png | 1 +
icons/MVOrange/uncrypted.png | 1 +
icons/MVOrange/unknown_asp.png | 1 +
icons/MVOrange/unknown_res.png | 1 +
icons/MVOrange/vps.png | Bin 0 -> 5326 bytes
icons/MVOrange/vps_cur.png | 1 +
icons/MVPflaume/1280x720.png | 1 +
icons/MVPflaume/1440x1080.png | 1 +
icons/MVPflaume/169.png | 1 +
icons/MVPflaume/169w.png | 1 +
icons/MVPflaume/1920x1080.png | 1 +
icons/MVPflaume/221.png | 1 +
icons/MVPflaume/352x576.png | 1 +
icons/MVPflaume/43.png | 1 +
icons/MVPflaume/480x576.png | 1 +
icons/MVPflaume/528x576.png | 1 +
icons/MVPflaume/544x576.png | 1 +
icons/MVPflaume/704x576.png | 1 +
icons/MVPflaume/720x576.png | 1 +
icons/MVPflaume/960x720.png | 1 +
icons/MVPflaume/blank.png | 1 +
icons/MVPflaume/changroup.png | Bin 0 -> 741 bytes
icons/MVPflaume/chart1b.png | 1 +
icons/MVPflaume/chart2b.png | 1 +
icons/MVPflaume/chart3b.png | 1 +
icons/MVPflaume/chart4b.png | 1 +
icons/MVPflaume/chart5b.png | 1 +
icons/MVPflaume/chart6b.png | 1 +
icons/MVPflaume/chart7.png | 1 +
icons/MVPflaume/chart7b.png | 1 +
icons/MVPflaume/crypted.png | 1 +
icons/MVPflaume/forward.png | 1 +
icons/MVPflaume/forward_sel.png | Bin 0 -> 2953 bytes
icons/MVPflaume/hd.png | 1 +
icons/MVPflaume/message_error.png | 1 +
icons/MVPflaume/message_info.png | 1 +
icons/MVPflaume/message_status.png | 1 +
icons/MVPflaume/message_warning.png | 1 +
icons/MVPflaume/pause.png | 1 +
icons/MVPflaume/pause_sel.png | Bin 0 -> 2779 bytes
icons/MVPflaume/play.png | 1 +
icons/MVPflaume/play_sel.png | Bin 0 -> 3561 bytes
icons/MVPflaume/prev.png | 1 +
icons/MVPflaume/prev_sel.png | Bin 0 -> 4119 bytes
icons/MVPflaume/radio.png | 1 +
icons/MVPflaume/recording.png | 1 +
icons/MVPflaume/recording_cutted.png | Bin 0 -> 2013 bytes
icons/MVPflaume/recording_cutted_cur.png | 1 +
icons/MVPflaume/recording_cutted_extra.png | Bin 0 -> 2051 bytes
icons/MVPflaume/recording_new.png | Bin 0 -> 7381 bytes
icons/MVPflaume/recording_new_cur.png | 1 +
icons/MVPflaume/rewind.png | 1 +
icons/MVPflaume/rewind_sel.png | Bin 0 -> 3044 bytes
icons/MVPflaume/sd.png | 1 +
icons/MVPflaume/skip.png | 1 +
icons/MVPflaume/skip_sel.png | Bin 0 -> 4115 bytes
icons/MVPflaume/text_arrowturn.png | 1 +
icons/MVPflaume/text_arrowturn_cur.png | 1 +
icons/MVPflaume/text_arrowturn_sel.png | 1 +
icons/MVPflaume/text_new.png | 1 +
icons/MVPflaume/text_new_cur.png | 1 +
icons/MVPflaume/text_new_sel.png | 1 +
icons/MVPflaume/text_rec.png | 1 +
icons/MVPflaume/text_rec_cur.png | 1 +
icons/MVPflaume/text_rec_sel.png | 1 +
icons/MVPflaume/text_timer_full.png | 1 +
icons/MVPflaume/text_timer_full_cur.png | 1 +
icons/MVPflaume/text_timer_full_sel.png | 1 +
icons/MVPflaume/text_timer_partial.png | 1 +
icons/MVPflaume/text_timer_partial_cur.png | 1 +
icons/MVPflaume/text_timer_partial_sel.png | 1 +
icons/MVPflaume/text_vps.png | 1 +
icons/MVPflaume/text_vps_cur.png | 1 +
icons/MVPflaume/text_vps_sel.png | 1 +
icons/MVPflaume/timerActive.png | 1 +
icons/MVPflaume/timerInactive.png | 1 +
icons/MVPflaume/timerRecording.png | 1 +
icons/MVPflaume/timer_full.png | Bin 0 -> 4685 bytes
icons/MVPflaume/timer_full_cur.png | 1 +
icons/MVPflaume/timer_partial.png | Bin 0 -> 2334 bytes
icons/MVPflaume/timer_partial_cur.png | 1 +
icons/MVPflaume/topbar_timer.png | 1 +
icons/MVPflaume/topbar_timerconflict_high.png | 1 +
icons/MVPflaume/topbar_timerconflict_low.png | 1 +
icons/MVPflaume/tv.png | 1 +
icons/MVPflaume/uncrypted.png | 1 +
icons/MVPflaume/unknown_asp.png | 1 +
icons/MVPflaume/unknown_res.png | 1 +
icons/MVPflaume/vps.png | Bin 0 -> 5011 bytes
icons/MVPflaume/vps_cur.png | 1 +
icons/MVPumpkin/1280x720.png | 1 +
icons/MVPumpkin/1440x1080.png | 1 +
icons/MVPumpkin/169.png | 1 +
icons/MVPumpkin/169w.png | 1 +
icons/MVPumpkin/1920x1080.png | 1 +
icons/MVPumpkin/221.png | 1 +
icons/MVPumpkin/352x576.png | 1 +
icons/MVPumpkin/43.png | 1 +
icons/MVPumpkin/480x576.png | 1 +
icons/MVPumpkin/528x576.png | 1 +
icons/MVPumpkin/544x576.png | 1 +
icons/MVPumpkin/704x576.png | 1 +
icons/MVPumpkin/720x576.png | 1 +
icons/MVPumpkin/960x720.png | 1 +
icons/MVPumpkin/blank.png | 1 +
icons/MVPumpkin/changroup.png | Bin 0 -> 744 bytes
icons/MVPumpkin/chart1b.png | 1 +
icons/MVPumpkin/chart2b.png | 1 +
icons/MVPumpkin/chart3b.png | 1 +
icons/MVPumpkin/chart4b.png | 1 +
icons/MVPumpkin/chart5b.png | 1 +
icons/MVPumpkin/chart6b.png | 1 +
icons/MVPumpkin/chart7.png | 1 +
icons/MVPumpkin/chart7b.png | 1 +
icons/MVPumpkin/crypted.png | 1 +
icons/MVPumpkin/forward.png | 1 +
icons/MVPumpkin/forward_sel.png | Bin 0 -> 3165 bytes
icons/MVPumpkin/hd.png | 1 +
icons/MVPumpkin/message_error.png | 1 +
icons/MVPumpkin/message_info.png | 1 +
icons/MVPumpkin/message_status.png | 1 +
icons/MVPumpkin/message_warning.png | 1 +
icons/MVPumpkin/pause.png | 1 +
icons/MVPumpkin/pause_sel.png | Bin 0 -> 3013 bytes
icons/MVPumpkin/play.png | 1 +
icons/MVPumpkin/play_sel.png | Bin 0 -> 3829 bytes
icons/MVPumpkin/prev.png | 1 +
icons/MVPumpkin/prev_sel.png | Bin 0 -> 4530 bytes
icons/MVPumpkin/radio.png | 1 +
icons/MVPumpkin/recording.png | 1 +
icons/MVPumpkin/recording_cutted.png | Bin 0 -> 2074 bytes
icons/MVPumpkin/recording_cutted_cur.png | 1 +
icons/MVPumpkin/recording_cutted_extra.png | Bin 0 -> 2112 bytes
icons/MVPumpkin/recording_new.png | Bin 0 -> 7773 bytes
icons/MVPumpkin/recording_new_cur.png | 1 +
icons/MVPumpkin/rewind.png | 1 +
icons/MVPumpkin/rewind_sel.png | Bin 0 -> 3224 bytes
icons/MVPumpkin/sd.png | 1 +
icons/MVPumpkin/skip.png | 1 +
icons/MVPumpkin/skip_sel.png | Bin 0 -> 4521 bytes
icons/MVPumpkin/text_arrowturn.png | 1 +
icons/MVPumpkin/text_arrowturn_cur.png | 1 +
icons/MVPumpkin/text_arrowturn_sel.png | 1 +
icons/MVPumpkin/text_new.png | 1 +
icons/MVPumpkin/text_new_cur.png | 1 +
icons/MVPumpkin/text_new_sel.png | 1 +
icons/MVPumpkin/text_rec.png | 1 +
icons/MVPumpkin/text_rec_cur.png | 1 +
icons/MVPumpkin/text_rec_sel.png | 1 +
icons/MVPumpkin/text_timer_full.png | 1 +
icons/MVPumpkin/text_timer_full_cur.png | 1 +
icons/MVPumpkin/text_timer_full_sel.png | 1 +
icons/MVPumpkin/text_timer_partial.png | 1 +
icons/MVPumpkin/text_timer_partial_cur.png | 1 +
icons/MVPumpkin/text_timer_partial_sel.png | 1 +
icons/MVPumpkin/text_vps.png | 1 +
icons/MVPumpkin/text_vps_cur.png | 1 +
icons/MVPumpkin/text_vps_sel.png | 1 +
icons/MVPumpkin/timerActive.png | 1 +
icons/MVPumpkin/timerInactive.png | 1 +
icons/MVPumpkin/timerRecording.png | 1 +
icons/MVPumpkin/timer_full.png | Bin 0 -> 4792 bytes
icons/MVPumpkin/timer_full_cur.png | 1 +
icons/MVPumpkin/timer_partial.png | Bin 0 -> 2483 bytes
icons/MVPumpkin/timer_partial_cur.png | 1 +
icons/MVPumpkin/topbar_timer.png | 1 +
icons/MVPumpkin/topbar_timerconflict_high.png | 1 +
icons/MVPumpkin/topbar_timerconflict_low.png | 1 +
icons/MVPumpkin/tv.png | 1 +
icons/MVPumpkin/uncrypted.png | 1 +
icons/MVPumpkin/unknown_asp.png | 1 +
icons/MVPumpkin/unknown_res.png | 1 +
icons/MVPumpkin/vps.png | Bin 0 -> 5326 bytes
icons/MVPumpkin/vps_cur.png | 1 +
icons/MVPurple/1280x720.png | 1 +
icons/MVPurple/1440x1080.png | 1 +
icons/MVPurple/169.png | 1 +
icons/MVPurple/169w.png | 1 +
icons/MVPurple/1920x1080.png | 1 +
icons/MVPurple/221.png | 1 +
icons/MVPurple/352x576.png | 1 +
icons/MVPurple/43.png | 1 +
icons/MVPurple/480x576.png | 1 +
icons/MVPurple/528x576.png | 1 +
icons/MVPurple/544x576.png | 1 +
icons/MVPurple/704x576.png | 1 +
icons/MVPurple/720x576.png | 1 +
icons/MVPurple/960x720.png | 1 +
icons/MVPurple/blank.png | 1 +
icons/MVPurple/changroup.png | Bin 0 -> 759 bytes
icons/MVPurple/chart1b.png | 1 +
icons/MVPurple/chart2b.png | 1 +
icons/MVPurple/chart3b.png | 1 +
icons/MVPurple/chart4b.png | 1 +
icons/MVPurple/chart5b.png | 1 +
icons/MVPurple/chart6b.png | 1 +
icons/MVPurple/chart7.png | 1 +
icons/MVPurple/chart7b.png | 1 +
icons/MVPurple/crypted.png | 1 +
icons/MVPurple/forward.png | 1 +
icons/MVPurple/forward_sel.png | Bin 0 -> 2980 bytes
icons/MVPurple/hd.png | 1 +
icons/MVPurple/message_error.png | 1 +
icons/MVPurple/message_info.png | 1 +
icons/MVPurple/message_status.png | 1 +
icons/MVPurple/message_warning.png | 1 +
icons/MVPurple/pause.png | 1 +
icons/MVPurple/pause_sel.png | Bin 0 -> 2676 bytes
icons/MVPurple/play.png | 1 +
icons/MVPurple/play_sel.png | Bin 0 -> 3595 bytes
icons/MVPurple/prev.png | 1 +
icons/MVPurple/prev_sel.png | Bin 0 -> 4133 bytes
icons/MVPurple/radio.png | 1 +
icons/MVPurple/recording.png | 1 +
icons/MVPurple/recording_cutted.png | Bin 0 -> 2066 bytes
icons/MVPurple/recording_cutted_cur.png | 1 +
icons/MVPurple/recording_cutted_extra.png | Bin 0 -> 2138 bytes
icons/MVPurple/recording_new.png | Bin 0 -> 7396 bytes
icons/MVPurple/recording_new_cur.png | 1 +
icons/MVPurple/rewind.png | 1 +
icons/MVPurple/rewind_sel.png | Bin 0 -> 3088 bytes
icons/MVPurple/sd.png | 1 +
icons/MVPurple/skip.png | 1 +
icons/MVPurple/skip_sel.png | Bin 0 -> 4083 bytes
icons/MVPurple/text_arrowturn.png | 1 +
icons/MVPurple/text_arrowturn_cur.png | 1 +
icons/MVPurple/text_arrowturn_sel.png | 1 +
icons/MVPurple/text_new.png | 1 +
icons/MVPurple/text_new_cur.png | 1 +
icons/MVPurple/text_new_sel.png | 1 +
icons/MVPurple/text_rec.png | 1 +
icons/MVPurple/text_rec_cur.png | 1 +
icons/MVPurple/text_rec_sel.png | 1 +
icons/MVPurple/text_timer_full.png | 1 +
icons/MVPurple/text_timer_full_cur.png | 1 +
icons/MVPurple/text_timer_full_sel.png | 1 +
icons/MVPurple/text_timer_partial.png | 1 +
icons/MVPurple/text_timer_partial_cur.png | 1 +
icons/MVPurple/text_timer_partial_sel.png | 1 +
icons/MVPurple/text_vps.png | 1 +
icons/MVPurple/text_vps_cur.png | 1 +
icons/MVPurple/text_vps_sel.png | 1 +
icons/MVPurple/timerActive.png | 1 +
icons/MVPurple/timerInactive.png | 1 +
icons/MVPurple/timerRecording.png | 1 +
icons/MVPurple/timer_full.png | Bin 0 -> 4788 bytes
icons/MVPurple/timer_full_cur.png | 1 +
icons/MVPurple/timer_partial.png | Bin 0 -> 2440 bytes
icons/MVPurple/timer_partial_cur.png | 1 +
icons/MVPurple/topbar_timer.png | 1 +
icons/MVPurple/topbar_timerconflict_high.png | 1 +
icons/MVPurple/topbar_timerconflict_low.png | 1 +
icons/MVPurple/tv.png | 1 +
icons/MVPurple/uncrypted.png | 1 +
icons/MVPurple/unknown_asp.png | 1 +
icons/MVPurple/unknown_res.png | 1 +
icons/MVPurple/vps.png | Bin 0 -> 5195 bytes
icons/MVPurple/vps_cur.png | 1 +
icons/MVPurpleGrey/1280x720.png | 1 +
icons/MVPurpleGrey/1440x1080.png | 1 +
icons/MVPurpleGrey/169.png | 1 +
icons/MVPurpleGrey/169w.png | 1 +
icons/MVPurpleGrey/1920x1080.png | 1 +
icons/MVPurpleGrey/221.png | 1 +
icons/MVPurpleGrey/352x576.png | 1 +
icons/MVPurpleGrey/43.png | 1 +
icons/MVPurpleGrey/480x576.png | 1 +
icons/MVPurpleGrey/528x576.png | 1 +
icons/MVPurpleGrey/544x576.png | 1 +
icons/MVPurpleGrey/704x576.png | 1 +
icons/MVPurpleGrey/720x576.png | 1 +
icons/MVPurpleGrey/960x720.png | 1 +
icons/MVPurpleGrey/blank.png | 1 +
icons/MVPurpleGrey/changroup.png | Bin 0 -> 764 bytes
icons/MVPurpleGrey/chart1b.png | 1 +
icons/MVPurpleGrey/chart2b.png | 1 +
icons/MVPurpleGrey/chart3b.png | 1 +
icons/MVPurpleGrey/chart4b.png | 1 +
icons/MVPurpleGrey/chart5b.png | 1 +
icons/MVPurpleGrey/chart6b.png | 1 +
icons/MVPurpleGrey/chart7.png | 1 +
icons/MVPurpleGrey/chart7b.png | 1 +
icons/MVPurpleGrey/crypted.png | 1 +
icons/MVPurpleGrey/forward.png | 1 +
icons/MVPurpleGrey/forward_sel.png | Bin 0 -> 3155 bytes
icons/MVPurpleGrey/hd.png | 1 +
icons/MVPurpleGrey/message_error.png | 1 +
icons/MVPurpleGrey/message_info.png | 1 +
icons/MVPurpleGrey/message_status.png | 1 +
icons/MVPurpleGrey/message_warning.png | 1 +
icons/MVPurpleGrey/pause.png | 1 +
icons/MVPurpleGrey/pause_sel.png | Bin 0 -> 2948 bytes
icons/MVPurpleGrey/play.png | 1 +
icons/MVPurpleGrey/play_sel.png | Bin 0 -> 3853 bytes
icons/MVPurpleGrey/prev.png | 1 +
icons/MVPurpleGrey/prev_sel.png | Bin 0 -> 4531 bytes
icons/MVPurpleGrey/radio.png | 1 +
icons/MVPurpleGrey/recording.png | 1 +
icons/MVPurpleGrey/recording_cutted.png | Bin 0 -> 2050 bytes
icons/MVPurpleGrey/recording_cutted_cur.png | 1 +
icons/MVPurpleGrey/recording_cutted_extra.png | Bin 0 -> 2116 bytes
icons/MVPurpleGrey/recording_new.png | Bin 0 -> 7854 bytes
icons/MVPurpleGrey/recording_new_cur.png | 1 +
icons/MVPurpleGrey/rewind.png | 1 +
icons/MVPurpleGrey/rewind_sel.png | Bin 0 -> 3281 bytes
icons/MVPurpleGrey/sd.png | 1 +
icons/MVPurpleGrey/skip.png | 1 +
icons/MVPurpleGrey/skip_sel.png | Bin 0 -> 4460 bytes
icons/MVPurpleGrey/text_arrowturn.png | 1 +
icons/MVPurpleGrey/text_arrowturn_cur.png | 1 +
icons/MVPurpleGrey/text_arrowturn_sel.png | 1 +
icons/MVPurpleGrey/text_new.png | 1 +
icons/MVPurpleGrey/text_new_cur.png | 1 +
icons/MVPurpleGrey/text_new_sel.png | 1 +
icons/MVPurpleGrey/text_rec.png | 1 +
icons/MVPurpleGrey/text_rec_cur.png | 1 +
icons/MVPurpleGrey/text_rec_sel.png | 1 +
icons/MVPurpleGrey/text_timer_full.png | 1 +
icons/MVPurpleGrey/text_timer_full_cur.png | 1 +
icons/MVPurpleGrey/text_timer_full_sel.png | 1 +
icons/MVPurpleGrey/text_timer_partial.png | 1 +
icons/MVPurpleGrey/text_timer_partial_cur.png | 1 +
icons/MVPurpleGrey/text_timer_partial_sel.png | 1 +
icons/MVPurpleGrey/text_vps.png | 1 +
icons/MVPurpleGrey/text_vps_cur.png | 1 +
icons/MVPurpleGrey/text_vps_sel.png | 1 +
icons/MVPurpleGrey/timerActive.png | 1 +
icons/MVPurpleGrey/timerInactive.png | 1 +
icons/MVPurpleGrey/timerRecording.png | 1 +
icons/MVPurpleGrey/timer_full.png | Bin 0 -> 4808 bytes
icons/MVPurpleGrey/timer_full_cur.png | 1 +
icons/MVPurpleGrey/timer_partial.png | Bin 0 -> 2547 bytes
icons/MVPurpleGrey/timer_partial_cur.png | 1 +
icons/MVPurpleGrey/topbar_timer.png | 1 +
icons/MVPurpleGrey/topbar_timerconflict_high.png | 1 +
icons/MVPurpleGrey/topbar_timerconflict_low.png | 1 +
icons/MVPurpleGrey/tv.png | 1 +
icons/MVPurpleGrey/uncrypted.png | 1 +
icons/MVPurpleGrey/unknown_asp.png | 1 +
icons/MVPurpleGrey/unknown_res.png | 1 +
icons/MVPurpleGrey/vps.png | Bin 0 -> 5401 bytes
icons/MVPurpleGrey/vps_cur.png | 1 +
icons/MVRauchglas/1280x720.png | 1 +
icons/MVRauchglas/1440x1080.png | 1 +
icons/MVRauchglas/169.png | 1 +
icons/MVRauchglas/169w.png | 1 +
icons/MVRauchglas/1920x1080.png | 1 +
icons/MVRauchglas/221.png | 1 +
icons/MVRauchglas/352x576.png | 1 +
icons/MVRauchglas/43.png | 1 +
icons/MVRauchglas/480x576.png | 1 +
icons/MVRauchglas/528x576.png | 1 +
icons/MVRauchglas/544x576.png | 1 +
icons/MVRauchglas/704x576.png | 1 +
icons/MVRauchglas/720x576.png | 1 +
icons/MVRauchglas/960x720.png | 1 +
icons/MVRauchglas/blank.png | 1 +
icons/MVRauchglas/changroup.png | Bin 0 -> 761 bytes
icons/MVRauchglas/chart1b.png | 1 +
icons/MVRauchglas/chart2b.png | 1 +
icons/MVRauchglas/chart3b.png | 1 +
icons/MVRauchglas/chart4b.png | 1 +
icons/MVRauchglas/chart5b.png | 1 +
icons/MVRauchglas/chart6b.png | 1 +
icons/MVRauchglas/chart7.png | 1 +
icons/MVRauchglas/chart7b.png | 1 +
icons/MVRauchglas/crypted.png | 1 +
icons/MVRauchglas/forward.png | 1 +
icons/MVRauchglas/forward_sel.png | Bin 0 -> 2978 bytes
icons/MVRauchglas/hd.png | 1 +
icons/MVRauchglas/message_error.png | 1 +
icons/MVRauchglas/message_info.png | 1 +
icons/MVRauchglas/message_status.png | 1 +
icons/MVRauchglas/message_warning.png | 1 +
icons/MVRauchglas/pause.png | 1 +
icons/MVRauchglas/pause_sel.png | Bin 0 -> 2700 bytes
icons/MVRauchglas/play.png | 1 +
icons/MVRauchglas/play_sel.png | Bin 0 -> 3608 bytes
icons/MVRauchglas/prev.png | 1 +
icons/MVRauchglas/prev_sel.png | Bin 0 -> 4156 bytes
icons/MVRauchglas/radio.png | 1 +
icons/MVRauchglas/recording.png | 1 +
icons/MVRauchglas/recording_cutted.png | Bin 0 -> 2065 bytes
icons/MVRauchglas/recording_cutted_cur.png | Bin 0 -> 2094 bytes
icons/MVRauchglas/recording_cutted_extra.png | Bin 0 -> 2142 bytes
icons/MVRauchglas/recording_new.png | Bin 0 -> 7425 bytes
icons/MVRauchglas/recording_new_cur.png | Bin 0 -> 5512 bytes
icons/MVRauchglas/rewind.png | 1 +
icons/MVRauchglas/rewind_sel.png | Bin 0 -> 3057 bytes
icons/MVRauchglas/sd.png | 1 +
icons/MVRauchglas/skip.png | 1 +
icons/MVRauchglas/skip_sel.png | Bin 0 -> 4127 bytes
icons/MVRauchglas/text_arrowturn.png | 1 +
icons/MVRauchglas/text_arrowturn_cur.png | 1 +
icons/MVRauchglas/text_arrowturn_sel.png | 1 +
icons/MVRauchglas/text_new.png | 1 +
icons/MVRauchglas/text_new_cur.png | 1 +
icons/MVRauchglas/text_new_sel.png | 1 +
icons/MVRauchglas/text_rec.png | 1 +
icons/MVRauchglas/text_rec_cur.png | 1 +
icons/MVRauchglas/text_rec_sel.png | 1 +
icons/MVRauchglas/text_timer_full.png | 1 +
icons/MVRauchglas/text_timer_full_cur.png | 1 +
icons/MVRauchglas/text_timer_full_sel.png | 1 +
icons/MVRauchglas/text_timer_partial.png | 1 +
icons/MVRauchglas/text_timer_partial_cur.png | 1 +
icons/MVRauchglas/text_timer_partial_sel.png | 1 +
icons/MVRauchglas/text_vps.png | 1 +
icons/MVRauchglas/text_vps_cur.png | 1 +
icons/MVRauchglas/text_vps_sel.png | 1 +
icons/MVRauchglas/timerActive.png | 1 +
icons/MVRauchglas/timerInactive.png | 1 +
icons/MVRauchglas/timerRecording.png | 1 +
icons/MVRauchglas/timer_full.png | Bin 0 -> 4884 bytes
icons/MVRauchglas/timer_full_cur.png | Bin 0 -> 4913 bytes
icons/MVRauchglas/timer_partial.png | Bin 0 -> 2516 bytes
icons/MVRauchglas/timer_partial_cur.png | Bin 0 -> 2193 bytes
icons/MVRauchglas/topbar_timer.png | 1 +
icons/MVRauchglas/topbar_timerconflict_high.png | 1 +
icons/MVRauchglas/topbar_timerconflict_low.png | 1 +
icons/MVRauchglas/tv.png | 1 +
icons/MVRauchglas/uncrypted.png | 1 +
icons/MVRauchglas/unknown_asp.png | 1 +
icons/MVRauchglas/unknown_res.png | 1 +
icons/MVRauchglas/vps.png | Bin 0 -> 5432 bytes
icons/MVRauchglas/vps_cur.png | Bin 0 -> 4830 bytes
icons/MVRed/1280x720.png | 1 +
icons/MVRed/1440x1080.png | 1 +
icons/MVRed/169.png | 1 +
icons/MVRed/169w.png | 1 +
icons/MVRed/1920x1080.png | 1 +
icons/MVRed/221.png | 1 +
icons/MVRed/352x576.png | 1 +
icons/MVRed/43.png | 1 +
icons/MVRed/480x576.png | 1 +
icons/MVRed/528x576.png | 1 +
icons/MVRed/544x576.png | 1 +
icons/MVRed/704x576.png | 1 +
icons/MVRed/720x576.png | 1 +
icons/MVRed/960x720.png | 1 +
icons/MVRed/blank.png | 1 +
icons/MVRed/changroup.png | Bin 0 -> 751 bytes
icons/MVRed/chart1b.png | 1 +
icons/MVRed/chart2b.png | 1 +
icons/MVRed/chart3b.png | 1 +
icons/MVRed/chart4b.png | 1 +
icons/MVRed/chart5b.png | 1 +
icons/MVRed/chart6b.png | 1 +
icons/MVRed/chart7.png | 1 +
icons/MVRed/chart7b.png | 1 +
icons/MVRed/crypted.png | 1 +
icons/MVRed/forward.png | 1 +
icons/MVRed/forward_sel.png | Bin 0 -> 2730 bytes
icons/MVRed/hd.png | 1 +
icons/MVRed/message_error.png | 1 +
icons/MVRed/message_info.png | 1 +
icons/MVRed/message_status.png | 1 +
icons/MVRed/message_warning.png | 1 +
icons/MVRed/pause.png | 1 +
icons/MVRed/pause_sel.png | Bin 0 -> 2531 bytes
icons/MVRed/play.png | 1 +
icons/MVRed/play_sel.png | Bin 0 -> 3268 bytes
icons/MVRed/prev.png | 1 +
icons/MVRed/prev_sel.png | Bin 0 -> 3760 bytes
icons/MVRed/radio.png | 1 +
icons/MVRed/recording.png | 1 +
icons/MVRed/recording_cutted.png | Bin 0 -> 2033 bytes
icons/MVRed/recording_cutted_cur.png | 1 +
icons/MVRed/recording_cutted_extra.png | Bin 0 -> 2058 bytes
icons/MVRed/recording_new.png | Bin 0 -> 6821 bytes
icons/MVRed/recording_new_cur.png | 1 +
icons/MVRed/rewind.png | 1 +
icons/MVRed/rewind_sel.png | Bin 0 -> 2821 bytes
icons/MVRed/sd.png | 1 +
icons/MVRed/skip.png | 1 +
icons/MVRed/skip_sel.png | Bin 0 -> 3718 bytes
icons/MVRed/text_arrowturn.png | 1 +
icons/MVRed/text_arrowturn_cur.png | 1 +
icons/MVRed/text_arrowturn_sel.png | 1 +
icons/MVRed/text_new.png | 1 +
icons/MVRed/text_new_cur.png | 1 +
icons/MVRed/text_new_sel.png | 1 +
icons/MVRed/text_rec.png | 1 +
icons/MVRed/text_rec_cur.png | 1 +
icons/MVRed/text_rec_sel.png | 1 +
icons/MVRed/text_timer_full.png | 1 +
icons/MVRed/text_timer_full_cur.png | 1 +
icons/MVRed/text_timer_full_sel.png | 1 +
icons/MVRed/text_timer_partial.png | 1 +
icons/MVRed/text_timer_partial_cur.png | 1 +
icons/MVRed/text_timer_partial_sel.png | 1 +
icons/MVRed/text_vps.png | 1 +
icons/MVRed/text_vps_cur.png | 1 +
icons/MVRed/text_vps_sel.png | 1 +
icons/MVRed/timerActive.png | 1 +
icons/MVRed/timerInactive.png | 1 +
icons/MVRed/timerRecording.png | 1 +
icons/MVRed/timer_full.png | Bin 0 -> 4690 bytes
icons/MVRed/timer_full_cur.png | 1 +
icons/MVRed/timer_partial.png | Bin 0 -> 2268 bytes
icons/MVRed/timer_partial_cur.png | 1 +
icons/MVRed/topbar_timer.png | 1 +
icons/MVRed/topbar_timerconflict_high.png | 1 +
icons/MVRed/topbar_timerconflict_low.png | 1 +
icons/MVRed/tv.png | 1 +
icons/MVRed/uncrypted.png | 1 +
icons/MVRed/unknown_asp.png | 1 +
icons/MVRed/unknown_res.png | 1 +
icons/MVRed/vps.png | Bin 0 -> 4947 bytes
icons/MVRed/vps_cur.png | 1 +
icons/MVTerra/1280x720.png | 1 +
icons/MVTerra/1440x1080.png | 1 +
icons/MVTerra/169.png | 1 +
icons/MVTerra/169w.png | 1 +
icons/MVTerra/1920x1080.png | 1 +
icons/MVTerra/221.png | 1 +
icons/MVTerra/352x576.png | 1 +
icons/MVTerra/43.png | 1 +
icons/MVTerra/480x576.png | 1 +
icons/MVTerra/528x576.png | 1 +
icons/MVTerra/544x576.png | 1 +
icons/MVTerra/704x576.png | 1 +
icons/MVTerra/720x576.png | 1 +
icons/MVTerra/960x720.png | 1 +
icons/MVTerra/blank.png | 1 +
icons/MVTerra/changroup.png | Bin 0 -> 765 bytes
icons/MVTerra/chart1b.png | 1 +
icons/MVTerra/chart2b.png | 1 +
icons/MVTerra/chart3b.png | 1 +
icons/MVTerra/chart4b.png | 1 +
icons/MVTerra/chart5b.png | 1 +
icons/MVTerra/chart6b.png | 1 +
icons/MVTerra/chart7.png | 1 +
icons/MVTerra/chart7b.png | 1 +
icons/MVTerra/crypted.png | 1 +
icons/MVTerra/forward.png | 1 +
icons/MVTerra/forward_sel.png | Bin 0 -> 2972 bytes
icons/MVTerra/hd.png | 1 +
icons/MVTerra/message_error.png | 1 +
icons/MVTerra/message_info.png | 1 +
icons/MVTerra/message_status.png | 1 +
icons/MVTerra/message_warning.png | 1 +
icons/MVTerra/pause.png | 1 +
icons/MVTerra/pause_sel.png | Bin 0 -> 2648 bytes
icons/MVTerra/play.png | 1 +
icons/MVTerra/play_sel.png | Bin 0 -> 3577 bytes
icons/MVTerra/prev.png | 1 +
icons/MVTerra/prev_sel.png | Bin 0 -> 4106 bytes
icons/MVTerra/radio.png | 1 +
icons/MVTerra/recording.png | 1 +
icons/MVTerra/recording_cutted.png | Bin 0 -> 2068 bytes
icons/MVTerra/recording_cutted_cur.png | 1 +
icons/MVTerra/recording_cutted_extra.png | Bin 0 -> 2142 bytes
icons/MVTerra/recording_new.png | Bin 0 -> 7222 bytes
icons/MVTerra/recording_new_cur.png | 1 +
icons/MVTerra/rewind.png | 1 +
icons/MVTerra/rewind_sel.png | Bin 0 -> 3052 bytes
icons/MVTerra/sd.png | 1 +
icons/MVTerra/skip.png | 1 +
icons/MVTerra/skip_sel.png | Bin 0 -> 4124 bytes
icons/MVTerra/text_arrowturn.png | 1 +
icons/MVTerra/text_arrowturn_cur.png | 1 +
icons/MVTerra/text_arrowturn_sel.png | 1 +
icons/MVTerra/text_new.png | 1 +
icons/MVTerra/text_new_cur.png | 1 +
icons/MVTerra/text_new_sel.png | 1 +
icons/MVTerra/text_rec.png | 1 +
icons/MVTerra/text_rec_cur.png | 1 +
icons/MVTerra/text_rec_sel.png | 1 +
icons/MVTerra/text_timer_full.png | 1 +
icons/MVTerra/text_timer_full_cur.png | 1 +
icons/MVTerra/text_timer_full_sel.png | 1 +
icons/MVTerra/text_timer_partial.png | 1 +
icons/MVTerra/text_timer_partial_cur.png | 1 +
icons/MVTerra/text_timer_partial_sel.png | 1 +
icons/MVTerra/text_vps.png | 1 +
icons/MVTerra/text_vps_cur.png | 1 +
icons/MVTerra/text_vps_sel.png | 1 +
icons/MVTerra/timerActive.png | 1 +
icons/MVTerra/timerInactive.png | 1 +
icons/MVTerra/timerRecording.png | 1 +
icons/MVTerra/timer_full.png | Bin 0 -> 4877 bytes
icons/MVTerra/timer_full_cur.png | 1 +
icons/MVTerra/timer_partial.png | Bin 0 -> 2507 bytes
icons/MVTerra/timer_partial_cur.png | 1 +
icons/MVTerra/topbar_timer.png | 1 +
icons/MVTerra/topbar_timerconflict_high.png | 1 +
icons/MVTerra/topbar_timerconflict_low.png | 1 +
icons/MVTerra/tv.png | 1 +
icons/MVTerra/uncrypted.png | 1 +
icons/MVTerra/unknown_asp.png | 1 +
icons/MVTerra/unknown_res.png | 1 +
icons/MVTerra/vps.png | Bin 0 -> 5251 bytes
icons/MVTerra/vps_cur.png | 1 +
icons/MVWhite/1280x720.png | 1 +
icons/MVWhite/1440x1080.png | 1 +
icons/MVWhite/169.png | 1 +
icons/MVWhite/169w.png | 1 +
icons/MVWhite/1920x1080.png | 1 +
icons/MVWhite/221.png | 1 +
icons/MVWhite/352x576.png | 1 +
icons/MVWhite/43.png | 1 +
icons/MVWhite/480x576.png | 1 +
icons/MVWhite/528x576.png | 1 +
icons/MVWhite/544x576.png | 1 +
icons/MVWhite/704x576.png | 1 +
icons/MVWhite/720x576.png | 1 +
icons/MVWhite/960x720.png | 1 +
icons/MVWhite/blank.png | 1 +
icons/MVWhite/changroup.png | Bin 0 -> 748 bytes
icons/MVWhite/chart1b.png | 1 +
icons/MVWhite/chart2b.png | 1 +
icons/MVWhite/chart3b.png | 1 +
icons/MVWhite/chart4b.png | 1 +
icons/MVWhite/chart5b.png | 1 +
icons/MVWhite/chart6b.png | 1 +
icons/MVWhite/chart7.png | 1 +
icons/MVWhite/chart7b.png | 1 +
icons/MVWhite/crypted.png | 1 +
icons/MVWhite/forward.png | 1 +
icons/MVWhite/forward_sel.png | Bin 0 -> 3493 bytes
icons/MVWhite/hd.png | 1 +
icons/MVWhite/message_error.png | 1 +
icons/MVWhite/message_info.png | 1 +
icons/MVWhite/message_status.png | 1 +
icons/MVWhite/message_warning.png | 1 +
icons/MVWhite/pause.png | 1 +
icons/MVWhite/pause_sel.png | Bin 0 -> 3522 bytes
icons/MVWhite/play.png | 1 +
icons/MVWhite/play_sel.png | Bin 0 -> 4247 bytes
icons/MVWhite/prev.png | 1 +
icons/MVWhite/prev_sel.png | Bin 0 -> 5416 bytes
icons/MVWhite/radio.png | 1 +
icons/MVWhite/recording.png | 1 +
icons/MVWhite/recording_cutted.png | Bin 0 -> 1852 bytes
icons/MVWhite/recording_cutted_cur.png | 1 +
icons/MVWhite/recording_cutted_extra.png | Bin 0 -> 1935 bytes
icons/MVWhite/recording_new.png | Bin 0 -> 8072 bytes
icons/MVWhite/recording_new_cur.png | 1 +
icons/MVWhite/rewind.png | 1 +
icons/MVWhite/rewind_sel.png | Bin 0 -> 3680 bytes
icons/MVWhite/sd.png | 1 +
icons/MVWhite/skip.png | 1 +
icons/MVWhite/skip_sel.png | Bin 0 -> 5241 bytes
icons/MVWhite/text_arrowturn.png | 1 +
icons/MVWhite/text_arrowturn_cur.png | 1 +
icons/MVWhite/text_arrowturn_sel.png | 1 +
icons/MVWhite/text_new.png | 1 +
icons/MVWhite/text_new_cur.png | 1 +
icons/MVWhite/text_new_sel.png | 1 +
icons/MVWhite/text_rec.png | 1 +
icons/MVWhite/text_rec_cur.png | 1 +
icons/MVWhite/text_rec_sel.png | 1 +
icons/MVWhite/text_timer_full.png | 1 +
icons/MVWhite/text_timer_full_cur.png | 1 +
icons/MVWhite/text_timer_full_sel.png | 1 +
icons/MVWhite/text_timer_partial.png | 1 +
icons/MVWhite/text_timer_partial_cur.png | 1 +
icons/MVWhite/text_timer_partial_sel.png | 1 +
icons/MVWhite/text_vps.png | 1 +
icons/MVWhite/text_vps_cur.png | 1 +
icons/MVWhite/text_vps_sel.png | 1 +
icons/MVWhite/timerActive.png | 1 +
icons/MVWhite/timerInactive.png | 1 +
icons/MVWhite/timerRecording.png | 1 +
icons/MVWhite/timer_full.png | Bin 0 -> 4105 bytes
icons/MVWhite/timer_full_cur.png | 1 +
icons/MVWhite/timer_partial.png | Bin 0 -> 2559 bytes
icons/MVWhite/timer_partial_cur.png | 1 +
icons/MVWhite/topbar_timer.png | 1 +
icons/MVWhite/topbar_timerconflict_high.png | 1 +
icons/MVWhite/topbar_timerconflict_low.png | 1 +
icons/MVWhite/tv.png | 1 +
icons/MVWhite/uncrypted.png | 1 +
icons/MVWhite/unknown_asp.png | 1 +
icons/MVWhite/unknown_res.png | 1 +
icons/MVWhite/vps.png | Bin 0 -> 4631 bytes
icons/MVWhite/vps_cur.png | 1 +
icons/MVXMAS/1280x720.png | 1 +
icons/MVXMAS/1440x1080.png | 1 +
icons/MVXMAS/169.png | 1 +
icons/MVXMAS/169w.png | 1 +
icons/MVXMAS/1920x1080.png | 1 +
icons/MVXMAS/221.png | 1 +
icons/MVXMAS/352x576.png | 1 +
icons/MVXMAS/43.png | 1 +
icons/MVXMAS/480x576.png | 1 +
icons/MVXMAS/528x576.png | 1 +
icons/MVXMAS/544x576.png | 1 +
icons/MVXMAS/704x576.png | 1 +
icons/MVXMAS/720x576.png | 1 +
icons/MVXMAS/960x720.png | 1 +
icons/MVXMAS/blank.png | 1 +
icons/MVXMAS/changroup.png | Bin 0 -> 748 bytes
icons/MVXMAS/chart1b.png | 1 +
icons/MVXMAS/chart2b.png | 1 +
icons/MVXMAS/chart3b.png | 1 +
icons/MVXMAS/chart4b.png | 1 +
icons/MVXMAS/chart5b.png | 1 +
icons/MVXMAS/chart6b.png | 1 +
icons/MVXMAS/chart7.png | 1 +
icons/MVXMAS/chart7b.png | 1 +
icons/MVXMAS/crypted.png | 1 +
icons/MVXMAS/forward.png | 1 +
icons/MVXMAS/forward_sel.png | Bin 0 -> 2853 bytes
icons/MVXMAS/hd.png | 1 +
icons/MVXMAS/message_error.png | 1 +
icons/MVXMAS/message_info.png | 1 +
icons/MVXMAS/message_status.png | 1 +
icons/MVXMAS/message_warning.png | 1 +
icons/MVXMAS/pause.png | 1 +
icons/MVXMAS/pause_sel.png | Bin 0 -> 2580 bytes
icons/MVXMAS/play.png | 1 +
icons/MVXMAS/play_sel.png | Bin 0 -> 3391 bytes
icons/MVXMAS/prev.png | 1 +
icons/MVXMAS/prev_sel.png | Bin 0 -> 3884 bytes
icons/MVXMAS/radio.png | 1 +
icons/MVXMAS/recording.png | 1 +
icons/MVXMAS/recording_cutted.png | Bin 0 -> 2072 bytes
icons/MVXMAS/recording_cutted_cur.png | Bin 0 -> 2061 bytes
icons/MVXMAS/recording_cutted_extra.png | Bin 0 -> 2092 bytes
icons/MVXMAS/recording_new.png | Bin 0 -> 6990 bytes
icons/MVXMAS/recording_new_cur.png | Bin 0 -> 6144 bytes
icons/MVXMAS/rewind.png | 1 +
icons/MVXMAS/rewind_sel.png | Bin 0 -> 2916 bytes
icons/MVXMAS/sd.png | 1 +
icons/MVXMAS/skip.png | 1 +
icons/MVXMAS/skip_sel.png | Bin 0 -> 3889 bytes
icons/MVXMAS/text_arrowturn.png | 1 +
icons/MVXMAS/text_arrowturn_cur.png | 1 +
icons/MVXMAS/text_arrowturn_sel.png | 1 +
icons/MVXMAS/text_new.png | 1 +
icons/MVXMAS/text_new_cur.png | 1 +
icons/MVXMAS/text_new_sel.png | 1 +
icons/MVXMAS/text_rec.png | 1 +
icons/MVXMAS/text_rec_cur.png | 1 +
icons/MVXMAS/text_rec_sel.png | 1 +
icons/MVXMAS/text_timer_full.png | 1 +
icons/MVXMAS/text_timer_full_cur.png | 1 +
icons/MVXMAS/text_timer_full_sel.png | 1 +
icons/MVXMAS/text_timer_partial.png | 1 +
icons/MVXMAS/text_timer_partial_cur.png | 1 +
icons/MVXMAS/text_timer_partial_sel.png | 1 +
icons/MVXMAS/text_vps.png | 1 +
icons/MVXMAS/text_vps_cur.png | 1 +
icons/MVXMAS/text_vps_sel.png | 1 +
icons/MVXMAS/timerActive.png | 1 +
icons/MVXMAS/timerInactive.png | 1 +
icons/MVXMAS/timerRecording.png | 1 +
icons/MVXMAS/timer_full.png | Bin 0 -> 4743 bytes
icons/MVXMAS/timer_full_cur.png | Bin 0 -> 4834 bytes
icons/MVXMAS/timer_partial.png | Bin 0 -> 2373 bytes
icons/MVXMAS/timer_partial_cur.png | Bin 0 -> 2303 bytes
icons/MVXMAS/topbar_timer.png | 1 +
icons/MVXMAS/topbar_timerconflict_high.png | 1 +
icons/MVXMAS/topbar_timerconflict_low.png | 1 +
icons/MVXMAS/tv.png | 1 +
icons/MVXMAS/uncrypted.png | 1 +
icons/MVXMAS/unknown_asp.png | 1 +
icons/MVXMAS/unknown_res.png | 1 +
icons/MVXMAS/vps.png | Bin 0 -> 5091 bytes
icons/MVXMAS/vps_cur.png | Bin 0 -> 5002 bytes
icons/MVZitrone/1280x720.png | 1 +
icons/MVZitrone/1440x1080.png | 1 +
icons/MVZitrone/169.png | 1 +
icons/MVZitrone/169w.png | 1 +
icons/MVZitrone/1920x1080.png | 1 +
icons/MVZitrone/221.png | 1 +
icons/MVZitrone/352x576.png | 1 +
icons/MVZitrone/43.png | 1 +
icons/MVZitrone/480x576.png | 1 +
icons/MVZitrone/528x576.png | 1 +
icons/MVZitrone/544x576.png | 1 +
icons/MVZitrone/704x576.png | 1 +
icons/MVZitrone/720x576.png | 1 +
icons/MVZitrone/960x720.png | 1 +
icons/MVZitrone/blank.png | 1 +
icons/MVZitrone/changroup.png | Bin 0 -> 753 bytes
icons/MVZitrone/chart1b.png | 1 +
icons/MVZitrone/chart2b.png | 1 +
icons/MVZitrone/chart3b.png | 1 +
icons/MVZitrone/chart4b.png | 1 +
icons/MVZitrone/chart5b.png | 1 +
icons/MVZitrone/chart6b.png | 1 +
icons/MVZitrone/chart7.png | 1 +
icons/MVZitrone/chart7b.png | 1 +
icons/MVZitrone/crypted.png | 1 +
icons/MVZitrone/forward.png | 1 +
icons/MVZitrone/forward_sel.png | Bin 0 -> 3180 bytes
icons/MVZitrone/hd.png | 1 +
icons/MVZitrone/message_error.png | 1 +
icons/MVZitrone/message_info.png | 1 +
icons/MVZitrone/message_status.png | 1 +
icons/MVZitrone/message_warning.png | 1 +
icons/MVZitrone/pause.png | 1 +
icons/MVZitrone/pause_sel.png | Bin 0 -> 3052 bytes
icons/MVZitrone/play.png | 1 +
icons/MVZitrone/play_sel.png | Bin 0 -> 3852 bytes
icons/MVZitrone/prev.png | 1 +
icons/MVZitrone/prev_sel.png | Bin 0 -> 4628 bytes
icons/MVZitrone/radio.png | 1 +
icons/MVZitrone/recording.png | 1 +
icons/MVZitrone/recording_cutted.png | Bin 0 -> 2071 bytes
icons/MVZitrone/recording_cutted_cur.png | Bin 0 -> 2047 bytes
icons/MVZitrone/recording_cutted_extra.png | Bin 0 -> 2097 bytes
icons/MVZitrone/recording_new.png | Bin 0 -> 7621 bytes
icons/MVZitrone/recording_new_cur.png | Bin 0 -> 7128 bytes
icons/MVZitrone/rewind.png | 1 +
icons/MVZitrone/rewind_sel.png | Bin 0 -> 3301 bytes
icons/MVZitrone/sd.png | 1 +
icons/MVZitrone/skip.png | 1 +
icons/MVZitrone/skip_sel.png | Bin 0 -> 4580 bytes
icons/MVZitrone/text_arrowturn.png | 1 +
icons/MVZitrone/text_arrowturn_cur.png | 1 +
icons/MVZitrone/text_arrowturn_sel.png | 1 +
icons/MVZitrone/text_new.png | 1 +
icons/MVZitrone/text_new_cur.png | 1 +
icons/MVZitrone/text_new_sel.png | 1 +
icons/MVZitrone/text_rec.png | 1 +
icons/MVZitrone/text_rec_cur.png | 1 +
icons/MVZitrone/text_rec_sel.png | 1 +
icons/MVZitrone/text_timer_full.png | 1 +
icons/MVZitrone/text_timer_full_cur.png | 1 +
icons/MVZitrone/text_timer_full_sel.png | 1 +
icons/MVZitrone/text_timer_partial.png | 1 +
icons/MVZitrone/text_timer_partial_cur.png | 1 +
icons/MVZitrone/text_timer_partial_sel.png | 1 +
icons/MVZitrone/text_vps.png | 1 +
icons/MVZitrone/text_vps_cur.png | 1 +
icons/MVZitrone/text_vps_sel.png | 1 +
icons/MVZitrone/timerActive.png | 1 +
icons/MVZitrone/timerInactive.png | 1 +
icons/MVZitrone/timerRecording.png | 1 +
icons/MVZitrone/timer_full.png | Bin 0 -> 4745 bytes
icons/MVZitrone/timer_full_cur.png | Bin 0 -> 4798 bytes
icons/MVZitrone/timer_partial.png | Bin 0 -> 2471 bytes
icons/MVZitrone/timer_partial_cur.png | Bin 0 -> 2464 bytes
icons/MVZitrone/topbar_timer.png | 1 +
icons/MVZitrone/topbar_timerconflict_high.png | 1 +
icons/MVZitrone/topbar_timerconflict_low.png | 1 +
icons/MVZitrone/tv.png | 1 +
icons/MVZitrone/uncrypted.png | 1 +
icons/MVZitrone/unknown_asp.png | 1 +
icons/MVZitrone/unknown_res.png | 1 +
icons/MVZitrone/vps.png | Bin 0 -> 5367 bytes
icons/MVZitrone/vps_cur.png | Bin 0 -> 5309 bytes
icons/MVdefault/1280x720.png | Bin 0 -> 2245 bytes
icons/MVdefault/1440x1080.png | Bin 0 -> 1773 bytes
icons/MVdefault/169.png | Bin 0 -> 1436 bytes
icons/MVdefault/169w.png | Bin 0 -> 2164 bytes
icons/MVdefault/1920x1080.png | Bin 0 -> 2192 bytes
icons/MVdefault/221.png | Bin 0 -> 1060 bytes
icons/MVdefault/352x576.png | Bin 0 -> 2358 bytes
icons/MVdefault/43.png | Bin 0 -> 1181 bytes
icons/MVdefault/480x576.png | Bin 0 -> 2321 bytes
icons/MVdefault/528x576.png | Bin 0 -> 2442 bytes
icons/MVdefault/544x576.png | Bin 0 -> 1597 bytes
icons/MVdefault/704x576.png | Bin 0 -> 1930 bytes
icons/MVdefault/720x576.png | Bin 0 -> 1694 bytes
icons/MVdefault/960x720.png | Bin 0 -> 2668 bytes
icons/MVdefault/blank.png | Bin 0 -> 142 bytes
icons/MVdefault/changroup.png | Bin 0 -> 444 bytes
icons/MVdefault/chart1b.png | 1 +
icons/MVdefault/chart2b.png | 1 +
icons/MVdefault/chart3b.png | 1 +
icons/MVdefault/chart4b.png | 1 +
icons/MVdefault/chart5b.png | 1 +
icons/MVdefault/chart6b.png | 1 +
icons/MVdefault/chart7.png | Bin 0 -> 1580 bytes
icons/MVdefault/chart7b.png | 1 +
icons/MVdefault/crypted.png | Bin 0 -> 490 bytes
icons/MVdefault/forward.png | Bin 0 -> 2122 bytes
icons/MVdefault/forward_sel.png | Bin 0 -> 3360 bytes
icons/MVdefault/hd.png | Bin 0 -> 1510 bytes
icons/MVdefault/message_error.png | Bin 0 -> 820 bytes
icons/MVdefault/message_info.png | Bin 0 -> 2038 bytes
icons/MVdefault/message_status.png | Bin 0 -> 2006 bytes
icons/MVdefault/message_warning.png | Bin 0 -> 1916 bytes
icons/MVdefault/pause.png | Bin 0 -> 2463 bytes
icons/MVdefault/pause_sel.png | Bin 0 -> 3391 bytes
icons/MVdefault/play.png | Bin 0 -> 2393 bytes
icons/MVdefault/play_sel.png | Bin 0 -> 4123 bytes
icons/MVdefault/prev.png | Bin 0 -> 3161 bytes
icons/MVdefault/prev_sel.png | Bin 0 -> 5373 bytes
icons/MVdefault/radio.png | Bin 0 -> 15309 bytes
icons/MVdefault/recording.png | Bin 0 -> 1207 bytes
icons/MVdefault/recording_cutted.png | Bin 0 -> 1600 bytes
icons/MVdefault/recording_cutted_cur.png | Bin 0 -> 2053 bytes
icons/MVdefault/recording_cutted_extra.png | Bin 0 -> 1659 bytes
icons/MVdefault/recording_new.png | Bin 0 -> 7614 bytes
icons/MVdefault/recording_new_cur.png | Bin 0 -> 5109 bytes
icons/MVdefault/rewind.png | Bin 0 -> 2137 bytes
icons/MVdefault/rewind_sel.png | Bin 0 -> 3543 bytes
icons/MVdefault/sd.png | Bin 0 -> 1922 bytes
icons/MVdefault/skip.png | Bin 0 -> 3119 bytes
icons/MVdefault/skip_sel.png | Bin 0 -> 5208 bytes
icons/MVdefault/text_arrowturn.png | Bin 0 -> 929 bytes
icons/MVdefault/text_arrowturn_cur.png | 1 +
icons/MVdefault/text_arrowturn_sel.png | 1 +
icons/MVdefault/text_new.png | 1 +
icons/MVdefault/text_new_cur.png | 1 +
icons/MVdefault/text_new_sel.png | 1 +
icons/MVdefault/text_rec.png | 1 +
icons/MVdefault/text_rec_cur.png | 1 +
icons/MVdefault/text_rec_sel.png | 1 +
icons/MVdefault/text_timer_full.png | Bin 0 -> 6078 bytes
icons/MVdefault/text_timer_full_cur.png | 1 +
icons/MVdefault/text_timer_full_sel.png | 1 +
icons/MVdefault/text_timer_partial.png | 1 +
icons/MVdefault/text_timer_partial_cur.png | 1 +
icons/MVdefault/text_timer_partial_sel.png | 1 +
icons/MVdefault/text_vps.png | 1 +
icons/MVdefault/text_vps_cur.png | 1 +
icons/MVdefault/text_vps_sel.png | 1 +
icons/MVdefault/timerActive.png | Bin 0 -> 4642 bytes
icons/MVdefault/timerInactive.png | Bin 0 -> 3538 bytes
icons/MVdefault/timerRecording.png | Bin 0 -> 3150 bytes
icons/MVdefault/timer_full.png | Bin 0 -> 2889 bytes
icons/MVdefault/timer_full_cur.png | Bin 0 -> 4827 bytes
icons/MVdefault/timer_partial.png | Bin 0 -> 1510 bytes
icons/MVdefault/timer_partial_cur.png | Bin 0 -> 2105 bytes
icons/MVdefault/topbar_timer.png | Bin 0 -> 658 bytes
icons/MVdefault/topbar_timerconflict_high.png | Bin 0 -> 12082 bytes
icons/MVdefault/topbar_timerconflict_low.png | Bin 0 -> 11715 bytes
icons/MVdefault/tv.png | Bin 0 -> 1531 bytes
icons/MVdefault/uncrypted.png | Bin 0 -> 1824 bytes
icons/MVdefault/unknown_asp.png | Bin 0 -> 1350 bytes
icons/MVdefault/unknown_res.png | Bin 0 -> 1192 bytes
icons/MVdefault/vps.png | Bin 0 -> 4084 bytes
icons/MVdefault/vps_cur.png | Bin 0 -> 4795 bytes
icons/default/1280x720.png | Bin 0 -> 1675 bytes
icons/default/1440x1080.png | Bin 0 -> 1146 bytes
icons/default/169.png | Bin 0 -> 1065 bytes
icons/default/169w.png | Bin 0 -> 1355 bytes
icons/default/1920x1080.png | Bin 0 -> 1649 bytes
icons/default/221.png | Bin 0 -> 841 bytes
icons/default/352x576.png | Bin 0 -> 1390 bytes
icons/default/43.png | Bin 0 -> 896 bytes
icons/default/480x576.png | Bin 0 -> 1402 bytes
icons/default/528x576.png | Bin 0 -> 1382 bytes
icons/default/544x576.png | Bin 0 -> 958 bytes
icons/default/704x576.png | Bin 0 -> 1200 bytes
icons/default/720x576.png | Bin 0 -> 1311 bytes
icons/default/960x720.png | Bin 0 -> 1447 bytes
icons/default/EPGInfo/FSK/FSK_0.png | Bin 0 -> 18438 bytes
icons/default/EPGInfo/FSK/ab 12.png | Bin 0 -> 18705 bytes
icons/default/EPGInfo/FSK/ab 16.png | Bin 0 -> 20091 bytes
icons/default/EPGInfo/FSK/ab 18.png | Bin 0 -> 15851 bytes
icons/default/EPGInfo/FSK/ab 6.png | Bin 0 -> 18809 bytes
icons/default/EPGInfo/FSK/unknown.png | Bin 0 -> 8328 bytes
icons/default/EPGInfo/FSK/unknown2.png | Bin 0 -> 7892 bytes
icons/default/EPGInfo/Genre/A0A0A0/Abenteuer.png | Bin 0 -> 4724 bytes
icons/default/EPGInfo/Genre/A0A0A0/Action.png | Bin 0 -> 4656 bytes
icons/default/EPGInfo/Genre/A0A0A0/Action2.png | Bin 0 -> 4036 bytes
.../EPGInfo/Genre/A0A0A0/Administrator2.png | Bin 0 -> 2111 bytes
.../EPGInfo/Genre/A0A0A0/Adventure_Western_War.png | Bin 0 -> 7016 bytes
icons/default/EPGInfo/Genre/A0A0A0/Applouse.png | Bin 0 -> 2359 bytes
icons/default/EPGInfo/Genre/A0A0A0/Archeology.png | Bin 0 -> 2781 bytes
.../default/EPGInfo/Genre/A0A0A0/Arts_Culture.png | Bin 0 -> 2218 bytes
icons/default/EPGInfo/Genre/A0A0A0/Assistant.png | Bin 0 -> 3154 bytes
icons/default/EPGInfo/Genre/A0A0A0/Audience.png | Bin 0 -> 1799 bytes
icons/default/EPGInfo/Genre/A0A0A0/Baby.png | Bin 0 -> 1641 bytes
.../default/EPGInfo/Genre/A0A0A0/Ballet_Shoes.png | Bin 0 -> 2457 bytes
icons/default/EPGInfo/Genre/A0A0A0/Beach.png | Bin 0 -> 4430 bytes
icons/default/EPGInfo/Genre/A0A0A0/Binoculars.png | Bin 0 -> 2212 bytes
icons/default/EPGInfo/Genre/A0A0A0/Black_White.png | Bin 0 -> 3545 bytes
icons/default/EPGInfo/Genre/A0A0A0/Books.png | Bin 0 -> 1901 bytes
icons/default/EPGInfo/Genre/A0A0A0/Bowling.png | Bin 0 -> 2523 bytes
icons/default/EPGInfo/Genre/A0A0A0/Boxing.png | Bin 0 -> 1641 bytes
icons/default/EPGInfo/Genre/A0A0A0/Brain.png | Bin 0 -> 2512 bytes
icons/default/EPGInfo/Genre/A0A0A0/Breast.png | Bin 0 -> 2198 bytes
icons/default/EPGInfo/Genre/A0A0A0/Brick.png | Bin 0 -> 2327 bytes
icons/default/EPGInfo/Genre/A0A0A0/Brick2.png | Bin 0 -> 2305 bytes
.../default/EPGInfo/Genre/A0A0A0/Broadcasting.png | Bin 0 -> 2650 bytes
.../default/EPGInfo/Genre/A0A0A0/Bunch_Flowers.png | Bin 0 -> 2666 bytes
.../EPGInfo/Genre/A0A0A0/Bunch_Ingredients.png | Bin 0 -> 1771 bytes
icons/default/EPGInfo/Genre/A0A0A0/Camcoder.png | Bin 0 -> 1609 bytes
icons/default/EPGInfo/Genre/A0A0A0/Cannon.png | Bin 0 -> 1891 bytes
icons/default/EPGInfo/Genre/A0A0A0/Carousel.png | Bin 0 -> 2229 bytes
icons/default/EPGInfo/Genre/A0A0A0/Children.png | Bin 0 -> 2670 bytes
.../EPGInfo/Genre/A0A0A0/Children_10-16.png | Bin 0 -> 5534 bytes
.../default/EPGInfo/Genre/A0A0A0/Children_6-14.png | Bin 0 -> 5238 bytes
icons/default/EPGInfo/Genre/A0A0A0/Choir.png | Bin 0 -> 3352 bytes
icons/default/EPGInfo/Genre/A0A0A0/Church.png | Bin 0 -> 1394 bytes
icons/default/EPGInfo/Genre/A0A0A0/Conference.png | Bin 0 -> 3736 bytes
icons/default/EPGInfo/Genre/A0A0A0/Courses.png | Bin 0 -> 890 bytes
icons/default/EPGInfo/Genre/A0A0A0/DNA_Helix.png | Bin 0 -> 2748 bytes
icons/default/EPGInfo/Genre/A0A0A0/Dancing.png | Bin 0 -> 1698 bytes
icons/default/EPGInfo/Genre/A0A0A0/Detektiv.png | Bin 0 -> 4656 bytes
icons/default/EPGInfo/Genre/A0A0A0/Diploma2.png | Bin 0 -> 3554 bytes
.../default/EPGInfo/Genre/A0A0A0/Dokumentation.png | Bin 0 -> 2447 bytes
icons/default/EPGInfo/Genre/A0A0A0/Drama.png | Bin 0 -> 3366 bytes
icons/default/EPGInfo/Genre/A0A0A0/Engine.png | Bin 0 -> 1314 bytes
icons/default/EPGInfo/Genre/A0A0A0/Engineering.png | Bin 0 -> 2155 bytes
icons/default/EPGInfo/Genre/A0A0A0/Erotik.png | Bin 0 -> 3325 bytes
icons/default/EPGInfo/Genre/A0A0A0/Erotik2.png | Bin 0 -> 3213 bytes
icons/default/EPGInfo/Genre/A0A0A0/Fantasie.png | Bin 0 -> 3416 bytes
icons/default/EPGInfo/Genre/A0A0A0/Film.png | Bin 0 -> 1715 bytes
icons/default/EPGInfo/Genre/A0A0A0/Finish_Flag.png | Bin 0 -> 4590 bytes
icons/default/EPGInfo/Genre/A0A0A0/Football.png | Bin 0 -> 1612 bytes
icons/default/EPGInfo/Genre/A0A0A0/German_Hat.png | Bin 0 -> 2426 bytes
icons/default/EPGInfo/Genre/A0A0A0/Globe_Earth.png | Bin 0 -> 4349 bytes
icons/default/EPGInfo/Genre/A0A0A0/Guitar.png | Bin 0 -> 2083 bytes
icons/default/EPGInfo/Genre/A0A0A0/Guru.png | Bin 0 -> 2772 bytes
.../default/EPGInfo/Genre/A0A0A0/Hand_Planting.png | Bin 0 -> 1974 bytes
icons/default/EPGInfo/Genre/A0A0A0/Health.png | Bin 0 -> 1947 bytes
.../default/EPGInfo/Genre/A0A0A0/Heart_Monitor.png | Bin 0 -> 1419 bytes
icons/default/EPGInfo/Genre/A0A0A0/Historisch.png | Bin 0 -> 3479 bytes
icons/default/EPGInfo/Genre/A0A0A0/Horror.png | Bin 0 -> 2997 bytes
icons/default/EPGInfo/Genre/A0A0A0/Horse.png | Bin 0 -> 1843 bytes
icons/default/EPGInfo/Genre/A0A0A0/Kitchen.png | Bin 0 -> 1273 bytes
.../EPGInfo/Genre/A0A0A0/Kom\303\266die.png" | Bin 0 -> 3201 bytes
.../EPGInfo/Genre/A0A0A0/Kom\303\266die2.png" | Bin 0 -> 3979 bytes
icons/default/EPGInfo/Genre/A0A0A0/Krimi.png | Bin 0 -> 2022 bytes
icons/default/EPGInfo/Genre/A0A0A0/LCD.png | Bin 0 -> 1694 bytes
icons/default/EPGInfo/Genre/A0A0A0/Law.png | Bin 0 -> 1645 bytes
icons/default/EPGInfo/Genre/A0A0A0/Literature.png | Bin 0 -> 1978 bytes
icons/default/EPGInfo/Genre/A0A0A0/Magazine.png | Bin 0 -> 4233 bytes
.../EPGInfo/Genre/A0A0A0/Medical_Doctor.png | Bin 0 -> 1660 bytes
.../default/EPGInfo/Genre/A0A0A0/Mickey-Mouse.png | Bin 0 -> 5563 bytes
icons/default/EPGInfo/Genre/A0A0A0/Modern_Art.png | Bin 0 -> 1450 bytes
icons/default/EPGInfo/Genre/A0A0A0/Movie_Drama.png | Bin 0 -> 4302 bytes
icons/default/EPGInfo/Genre/A0A0A0/Music.png | Bin 0 -> 1289 bytes
icons/default/EPGInfo/Genre/A0A0A0/Musik.png | Bin 0 -> 1893 bytes
.../EPGInfo/Genre/A0A0A0/M\303\244rchen.png" | Bin 0 -> 3108 bytes
icons/default/EPGInfo/Genre/A0A0A0/Newspaper.png | Bin 0 -> 2821 bytes
.../EPGInfo/Genre/A0A0A0/North_Direction.png | Bin 0 -> 3251 bytes
icons/default/EPGInfo/Genre/A0A0A0/Online.png | Bin 0 -> 1882 bytes
icons/default/EPGInfo/Genre/A0A0A0/Pacifier.png | Bin 0 -> 1988 bytes
icons/default/EPGInfo/Genre/A0A0A0/Palm-Tree.png | Bin 0 -> 3922 bytes
icons/default/EPGInfo/Genre/A0A0A0/Parliament.png | Bin 0 -> 1560 bytes
icons/default/EPGInfo/Genre/A0A0A0/Percentage2.png | Bin 0 -> 1624 bytes
.../EPGInfo/Genre/A0A0A0/Performing Arts.png | Bin 0 -> 3341 bytes
icons/default/EPGInfo/Genre/A0A0A0/Physics.png | Bin 0 -> 2796 bytes
icons/default/EPGInfo/Genre/A0A0A0/Pie_Chart.png | Bin 0 -> 3025 bytes
icons/default/EPGInfo/Genre/A0A0A0/Playground.png | Bin 0 -> 1735 bytes
.../A0A0A0/Popular Culture_Traditional Arts.png | Bin 0 -> 4015 bytes
icons/default/EPGInfo/Genre/A0A0A0/Processor.png | Bin 0 -> 1220 bytes
icons/default/EPGInfo/Genre/A0A0A0/Rattle.png | Bin 0 -> 1679 bytes
.../EPGInfo/Genre/A0A0A0/Regular_Biking.png | Bin 0 -> 2090 bytes
icons/default/EPGInfo/Genre/A0A0A0/Research.png | Bin 0 -> 1819 bytes
icons/default/EPGInfo/Genre/A0A0A0/Restaurant.png | Bin 0 -> 2583 bytes
icons/default/EPGInfo/Genre/A0A0A0/Rock.png | Bin 0 -> 5962 bytes
icons/default/EPGInfo/Genre/A0A0A0/Roman.png | Bin 0 -> 3142 bytes
icons/default/EPGInfo/Genre/A0A0A0/Running.png | Bin 0 -> 2197 bytes
.../Genre/A0A0A0/Satellite_Sending_Signal.png | Bin 0 -> 2293 bytes
icons/default/EPGInfo/Genre/A0A0A0/Saxophone.png | Bin 0 -> 3960 bytes
.../EPGInfo/Genre/A0A0A0/SciFi_Fantasy_Horror.png | Bin 0 -> 7240 bytes
.../EPGInfo/Genre/A0A0A0/Science-Fiction.png | Bin 0 -> 3616 bytes
..._Classical_Religious_Historical Movie_Drama.png | Bin 0 -> 6454 bytes
icons/default/EPGInfo/Genre/A0A0A0/Server.png | Bin 0 -> 1344 bytes
.../EPGInfo/Genre/A0A0A0/Sheet_Of_Paper.png | Bin 0 -> 1844 bytes
icons/default/EPGInfo/Genre/A0A0A0/Shoe_Woman.png | Bin 0 -> 1222 bytes
icons/default/EPGInfo/Genre/A0A0A0/Shopping.png | Bin 0 -> 2913 bytes
icons/default/EPGInfo/Genre/A0A0A0/Skiing.png | Bin 0 -> 4146 bytes
.../Genre/A0A0A0/Social_Political_Economics.png | Bin 0 -> 4019 bytes
.../default/EPGInfo/Genre/A0A0A0/Special Event.png | Bin 0 -> 6257 bytes
icons/default/EPGInfo/Genre/A0A0A0/Spiel.png | Bin 0 -> 3044 bytes
icons/default/EPGInfo/Genre/A0A0A0/Sport.png | Bin 0 -> 3986 bytes
.../default/EPGInfo/Genre/A0A0A0/Sport_Magazin.png | Bin 0 -> 8287 bytes
.../default/EPGInfo/Genre/A0A0A0/Stanley_Knife.png | Bin 0 -> 1491 bytes
icons/default/EPGInfo/Genre/A0A0A0/Strikes.png | Bin 0 -> 3079 bytes
icons/default/EPGInfo/Genre/A0A0A0/Stroller.png | Bin 0 -> 1875 bytes
icons/default/EPGInfo/Genre/A0A0A0/Student.png | Bin 0 -> 4458 bytes
.../EPGInfo/Genre/A0A0A0/Student_Filled.png | Bin 0 -> 2308 bytes
icons/default/EPGInfo/Genre/A0A0A0/Students2.png | Bin 0 -> 2464 bytes
icons/default/EPGInfo/Genre/A0A0A0/Suitcase.png | Bin 0 -> 1634 bytes
icons/default/EPGInfo/Genre/A0A0A0/Swimming.png | Bin 0 -> 3012 bytes
icons/default/EPGInfo/Genre/A0A0A0/Talk.png | Bin 0 -> 3464 bytes
icons/default/EPGInfo/Genre/A0A0A0/Teams.png | Bin 0 -> 3170 bytes
.../EPGInfo/Genre/A0A0A0/Technology_Science.png | Bin 0 -> 2372 bytes
icons/default/EPGInfo/Genre/A0A0A0/Teddybear.png | Bin 0 -> 3017 bytes
icons/default/EPGInfo/Genre/A0A0A0/Temperature.png | Bin 0 -> 1338 bytes
icons/default/EPGInfo/Genre/A0A0A0/Tennis.png | Bin 0 -> 4074 bytes
icons/default/EPGInfo/Genre/A0A0A0/Test_Tube.png | Bin 0 -> 1729 bytes
.../default/EPGInfo/Genre/A0A0A0/Theatre_Masks.png | Bin 0 -> 4132 bytes
icons/default/EPGInfo/Genre/A0A0A0/Thriller.png | Bin 0 -> 4475 bytes
icons/default/EPGInfo/Genre/A0A0A0/Ticket.png | Bin 0 -> 1210 bytes
icons/default/EPGInfo/Genre/A0A0A0/Treble_Clef.png | Bin 0 -> 1786 bytes
icons/default/EPGInfo/Genre/A0A0A0/Tricycle.png | Bin 0 -> 3278 bytes
icons/default/EPGInfo/Genre/A0A0A0/University.png | Bin 0 -> 1058 bytes
icons/default/EPGInfo/Genre/A0A0A0/Unpublished.png | Bin 0 -> 6303 bytes
.../default/EPGInfo/Genre/A0A0A0/Waypoint_Map.png | Bin 0 -> 3295 bytes
icons/default/EPGInfo/Genre/A0A0A0/Weather.png | Bin 0 -> 4001 bytes
icons/default/EPGInfo/Genre/A0A0A0/Western.png | Bin 0 -> 2434 bytes
icons/default/EPGInfo/Genre/A0A0A0/World_Map.png | Bin 0 -> 2641 bytes
icons/default/EPGInfo/Genre/A0A0A0/Yoga.png | Bin 0 -> 1449 bytes
icons/default/EPGInfo/Genre/A0A0A0/Zombie.png | Bin 0 -> 4531 bytes
icons/default/EPGInfo/Genre/A0A0A0/unknown.png | Bin 0 -> 2202 bytes
icons/default/EPGInfo/Genre/Adult Movie_Drama.png | 1 +
.../EPGInfo/Genre/Adventure_Western_War.png | 1 +
.../EPGInfo/Genre/Advertisement_Shopping.png | 1 +
.../EPGInfo/Genre/Arts_Culture Magazine.png | 1 +
icons/default/EPGInfo/Genre/Arts_Culture.png | 1 +
icons/default/EPGInfo/Genre/Athletics.png | 1 +
icons/default/EPGInfo/Genre/Ballet.png | 1 +
icons/default/EPGInfo/Genre/Black_White.png | 1 +
icons/default/EPGInfo/Genre/Broadcasting_Press.png | 1 +
icons/default/EPGInfo/Genre/Cartoons_Puppets.png | 1 +
.../EPGInfo/Genre/Childrens_Youth Programme.png | 1 +
icons/default/EPGInfo/Genre/Comedy.png | 1 +
icons/default/EPGInfo/Genre/Cooking.png | 1 +
icons/default/EPGInfo/Genre/Detective_Thriller.png | 1 +
.../EPGInfo/Genre/Discussion_Inverview_Debate.png | 1 +
icons/default/EPGInfo/Genre/Documentary.png | 1 +
.../EPGInfo/Genre/Education_Science_Factual.png | 1 +
.../Genre/Entertainment Programme for 10 to 16.png | 1 +
.../Genre/Entertainment Programme for 6 to 14.png | 1 +
icons/default/EPGInfo/Genre/Equestrian.png | 1 +
.../EPGInfo/Genre/Experimental Film_Video.png | 1 +
icons/default/EPGInfo/Genre/FFFFFF/Abenteuer.png | Bin 0 -> 4480 bytes
icons/default/EPGInfo/Genre/FFFFFF/Action.png | Bin 0 -> 4503 bytes
icons/default/EPGInfo/Genre/FFFFFF/Action2.png | Bin 0 -> 3893 bytes
.../EPGInfo/Genre/FFFFFF/Administrator2.png | Bin 0 -> 2063 bytes
.../EPGInfo/Genre/FFFFFF/Adventure_Western_War.png | Bin 0 -> 6925 bytes
icons/default/EPGInfo/Genre/FFFFFF/Applouse.png | Bin 0 -> 2204 bytes
icons/default/EPGInfo/Genre/FFFFFF/Archeology.png | Bin 0 -> 2876 bytes
.../default/EPGInfo/Genre/FFFFFF/Arts_Culture.png | Bin 0 -> 2168 bytes
icons/default/EPGInfo/Genre/FFFFFF/Assistant.png | Bin 0 -> 3061 bytes
icons/default/EPGInfo/Genre/FFFFFF/Audience.png | Bin 0 -> 1699 bytes
icons/default/EPGInfo/Genre/FFFFFF/Baby.png | Bin 0 -> 1623 bytes
.../default/EPGInfo/Genre/FFFFFF/Ballet_Shoes.png | Bin 0 -> 2430 bytes
icons/default/EPGInfo/Genre/FFFFFF/Beach.png | Bin 0 -> 4331 bytes
icons/default/EPGInfo/Genre/FFFFFF/Binoculars.png | Bin 0 -> 2040 bytes
icons/default/EPGInfo/Genre/FFFFFF/Black_White.png | Bin 0 -> 3527 bytes
icons/default/EPGInfo/Genre/FFFFFF/Books.png | Bin 0 -> 1792 bytes
icons/default/EPGInfo/Genre/FFFFFF/Bowling.png | Bin 0 -> 2453 bytes
icons/default/EPGInfo/Genre/FFFFFF/Boxing.png | Bin 0 -> 1605 bytes
icons/default/EPGInfo/Genre/FFFFFF/Brain.png | Bin 0 -> 2351 bytes
icons/default/EPGInfo/Genre/FFFFFF/Breast.png | Bin 0 -> 2126 bytes
icons/default/EPGInfo/Genre/FFFFFF/Brick.png | Bin 0 -> 2141 bytes
icons/default/EPGInfo/Genre/FFFFFF/Brick2.png | Bin 0 -> 2110 bytes
.../default/EPGInfo/Genre/FFFFFF/Broadcasting.png | Bin 0 -> 2298 bytes
.../default/EPGInfo/Genre/FFFFFF/Bunch_Flowers.png | Bin 0 -> 2485 bytes
.../EPGInfo/Genre/FFFFFF/Bunch_Ingredients.png | Bin 0 -> 1665 bytes
icons/default/EPGInfo/Genre/FFFFFF/Camcoder.png | Bin 0 -> 1564 bytes
icons/default/EPGInfo/Genre/FFFFFF/Cannon.png | Bin 0 -> 1781 bytes
icons/default/EPGInfo/Genre/FFFFFF/Carousel.png | Bin 0 -> 2196 bytes
icons/default/EPGInfo/Genre/FFFFFF/Children.png | Bin 0 -> 2681 bytes
.../EPGInfo/Genre/FFFFFF/Children_10-16.png | Bin 0 -> 5441 bytes
.../default/EPGInfo/Genre/FFFFFF/Children_6-14.png | Bin 0 -> 5190 bytes
icons/default/EPGInfo/Genre/FFFFFF/Choir.png | Bin 0 -> 3195 bytes
icons/default/EPGInfo/Genre/FFFFFF/Church.png | Bin 0 -> 1396 bytes
icons/default/EPGInfo/Genre/FFFFFF/Conference.png | Bin 0 -> 3747 bytes
icons/default/EPGInfo/Genre/FFFFFF/Courses.png | Bin 0 -> 879 bytes
icons/default/EPGInfo/Genre/FFFFFF/DNA_Helix.png | Bin 0 -> 2395 bytes
icons/default/EPGInfo/Genre/FFFFFF/Dancing.png | Bin 0 -> 1717 bytes
icons/default/EPGInfo/Genre/FFFFFF/Detektiv.png | Bin 0 -> 4492 bytes
icons/default/EPGInfo/Genre/FFFFFF/Diploma2.png | Bin 0 -> 3268 bytes
.../default/EPGInfo/Genre/FFFFFF/Dokumentation.png | Bin 0 -> 2417 bytes
icons/default/EPGInfo/Genre/FFFFFF/Drama.png | Bin 0 -> 3306 bytes
icons/default/EPGInfo/Genre/FFFFFF/Engine.png | Bin 0 -> 1304 bytes
icons/default/EPGInfo/Genre/FFFFFF/Engineering.png | Bin 0 -> 1798 bytes
icons/default/EPGInfo/Genre/FFFFFF/Erotik.png | Bin 0 -> 3297 bytes
icons/default/EPGInfo/Genre/FFFFFF/Erotik2.png | Bin 0 -> 3106 bytes
icons/default/EPGInfo/Genre/FFFFFF/Fantasie.png | Bin 0 -> 3311 bytes
icons/default/EPGInfo/Genre/FFFFFF/Film.png | Bin 0 -> 1681 bytes
icons/default/EPGInfo/Genre/FFFFFF/Finish_Flag.png | Bin 0 -> 4489 bytes
icons/default/EPGInfo/Genre/FFFFFF/Football.png | Bin 0 -> 1569 bytes
icons/default/EPGInfo/Genre/FFFFFF/German_Hat.png | Bin 0 -> 2338 bytes
icons/default/EPGInfo/Genre/FFFFFF/Globe_Earth.png | Bin 0 -> 3932 bytes
icons/default/EPGInfo/Genre/FFFFFF/Guitar.png | Bin 0 -> 1900 bytes
icons/default/EPGInfo/Genre/FFFFFF/Guru.png | Bin 0 -> 2662 bytes
.../default/EPGInfo/Genre/FFFFFF/Hand_Planting.png | Bin 0 -> 1823 bytes
icons/default/EPGInfo/Genre/FFFFFF/Health.png | Bin 0 -> 1936 bytes
.../default/EPGInfo/Genre/FFFFFF/Heart_Monitor.png | Bin 0 -> 1437 bytes
icons/default/EPGInfo/Genre/FFFFFF/Historisch.png | Bin 0 -> 3520 bytes
icons/default/EPGInfo/Genre/FFFFFF/Horror.png | Bin 0 -> 3017 bytes
icons/default/EPGInfo/Genre/FFFFFF/Horse.png | Bin 0 -> 1836 bytes
icons/default/EPGInfo/Genre/FFFFFF/Kitchen.png | Bin 0 -> 1248 bytes
.../EPGInfo/Genre/FFFFFF/Kom\303\266die.png" | Bin 0 -> 3135 bytes
.../EPGInfo/Genre/FFFFFF/Kom\303\266die2.png" | Bin 0 -> 3825 bytes
icons/default/EPGInfo/Genre/FFFFFF/Krimi.png | Bin 0 -> 2007 bytes
icons/default/EPGInfo/Genre/FFFFFF/LCD.png | Bin 0 -> 1689 bytes
icons/default/EPGInfo/Genre/FFFFFF/Law.png | Bin 0 -> 1493 bytes
icons/default/EPGInfo/Genre/FFFFFF/Literature.png | Bin 0 -> 1939 bytes
icons/default/EPGInfo/Genre/FFFFFF/Magazine.png | Bin 0 -> 4150 bytes
.../EPGInfo/Genre/FFFFFF/Medical_Doctor.png | Bin 0 -> 1610 bytes
.../default/EPGInfo/Genre/FFFFFF/Mickey-Mouse.png | Bin 0 -> 5363 bytes
icons/default/EPGInfo/Genre/FFFFFF/Modern_Art.png | Bin 0 -> 1411 bytes
icons/default/EPGInfo/Genre/FFFFFF/Movie_Drama.png | Bin 0 -> 4242 bytes
icons/default/EPGInfo/Genre/FFFFFF/Music.png | Bin 0 -> 1305 bytes
icons/default/EPGInfo/Genre/FFFFFF/Musik.png | Bin 0 -> 1899 bytes
.../EPGInfo/Genre/FFFFFF/M\303\244rchen.png" | Bin 0 -> 3021 bytes
icons/default/EPGInfo/Genre/FFFFFF/Newspaper.png | Bin 0 -> 2801 bytes
.../EPGInfo/Genre/FFFFFF/North_Direction.png | Bin 0 -> 3083 bytes
icons/default/EPGInfo/Genre/FFFFFF/Online.png | Bin 0 -> 1826 bytes
icons/default/EPGInfo/Genre/FFFFFF/Pacifier.png | Bin 0 -> 1870 bytes
icons/default/EPGInfo/Genre/FFFFFF/Palm-Tree.png | Bin 0 -> 3889 bytes
icons/default/EPGInfo/Genre/FFFFFF/Parliament.png | Bin 0 -> 1514 bytes
icons/default/EPGInfo/Genre/FFFFFF/Percentage2.png | Bin 0 -> 1533 bytes
.../EPGInfo/Genre/FFFFFF/Performing Arts.png | Bin 0 -> 3292 bytes
icons/default/EPGInfo/Genre/FFFFFF/Physics.png | Bin 0 -> 2134 bytes
icons/default/EPGInfo/Genre/FFFFFF/Pie_Chart.png | Bin 0 -> 2953 bytes
icons/default/EPGInfo/Genre/FFFFFF/Playground.png | Bin 0 -> 1760 bytes
.../FFFFFF/Popular Culture_Traditional Arts.png | Bin 0 -> 3972 bytes
icons/default/EPGInfo/Genre/FFFFFF/Processor.png | Bin 0 -> 1208 bytes
icons/default/EPGInfo/Genre/FFFFFF/Rattle.png | Bin 0 -> 1639 bytes
.../EPGInfo/Genre/FFFFFF/Regular_Biking.png | Bin 0 -> 1914 bytes
icons/default/EPGInfo/Genre/FFFFFF/Research.png | Bin 0 -> 1757 bytes
icons/default/EPGInfo/Genre/FFFFFF/Restaurant.png | Bin 0 -> 2584 bytes
icons/default/EPGInfo/Genre/FFFFFF/Rock.png | Bin 0 -> 5840 bytes
icons/default/EPGInfo/Genre/FFFFFF/Roman.png | Bin 0 -> 3052 bytes
icons/default/EPGInfo/Genre/FFFFFF/Running.png | Bin 0 -> 2167 bytes
.../Genre/FFFFFF/Satellite_Sending_Signal.png | Bin 0 -> 2148 bytes
icons/default/EPGInfo/Genre/FFFFFF/Saxophone.png | Bin 0 -> 3946 bytes
.../EPGInfo/Genre/FFFFFF/SciFi_Fantasy_Horror.png | Bin 0 -> 7108 bytes
.../EPGInfo/Genre/FFFFFF/Science-Fiction.png | Bin 0 -> 3525 bytes
..._Classical_Religious_Historical Movie_Drama.png | Bin 0 -> 6313 bytes
icons/default/EPGInfo/Genre/FFFFFF/Server.png | Bin 0 -> 1249 bytes
.../EPGInfo/Genre/FFFFFF/Sheet_Of_Paper.png | Bin 0 -> 1778 bytes
icons/default/EPGInfo/Genre/FFFFFF/Shoe_Woman.png | Bin 0 -> 1262 bytes
icons/default/EPGInfo/Genre/FFFFFF/Shopping.png | Bin 0 -> 2894 bytes
icons/default/EPGInfo/Genre/FFFFFF/Skiing.png | Bin 0 -> 4079 bytes
.../Genre/FFFFFF/Social_Political_Economics.png | Bin 0 -> 4022 bytes
.../default/EPGInfo/Genre/FFFFFF/Special Event.png | Bin 0 -> 6176 bytes
icons/default/EPGInfo/Genre/FFFFFF/Spiel.png | Bin 0 -> 3020 bytes
icons/default/EPGInfo/Genre/FFFFFF/Sport.png | Bin 0 -> 3914 bytes
.../default/EPGInfo/Genre/FFFFFF/Sport_Magazin.png | Bin 0 -> 8251 bytes
.../default/EPGInfo/Genre/FFFFFF/Stanley_Knife.png | Bin 0 -> 1368 bytes
icons/default/EPGInfo/Genre/FFFFFF/Strikes.png | Bin 0 -> 3045 bytes
icons/default/EPGInfo/Genre/FFFFFF/Stroller.png | Bin 0 -> 1803 bytes
icons/default/EPGInfo/Genre/FFFFFF/Student.png | Bin 0 -> 4262 bytes
.../EPGInfo/Genre/FFFFFF/Student_Filled.png | Bin 0 -> 2216 bytes
icons/default/EPGInfo/Genre/FFFFFF/Students2.png | Bin 0 -> 2279 bytes
icons/default/EPGInfo/Genre/FFFFFF/Suitcase.png | Bin 0 -> 1582 bytes
icons/default/EPGInfo/Genre/FFFFFF/Swimming.png | Bin 0 -> 2891 bytes
icons/default/EPGInfo/Genre/FFFFFF/Talk.png | Bin 0 -> 3383 bytes
icons/default/EPGInfo/Genre/FFFFFF/Teams.png | Bin 0 -> 3128 bytes
.../EPGInfo/Genre/FFFFFF/Technology_Science.png | Bin 0 -> 2362 bytes
icons/default/EPGInfo/Genre/FFFFFF/Teddybear.png | Bin 0 -> 2796 bytes
icons/default/EPGInfo/Genre/FFFFFF/Temperature.png | Bin 0 -> 1354 bytes
icons/default/EPGInfo/Genre/FFFFFF/Tennis.png | Bin 0 -> 4020 bytes
icons/default/EPGInfo/Genre/FFFFFF/Test_Tube.png | Bin 0 -> 1598 bytes
.../default/EPGInfo/Genre/FFFFFF/Theatre_Masks.png | Bin 0 -> 4122 bytes
icons/default/EPGInfo/Genre/FFFFFF/Thriller.png | Bin 0 -> 4419 bytes
icons/default/EPGInfo/Genre/FFFFFF/Ticket.png | Bin 0 -> 1223 bytes
icons/default/EPGInfo/Genre/FFFFFF/Treble_Clef.png | Bin 0 -> 1749 bytes
icons/default/EPGInfo/Genre/FFFFFF/Tricycle.png | Bin 0 -> 3070 bytes
icons/default/EPGInfo/Genre/FFFFFF/University.png | Bin 0 -> 1004 bytes
icons/default/EPGInfo/Genre/FFFFFF/Unpublished.png | Bin 0 -> 5890 bytes
.../default/EPGInfo/Genre/FFFFFF/Waypoint_Map.png | Bin 0 -> 3132 bytes
icons/default/EPGInfo/Genre/FFFFFF/Weather.png | Bin 0 -> 3903 bytes
icons/default/EPGInfo/Genre/FFFFFF/Western.png | Bin 0 -> 2396 bytes
icons/default/EPGInfo/Genre/FFFFFF/World_Map.png | Bin 0 -> 2334 bytes
icons/default/EPGInfo/Genre/FFFFFF/Yoga.png | Bin 0 -> 1410 bytes
icons/default/EPGInfo/Genre/FFFFFF/Zombie.png | Bin 0 -> 4436 bytes
icons/default/EPGInfo/Genre/FFFFFF/unknown.png | Bin 0 -> 2154 bytes
icons/default/EPGInfo/Genre/Fashion.png | 1 +
icons/default/EPGInfo/Genre/Film_Cinema.png | 1 +
icons/default/EPGInfo/Genre/Fine Arts.png | 1 +
icons/default/EPGInfo/Genre/Fitness_Health.png | 1 +
.../default/EPGInfo/Genre/Folk_Tradional Music.png | 1 +
icons/default/EPGInfo/Genre/Football_Soccer.png | 1 +
.../Genre/Foreign Countries_Expeditions.png | 1 +
icons/default/EPGInfo/Genre/Further Education.png | 1 +
.../EPGInfo/Genre/Game Show_Quiz_Contest.png | 1 +
icons/default/EPGInfo/Genre/Gardening.png | 1 +
icons/default/EPGInfo/Genre/Handicraft.png | 1 +
.../Informational_Educational_School Programme.png | 1 +
icons/default/EPGInfo/Genre/Jazz.png | 1 +
icons/default/EPGInfo/Genre/Languages.png | 1 +
icons/default/EPGInfo/Genre/Leisure_Hobbies.png | 1 +
icons/default/EPGInfo/Genre/Literature.png | 1 +
icons/default/EPGInfo/Genre/Live Broadcast.png | 1 +
.../EPGInfo/Genre/Magazine_Report_Documentary.png | 1 +
icons/default/EPGInfo/Genre/Martial Sports.png | 1 +
.../Genre/Medicine_Physiology_Psychology.png | 1 +
icons/default/EPGInfo/Genre/Motor Sport.png | 1 +
icons/default/EPGInfo/Genre/Motoring.png | 1 +
icons/default/EPGInfo/Genre/Movie_Drama.png | 1 +
icons/default/EPGInfo/Genre/Music_Ballet_Dance.png | 1 +
icons/default/EPGInfo/Genre/Musical_Opera.png | 1 +
.../EPGInfo/Genre/Nature_Animals_Environment.png | 1 +
icons/default/EPGInfo/Genre/New Media.png | 1 +
icons/default/EPGInfo/Genre/News Magazine.png | 1 +
.../default/EPGInfo/Genre/News_Current Affairs.png | 1 +
.../default/EPGInfo/Genre/News_Weather Report.png | 1 +
icons/default/EPGInfo/Genre/Original Language.png | 1 +
icons/default/EPGInfo/Genre/Performing Arts.png | 1 +
.../Genre/Popular Culture_Traditional Arts.png | 1 +
.../Genre/Pre-school Childrens Programme.png | 1 +
icons/default/EPGInfo/Genre/Religion.png | 1 +
icons/default/EPGInfo/Genre/Remarkable People.png | 1 +
icons/default/EPGInfo/Genre/Rock_Pop.png | 1 +
icons/default/EPGInfo/Genre/Romance.png | 1 +
.../Genre/Science Fiction_Fantasy_Horror.png | 1 +
.../EPGInfo/Genre/Serious_Classical Music.png | 1 +
..._Classical_Religious_Historical Movie_Drama.png | 1 +
icons/default/EPGInfo/Genre/Show_Game Show.png | 1 +
.../EPGInfo/Genre/Soap_Melodrama_Folkloric.png | 1 +
.../EPGInfo/Genre/Social_Political_Economics.png | 1 +
.../EPGInfo/Genre/Social_Spiritual Sciences.png | 1 +
icons/default/EPGInfo/Genre/Special Event.png | 1 +
icons/default/EPGInfo/Genre/Sport Magazine.png | 1 +
icons/default/EPGInfo/Genre/Sports.png | 1 +
icons/default/EPGInfo/Genre/Talk Show.png | 1 +
icons/default/EPGInfo/Genre/Team Sports.png | 1 +
.../EPGInfo/Genre/Technology_Natural Sciences.png | 1 +
icons/default/EPGInfo/Genre/Tennis_Squash.png | 1 +
icons/default/EPGInfo/Genre/Tourism_Travel.png | 1 +
icons/default/EPGInfo/Genre/Unpublished.png | 1 +
icons/default/EPGInfo/Genre/Variety Show.png | 1 +
icons/default/EPGInfo/Genre/Water Sport.png | 1 +
icons/default/EPGInfo/Genre/Winter Sports.png | 1 +
icons/default/EPGInfo/Genre/unknown.png | 1 +
icons/default/changroup.png | Bin 0 -> 1017 bytes
icons/default/chart1.png | Bin 0 -> 1446 bytes
icons/default/chart1b.png | 1 +
icons/default/chart2.png | Bin 0 -> 1322 bytes
icons/default/chart2b.png | 1 +
icons/default/chart3.png | Bin 0 -> 1315 bytes
icons/default/chart3b.png | 1 +
icons/default/chart4.png | Bin 0 -> 1164 bytes
icons/default/chart4b.png | 1 +
icons/default/chart5.png | Bin 0 -> 1265 bytes
icons/default/chart5b.png | 1 +
icons/default/chart6.png | Bin 0 -> 1056 bytes
icons/default/chart6b.png | 1 +
icons/default/chart7.png | Bin 0 -> 1075 bytes
icons/default/chart7b.png | 1 +
icons/default/crypted.png | Bin 0 -> 1874 bytes
icons/default/data.png | Bin 0 -> 19480 bytes
icons/default/extraIcons/Audio.png | Bin 0 -> 1209 bytes
icons/default/extraIcons/AudioVideo.png | Bin 0 -> 1623 bytes
icons/default/extraIcons/Ausschalten.png | Bin 0 -> 2277 bytes
icons/default/extraIcons/Info.png | Bin 0 -> 1993 bytes
icons/default/extraIcons/PlayInfo.png | Bin 0 -> 6255 bytes
icons/default/extraIcons/Playing.png | Bin 0 -> 1991 bytes
icons/default/folder.png | Bin 0 -> 991 bytes
icons/default/forward.png | Bin 0 -> 1086 bytes
icons/default/forward_sel.png | Bin 0 -> 1257 bytes
icons/default/hd.png | Bin 0 -> 1347 bytes
icons/default/logo_background.png | Bin 0 -> 13631 bytes
icons/default/menuIcons/CAM.png | Bin 0 -> 1890 bytes
icons/default/menuIcons/Channels.png | Bin 0 -> 456 bytes
icons/default/menuIcons/Commands.png | Bin 0 -> 1901 bytes
icons/default/menuIcons/DVB.png | Bin 0 -> 966 bytes
icons/default/menuIcons/EPG.png | Bin 0 -> 3071 bytes
icons/default/menuIcons/LNB.png | Bin 0 -> 2502 bytes
icons/default/menuIcons/Miscellaneous.png | Bin 0 -> 784 bytes
icons/default/menuIcons/OSD.png | Bin 0 -> 936 bytes
icons/default/menuIcons/Plugins.png | Bin 0 -> 1949 bytes
icons/default/menuIcons/Recording.png | Bin 0 -> 797 bytes
icons/default/menuIcons/Recordings.png | Bin 0 -> 1263 bytes
icons/default/menuIcons/RecsSortDate.png | Bin 0 -> 3010 bytes
icons/default/menuIcons/RecsSortName.png | Bin 0 -> 2664 bytes
icons/default/menuIcons/Replay.png | Bin 0 -> 1199 bytes
icons/default/menuIcons/Restart.png | Bin 0 -> 2312 bytes
icons/default/menuIcons/Schedule.png | Bin 0 -> 2981 bytes
icons/default/menuIcons/Setup.png | Bin 0 -> 2607 bytes
icons/default/menuIcons/StopRecording.png | Bin 0 -> 7095 bytes
icons/default/menuIcons/StopReplay.png | Bin 0 -> 7088 bytes
icons/default/menuIcons/Timers.png | Bin 0 -> 3699 bytes
icons/default/menuIcons/blank.png | Bin 0 -> 429 bytes
icons/default/menuIcons/vdrlogo_debian.png | Bin 0 -> 7327 bytes
icons/default/menuIcons/vdrlogo_default.png | Bin 0 -> 4122 bytes
icons/default/menuIcons/vdrlogo_easyvdr.png | Bin 0 -> 57281 bytes
icons/default/menuIcons/vdrlogo_gen2vdr.png | Bin 0 -> 11376 bytes
icons/default/menuIcons/vdrlogo_shine.png | Bin 0 -> 8938 bytes
icons/default/menuIcons/vdrlogo_xubuntu.png | Bin 0 -> 35530 bytes
icons/default/menuIcons/vdrlogo_xubuntu2.png | Bin 0 -> 9217 bytes
icons/default/menuIcons/vdrlogo_yavdr.png | Bin 0 -> 4366 bytes
icons/default/message_error.png | Bin 0 -> 2236 bytes
icons/default/message_info.png | Bin 0 -> 2906 bytes
icons/default/message_status.png | Bin 0 -> 2923 bytes
icons/default/message_warning.png | Bin 0 -> 1327 bytes
icons/default/mute.png | Bin 0 -> 2284 bytes
icons/default/pause.png | Bin 0 -> 436 bytes
icons/default/pause_sel.png | Bin 0 -> 535 bytes
icons/default/play.png | Bin 0 -> 835 bytes
icons/default/play_sel.png | Bin 0 -> 1000 bytes
icons/default/pluginIcons/admin.png | Bin 0 -> 1908 bytes
icons/default/pluginIcons/arghdirector.png | Bin 0 -> 4211 bytes
icons/default/pluginIcons/autostart.png | Bin 0 -> 2969 bytes
icons/default/pluginIcons/avahi4vdr.png | Bin 0 -> 2895 bytes
icons/default/pluginIcons/avards.png | Bin 0 -> 631 bytes
icons/default/pluginIcons/block.png | Bin 0 -> 1010 bytes
icons/default/pluginIcons/burn.png | Bin 0 -> 3303 bytes
icons/default/pluginIcons/cdplayer.png | Bin 0 -> 1246 bytes
icons/default/pluginIcons/chanman.png | Bin 0 -> 2544 bytes
icons/default/pluginIcons/check.png | Bin 0 -> 1955 bytes
icons/default/pluginIcons/conflictcheckonly.png | Bin 0 -> 2597 bytes
icons/default/pluginIcons/ddci.png | Bin 0 -> 2778 bytes
icons/default/pluginIcons/devstatus.png | Bin 0 -> 2976 bytes
icons/default/pluginIcons/dummydevice.png | Bin 0 -> 1864 bytes
icons/default/pluginIcons/duplicates.png | Bin 0 -> 2182 bytes
icons/default/pluginIcons/dvbapi.png | Bin 0 -> 2769 bytes
icons/default/pluginIcons/dvbhddevice.png | Bin 0 -> 3091 bytes
icons/default/pluginIcons/dvbsddevice.png | Bin 0 -> 3445 bytes
icons/default/pluginIcons/dvd.png | Bin 0 -> 5493 bytes
icons/default/pluginIcons/dvdswitch.png | Bin 0 -> 7113 bytes
icons/default/pluginIcons/dynamite.png | Bin 0 -> 3304 bytes
icons/default/pluginIcons/eepg.png | Bin 0 -> 2851 bytes
icons/default/pluginIcons/epg2vdr.png | Bin 0 -> 3268 bytes
icons/default/pluginIcons/epgsearch.png | Bin 0 -> 2279 bytes
icons/default/pluginIcons/epgsearchonly.png | Bin 0 -> 2279 bytes
icons/default/pluginIcons/epgsync.png | Bin 0 -> 3131 bytes
icons/default/pluginIcons/externalplayer.png | Bin 0 -> 2267 bytes
icons/default/pluginIcons/extrecmenu.png | Bin 0 -> 2075 bytes
icons/default/pluginIcons/favorites.png | Bin 0 -> 1292 bytes
icons/default/pluginIcons/femon.png | Bin 0 -> 2825 bytes
icons/default/pluginIcons/fepg.png | Bin 0 -> 2150 bytes
icons/default/pluginIcons/filebrowser.png | Bin 0 -> 3977 bytes
icons/default/pluginIcons/fritzbox.png | Bin 0 -> 3922 bytes
icons/default/pluginIcons/graphlcd.png | Bin 0 -> 1392 bytes
icons/default/pluginIcons/graphtft.png | Bin 0 -> 1392 bytes
icons/default/pluginIcons/image.png | Bin 0 -> 2278 bytes
icons/default/pluginIcons/imonlcd.png | Bin 0 -> 1392 bytes
icons/default/pluginIcons/iptv.png | Bin 0 -> 2313 bytes
icons/default/pluginIcons/lcdproc.png | Bin 0 -> 1392 bytes
icons/default/pluginIcons/mailbox.png | Bin 0 -> 1619 bytes
icons/default/pluginIcons/makemkv.png | Bin 0 -> 1567 bytes
icons/default/pluginIcons/markad.png | Bin 0 -> 5396 bytes
icons/default/pluginIcons/mlist.png | Bin 0 -> 2106 bytes
icons/default/pluginIcons/music.png | Bin 0 -> 5962 bytes
icons/default/pluginIcons/noepg.png | Bin 0 -> 2638 bytes
icons/default/pluginIcons/nordlichtsepg.png | Bin 0 -> 2468 bytes
icons/default/pluginIcons/osdteletext.png | Bin 0 -> 2499 bytes
icons/default/pluginIcons/peer.png | Bin 0 -> 2891 bytes
icons/default/pluginIcons/play.png | Bin 0 -> 990 bytes
icons/default/pluginIcons/pvrinput.png | Bin 0 -> 1571 bytes
icons/default/pluginIcons/quickepgsearch.png | Bin 0 -> 3402 bytes
icons/default/pluginIcons/radio.png | Bin 0 -> 1905 bytes
icons/default/pluginIcons/remote.png | Bin 0 -> 2626 bytes
icons/default/pluginIcons/remotetimers.png | Bin 0 -> 3566 bytes
icons/default/pluginIcons/rssreader.png | Bin 0 -> 2473 bytes
icons/default/pluginIcons/sc.png | Bin 0 -> 2050 bytes
icons/default/pluginIcons/screenshot.png | Bin 0 -> 2179 bytes
icons/default/pluginIcons/seduatmo.png | Bin 0 -> 1123 bytes
icons/default/pluginIcons/skyselectfeeds.png | Bin 0 -> 2200 bytes
icons/default/pluginIcons/sleeptimer.png | Bin 0 -> 3243 bytes
icons/default/pluginIcons/softhddevice.png | Bin 0 -> 3880 bytes
icons/default/pluginIcons/streamdev-server.png | Bin 0 -> 2478 bytes
icons/default/pluginIcons/systeminfo.png | Bin 0 -> 1701 bytes
icons/default/pluginIcons/targavfd.png | Bin 0 -> 1392 bytes
icons/default/pluginIcons/trayopenng.png | Bin 0 -> 915 bytes
icons/default/pluginIcons/tvguide.png | Bin 0 -> 1878 bytes
icons/default/pluginIcons/tvm2vdr.png | Bin 0 -> 2344 bytes
icons/default/pluginIcons/tvscraper.png | Bin 0 -> 2377 bytes
icons/default/pluginIcons/undelete.png | Bin 0 -> 2584 bytes
icons/default/pluginIcons/weatherng.png | Bin 0 -> 1401 bytes
icons/default/pluginIcons/xmltv2vdr.png | Bin 0 -> 2684 bytes
icons/default/pluginIcons/yaepghg.png | Bin 0 -> 1878 bytes
icons/default/prev.png | Bin 0 -> 1017 bytes
icons/default/prev_sel.png | Bin 0 -> 1134 bytes
icons/default/radio.png | Bin 0 -> 2119 bytes
icons/default/recording.png | Bin 0 -> 482 bytes
icons/default/recording_cutted.png | Bin 0 -> 2537 bytes
icons/default/recording_cutted_extra.png | Bin 0 -> 3606 bytes
icons/default/recording_new.png | Bin 0 -> 2106 bytes
icons/default/rewind.png | Bin 0 -> 1088 bytes
icons/default/rewind_sel.png | Bin 0 -> 1351 bytes
icons/default/sd.png | Bin 0 -> 1752 bytes
icons/default/skip.png | Bin 0 -> 1007 bytes
icons/default/skip_sel.png | Bin 0 -> 1016 bytes
icons/default/text_arrowturn.png | Bin 0 -> 972 bytes
icons/default/text_arrowturn_cur.png | Bin 0 -> 972 bytes
icons/default/text_arrowturn_sel.png | Bin 0 -> 972 bytes
icons/default/text_new.png | Bin 0 -> 7004 bytes
icons/default/text_new_cur.png | Bin 0 -> 7004 bytes
icons/default/text_new_sel.png | Bin 0 -> 7004 bytes
icons/default/text_rec.png | Bin 0 -> 9537 bytes
icons/default/text_rec_cur.png | Bin 0 -> 9537 bytes
icons/default/text_rec_sel.png | Bin 0 -> 9537 bytes
icons/default/text_timer_full.png | Bin 0 -> 3699 bytes
icons/default/text_timer_full_cur.png | Bin 0 -> 3699 bytes
icons/default/text_timer_full_sel.png | Bin 0 -> 3699 bytes
icons/default/text_timer_partial.png | Bin 0 -> 3929 bytes
icons/default/text_timer_partial_cur.png | Bin 0 -> 3929 bytes
icons/default/text_timer_partial_sel.png | Bin 0 -> 3929 bytes
icons/default/text_vps.png | Bin 0 -> 9908 bytes
icons/default/text_vps_cur.png | Bin 0 -> 9908 bytes
icons/default/text_vps_sel.png | Bin 0 -> 9908 bytes
icons/default/timerActive.png | Bin 0 -> 1040 bytes
icons/default/timerInactive.png | Bin 0 -> 1467 bytes
icons/default/timerInactiveBig.png | Bin 0 -> 9016 bytes
icons/default/timerRecording.png | Bin 0 -> 428 bytes
icons/default/timer_full.png | Bin 0 -> 3699 bytes
icons/default/timer_partial.png | Bin 0 -> 5770 bytes
icons/default/topbar_timer.png | Bin 0 -> 2817 bytes
icons/default/topbar_timerconflict_high.png | Bin 0 -> 7713 bytes
icons/default/topbar_timerconflict_low.png | Bin 0 -> 8300 bytes
icons/default/tracks_ac3.png | Bin 0 -> 8972 bytes
icons/default/tracks_stereo.png | Bin 0 -> 3757 bytes
icons/default/tv.png | Bin 0 -> 933 bytes
icons/default/uncrypted.png | Bin 0 -> 1872 bytes
icons/default/unknown_asp.png | Bin 0 -> 1104 bytes
icons/default/unknown_res.png | Bin 0 -> 1006 bytes
icons/default/vps.png | Bin 0 -> 3263 bytes
icons/default/widgets/active_timers.png | Bin 0 -> 3004 bytes
icons/default/widgets/clear-day.png | Bin 0 -> 4980 bytes
icons/default/widgets/clear-night.png | Bin 0 -> 3115 bytes
icons/default/widgets/cloudy.png | Bin 0 -> 6433 bytes
icons/default/widgets/command_output.png | Bin 0 -> 793 bytes
icons/default/widgets/dvb_devices.png | Bin 0 -> 966 bytes
icons/default/widgets/fog.png | Bin 0 -> 3652 bytes
icons/default/widgets/last_recordings.png | Bin 0 -> 1263 bytes
icons/default/widgets/partly-cloudy-day.png | Bin 0 -> 7028 bytes
icons/default/widgets/partly-cloudy-night.png | Bin 0 -> 6409 bytes
icons/default/widgets/rain.png | Bin 0 -> 6000 bytes
icons/default/widgets/sleet.png | Bin 0 -> 6021 bytes
icons/default/widgets/snow.png | Bin 0 -> 7660 bytes
icons/default/widgets/system_information.png | Bin 0 -> 884 bytes
icons/default/widgets/system_updates.png | Bin 0 -> 1878 bytes
icons/default/widgets/temperatures.png | Bin 0 -> 5229 bytes
icons/default/widgets/thunderstorm.png | Bin 0 -> 6644 bytes
icons/default/widgets/timer_conflicts.png | Bin 0 -> 3421 bytes
icons/default/widgets/umbrella.png | Bin 0 -> 2290 bytes
icons/default/widgets/weather.png | Bin 0 -> 5404 bytes
icons/default/widgets/wind.png | Bin 0 -> 2568 bytes
icons/fnuanthraamber/logo_background.png | 1 +
icons/fnuanthraamber/recording_new.png | 1 +
icons/fnuanthraamber/recording_new_amber.png | Bin 0 -> 8842 bytes
icons/fnuanthracutis/logo_background.png | 1 +
icons/fnuanthracutis/recording_new.png | 1 +
icons/fnuanthracutis/recording_new_cutis.png | Bin 0 -> 9625 bytes
icons/fnuanthragreen/logo_background.png | 1 +
icons/fnuanthragreen/recording_new.png | 1 +
icons/fnuanthragreen/recording_new_green.png | Bin 0 -> 7239 bytes
icons/fnuanthraivory/logo_background.png | 1 +
icons/fnuanthraivory/recording_new.png | 1 +
icons/fnuanthraivory/recording_new_ivory.png | Bin 0 -> 9952 bytes
icons/fnuanthralilac/logo_background.png | 1 +
icons/fnuanthralilac/recording_new.png | 1 +
icons/fnuanthralilac/recording_new_lilac.png | Bin 0 -> 9805 bytes
icons/fnuanthrared/logo_background.png | 1 +
icons/fnuanthrared/logo_background_white.png | Bin 0 -> 35772 bytes
icons/fnuanthrared/recording_new.png | 1 +
icons/fnuanthrared/recording_new_red.png | Bin 0 -> 7210 bytes
icons/fnuanthrayablue/logo_background.png | 1 +
icons/fnuanthrayablue/recording_new.png | 1 +
icons/fnuanthrayablue/recording_new_yablue.png | Bin 0 -> 9324 bytes
imagecache.c | 83 +
imagecache.h | 34 +
imageloader.c | 246 +
imageloader.h | 30 +
imagemagickwrapper.c | 87 +
imagemagickwrapper.h | 23 +
imagescaler.c | 149 +
imagescaler.h | 97 +
po/de_DE.po | 886 ++++
preview/Beige.png | Bin 0 -> 31539 bytes
preview/Berry.png | Bin 0 -> 30914 bytes
preview/Blood.png | Bin 0 -> 30425 bytes
preview/Blue.png | Bin 0 -> 30816 bytes
preview/Cappuchino.png | Bin 0 -> 31848 bytes
preview/Chocolate.png | Bin 0 -> 31518 bytes
preview/Cyan.png | Bin 0 -> 31274 bytes
preview/DeepBlue.png | Bin 0 -> 31432 bytes
preview/Fog.png | Bin 0 -> 31429 bytes
preview/Grapefruit.png | Bin 0 -> 31317 bytes
preview/Green.png | Bin 0 -> 30817 bytes
preview/Green2.png | Bin 0 -> 31005 bytes
preview/Grey.png | Bin 0 -> 31370 bytes
preview/HelloKitty.png | Bin 0 -> 29808 bytes
preview/HelloKitty2.png | Bin 0 -> 29936 bytes
preview/Indigo.png | Bin 0 -> 31146 bytes
preview/LightBlue.png | Bin 0 -> 31360 bytes
preview/LightGreen.png | Bin 0 -> 31425 bytes
preview/Mint.png | Bin 0 -> 30750 bytes
preview/Nuts.png | Bin 0 -> 30818 bytes
preview/Olive.png | Bin 0 -> 31264 bytes
preview/Orange.png | Bin 0 -> 31274 bytes
preview/Pflaume.png | Bin 0 -> 31130 bytes
preview/Pumpkin.png | Bin 0 -> 31001 bytes
preview/Purple.png | Bin 0 -> 30983 bytes
preview/PurpleGrey.png | Bin 0 -> 31879 bytes
preview/Rauchglas.png | Bin 0 -> 31669 bytes
preview/Red.png | Bin 0 -> 30506 bytes
preview/Terra.png | Bin 0 -> 30904 bytes
preview/White.png | Bin 0 -> 32706 bytes
preview/XMAS.png | Bin 0 -> 31106 bytes
preview/Zitrone.png | Bin 0 -> 30930 bytes
services/epgsearch.h | 167 +
services/scraper2vdr.h | 194 +
setup.c | 1370 ++++++
setup.h | 98 +
skinflatplus.c | 140 +
textscroller.c | 196 +
textscroller.h | 90 +
themes/flatPlus-MVBeige.theme | 118 +
themes/flatPlus-MVBerry.theme | 118 +
themes/flatPlus-MVBlood.theme | 118 +
themes/flatPlus-MVBlue.theme | 118 +
themes/flatPlus-MVCappuchino.theme | 118 +
themes/flatPlus-MVChocolate.theme | 118 +
themes/flatPlus-MVCyan.theme | 118 +
themes/flatPlus-MVDeepBlue.theme | 118 +
themes/flatPlus-MVFog.theme | 118 +
themes/flatPlus-MVGrapefruit.theme | 118 +
themes/flatPlus-MVGreen.theme | 118 +
themes/flatPlus-MVGreen2.theme | 118 +
themes/flatPlus-MVGrey.theme | 118 +
themes/flatPlus-MVHelloKitty.theme | 118 +
themes/flatPlus-MVHelloKitty2.theme | 118 +
themes/flatPlus-MVIndigo.theme | 118 +
themes/flatPlus-MVLightBlue.theme | 118 +
themes/flatPlus-MVLightGreen.theme | 118 +
themes/flatPlus-MVMint.theme | 118 +
themes/flatPlus-MVNuts.theme | 118 +
themes/flatPlus-MVOlive.theme | 118 +
themes/flatPlus-MVOrange.theme | 118 +
themes/flatPlus-MVPflaume.theme | 118 +
themes/flatPlus-MVPumpkin.theme | 118 +
themes/flatPlus-MVPurple.theme | 118 +
themes/flatPlus-MVPurpleGrey.theme | 118 +
themes/flatPlus-MVRauchglas.theme | 118 +
themes/flatPlus-MVRed.theme | 118 +
themes/flatPlus-MVTerra.theme | 118 +
themes/flatPlus-MVWhite.theme | 118 +
themes/flatPlus-MVXMAS.theme | 118 +
themes/flatPlus-MVZitrone.theme | 118 +
themes/flatPlus-default.theme | 118 +
themes/flatPlus-default_DeepOrange.theme | 118 +
themes/flatPlus-default_DeepPurple.theme | 118 +
themes/flatPlus-default_Indigo.theme | 118 +
themes/flatPlus-default_Red.theme | 118 +
themes/flatPlus-default_Teal.theme | 118 +
themes/flatPlus-fnuanthraamber.theme | 118 +
themes/flatPlus-fnuanthracutis.theme | 118 +
themes/flatPlus-fnuanthragreen.theme | 118 +
themes/flatPlus-fnuanthraivory.theme | 118 +
themes/flatPlus-fnuanthralilac.theme | 118 +
themes/flatPlus-fnuanthrared.theme | 118 +
themes/flatPlus-fnuanthrayablue.theme | 118 +
widgets/command_output/README | 6 +
widgets/command_output/command.example | 9 +
widgets/system_information/README | 15 +
widgets/system_information/system_information.g2v | 182 +
.../system_information/system_information.ubuntu | 172 +
widgets/system_updatestatus/README | 8 +
.../system_update_status.ubuntu | 20 +
widgets/temperatures/README | 10 +
widgets/temperatures/temperatures.default | 28 +
widgets/temperatures/temperatures.g2v | 37 +
widgets/weather/GetLatLangFromCity.php | 25 +
widgets/weather/README | 13 +
widgets/weather/lib/forecast.io.php | 431 ++
widgets/weather/update_weather.config.sample | 23 +
widgets/weather/update_weather.php | 110 +
3541 files changed, 26660 insertions(+)
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..f90922e
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/HISTORY b/HISTORY
new file mode 100644
index 0000000..f906d70
--- /dev/null
+++ b/HISTORY
@@ -0,0 +1,254 @@
+VDR Plugin 'skinflatplus' Revision History
+---------------------------------------
+
+2014-MM-DD: Version 0.5.0
+- [fix] femon receiver - do not get data from previous channel
+- [fix] display replay jump text position
+- [add] main menu widgets
+ - there are several widgets that can be displayed in the main menu
+ - Widget weather
+ - Widget dvb devices
+ - Widget active timer
+ - Widget timer conflicts
+ - Widget last recordings
+ - Widget system information
+ - Widget system updates
+ - Widget temperatures
+ - Widget custom command
+ - please see the example scripts and README-files
+- [add] weather widget in channelinfo and replayinfo
+- [add] option Weather widget font size
+- [add] poster/banner image in replay info
+- [add] dimm on pause feature
+ you can set a timeout and the opaque value. If You press pause while replaying the display will be dimmed after the timeout
+- [update] default themes
+ - background transparency slightly reduced
+ - use color palette of android material design
+ - default accent color is "Light Blue"
+ - add more default themes: DeepOrange, DeepPurple, Indigo, Red, Teal
+- [update] icons
+ - update many icons with android material design icons
+- [update] MV-Themes
+ - see MV_Themes.HISTORY
+- [update] display replay, in mode only only show small version
+- [update] remove fonts from contrib folder
+ they waste to much space, if you need them, grab it from previous version
+- [update] Makefile
+ rename VDRLOGO to SKINFLATPLUS_VDRLOGO
+ new variable SKINFLATPLUS_WIDGETDIR for specify the path to the widgets
+
+2014-10-29: Version 0.4.3
+- [add] option to draw the menu background over the entire height
+- [add] sort icon in recordings menu
+- [add] options to show the number of recordings in title in recording menu
+- [add] hidden options "ShortRecordingCount" to show number of recordings in short format
+- [add] options to show the number of timers in title in timer menu
+- [add] options to show the number of channels in title in channel menu
+- [add] inactive timer icon in short view with epg
+- [add] fsk, genre text in epg/recording info (show additional epg info must be set) (thanks to MegaV0lt)
+- [add] fsk, genre icon in epg/recording info head (show additional epg info must be set) (thanks to MegaV0lt)
+- [update] german translation (thanks to MegaV0lt)
+
+2014-08-10: Version 0.4.2
+- [update] change direcotry of config-files
+
+2014-08-10: Version 0.4.1
+- [add] option to hide "clock" text
+- [add] option to set program past/remaining time format (past/remaining, past, remaining)
+- [update] plugin settings column width from 30 to 35
+- [update] fnu anthra themes (thanks to Frank [fnu at vdr-portal])
+
+2014-08-09: Version 0.4.0
+- [update] topbar position of text
+- [update] MVThemes
+ new preview images in "preview" folder
+- [add] Textscroller support
+ - text in displaychannel for epg-text and epgshort-text
+ - messages
+ - menu item channel
+ - menu item timer
+ - menu item recording
+ - menu item event
+- [add] new plugin icons
+- [add] new icon 169w screen resolution icon
+- [add] options to save and load settings
+ You can save the current settings in a config file, the config file will be named with current date & time.
+ You can then rename the file manually.
+ Also You can load a specific config file.
+ So You can save your preferred config and test others.
+- [add] new options in general settings for textscroller
+- [add] new option "Diskusage free/occupied" to show free or occupied percantage and hours
+- [add] new option "Diskusage short display" for only show percantage and free/occupied hours
+- [add] new option "TopBar clock font scale" to scale the clock font
+- [add] new option "Time seconds font scale" to scale the seconds in recording view (thanks MegaV0lt + Lars for help)
+- [add] new option "Show video/audio bitrate" to show the bitrate of audio/video in display channel (lent code from femon, thanks!)
+ new hidden config "ChannelBitrateShowCalcInterval" to set the interval of the video/audio bitrate calculation
+- [add] image _cur version for recording_cutted, recording_new, timer_full, timer_partial, vps
+ if it is the current/selected menu item the cur version of the image will be loaded
+- [add] Support for scrollbar type and size like border and progressbar
+ You can specify the scrollbar type and size in the decor file (ScrollBarType & ScrollBarSize)
+ You can also override the type and size in the setup
+ 8 Types:
+ * 0 = left line + rect bar
+ * 1 = left line + round bar
+ * 2 = middle line + rect bar
+ * 3 = middle line + round bar
+ * 4 = outline + rect bar
+ * 5 = outline + round bar
+ * 6 = rect bar
+ * 7 = round bar
+- [update] decor-files for new scrollbar options
+- [fix] position in menu item event
+- [fix] wrong margin of folder icon in recordings menu
+
+2014-06-19: Version 0.3.1
+- [fix] epg image position on channel info
+- [fix] Bug #1847 - SetRecording border with deleteresume.patch
+- [fix] test if decor-files are installed in setup
+- [fix] correct cut text on tab size
+- [update] tvscraper service api. ! Use only with new TVScraper Version 0.2.0 or greater !
+- [update] crypted.png
+- [update] use 10_rect_sml.decor as default
+- [update] MV-Themes
+- [update] left align number recordings of folders in recording view
+- [update] Makefile, add --remove-destination to install icons, to override symlinks
+- [update] use icons instead of xpm-symbols (new icons are text_???)
+- [add] theme colors clrMenuEventTitleLine and clrMenuRecTitleLine for the line under title in event and recording
+- [add] theme color clrChannelEPGBorderFg and clrChannelEPGBorderBg for border color of epg image in chanel info
+- [add] decor option ChannelEPGBorderType and ChannelEPGBorderSize for border of epg image in chanel info
+- [add] patch - load epg image cover_vdr.jpg in recordings folder (thanks to Saman at vdr-portal.de)
+- [add] new option message color position (vertical, horizontal)
+- [add] message icons
+
+2014-05-11: Version 0.3.0
+- [fix] use only current Event in extraevent display in displaychannel
+- [fix] SetRecording border with deleteresume.patch
+- [fix] recording menu with cutted recordings an %
+- [fix] all around some small fixes
+- [update] channel logo in wide format (like 3PO or Copperhead logos)
+- [update] complete rewrite multiline content
+- [update] draw timer menu with a straight table
+- [update] README, teile vom Wiki in README-Datei übernommen
+- [add] show reruns in epg info (lent code from nopacity, thanks!)
+- [add] TVScraper support
+ - show poster images of movies and series
+ - show actor images
+- [add] scraper2vdr support
+ - show poster images of movies and series
+ - show actor images
+ - show movies and series information
+- [add] plugin settings for TVScraper/scraper2vdr
+- [add] more options to show disk usage (not show; timer & recording menu; always on the menu; always show)
+- [add] horizontal line and group icon in SetItemEvent for group channels
+- [add] new fnu_anthra_themes (thank You fnu/Frank)
+- [add] eventsview-flatplus.sql for epgd to prevent double information in epg-text, please see wiki for more information
+- [add] parse tilde in timer menu and draw text after tilde with clrMenuItemExtraTextFont
+
+2014-03-25: Version 0.2.1
+- [fix] epgsearch progessbar in SetItemEvent, if epg start time is after now (2 minutes tolerance)
+- [fix] channel logo in topbar in program menu
+- [fix] reply info background color
+- [fix] display channel progressbar while zapping
+- [update] imagecache, pre load images after skin is loaded
+ new menu item under general to show the amount of cached images
+ debug syslog message if cache is overflow
+- [update] display signal quality in displaychannel one above the other (before side by side)
+- [update] you can configure to use colors for signal quality (works only with ProgresType big line + outline)
+- [update] only update signal quality if the values for STR or SNR changed
+- [add] theme color clrMenuItemExtraTextCurrentFont
+- [add] logo background for channel logos (filename: logo_background.png)
+- [add] show cutted length of recording in replay info
+- [add] update script to update MV-Themes (contrib/flatPlus_MV_Update.sh)
+- [add] timer conflicts in TopBar, active epgsearch is needed, configurable via menu settings
+ you can configure a min value at which it will shown in red (otherwise yellow)
+- [add] display audio channel icons in audio tracks menu
+
+2014-02-22: Version 0.2.0
+- [fix] load user decor settings
+- [fix] menu scrollbar size and margin
+- [fix] no scrollbar in some situations
+- [fix] remove button border if button is not shown
+- [fix] menuitem progressbar overlay itemtext
+- [fix] fixes in TopBar while icon set
+- [fix] setup, wrong init stringlist
+- [fix] more small fixes
+- [update] add Patch from MegaV0lt, support for simple aspect & format, new icons
+- [update] only log not loaded images
+- [update] MV-Themes, thanks MegaV0lt!
+- [add] theme colors clrMenuTextFixedFont, clrMenuTimerItemDisabledFont, clrMenuTimerItemRecordingFont,
+ clrMenuItemExtraTextFont
+- [add] add support for menu SetItemChannel
+- [add] add support for menu SetItemTimer
+- [add] add support for menu SetItemEvent (program menu)
+- [add] add support for menu SetItemRecording
+- [add] imagescaler from skin nopacity (thank you!)
+- [add] imagecache for faster image loading
+- [add] option MenuItemRecordingClearPercent set to 1 to clear the '%' in recording names (you have an cut icon to detect cutted recordings)
+- [add] option MenuItemRecordingShowFolderDate to show the date in the folder item from the newest/oldest recording in that folder (0 = disable, 1 = newest recording date, 2 = oldest recording date)
+- [add] option MenuItemParseTilde for parse the tilde (of epgsearch) and draw the text after the tilde in clrMenuItemExtraTextFont color
+- [add] define DEBUGIMAGELOADTIME for debug output of imageloader time (search in cache, load from disk, scale)
+
+
+2013-11-24: Version 0.1.0 - MegaV0lt Version
+Special thanks to MegaV0lt at VDR-Portal for
+detailed bug reports, feature requests, testing and themes + icons
+
+!!!
+Please delete previous themes and icons!
+!!!
+
+- [fix] many small fixes
+- [fix] marker position
+- [fix] borders displaced
+- [fix] icon size in channel display
+- [update] menu has full width if no scrollbar is needed
+- [update] TopBar date align right
+- [update] channel display icons
+- [update] show recording in display channel for present and following
+- [update] do not DisplayChannel for the first time
+- [update] remove decor settings from themes and add separately decor files.
+ You can select decor file from plugin settings.
+ WARNING: Please delete all old themes!
+- [add] free minutes in disk usage TopBar
+- [add] TopBar font size option (select individual font size for TopBar)
+- [add] message bottom offset option (select the offset of bottom screen for messages)
+- [add] menu items symbols for rec, timer, etc. Lent code from skin elchi (thank you!)
+- [add] option menu content full size background (draw menu background for full menu size
+ or only for content size)
+- [add] option to display resolution & aspect in display channel
+- [add] option do display format (hd/sd) in display channel
+- [add] option to display resolution & aspect in replay
+- [add] option do display format (hd/sd) in replay
+- [add] default logo for channels without channel logo (logo for tv and radio)
+- [add] use icon from default theme if current theme does not have the icon
+- [add] option to show additional info in epg menu. Lent code from skin elchi (thank you!)
+- [add] option to show additional info in recording menu. Lent code from skin elchi (thank you!)
+- [add] option to show active recording in TopBar
+- [add] menu icons (lent some code from skin nopacity, thanks!)
+- [add] TopBar menu icons
+- [add] many themes, icons, etc. - many thanks for MegaV0lt!
+
+
+2013-09-23: Version 0.0.1
+difference to skinflat
+- [add] configurable borders
+ - any window have its own border with separate size and type
+ - 6 border types:
+ rect, round, invert round,
+ rect + alpha blend, round + alpha blend, invert round + alpha blend
+ - configurable by theme or user
+- [add] configurable progressbar
+ - any progressbar have its own size and type
+ - 10 progressbar types:
+ small line + big line, big line, big line + outline,
+ small line + big line + dot, big line + dot, big line + outline + dot,
+ small line + dot, outline + dot, small line + big line + alpha blend,
+ big line + alpha blend
+ - configurable by theme or user
+- [add] channel icons for resolution, recording, encrypted (configurable)
+- [add] show disk usage in topbar @ menu recordings & timer
+- [add] show disk usage pie graph
+- [add] show signal strength and quality (configurable)
+- [add] hide empty color buttons (configurable)
+- [add] configure menu item padding
+- [add] configure osd margin
diff --git a/MV_Themes.HISTORY b/MV_Themes.HISTORY
new file mode 100644
index 0000000..88f788f
--- /dev/null
+++ b/MV_Themes.HISTORY
@@ -0,0 +1,112 @@
+MV-Themen fuer Skin flatPlus
+
+Download: https://dl.dropboxusercontent.com/u/1490505/VDR/skinflatplus/MV_Themes.tar.xz
+
+HISTORY
+ [...] Erste Version
+ [18.11.2013] - Themen ueberarbeitet. Farben angepasst und .decor erstellt
+ [24.11.2013] - Widergabestatus: Symbole passend zu den Themen eingefaerbt
+ - Formatsymbole: von 100% Weiss nach 95%
+ [25.11.2013] - Wiedergabe-Info: Eigenes Symbol (extraIcons/playing.png)
+ [26.11.2013] - Wiedergabe-Info: Symbolname korrigiert (extraIcons/Playing.png)
+ - Themen "Blood" und "Rauchglas" nur noch mit geaendertem Hintergrund
+ => Bitte alte Themen und Icon-Ordner loeschen <=
+ - Neu: Thema "Fog"
+ [27.11.2013] - Farben angepasst (Tasten und Nachrichten)
+ - Thema "Fog" Schriftfarbe geaendert
+ [29.11.2013] - Thema "Fog", "Mint", "Pumpkin" Schriftfarbe bei ausgewaehlt Invertiert
+ - Formatsymbole in Farbe #D5D5D5
+ [06.12.2013] - Neu: Thema "XMAS"
+ [07.12.2013] - Thema "Fog" Schriftfarbe geaendert
+ [08.12.2013] - Thema "XMAS" Farben getauscht
+ - Wiedergabe Balken in Hintergrund-Farbe #959595 und #505050
+ - Lautstaerke: Rand 15, Leiste 25
+ - Inaktive Widergabesymbole #909090
+ [09.12.2013] - Hintergrundtransparenz C0 -> C5
+ - Thema "XMAS" Farben angepasst
+ [27.01.2014] - Formatsymbole geaendert: 1920x1080.png, ...
+ [29.01.2014] - Symbol 'Chart7.png' in rot (Platte fast voll)
+ [02.02.2014] - Sparaufloesungen mit Warn-Symbol
+ [10.02.2014] - Symbol changroup (Marker in Kanalliste) in Skinfarbe
+ [11.02.2014] - Symbol changroup (Marker in Kanalliste) geaendert
+ - Wiedergabe Balken in Hintergrund-Farbe #757575 und #303030
+ [12.02.2014] - Aktive Timer in Rot
+ - Symbole für Timer-Ansicht eingefaerbt
+ - Dritte Farbe Balken von #303030 -> #555555
+ - Festbreitenschrift in #CCBB22
+ [15.02.2014] - Neue Sysmbole fuer timer_full.png, timer_partial.png und vps.png
+ - Symbol tv.png und radio.png verkleinert
+ - Neues Thema "DeepBlue"
+ [19.02.2014] - Neues Symbol fuer "Neu"
+ [20.02.2014] - Symbole 'timerActive.png', 'timerInactive.png' und 'timerRecording.png'
+ mit Schatten
+ - 'timer_full.png' verkleinert, 'timer_partial.png' geaendert
+ [10.03.2014] - ExtraTextFont in Themenfarbe
+ - ExtraTextCurrentFont in Hintergrundfarbe
+ [11.03.2014] - 'logo_background.png' fuer Kanallogos mit 30% Deckkraft und in #FFFFFF
+ [12.03.2014] - 'logo_background.png' mit runden Ecken und leichtem Verlauf
+ - 'vps.png' Schrift vergroessert
+ [14.03.2014] - Verlinkung von Themenuebergreifenden Symbolen mit symbolischen Links
+ [15.03.2014] - 'recording_cutted_extra.png' kleiner und in Themenfarbe
+ - Fehler in 'vps.png' korrigiert
+ [16.03.2014] - Schriftfarbe bei Nachrichten #AAAAAA
+ [21.03.2014] - Schriftfarbe bei Nachrichten #BBBBBB
+ - Farbe Statusmeldung und Knopf 'Blau' in #2222CC
+ [22.03.2014] - Timerkonflikt: Neu 'clrTopBarConflictLowFg', 'clrTopBarConflictLowBg',
+ 'clrTopBarConflictHighFg' und 'clrTopBarConflictHighBg'
+ - Audio: Neu 'clrTrackItemSelableBg', 'clrTrackItemSelableFont',
+ 'clrTrackItemBorderFg', 'clrTrackItemBorderBg',
+ 'clrTrackItemSelableBorderFg' und 'clrTrackItemSelableBorderBg'
+ - Farbe der Symbole 'topbar_timer.png', 'topbar_timerconflict_low.png'
+ und 'topbar_timerconflict_high.png' angepasst
+ - Hinweis auf 'make install' im Skript 'flatPlus_MV_Update.sh'
+ - Option für 'Silent Update' (-u) im Skript 'flatPlus_MV_Update.sh'
+ [03.04.2014] - 'logo_background.png' entfernt. Nutzt nun das default Logo
+ [10.04.2014] - Logos 'radio.png' und 'tv.png' angepasst
+ [30.05.2014] - '70_MV_rect_sml.decor' angepast
+ - Neue Farben 'clrMenuEventTitleLine', 'clrMenuRecTitleLine'
+ 'clrChannelEPGBorderFg' und 'clrChannelEPGBorderBg' eingefuegt
+ [31.05.2014] - Hellere Farbe (+35) bei den Bereichstrennern
+ - Update der empfohlenen Einstellungen in der MV_Themes.INFO
+ - Alle Themen, Decor und *.png ohne Execute-Flag (chmod -x)
+ [01.06.2014] - Textfarbe bei Bereichstrennern heller
+ - Skript 'flatPlus_MV_Update.sh' mit Installation der Themen
+ - Timer- und VPS-Symbol (EPG) in Themenfarbe und mit Schlagschatten
+ - Stern-Symbol (Aufnahmeliste) in Themenfarbe und mit Schlagschatten
+ [02.06.2014] - Farbe fuer Laufende Timer auf #FF5050 (Helles Rot) geaendert
+ [15.06.2014] - Symbole fuer Nachrichten in Farbe (Info, Status, Warnung und Fehler)
+ [16.06.2014] - Symbole 'mesasge_info.png', 'mesasge_status.png' und
+ 'mesasge_warning.png' durch "volle" Versionen ersetzt
+ [28.06.2014] - Neue Symbole fuer 'text_arrow_turn*.png' und 'text_timer_full*.png'
+ - Symbole 'text_new*.png', 'text_rec*.png', 'text_timer_partial*.png'
+ und 'text_vps*.png' mit vorhandenen Symbolen verlinkt
+ [11.07.2014] - Symbol fuer geschnittene Aufnahmen ('recording_cutted.png') in Farbe
+ [12.07.2014] - Symbole 'recording_cutted.png', 'recording_new.png', 'timer_full.png',
+ 'timer_partial.png' und 'vps.png' Schatten entfernt und ein dazu
+ passendes '_cur.png' erstellt
+ - '70_MV_rect_sml.decor' angepasst
+ - Empfohlene Einstellungen aktualisiert
+ [14.07.2014] - Symbol 'chart1b.png' mit 'chart7.png' verlinkt; Symbole 'chart2b.png'
+ bis 'chart7b.png' mit den default Symbolen 'chart6.png' bis
+ 'chart1.png' verlinkt
+ [02.08.2014] - Vorschaubilder fuer alle Themen im Ordner 'preview'
+ - Icons auch fuer MVGreen erstellt
+ [04.08.2014] - Symbol fuer Seitenverhaeltnis bei SD-Sender mit H.264 Codec (20:11)
+ erstellt (16:9 mit Warnsymbol)
+ [09.08.2014] - Konfiguration 'MV_default' hinzugefuegt
+ [28.10.2014] - Konfiguration 'MV_default' aktualisiert fuer Version 0.4.3
+ [31.10.2014] - Neues Thema "Zitrone"
+ [02.11.2014] - Neues 'uncrypted.png' Symbol
+ - Hintergrundtransparenz bei den Themen "Fog" und "Zirtone"
+ auf 'A0' geaendert
+ [03.11.2014] - Farben 'FontTitle' und 'FontTitleLine' getauscht (Linie ist heller)
+ [11.11.2014] - Symbol 'changroup.png' aus dem default-Theme uebernommen; in Skinfarbe
+ [14.11.2014] - Neues Thema "Indigo" vom Default_Indigo abgeleitet
+ - Schriftfarbe beim Thema "Fog" angepasst
+ [17.11.2014] - Konfiguration 'MV_default' wegen der neuen Widgets aktualisiert
+ - Vier neue Themen: "Beige", "Orange", "Terra" und "White"
+ [01.12.2014] - Transparenz der Rahmen bei Ausgewaehlt von "C5" auf "E1" gesetzt
+ [02.12.2014] - Konfiguration 'MV_default' aktualisiert fuer Version 0.5.0
+ - Neu: Installationshinweis für 'configs'
+ - Empfohlene Einstellungen aktualisiert
+ - Hinweis auf Schriften geaendert
diff --git a/MV_Themes.INFO b/MV_Themes.INFO
new file mode 100644
index 0000000..575852f
--- /dev/null
+++ b/MV_Themes.INFO
@@ -0,0 +1,76 @@
+flatPlus-MV_Themen erstellt am 02.12.2014 08:52
+Basisthema: flatPlus-MVGreen.theme, Basisicons: MVdefault
+
+=> Installationshimnweise am Ende der Datei! <=
+
+Thema: Beige, Farbe: CCA550
+Thema: Berry, Farbe: A61D4D
+Thema: Blue, Farbe: 0050EF
+Thema: Cappuchino, Farbe: 87794E
+Thema: Chocolate, Farbe: 825A2C
+Thema: Cyan, Farbe: 149BAF
+Thema: Grapefruit, Farbe: C3461B
+Thema: Grey, Farbe: 647687
+Thema: Indigo, Farbe: 3F51B5
+Thema: LightBlue, Farbe: 1BA1E2
+Thema: LightGreen, Farbe: 70AD11
+Thema: Mint, Farbe: A4C400
+Thema: Nuts, Farbe: BF9217
+Thema: Olive, Farbe: 6D8764
+Thema: Orange, Farbe: F0A30A
+Thema: Pflaume, Farbe: 6A00FF
+Thema: Pumpkin, Farbe: F0A30A
+Thema: Purple, Farbe: 6C0AAB
+Thema: PurpleGrey, Farbe: 76608A
+Thema: Red, Farbe: E51400
+Thema: Terra, Farbe: 7A3B3F
+Thema: Blood, Farbe: 911D10, Hintergrund: 221111
+Thema: DeepBlue, Farbe: 0545DF, Hintergrund: 101030 Schriftfarbe: DDDDEE
+Thema: Fog, Farbe: 111111, Hintergrund: DEDEDE Schriftfarbe: 445867
+Thema: Green 2, Farbe: 008A00, Hintergrund: 112211
+Thema: HelloKitty 2, Farbe: F472D0, Hintergrund: FF80F0
+Thema: HelloKitty, Farbe: F472D0
+Thema: Rauchglas, Farbe: 825A2C, Hintergrund: 200F02
+Thema: White, Farbe: FFFFFF Schriftfarbe: A5A5A5
+Thema: XMAS, Farbe: CC1111, Hintergrund: 114511
+Thema: Zitrone, Farbe: EEEE0F, Hintergrund: 88881A Schriftfarbe: FFFFAA
+31 Themen erstellt. 8 davon mit Hintergrund.
+Insgesamt 32 Icon-Ordner erstellt
+
+Installationshinweise:
+ - Alle *.theme aus dem Ordner themes nach <vdrconfigdir>/themes kopieren.
+ - Alle *.decor aus dem Ordner decors nach <vdrconfigdir>/plugins/skinflatplus/decors kopieren.
+ - Alle MV* aus dem Ordner configs nach <vdrconfigdir>/plugins/skinflatplus/configs kopieren.
+ - Alle MV* Ordner aus dem Ordner icons nach <vdrconfigdir>/plugins/skinflatplus/icons kopieren.
+
+Optional (Pfade evtl. Anpassen!):
+ - Schrift(en) aus dem Archiv https://db.tt/QCyK0I8s entpacken und nach
+ /usr/share/fonts kopieren. Die Schriften enthalten auch die VDR-Symbole.
+
+Empfohlene Einstellungen (setup.conf) im skin-flatplus-Plugin:
+Laden mit "Menue - Einstellungen - Plugins - SkinFlatPlus - Allgemeine Einstellungen:"
+"OK druecken um die Konfigdatei zu laden: MV_default - OK"
+
+Empfohlene Einstellungen (setup.conf) im VDR (Menue - Einstellungen - OSD):
+FontFix = Courier:Bold
+FontFixSize = 33
+FontFixSizeP = 0.031000
+FontOsd = Droid Sans:Regular
+FontOsdSize = 44
+FontOsdSizeP = 0.041000
+FontSml = Droid Sans:Regular
+FontSmlSize = 35
+FontSmlSizeP = 0.032000
+OSDAspect = 1.000000
+OSDHeight = 1080
+OSDHeightP = 1.000000
+OSDLanguage = de_DE
+OSDLeft = 0
+OSDLeftP = 0.000000
+OSDMessageTime = 6
+OSDSkin = flatPlus
+OSDTheme = MVIndigo
+OSDTop = 0
+OSDTopP = 0.000000
+OSDWidth = 1920
+OSDWidthP = 1.000000
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..168e4db
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,165 @@
+#
+# Makefile for a Video Disk Recorder plugin
+#
+# $Id$
+
+# The official name of this plugin.
+# This name will be used in the '-P...' option of VDR to load the plugin.
+# By default the main source file also carries this name.
+# IMPORTANT: the presence of this macro is important for the Make.config
+# file. So it must be defined, even if it is not used here!
+#
+PLUGIN = skinflatplus
+
+# define vdrlogo for menu topbar
+# if not defined vdrlogo_default will be used
+# define here or use make VDRLOGO=\"vdrlogo_default\"
+# available logos are
+# vdrlogo_debian
+# vdrlogo_default
+# vdrlogo_easyvdr
+# vdrlogo_gen2vdr
+# vdrlogo_shine
+# vdrlogo_xubuntu
+# vdrlogo_xubuntu2
+# vdrlogo_yavdr
+SKINFLATPLUS_VDRLOGO = vdrlogo_default
+
+#DEFINES += -DDEBUGIMAGELOADTIME
+#DEFINES += -DDEBUGEPGTIME
+
+### The version number of this plugin (taken from the main source file):
+
+VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).c | awk '{ print $$6 }' | sed -e 's/[";]//g')
+
+### The directory environment:
+
+# Use package data if installed...otherwise assume we're under the VDR source directory:
+PKGCFG = $(if $(VDRDIR),$(shell pkg-config --variable=$(1) $(VDRDIR)/vdr.pc),$(shell pkg-config --variable=$(1) vdr || pkg-config --variable=$(1) ../../../vdr.pc))
+LIBDIR = $(call PKGCFG,libdir)
+LOCDIR = $(call PKGCFG,locdir)
+PLGCFG = $(call PKGCFG,plgcfg)
+VDRCONFDIR = $(call PKGCFG,configdir)
+PLGRESDIR = $(call PKGCFG,resdir)/plugins/$(PLUGIN)
+TMPDIR ?= /tmp
+SKINFLATPLUS_WIDGETDIR ?= $(LIBDIR)/$(PLUGIN)/widgets
+
+### The compiler options:
+export CFLAGS = $(call PKGCFG,cflags)
+export CXXFLAGS = $(call PKGCFG,cxxflags)
+
+### Allow user defined options to overwrite defaults:
+
+-include $(PLGCFG)
+
+### The version number of VDR's plugin API:
+APIVERSION = $(call PKGCFG,apiversion)
+
+### The name of the distribution archive:
+
+ARCHIVE = $(PLUGIN)-$(VERSION)
+PACKAGE = vdr-$(ARCHIVE)
+
+### The name of the shared object file:
+
+SOFILE = libvdr-$(PLUGIN).so
+
+### Includes and Defines and Dependencies (add further entries here):
+
+INCLUDES += $(shell pkg-config --cflags Magick++ freetype2 fontconfig)
+
+DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"' -DVDRLOGO=\"$(SKINFLATPLUS_VDRLOGO)\"
+DEFINES += -DWIDGETFOLDER='"$(SKINFLATPLUS_WIDGETDIR)"'
+
+LIBS += $(shell pkg-config --libs Magick++)
+
+### The object files (add further files here):
+
+OBJS = config.o setup.o imagecache.o imagescaler.o imagemagickwrapper.o imageloader.o baserender.o complexcontent.o textscroller.o femonreceiver.o displaychannel.o displaymenu.o displaymessage.o \
+ displayreplay.o displaytracks.o displayvolume.o flat.o $(PLUGIN).o
+
+### The main target:
+
+all: $(SOFILE) i18n
+
+### Implicit rules:
+
+%.o: %.c
+ $(CXX) -Wall $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) -o $@ $<
+
+### Dependencies:
+
+MAKEDEP = $(CXX) -MM -MG
+DEPFILE = .dependencies
+$(DEPFILE): Makefile
+ @$(MAKEDEP) $(CXXFLAGS) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@
+
+-include $(DEPFILE)
+
+### Internationalization (I18N):
+
+PODIR = po
+I18Npo = $(wildcard $(PODIR)/*.po)
+I18Nmo = $(addsuffix .mo, $(foreach file, $(I18Npo), $(basename $(file))))
+I18Nmsgs = $(addprefix $(DESTDIR)$(LOCDIR)/, $(addsuffix /LC_MESSAGES/vdr-$(PLUGIN).mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file))))))
+I18Npot = $(PODIR)/$(PLUGIN).pot
+
+%.mo: %.po
+ msgfmt -c -o $@ $<
+
+$(I18Npot): $(wildcard *.c)
+ xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --package-name=vdr-$(PLUGIN) --package-version=$(VERSION) --msgid-bugs-address='<see README>' -o $@ `ls $^`
+
+%.po: $(I18Npot)
+ msgmerge -U --no-wrap --no-location --backup=none -q -N $@ $<
+ @touch $@
+
+$(I18Nmsgs): $(DESTDIR)$(LOCDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo
+ install -D -m644 $< $@
+
+.PHONY: i18n
+i18n: $(I18Nmo) $(I18Npot)
+
+install-i18n: $(I18Nmsgs)
+
+### Targets:
+
+$(SOFILE): $(OBJS)
+ $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) $(LIBS) -o $@
+
+install-lib: $(SOFILE)
+ install -D $^ $(DESTDIR)$(LIBDIR)/$^.$(APIVERSION)
+
+install-themes:
+ mkdir -p $(DESTDIR)$(VDRCONFDIR)/themes
+ cp themes/* $(DESTDIR)$(VDRCONFDIR)/themes
+
+install-decors:
+ mkdir -p $(DESTDIR)$(PLGRESDIR)/decors
+ cp decors/* $(DESTDIR)$(PLGRESDIR)/decors
+
+install-icons:
+ mkdir -p $(DESTDIR)$(PLGRESDIR)/icons
+ cp -r --remove-destination icons/* $(DESTDIR)$(PLGRESDIR)/icons
+
+install-configs:
+ mkdir -p $(DESTDIR)$(VDRCONFDIR)/plugins/$(PLUGIN)/configs
+ cp configs/* $(DESTDIR)$(VDRCONFDIR)/plugins/$(PLUGIN)/configs
+
+install-widgets:
+ mkdir -p $(DESTDIR)$(SKINFLATPLUS_WIDGETDIR)
+ cp -r widgets/* $(DESTDIR)$(SKINFLATPLUS_WIDGETDIR)
+
+install: install-lib install-i18n install-themes install-icons install-decors install-configs install-widgets
+
+dist: $(I18Npo) clean
+ @-rm -rf $(TMPDIR)/$(ARCHIVE)
+ @mkdir $(TMPDIR)/$(ARCHIVE)
+ @cp -a * $(TMPDIR)/$(ARCHIVE)
+ @tar czf $(PACKAGE).tgz --exclude .git* --exclude *.o --exclude *.rej --exclude *.orig -C $(TMPDIR) $(ARCHIVE)
+ @-rm -rf $(TMPDIR)/$(ARCHIVE)
+ @echo Distribution package created as $(PACKAGE).tgz
+
+clean:
+ @-rm -f $(PODIR)/*.mo $(PODIR)/*.pot
+ @-rm -f $(OBJS) $(DEPFILE) *.so *.tgz core* *~
diff --git a/README b/README
new file mode 100644
index 0000000..b794461
--- /dev/null
+++ b/README
@@ -0,0 +1,110 @@
+This is a "plugin" for the Video Disk Recorder (VDR).
+
+Written by: Martin Schirrmacher <vdr.skinflatplus at schirrmacher.eu>
+
+Project's homepage: http://projects.vdr-developer.org/projects/plg-skinflatplus/
+
+Projekt Wiki http://projects.vdr-developer.org/projects/plg-skinflatplus/wiki
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+See the file COPYING for more information.
+
+
+Anforderungen
+-------------------------------
+- VDR Version >= 1.7.34
+- ImageMagick zur Anzeige von png/jpg Icons, Kanal Logos and EPG Bilder
+
+
+Beschreibung
+-------------------------------
+Skin flatPlus ist ein moderner und aktueller Skin f�r VDR.
+Das Design ist flach und geradlinig (keine glossy oder 3D-Effekte)
+
+
+git-Zugriff
+-------------------------------
+Auf das git kann mittels
+
+git clone http://projects.vdr-developer.org/git/skin-flatplus.git/
+
+zugegriffen werden.
+Da im git nat�rlich aktiv entwickelt wird k�nnen Fehler nicht ausgeschlossen werden (ich empfehle es nicht f�r produktiv Systeme)
+
+
+Installation
+-------------------------------
+Installation wie bei allen VDR Plugins.
+ make
+ make install
+
+F�r die Kanallogos empfehle ich die Logos von Copperhead: http://creimer.net/channellogos/
+Ich nutze "nopacity-logos-white"
+Die Logos m�ssen im folgenden Ordner zur Verf�gung gestellt werden:
+ <vdrconfigdir>/plugins/skinflat/logos/
+
+Der Skin muss im Men� unter Einstellungen -> OSD ausgew�hlt werden.
+
+
+Versteckte Einstellungen
+-------------------------------
+Versteckte Einstellungen sind Einstellungen die in der VDR setup.conf konfiguriert werden k�nnen, wozu es aber keine Einstellungen im OSD -> Einstellungen -> Plugins -> skinflatplus gibt.
+
+* MenuItemRecordingClearPercent - Wenn die Einstellung auf 1 gesetzt ist, wird vom Aufnahmetext das Prozentzeichen am Anfang des Strings entfernt.
+* MenuItemRecordingShowFolderDate - Wenn die Einstellung auf 1 gesetzt ist, wird bei einem Ordner von der neuesten Aufzeichnung das Datum angezeigt, Wenn die Einstellung auf 2 gesetzt ist, wird bei einem Ordner von der �ltesten Aufzeichnung das Datum angezeigt.
+* MenuItemParseTilde - Wenn die Einstellung auf 1 gesetzt ist, wird beim Men�-Item-Text auf den Buchstaben Tilde '~' gepr�ft und wenn eine Tilde gefunden wurde, wird die Tilde entfernt und alles was nach der Tilde steht in einer anderen Farbe dargestellt. Dies ist z.B. interessant wenn man epgsearch hat.
+* ChannelBitrateShowCalcInterval - In welchen Intervall soll die Bitrate (Kanalanzeige) aktualisiert werden (default 20)
+
+TVScraper & scraper2vdr
+-------------------------------
+Since version 0.3.0 the skin support TVScraper & scraper2vdr.
+With both plugins you'll get poster, banner and actor images for recordings and epg info.
+If You use scraper2vdr, which I recommend, you'll also get movie and series information.
+
+
+epgd & doppelte Informationen in EPG-Text
+-------------------------------
+Wenn epgd + epg2vdr verwendet wird, wird der angezeigte EPG-Text �ber die eventsview.sql festgelegt (in der epgd.conf Option: EpgView).
+Mit der default eventsview.sql ist im EPG-Text die Schauspieler, Serien- und Filminformationen mit enthalten. Da diese dann doppelt angezeigt werden w�rden (im EPG-Text und in den extra Bereichen �ber scraper2vdr) existiert im contrib-Ordner von flatPlus eine eigene "eventsview-flatplus.sql". Mit dieser wird im EPG-Text wirklich nur der EPG-Text ausgeben und keine weiteren Informationen.
+Ich empfehle diese zu verwenden. Daf�r einfach die Datei aus den contrib Ordner nach /etc/epgd/ kopieren und in der epgd.conf folgenden Eintrag verwenden:
+
+EpgView = eventsview-flatplus.sql
+
+
+Themes und Theme spezifische Icons
+-------------------------------
+Der Skin ist weitestgehend �ber Themes anpassbar.
+Die Decorations (Border, ProgressBar) sind �ber das Theme einstellbar. Dabei kann jeweils der Typ und
+die Gr��e (in Pixeln) eingestellt werden. Dabei wird von dem ARGB im Theme nur B verwendet. Es muss darauf geachtet werden
+das die Werte in Hex angegeben werden. Wenn man also z.B. eine Gr��e von 20 Pixeln angeben m�chte hei�t der Wert: 00000014
+Siehe dazu die Beispiele.
+
+Borders:
+ 0 = none
+ 1 = rect
+ 2 = round
+ 3 = invert round
+ 4 = rect + alpha blend
+ 5 = round + alpha blend
+ 6 = invert round + alpha blend
+Beispiel:
+ clrChannelBorderType = 00000004
+ clrChannelBorderSize = 0000000F
+
+ProgressBar:
+ 0 = small line + big line
+ 1 = big line
+ 2 = big line + outline
+ 3 = small line + big line + dot
+ 4 = big line + dot
+ 5 = big line + outline + dot
+ 6 = small line + dot
+ 7 = outline + dot
+ 8 = small line + big line + alpha blend
+ 9 = big line + alpha blend
+Beispiel
+ clrChannelProgressType = 00000008
+ clrChannelProgressSize = 0000000F
diff --git a/baserender.c b/baserender.c
new file mode 100644
index 0000000..64667b8
--- /dev/null
+++ b/baserender.c
@@ -0,0 +1,1655 @@
+#include "baserender.h"
+#include "flat.h"
+#include <vdr/menu.h>
+#include "services/epgsearch.h"
+#include <utility>
+#include <fstream>
+#include <iostream>
+
+#include <ft2build.h>
+#include FT_FREETYPE_H
+
+cFlatBaseRender::cFlatBaseRender(void) {
+ font = cFont::CreateFont(Setup.FontOsd, Setup.FontOsdSize );
+ fontSml = cFont::CreateFont(Setup.FontSml, Setup.FontSmlSize);
+ fontFixed = cFont::CreateFont(Setup.FontFix, Setup.FontFixSize);
+ topBarFontClock = NULL;
+
+ fontHeight = font->Height();
+ fontSmlHeight = fontSml->Height();
+ fontFixedHeight = fontFixed->Height();
+
+ topBarTitle = "";
+ tobBarTitleExtra1 = "";
+ tobBarTitleExtra2 = "";
+ topBarLastDate = "";
+ topBarUpdateTitle = false;
+ topBarHeight = 0;
+ topBarExtraIconSet = false;
+ topBarMenuIcon = "";
+ topBarMenuIconSet = false;
+ topBarMenuIconRight = "";
+ topBarMenuIconRightSet = false;
+ topBarMenuLogo = "";
+ topBarMenuLogoSet = false;
+
+ marginItem = 5;
+
+ scrollBarWidth = Config.decorScrollBarSize;
+
+ buttonsHeight = 0;
+ buttonsDrawn = false;
+
+ osd = NULL;
+ topBarPixmap = NULL;
+ buttonsPixmap = NULL;
+ messagePixmap = NULL;
+ messageIconPixmap = NULL;
+ contentPixmap = NULL;
+ contentEpgImagePixmap = NULL;
+ progressBarPixmap = NULL;
+ progressBarPixmapBg = NULL;
+ decorPixmap = NULL;
+
+ Config.ThemeCheckAndInit();
+ Config.DecorCheckAndInit();
+}
+
+cFlatBaseRender::~cFlatBaseRender(void) {
+ delete font;
+ delete fontSml;
+ delete fontFixed;
+ if( topBarFontClock != NULL )
+ delete topBarFontClock;
+
+ if( osd ) {
+ messageScroller.Clear();
+ if( topBarPixmap )
+ osd->DestroyPixmap(topBarPixmap);
+ if( buttonsPixmap )
+ osd->DestroyPixmap(buttonsPixmap);
+ if( messagePixmap )
+ osd->DestroyPixmap(messagePixmap);
+ if( messageIconPixmap )
+ osd->DestroyPixmap(messageIconPixmap);
+ if( contentPixmap )
+ osd->DestroyPixmap(contentPixmap);
+ if( progressBarPixmap )
+ osd->DestroyPixmap(progressBarPixmap);
+ if( progressBarPixmapBg )
+ osd->DestroyPixmap(progressBarPixmapBg);
+ if( decorPixmap )
+ osd->DestroyPixmap(decorPixmap);
+ if( topBarIconPixmap )
+ osd->DestroyPixmap(topBarIconPixmap);
+ if( topBarIconBGPixmap )
+ osd->DestroyPixmap(topBarIconBGPixmap);
+ if( contentEpgImagePixmap )
+ osd->DestroyPixmap(contentEpgImagePixmap);
+
+ delete osd;
+ }
+}
+
+void cFlatBaseRender::CreateFullOsd(void) {
+ CreateOsd(cOsd::OsdLeft() + Config.marginOsdHor, cOsd::OsdTop() + Config.marginOsdVer, cOsd::OsdWidth() - Config.marginOsdHor*2, cOsd::OsdHeight() - Config.marginOsdVer*2);
+}
+
+void cFlatBaseRender::CreateOsd(int left, int top, int width, int height) {
+ osdLeft = left;
+ osdTop = top;
+ osdWidth = width;
+ osdHeight = height;
+
+ osd = cOsdProvider::NewOsd(left, top);
+ if (osd) {
+ tArea Area = { 0, 0, width, height, 32 };
+ if (osd->SetAreas(&Area, 1) == oeOk) {
+ dsyslog("skinflatplus: create osd SUCCESS left: %d top: %d width: %d height: %d", left, top, width, height);
+ return;
+ }
+ }
+ esyslog("skinflatplus: create osd FAILED left: %d top: %d width: %d height: %d", left, top, width, height);
+ return;
+}
+
+void cFlatBaseRender::TopBarCreate(void) {
+ int fs = int(round(cOsd::OsdHeight() * Config.TopBarFontSize));
+ topBarFont = cFont::CreateFont(Setup.FontOsd, fs);
+ topBarFontClock = cFont::CreateFont(Setup.FontOsd, fs * Config.TopBarFontClockScale * 100.0);
+ topBarFontSml = cFont::CreateFont(Setup.FontOsd, fs / 2);
+ topBarFontHeight = topBarFont->Height();
+ topBarFontSmlHeight = topBarFontSml->Height();
+ topBarFontClockHeight = topBarFontClock->Height();
+
+ if( topBarFontHeight > topBarFontSmlHeight*2 )
+ topBarHeight = topBarFontHeight;
+ else
+ topBarHeight = topBarFontSmlHeight * 2;
+
+ topBarPixmap = osd->CreatePixmap(1, cRect(Config.decorBorderTopBarSize, Config.decorBorderTopBarSize, osdWidth - Config.decorBorderTopBarSize*2, topBarHeight));
+ //dsyslog("skinflatplus: topBarPixmap left: %d top: %d width: %d height: %d", Config.decorBorderTopBarSize, Config.decorBorderTopBarSize, osdWidth - Config.decorBorderTopBarSize*2, topBarHeight);
+ topBarIconBGPixmap = osd->CreatePixmap(2, cRect(Config.decorBorderTopBarSize, Config.decorBorderTopBarSize, osdWidth - Config.decorBorderTopBarSize*2, topBarHeight));
+ //dsyslog("skinflatplus: topBarIconBGPixmap left: %d top: %d width: %d height: %d", Config.decorBorderTopBarSize, Config.decorBorderTopBarSize, osdWidth - Config.decorBorderTopBarSize*2, topBarHeight);
+ topBarIconPixmap = osd->CreatePixmap(3, cRect(Config.decorBorderTopBarSize, Config.decorBorderTopBarSize, osdWidth - Config.decorBorderTopBarSize*2, topBarHeight));
+ //dsyslog("skinflatplus: topBarIconPixmap left: %d top: %d width: %d height: %d", Config.decorBorderTopBarSize, Config.decorBorderTopBarSize, osdWidth - Config.decorBorderTopBarSize*2, topBarHeight);
+ topBarPixmap->Fill(clrTransparent);
+ topBarIconBGPixmap->Fill(clrTransparent);
+ topBarIconPixmap->Fill(clrTransparent);
+
+ if( Config.DiskUsageShow == 3)
+ TopBarEnableDiskUsage();
+}
+
+void cFlatBaseRender::TopBarSetTitle(cString title) {
+ topBarTitle = title;
+ tobBarTitleExtra1 = "";
+ tobBarTitleExtra2 = "";
+ topBarExtraIcon = "";
+ topBarMenuIcon = "";
+ topBarMenuIconRight = "";
+ topBarMenuIconRightSet = false;
+ topBarUpdateTitle = true;
+ topBarExtraIconSet = false;
+ topBarMenuIconSet = false;
+ topBarMenuLogo = "";
+ topBarMenuLogoSet = false;
+ if( Config.DiskUsageShow == 3)
+ TopBarEnableDiskUsage();
+}
+
+void cFlatBaseRender::TopBarSetTitleWithoutClear(cString title) {
+ topBarTitle = title;
+ topBarUpdateTitle = true;
+ if( Config.DiskUsageShow == 3)
+ TopBarEnableDiskUsage();
+}
+
+void cFlatBaseRender::TopBarSetTitleExtra(cString extra1, cString extra2) {
+ tobBarTitleExtra1 = extra1;
+ tobBarTitleExtra2 = extra2;
+ topBarUpdateTitle = true;
+}
+
+void cFlatBaseRender::TopBarSetExtraIcon(cString icon) {
+ if( !strcmp(*icon, "") )
+ return;
+ topBarExtraIcon = icon;
+ topBarExtraIconSet = true;
+ topBarUpdateTitle = true;
+}
+
+void cFlatBaseRender::TopBarSetMenuIcon(cString icon) {
+ if( !strcmp(*icon, "") )
+ return;
+ topBarMenuIcon = icon;
+ topBarMenuIconSet = true;
+ topBarUpdateTitle = true;
+}
+
+void cFlatBaseRender::TopBarSetMenuIconRight(cString icon) {
+ if( !strcmp(*icon, "") )
+ return;
+ topBarMenuIconRight = icon;
+ topBarMenuIconRightSet = true;
+ topBarUpdateTitle = true;
+}
+
+void cFlatBaseRender::TopBarSetMenuLogo(cString icon) {
+ if( !strcmp(*icon, "") )
+ return;
+ topBarMenuLogo = icon;
+ topBarMenuLogoSet = true;
+ topBarUpdateTitle = true;
+}
+
+void cFlatBaseRender::TopBarEnableDiskUsage(void) {
+ cVideoDiskUsage::HasChanged(VideoDiskUsageState);
+ int DiskUsage = cVideoDiskUsage::UsedPercent();
+ double FreeGB = cVideoDiskUsage::FreeMB() / 1024.0;
+ double AllGB = FreeGB / (double)((double)(100 - DiskUsage) / 100.0);
+ int FreeMinutes = cVideoDiskUsage::FreeMinutes();
+ double AllMinutes = FreeMinutes / (double)((100 - DiskUsage) / 100.0);
+ double OccupiedGB = AllGB - FreeGB;
+ int OccupiedMinutes = AllMinutes - FreeMinutes;
+
+ cString extra1;
+ cString extra2;
+ // show in free mode
+ if( Config.DiskUsageFree == 1 ) {
+ if( Config.DiskUsageShort == false ) {
+ extra1 = cString::sprintf("%s: %d%% %s", tr("Disk"), 100 - DiskUsage, tr("free") );
+ extra2 = cString::sprintf("%.1f GB ~ %02d:%02d", FreeGB, FreeMinutes / 60, FreeMinutes % 60);
+ } else {
+ extra1 = cString::sprintf("%d%% %s", 100 - DiskUsage, tr("free") );
+ extra2 = cString::sprintf("~ %02d:%02d", FreeMinutes / 60, FreeMinutes % 60);
+ }
+ } else {
+ if( Config.DiskUsageShort == false ) {
+ extra1 = cString::sprintf("%s: %d%% %s", tr("Disk"), DiskUsage, tr("occupied") );
+ extra2 = cString::sprintf("%.1f GB ~ %02d:%02d", OccupiedGB, OccupiedMinutes / 60, OccupiedMinutes % 60);
+ } else {
+ extra1 = cString::sprintf("%d%% %s", 100 - DiskUsage, tr("occupied") );
+ extra2 = cString::sprintf("~ %02d:%02d", OccupiedMinutes / 60, OccupiedMinutes % 60);
+ }
+ }
+
+ int ChartDiskUsage = DiskUsage;
+ cString iconName("chart1");
+ if( Config.DiskUsageFree == 1 ) {
+ ChartDiskUsage = 100 - DiskUsage;
+
+ iconName = "chart1b";
+ if( ChartDiskUsage > 14 )
+ iconName = "chart2b";
+ if( ChartDiskUsage > 28 )
+ iconName = "chart3b";
+ if( ChartDiskUsage > 42 )
+ iconName = "chart4b";
+ if( ChartDiskUsage > 56 )
+ iconName = "chart5b";
+ if( ChartDiskUsage > 70 )
+ iconName = "chart6b";
+ if( ChartDiskUsage > 84 )
+ iconName = "chart7b";
+ } else {
+ if( ChartDiskUsage > 14 )
+ iconName = "chart2";
+ if( ChartDiskUsage > 28 )
+ iconName = "chart3";
+ if( ChartDiskUsage > 42 )
+ iconName = "chart4";
+ if( ChartDiskUsage > 56 )
+ iconName = "chart5";
+ if( ChartDiskUsage > 70 )
+ iconName = "chart6";
+ if( ChartDiskUsage > 84 )
+ iconName = "chart7";
+ }
+ TopBarSetTitleExtra(extra1, extra2);
+ TopBarSetExtraIcon(iconName);
+}
+// sollte bei jedum "Flush" aufgerufen werden!
+void cFlatBaseRender::TopBarUpdate(void) {
+ cString curDate = DayDateTime();
+ int TopBarWidth = osdWidth - Config.decorBorderTopBarSize*2;
+ int MenuIconWidth = 0;
+ cImage *imgCon = NULL;
+ cImage *imgRec = NULL;
+
+ if ( strcmp(curDate, topBarLastDate) || topBarUpdateTitle ) {
+ topBarUpdateTitle = false;
+ topBarLastDate = curDate;
+
+ int fontTop = (topBarHeight - topBarFontHeight) / 2;
+ int fontSmlTop = (topBarHeight - topBarFontSmlHeight*2) / 2;
+ int fontClockTop = (topBarHeight - topBarFontClockHeight) / 2;
+
+ topBarPixmap->Fill(Theme.Color(clrTopBarBg));
+ topBarIconPixmap->Fill(clrTransparent);
+ topBarIconBGPixmap->Fill(clrTransparent);
+
+ int titleWitdh = topBarFont->Width(topBarTitle);
+
+ if( topBarMenuIconSet && Config.TopBarMenuIconShow ) {
+ int IconLeft = marginItem;
+ cImage *img = imgLoader.LoadIcon(*topBarMenuIcon, 999, topBarHeight - marginItem*2);
+ if( img ) {
+ int iconTop = (topBarHeight / 2 - img->Height()/2);
+ topBarIconPixmap->DrawImage(cPoint(IconLeft, iconTop), *img);
+ MenuIconWidth = img->Width()+marginItem*2;
+ }
+ }
+
+ if( topBarMenuLogoSet && Config.TopBarMenuIconShow ) {
+ topBarIconPixmap->Fill(clrTransparent);
+ int IconLeft = marginItem;
+ int imageBGHeight = topBarHeight - marginItem*2;
+ int imageBGWidth = imageBGHeight*1.34;
+ int iconTop = 0;
+
+ cImage *imgBG = imgLoader.LoadIcon("logo_background", imageBGWidth, imageBGHeight);
+ if( imgBG ) {
+ imageBGHeight = imgBG->Height();
+ imageBGWidth = imgBG->Width();
+ iconTop = (topBarHeight / 2 - imgBG->Height()/2);
+ topBarIconBGPixmap->DrawImage( cPoint(IconLeft, iconTop), *imgBG );
+ }
+
+ cImage *img = imgLoader.LoadLogo(*topBarMenuLogo, imageBGWidth - 4, imageBGHeight - 4);
+ if( img ) {
+ iconTop += (imageBGHeight - img->Height())/2;
+ IconLeft += (imageBGWidth - img->Width())/2;
+ topBarIconPixmap->DrawImage(cPoint(IconLeft, iconTop), *img);
+ }
+ MenuIconWidth = imageBGWidth+marginItem*2;
+ }
+ int titleLeft = MenuIconWidth + marginItem*2;
+
+ time_t t;
+ time(&t);
+
+ cString time = TimeString(t);
+ cString time2 = cString::sprintf("%s %s", *time, tr("clock"));
+ if( Config.TopBarHideClockText )
+ time2 = cString::sprintf("%s", *time);
+
+ int timeWidth = topBarFontClock->Width(*time2) + marginItem*2;
+ int Right = TopBarWidth - timeWidth;
+ topBarPixmap->DrawText(cPoint(Right, fontClockTop), time2, Theme.Color(clrTopBarTimeFont), Theme.Color(clrTopBarBg), topBarFontClock);
+
+ cString weekday = WeekDayNameFull(t);
+ int weekdayWidth = topBarFontSml->Width(*weekday);
+
+ cString date = ShortDateString(t);
+ int dateWidth = topBarFontSml->Width(*date);
+
+ Right = TopBarWidth - timeWidth - max(weekdayWidth, dateWidth) - marginItem;
+ topBarPixmap->DrawText(cPoint(Right, fontSmlTop), weekday, Theme.Color(clrTopBarDateFont), Theme.Color(clrTopBarBg), topBarFontSml, max(weekdayWidth, dateWidth), 0, taRight);
+ topBarPixmap->DrawText(cPoint(Right, fontSmlTop + topBarFontSmlHeight), date, Theme.Color(clrTopBarDateFont), Theme.Color(clrTopBarBg), topBarFontSml, max(weekdayWidth, dateWidth), 0, taRight);
+
+ int middleWidth = 0;
+ int numConflicts = 0;
+ if( Config.TopBarRecConflictsShow ) {
+ cPlugin *p = cPluginManager::GetPlugin("epgsearch");
+ if (p) {
+ Epgsearch_lastconflictinfo_v1_0 *serviceData = new Epgsearch_lastconflictinfo_v1_0;
+ if (serviceData) {
+ serviceData->nextConflict = 0;
+ serviceData->relevantConflicts = 0;
+ serviceData->totalConflicts = 0;
+ p->Service("Epgsearch-lastconflictinfo-v1.0", serviceData);
+ if (serviceData->relevantConflicts > 0) {
+ numConflicts = serviceData->relevantConflicts;
+ }
+ delete serviceData;
+ }
+ }
+ if( numConflicts ) {
+ if( numConflicts < Config.TopBarRecConflictsHigh )
+ imgCon = imgLoader.LoadIcon("topbar_timerconflict_low", topBarFontHeight - marginItem*2, topBarFontHeight - marginItem*2);
+ else
+ imgCon = imgLoader.LoadIcon("topbar_timerconflict_high", topBarFontHeight - marginItem*2, topBarFontHeight - marginItem*2);
+
+ if( imgCon ) {
+ cString Con = cString::sprintf("%d", numConflicts);
+ Right -= imgCon->Width() + topBarFontSml->Width(*Con) + marginItem;
+ middleWidth += imgCon->Width() + topBarFontSml->Width(*Con) + marginItem;
+ }
+ }
+ }
+
+ int numRec = 0;
+ if( Config.TopBarRecordingShow ) {
+ // look for timers
+ for(cTimer *ti = Timers.First(); ti; ti = Timers.Next(ti)) {
+ if( ti->Matches(t) ) {
+ numRec++;
+ }
+ }
+ if( numRec ) {
+ imgRec = imgLoader.LoadIcon("topbar_timer", topBarFontHeight - marginItem*2, topBarFontHeight - marginItem*2);
+ if( imgRec ) {
+ cString Rec = cString::sprintf("%d", numRec);
+ Right -= imgRec->Width() + topBarFontSml->Width(*Rec) + marginItem;
+ middleWidth += imgRec->Width() + topBarFontSml->Width(*Rec) + marginItem;
+ }
+ }
+ }
+
+ if( topBarExtraIconSet ) {
+ cImage *img = imgLoader.LoadIcon(*topBarExtraIcon, 999, topBarHeight);
+ if( img ) {
+ Right -= img->Width() + marginItem;
+ middleWidth += img->Width() + marginItem;
+ }
+ }
+ int topBarMenuIconRightWidth = 0;
+ int topBarMenuIconRightLeft = 0;
+ if( topBarMenuIconRightSet ) {
+ cImage *img = imgLoader.LoadIcon(*topBarMenuIconRight, 999, topBarHeight);
+ if( img ) {
+ topBarMenuIconRightWidth = img->Width() + marginItem*3;
+ titleWitdh += topBarMenuIconRightWidth;
+ }
+ }
+
+ int extra1Width = topBarFontSml->Width(tobBarTitleExtra1);
+ int extra2Width = topBarFontSml->Width(tobBarTitleExtra2);
+ int extraMaxWidth = max(extra1Width, extra2Width);
+ middleWidth += extraMaxWidth;
+ Right -= extraMaxWidth + marginItem;
+
+ if( (titleLeft + titleWitdh) < (TopBarWidth/2 - middleWidth/2) ) {
+ Right = TopBarWidth/2 - middleWidth/2;
+ } else if( (titleLeft + titleWitdh) < Right ) {
+ Right = titleLeft + titleWitdh + marginItem;
+ }
+
+ int titleMaxWidth = Right - titleLeft - marginItem;
+
+ if( topBarFont->Width(topBarTitle) + topBarMenuIconRightWidth > titleMaxWidth ) {
+ topBarMenuIconRightLeft = titleMaxWidth + marginItem*2;
+ titleMaxWidth -= topBarMenuIconRightWidth;
+ } else {
+ topBarMenuIconRightLeft = titleLeft + topBarFont->Width(topBarTitle) + marginItem*2;
+ }
+
+ topBarPixmap->DrawText(cPoint(Right, fontSmlTop), tobBarTitleExtra1, Theme.Color(clrTopBarDateFont), Theme.Color(clrTopBarBg), topBarFontSml, extraMaxWidth, 0, taRight);
+ topBarPixmap->DrawText(cPoint(Right, fontSmlTop + topBarFontSmlHeight), tobBarTitleExtra2, Theme.Color(clrTopBarDateFont), Theme.Color(clrTopBarBg), topBarFontSml, extraMaxWidth, 0, taRight);
+ Right += extraMaxWidth + marginItem;
+
+ if( topBarExtraIconSet ) {
+ cImage *img = imgLoader.LoadIcon(*topBarExtraIcon, 999, topBarHeight);
+ if( img ) {
+ int iconTop = 0;
+ topBarIconPixmap->DrawImage(cPoint(Right, iconTop), *img);
+ Right += img->Width() + marginItem;
+ }
+ }
+
+ if( numRec && imgRec ) {
+ int iconTop = (topBarFontHeight - imgRec->Height()) / 2;
+ topBarIconPixmap->DrawImage( cPoint(Right, iconTop), *imgRec );
+ Right += imgRec->Width();
+ cString RecNum = cString::sprintf("%d", numRec);
+ topBarPixmap->DrawText(cPoint(Right, fontSmlTop), RecNum, Theme.Color(clrTopBarRecordingActiveFg), Theme.Color(clrTopBarRecordingActiveBg), topBarFontSml);
+ Right += topBarFontSml->Width(*RecNum) + marginItem;
+ }
+
+ if( numConflicts && imgCon ) {
+ int iconTop = (topBarFontHeight - imgCon->Height()) / 2;
+ topBarIconPixmap->DrawImage( cPoint(Right, iconTop), *imgCon );
+ Right += imgCon->Width();
+
+ cString ConNum = cString::sprintf("%d", numConflicts);
+ if( numConflicts < Config.TopBarRecConflictsHigh )
+ topBarPixmap->DrawText(cPoint(Right, fontSmlTop), ConNum, Theme.Color(clrTopBarConflictLowFg), Theme.Color(clrTopBarConflictLowBg), topBarFontSml);
+ else
+ topBarPixmap->DrawText(cPoint(Right, fontSmlTop), ConNum, Theme.Color(clrTopBarConflictHighFg), Theme.Color(clrTopBarConflictHighBg), topBarFontSml);
+ Right += topBarFontSml->Width(*ConNum) + marginItem;
+ }
+
+ if( topBarMenuIconRightSet ) {
+ cImage *img = imgLoader.LoadIcon(*topBarMenuIconRight, 999, topBarHeight);
+ if( img ) {
+ int iconTop = (topBarHeight / 2 - img->Height()/2);
+ topBarIconPixmap->DrawImage(cPoint(topBarMenuIconRightLeft, iconTop), *img);
+ }
+ }
+ topBarPixmap->DrawText(cPoint(titleLeft, fontTop), topBarTitle, Theme.Color(clrTopBarFont), Theme.Color(clrTopBarBg), topBarFont, titleMaxWidth);
+
+ DecorBorderDraw(Config.decorBorderTopBarSize, Config.decorBorderTopBarSize, osdWidth - Config.decorBorderTopBarSize*2, topBarHeight, Config.decorBorderTopBarSize, Config.decorBorderTopBarType, Config.decorBorderTopBarFg, Config.decorBorderTopBarBg);
+ }
+}
+
+void cFlatBaseRender::ButtonsCreate(void) {
+ marginButtonColor = 10;
+ buttonColorHeight = 8;
+ buttonsHeight = fontHeight + marginButtonColor + buttonColorHeight;
+ buttonsWidth = osdWidth;
+ buttonsTop = osdHeight - buttonsHeight - Config.decorBorderButtonSize;
+
+ buttonsPixmap = osd->CreatePixmap(1, cRect(Config.decorBorderButtonSize,
+ buttonsTop, buttonsWidth - Config.decorBorderButtonSize*2, buttonsHeight));
+ buttonsPixmap->Fill(clrTransparent);
+ //dsyslog("skinflatplus: buttonsPixmap left: %d top: %d width: %d height: %d", Config.decorBorderButtonSize, buttonsTop, buttonsWidth - Config.decorBorderButtonSize*2, buttonsHeight);
+}
+
+void cFlatBaseRender::ButtonsSet(const char *Red, const char *Green, const char *Yellow, const char *Blue) {
+ int WidthMargin = buttonsWidth - marginItem*3;
+ int buttonWidth = (WidthMargin / 4) - Config.decorBorderButtonSize*2;
+
+ buttonsPixmap->Fill(clrTransparent);
+ DecorBorderClearByFrom(BorderButton);
+
+ buttonsDrawn = false;
+
+ int x = 0;
+ if( !(!Config.ButtonsShowEmpty && !Red) ) {
+ buttonsPixmap->DrawText(cPoint(x, 0), Red, Theme.Color(clrButtonFont), Theme.Color(clrButtonBg), font, buttonWidth, fontHeight + marginButtonColor, taCenter);
+ buttonsPixmap->DrawRectangle(cRect(x, fontHeight + marginButtonColor, buttonWidth, buttonColorHeight), Theme.Color(clrButtonRed));
+ DecorBorderDraw(x + Config.decorBorderButtonSize, buttonsTop, buttonWidth, buttonsHeight, Config.decorBorderButtonSize, Config.decorBorderButtonType,
+ Config.decorBorderButtonFg, Config.decorBorderButtonBg, BorderButton);
+ buttonsDrawn = true;
+ }
+
+ x += buttonWidth + marginItem + Config.decorBorderButtonSize*2;
+ if( !(!Config.ButtonsShowEmpty && !Green) ) {
+ buttonsPixmap->DrawText(cPoint(x, 0), Green, Theme.Color(clrButtonFont), Theme.Color(clrButtonBg), font, buttonWidth, fontHeight + marginButtonColor, taCenter);
+ buttonsPixmap->DrawRectangle(cRect(x, fontHeight + marginButtonColor, buttonWidth, buttonColorHeight), Theme.Color(clrButtonGreen));
+ DecorBorderDraw(x + Config.decorBorderButtonSize, buttonsTop, buttonWidth, buttonsHeight, Config.decorBorderButtonSize, Config.decorBorderButtonType,
+ Config.decorBorderButtonFg, Config.decorBorderButtonBg, BorderButton);
+ buttonsDrawn = true;
+ }
+
+ x += buttonWidth + marginItem + Config.decorBorderButtonSize*2;
+ if( !(!Config.ButtonsShowEmpty && !Yellow) ) {
+ buttonsPixmap->DrawText(cPoint(x, 0), Yellow, Theme.Color(clrButtonFont), Theme.Color(clrButtonBg), font, buttonWidth, fontHeight + marginButtonColor, taCenter);
+ buttonsPixmap->DrawRectangle(cRect(x, fontHeight + marginButtonColor, buttonWidth, buttonColorHeight), Theme.Color(clrButtonYellow));
+ DecorBorderDraw(x + Config.decorBorderButtonSize, buttonsTop, buttonWidth, buttonsHeight, Config.decorBorderButtonSize, Config.decorBorderButtonType,
+ Config.decorBorderButtonFg, Config.decorBorderButtonBg, BorderButton);
+ buttonsDrawn = true;
+ }
+
+ x += buttonWidth + marginItem + Config.decorBorderButtonSize*2;
+ if( x + buttonWidth + Config.decorBorderButtonSize*2 < buttonsWidth )
+ buttonWidth += buttonsWidth - (x + buttonWidth + Config.decorBorderButtonSize*2);
+ if( !(!Config.ButtonsShowEmpty && !Blue) ) {
+ buttonsPixmap->DrawText(cPoint(x, 0), Blue, Theme.Color(clrButtonFont), Theme.Color(clrButtonBg), font, buttonWidth, fontHeight + marginButtonColor, taCenter);
+ buttonsPixmap->DrawRectangle(cRect(x, fontHeight + marginButtonColor, buttonWidth, buttonColorHeight), Theme.Color(clrButtonBlue));
+ DecorBorderDraw(x + Config.decorBorderButtonSize, buttonsTop, buttonWidth, buttonsHeight, Config.decorBorderButtonSize, Config.decorBorderButtonType,
+ Config.decorBorderButtonFg, Config.decorBorderButtonBg, BorderButton);
+ buttonsDrawn = true;
+ }
+}
+
+bool cFlatBaseRender::ButtonsDrawn(void) {
+ return buttonsDrawn;
+}
+
+void cFlatBaseRender::MessageCreate(void) {
+ messageHeight = fontHeight + marginItem*2;
+ if( Config.MessageColorPosition == 1 )
+ messageHeight += 8;
+ int top = osdHeight - Config.MessageOffset - messageHeight - Config.decorBorderMessageSize;
+ messagePixmap = osd->CreatePixmap(5, cRect(Config.decorBorderMessageSize, top, osdWidth - Config.decorBorderMessageSize*2, messageHeight));
+ messagePixmap->Fill(clrTransparent);
+ messageIconPixmap = osd->CreatePixmap(5, cRect(Config.decorBorderMessageSize, top, osdWidth - Config.decorBorderMessageSize*2, messageHeight));
+ messageIconPixmap->Fill(clrTransparent);
+
+ //dsyslog("skinflatplus: messagePixmap left: %d top: %d width: %d height: %d", Config.decorBorderMessageSize, top, osdWidth - Config.decorBorderMessageSize*2, messageHeight);
+ //dsyslog("skinflatplus: messageIconPixmap left: %d top: %d width: %d height: %d", Config.decorBorderMessageSize, top, osdWidth - Config.decorBorderMessageSize*2, messageHeight);
+
+ messageScroller.SetOsd(osd);
+ messageScroller.SetScrollStep( Config.ScrollerStep );
+ messageScroller.SetScrollDelay( Config.ScrollerDelay );
+ messageScroller.SetScrollType( Config.ScrollerType );
+ messageScroller.SetPixmapLayer( 5 );
+}
+
+void cFlatBaseRender::MessageSet(eMessageType Type, const char *Text) {
+ tColor col = Theme.Color(clrMessageStatus);
+ cString icon;
+ switch (Type) {
+ case mtStatus:
+ col = Theme.Color(clrMessageStatus);
+ icon = "message_status";
+ break;
+ case mtInfo:
+ col = Theme.Color(clrMessageInfo);
+ icon = "message_info";
+ break;
+ case mtWarning:
+ col = Theme.Color(clrMessageWarning);
+ icon = "message_warning";
+ break;
+ case mtError:
+ col = Theme.Color(clrMessageError);
+ icon = "message_error";
+ break;
+ }
+ messagePixmap->Fill(Theme.Color(clrMessageBg));
+ messageScroller.Clear();
+
+ cImage *img = imgLoader.LoadIcon(icon, fontHeight, fontHeight);
+ if( img ) {
+ messageIconPixmap->DrawImage( cPoint(marginItem + 10, marginItem), *img );
+ }
+
+ if( Config.MessageColorPosition == 0 ) {
+ messagePixmap->DrawRectangle(cRect( 0, 0, 8, messageHeight), col);
+ messagePixmap->DrawRectangle(cRect( osdWidth - 8 - Config.decorBorderMessageSize*2, 0, 8, messageHeight), col);
+ } else {
+ messagePixmap->DrawRectangle(cRect( 0, messageHeight - 8, osdWidth, 8), col);
+ }
+
+ int textWidth = font->Width(Text);
+ int maxWidth = osdWidth - Config.decorBorderMessageSize*2 - fontHeight - marginItem*3 - 10;
+
+ if( Config.MenuItemParseTilde ) {
+ std::string tilde = Text;
+ size_t found = tilde.find(" ~ ");
+ size_t found2 = tilde.find("~");
+ if( found != std::string::npos ) {
+ std::string first = tilde.substr(0, found);
+ std::string second = tilde.substr(found +2, tilde.length() );
+
+ messagePixmap->DrawText(cPoint((osdWidth - textWidth) / 2, marginItem), first.c_str(), Theme.Color(clrMessageFont), Theme.Color(clrMessageBg), font);
+ int l = font->Width( first.c_str() );
+ messagePixmap->DrawText(cPoint((osdWidth - textWidth) / 2 + l, marginItem), second.c_str(), Theme.Color(clrMenuItemExtraTextFont), Theme.Color(clrMessageBg), font);
+ } else if ( found2 != std::string::npos ) {
+ std::string first = tilde.substr(0, found2);
+ std::string second = tilde.substr(found2 +1, tilde.length() );
+
+ messagePixmap->DrawText(cPoint((osdWidth - textWidth) / 2, marginItem), first.c_str(), Theme.Color(clrMessageFont), Theme.Color(clrMessageBg), font);
+ int l = font->Width( first.c_str() );
+ l += font->Width("X");
+ messagePixmap->DrawText(cPoint((osdWidth - textWidth) / 2 + l, marginItem), second.c_str(), Theme.Color(clrMenuItemExtraTextFont), Theme.Color(clrMessageBg), font);
+ } else {
+ if( (textWidth > maxWidth) && Config.ScrollerEnable)
+ messageScroller.AddScroller(Text, cRect(Config.decorBorderMessageSize + fontHeight + marginItem*3+10, osdHeight - Config.MessageOffset - messageHeight - Config.decorBorderMessageSize, maxWidth, fontHeight), Theme.Color(clrMessageFont), clrTransparent, font);
+ else
+ messagePixmap->DrawText(cPoint((osdWidth - textWidth) / 2, marginItem), Text, Theme.Color(clrMessageFont), Theme.Color(clrMessageBg), font);
+ }
+ } else {
+ if( (textWidth > maxWidth) && Config.ScrollerEnable )
+ messageScroller.AddScroller(Text, cRect(Config.decorBorderMessageSize + fontHeight + marginItem*3 + 10, osdHeight - Config.MessageOffset - messageHeight - Config.decorBorderMessageSize, maxWidth, fontHeight), Theme.Color(clrMessageFont), clrTransparent, font);
+ else
+ messagePixmap->DrawText(cPoint((osdWidth - textWidth) / 2, marginItem), Text, Theme.Color(clrMessageFont), Theme.Color(clrMessageBg), font);
+ }
+
+ int top = osdHeight - Config.MessageOffset - messageHeight - Config.decorBorderMessageSize;
+ DecorBorderDraw(Config.decorBorderMessageSize, top, osdWidth - Config.decorBorderMessageSize*2, messageHeight, Config.decorBorderMessageSize, Config.decorBorderMessageType, Config.decorBorderMessageFg, Config.decorBorderMessageBg, BorderMessage);
+}
+
+void cFlatBaseRender::MessageClear(void) {
+ messagePixmap->Fill(clrTransparent);
+ messageIconPixmap->Fill(clrTransparent);
+ DecorBorderClearByFrom(BorderMessage);
+ DecorBorderRedrawAll();
+ messageScroller.Clear();
+}
+
+void cFlatBaseRender::ProgressBarCreate(int Left, int Top, int Width, int Height, int MarginHor, int MarginVer, tColor ColorFg, tColor ColorBarFg, tColor ColorBg, int Type, bool SetBackground, bool isSignal) {
+ progressBarTop = Top;
+ progressBarWidth = Width;
+ progressBarHeight = Height;
+ ProgressType = Type;
+ progressBarMarginHor = MarginHor;
+ progressBarMarginVer = MarginVer;
+
+ progressBarColorFg = ColorFg;
+ progressBarColorBarFg = ColorBarFg;
+ progressBarColorBg = ColorBg;
+
+ progressBarSetBackground = SetBackground;
+ progressBarIsSignal = isSignal;
+
+ progressBarColorBarCurFg = Theme.Color(clrReplayProgressBarCurFg);
+
+ progressBarPixmap = osd->CreatePixmap(3, cRect(Left, Top, Width, progressBarHeight));
+ progressBarPixmapBg = osd->CreatePixmap(2, cRect(Left - progressBarMarginVer, Top - progressBarMarginHor, Width + progressBarMarginVer*2, progressBarHeight + progressBarMarginHor*2));
+ progressBarPixmap->Fill(clrTransparent);
+ progressBarPixmapBg->Fill(clrTransparent);
+}
+
+void cFlatBaseRender::ProgressBarDraw(int Current, int Total) {
+ ProgressBarDrawRaw(progressBarPixmap, progressBarPixmapBg, cRect(0, 0, progressBarWidth, progressBarHeight),
+ cRect(0, 0, progressBarWidth+progressBarMarginVer*2, progressBarHeight+progressBarMarginHor*2),
+ Current, Total, progressBarColorFg, progressBarColorBarFg, progressBarColorBg, ProgressType, progressBarSetBackground, progressBarIsSignal);
+}
+
+void cFlatBaseRender::ProgressBarDrawBgColor(void) {
+ progressBarPixmapBg->Fill(progressBarColorBg);
+}
+
+void cFlatBaseRender::ProgressBarDrawRaw(cPixmap *Pixmap, cPixmap *PixmapBg, cRect rect, cRect rectBg, int Current, int Total, tColor ColorFg, tColor ColorBarFg, tColor ColorBg, int Type, bool SetBackground, bool isSignal) {
+ int Middle = rect.Height()/2;
+
+ double percentLeft = ((double)Current) / (double)Total;
+
+ if( PixmapBg && SetBackground )
+ PixmapBg->DrawRectangle(cRect( rectBg.Left(), rectBg.Top(), rectBg.Width(), rectBg.Height()), ColorBg);
+
+ if( SetBackground ) {
+ if( PixmapBg == Pixmap )
+ Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top(), rect.Width(), rect.Height()), ColorBg);
+ else
+ Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top(), rect.Width(), rect.Height()), clrTransparent);
+ }
+
+ switch( Type ) {
+ case 0: // small line + big line
+ {
+ int sml = rect.Height() / 10 * 2;
+ if( sml <= 1 )
+ sml = 2;
+ int big = rect.Height();
+
+ Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top() + Middle - (sml/2), rect.Width(), sml), ColorFg);
+
+ if (Current > 0)
+ Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top() + Middle - (big/2), (rect.Width() * percentLeft), big), ColorBarFg);
+ break;
+ }
+ case 1: // big line
+ {
+ int big = rect.Height();
+
+ if (Current > 0)
+ Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top() + Middle - (big/2), (rect.Width() * percentLeft), big), ColorBarFg);
+ break;
+ }
+ case 2: // big line + outline
+ {
+ int big = rect.Height();
+ int out = 1;
+ if( rect.Height() > 10 )
+ out = 2;
+ // outline
+ Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top(), rect.Width(), out), ColorFg);
+ Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top() + rect.Height() - out, rect.Width(), out), ColorFg);
+
+ Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top(), out, rect.Height()), ColorFg);
+ Pixmap->DrawRectangle(cRect( rect.Left() + rect.Width() - out, rect.Top(), out, rect.Height()), ColorFg);
+
+ if (Current > 0) {
+ if( isSignal ) {
+ double perc = 100.0 / (double) Total * (double) Current / 100.0;
+ if( perc > 0.666 ) {
+ Pixmap->DrawRectangle(cRect( rect.Left() + out, rect.Top() + Middle - (big/2) + out, (rect.Width() * percentLeft) - out*2, big - out*2), Theme.Color(clrButtonGreen));
+ Pixmap->DrawRectangle(cRect( rect.Left() + out, rect.Top() + Middle - (big/2) + out, (rect.Width() * 0.666) - out*2, big - out*2), Theme.Color(clrButtonYellow));
+ Pixmap->DrawRectangle(cRect( rect.Left() + out, rect.Top() + Middle - (big/2) + out, (rect.Width() * 0.333) - out*2, big - out*2), Theme.Color(clrButtonRed));
+ } else if( perc > 0.333 ) {
+ Pixmap->DrawRectangle(cRect( rect.Left() + out, rect.Top() + Middle - (big/2) + out, (rect.Width() * percentLeft) - out*2, big - out*2), Theme.Color(clrButtonYellow));
+ Pixmap->DrawRectangle(cRect( rect.Left() + out, rect.Top() + Middle - (big/2) + out, (rect.Width() * 0.333) - out*2, big - out*2), Theme.Color(clrButtonRed));
+ } else
+ Pixmap->DrawRectangle(cRect( rect.Left() + out, rect.Top() + Middle - (big/2) + out, (rect.Width() * percentLeft) - out*2, big - out*2), Theme.Color(clrButtonRed));
+
+ } else
+ Pixmap->DrawRectangle(cRect( rect.Left() + out, rect.Top() + Middle - (big/2) + out, (rect.Width() * percentLeft) - out*2, big - out*2), ColorBarFg);
+ }
+ break;
+ }
+ case 3: // small line + big line + dot
+ {
+ int sml = rect.Height() / 10 * 2;
+ if( sml <= 1 )
+ sml = 2;
+ int big = rect.Height();
+
+ Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top() + Middle - (sml/2), rect.Width(), sml), ColorFg);
+
+ if (Current > 0) {
+ Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top() + Middle - (big/2), (rect.Width() * percentLeft), big), ColorBarFg);
+ // dot
+ Pixmap->DrawEllipse(cRect( rect.Left() + (rect.Width() * percentLeft) - (big/2), rect.Top() + Middle - (big/2), big, big), ColorBarFg, 0);
+ }
+ break;
+ }
+ case 4: // big line + dot
+ {
+ int big = rect.Height();
+
+ if (Current > 0) {
+ Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top() + Middle - (big/2), (rect.Width() * percentLeft), big), ColorBarFg);
+ // dot
+ Pixmap->DrawEllipse(cRect( rect.Left() + (rect.Width() * percentLeft) - (big/2), rect.Top() + Middle - (big/2), big, big), ColorBarFg, 0);
+ }
+ break;
+ }
+ case 5: // big line + outline + dot
+ {
+ int big = rect.Height();
+ int out = 1;
+ if( rect.Height() > 10 )
+ out = 2;
+ // outline
+ Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top(), rect.Width(), out), ColorFg);
+ Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top() + rect.Height() - out, rect.Width(), out), ColorFg);
+ Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top(), out, rect.Height()), ColorFg);
+ Pixmap->DrawRectangle(cRect( rect.Left() + rect.Width() - out, rect.Top(), out, rect.Height()), ColorFg);
+
+ if (Current > 0) {
+ Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top() + Middle - (big/2), (rect.Width() * percentLeft), big), ColorBarFg);
+ // dot
+ Pixmap->DrawEllipse(cRect( rect.Left() + (rect.Width() * percentLeft) - (big/2), rect.Top() + Middle - (big/2), big, big), ColorBarFg, 0);
+ }
+ break;
+ }
+ case 6: // small line + dot
+ {
+ int sml = rect.Height() / 10 * 2;
+ if( sml <= 1 )
+ sml = 2;
+ int big = rect.Height();
+
+ Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top() + Middle - (sml/2), rect.Width(), sml), ColorFg);
+
+ if (Current > 0) {
+ // dot
+ Pixmap->DrawEllipse(cRect( rect.Left() + (rect.Width() * percentLeft) - (big/2), rect.Top() + Middle - (big/2), big, big), ColorBarFg, 0);
+ }
+ break;
+ }
+ case 7: // outline + dot
+ {
+ int big = rect.Height();
+ int out = 1;
+ if( rect.Height() > 10 )
+ out = 2;
+ // outline
+ Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top(), rect.Width(), out), ColorFg);
+ Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top() + rect.Height() - out, rect.Width(), out), ColorFg);
+ Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top(), out, rect.Height()), ColorFg);
+ Pixmap->DrawRectangle(cRect( rect.Left() + rect.Width() - out, rect.Top(), out, rect.Height()), ColorFg);
+
+ if (Current > 0) {
+ // dot
+ Pixmap->DrawEllipse(cRect( rect.Left() + (rect.Width() * percentLeft) - (big/2), rect.Top() + Middle - (big/2), big, big), ColorBarFg, 0);
+ }
+ break;
+ }
+ case 8: // small line + big line + alpha blend
+ {
+ int sml = rect.Height() / 10 * 2;
+ if( sml <= 1 )
+ sml = 2;
+ int big = rect.Height()/2 - sml/2;
+
+ Pixmap->DrawRectangle(cRect( rect.Left(), rect.Top() + Middle - (sml/2), rect.Width(), sml), ColorFg);
+
+ if (Current > 0) {
+ DecorDrawGlowRectHor(Pixmap, rect.Left(), rect.Top(), (rect.Width() * percentLeft), big, ColorBarFg);
+ DecorDrawGlowRectHor(Pixmap, rect.Left(), rect.Top() + Middle + sml/2, (rect.Width() * percentLeft), big*-1, ColorBarFg);
+ }
+ break;
+ }
+ case 9: // big line + alpha blend
+ {
+ int big = rect.Height();
+
+ if (Current > 0) {
+ DecorDrawGlowRectHor(Pixmap, rect.Left(), rect.Top() + Middle - big/2, (rect.Width() * percentLeft), big/2, ColorBarFg);
+ DecorDrawGlowRectHor(Pixmap, rect.Left(), rect.Top() + Middle, (rect.Width() * percentLeft), big/-2, ColorBarFg);
+ }
+ break;
+ }
+ }
+}
+
+void cFlatBaseRender::ProgressBarDrawMarks(int Current, int Total, const cMarks *Marks, tColor Color, tColor ColorCurrent) {
+ progressBarColorMark = Color;
+ progressBarColorMarkCurrent = ColorCurrent;
+ int posMark = 0, posMarkLast = 0, posCurrent = 0;
+
+ int top = progressBarHeight / 2;
+ if( progressBarPixmapBg )
+ progressBarPixmapBg->DrawRectangle(cRect( 0, progressBarMarginHor + progressBarHeight, progressBarWidth, progressBarMarginHor), progressBarColorBg);
+
+ progressBarPixmap->Fill( progressBarColorBg );
+
+ int sml = Config.decorProgressReplaySize / 10 * 2;
+ if( sml <= 4 )
+ sml = 4;
+ int big = Config.decorProgressReplaySize - sml*2 - 2;
+
+ if( !Marks ) {
+ progressBarColorFg = progressBarColorBarCurFg;
+ progressBarColorBarFg = progressBarColorBarCurFg;
+
+ ProgressBarDraw(Current, Total);
+ return;
+ }
+ if( !Marks->First() ) {
+ progressBarColorFg = progressBarColorBarCurFg;
+ progressBarColorBarFg = progressBarColorBarCurFg;
+
+ ProgressBarDraw(Current, Total);
+ return;
+ }
+
+ // the small line
+ progressBarPixmap->DrawRectangle(cRect( 0, top - sml/2, progressBarWidth, sml), progressBarColorFg);
+
+ bool Start = true;
+
+ for( const cMark *m = Marks->First(); m; m = Marks->Next(m) ) {
+ posMark = ProgressBarMarkPos( m->Position(), Total );
+ posCurrent = ProgressBarMarkPos( Current, Total );
+
+ ProgressBarDrawMark(posMark, posMarkLast, posCurrent, Start, m->Position() == Current);
+ posMarkLast = posMark;
+ Start = !Start;
+ }
+
+ // draw last marker vertical line
+ if( posCurrent == posMark )
+ progressBarPixmap->DrawRectangle(cRect( posMark - sml, 0, sml*2, progressBarHeight), progressBarColorMarkCurrent);
+ else
+ progressBarPixmap->DrawRectangle(cRect( posMark - sml/2, 0, sml, progressBarHeight), progressBarColorMark);
+
+ if( !Start ) {
+ //progressBarPixmap->DrawRectangle(cRect( posMarkLast + sml/2, top - big/2, progressBarWidth - posMarkLast, big), progressBarColorBarFg);
+ if( posCurrent > posMarkLast )
+ progressBarPixmap->DrawRectangle(cRect( posMarkLast + sml/2, top - big/2, posCurrent - posMarkLast, big), progressBarColorBarCurFg);
+ } else {
+ // marker
+ progressBarPixmap->DrawRectangle(cRect( posMarkLast, top - sml/2, posCurrent - posMarkLast, sml), progressBarColorBarCurFg);
+ progressBarPixmap->DrawRectangle(cRect( posCurrent - big/2, top - big/2, big, big), progressBarColorBarCurFg);
+
+ if( posCurrent > posMarkLast + sml/2 )
+ progressBarPixmap->DrawRectangle(cRect( posMarkLast - sml/2, 0, sml, progressBarHeight), progressBarColorMark);
+ }
+}
+
+int cFlatBaseRender::ProgressBarMarkPos(int P, int Total) {
+ return (int64_t)P * progressBarWidth / Total;
+}
+
+void cFlatBaseRender::ProgressBarDrawMark(int posMark, int posMarkLast, int posCurrent, bool Start, bool isCurrent)
+{
+ int top = progressBarHeight / 2;
+ int sml = Config.decorProgressReplaySize / 10 * 2;
+ if( sml <= 4 )
+ sml = 4;
+ int big = Config.decorProgressReplaySize - sml*2 - 2;
+
+ int mbig = Config.decorProgressReplaySize*2;
+ if( Config.decorProgressReplaySize > 15 )
+ mbig = Config.decorProgressReplaySize;
+
+ // marker vertical line
+ if( posCurrent == posMark )
+ progressBarPixmap->DrawRectangle(cRect( posMark - sml, 0, sml*2, progressBarHeight), progressBarColorMarkCurrent);
+ else
+ progressBarPixmap->DrawRectangle(cRect( posMark - sml/2, 0, sml, progressBarHeight), progressBarColorMark);
+
+ if( Start ) {
+ if( posCurrent > posMark )
+ progressBarPixmap->DrawRectangle(cRect( posMarkLast, top - sml/2, posMark - posMarkLast, sml), progressBarColorBarCurFg);
+ else {
+ // marker
+ progressBarPixmap->DrawRectangle(cRect( posCurrent - big/2, top - big/2, big, big), progressBarColorBarCurFg);
+ if( posCurrent > posMarkLast )
+ progressBarPixmap->DrawRectangle(cRect( posMarkLast, top - sml/2, posCurrent - posMarkLast, sml), progressBarColorBarCurFg);
+ }
+ // marker top
+ if( isCurrent )
+ progressBarPixmap->DrawRectangle(cRect( posMark - mbig/2, 0, mbig, sml), progressBarColorMarkCurrent);
+ else
+ progressBarPixmap->DrawRectangle(cRect( posMark - mbig/2, 0, mbig, sml), progressBarColorMark);
+ } else {
+ // big line
+ if( posCurrent > posMark ) {
+ progressBarPixmap->DrawRectangle(cRect( posMarkLast, top - big/2, posMark - posMarkLast, big), progressBarColorBarCurFg);
+ // draw last marker top
+ progressBarPixmap->DrawRectangle(cRect( posMarkLast - mbig/2, 0, mbig, marginItem/2), progressBarColorMark);
+ } else {
+ progressBarPixmap->DrawRectangle(cRect( posMarkLast, top - big/2, posMark - posMarkLast, big), progressBarColorBarFg);
+ if( posCurrent > posMarkLast ) {
+ progressBarPixmap->DrawRectangle(cRect( posMarkLast, top - big/2, posCurrent - posMarkLast, big), progressBarColorBarCurFg);
+ // draw last marker top
+ progressBarPixmap->DrawRectangle(cRect( posMarkLast - mbig/2, 0, mbig, marginItem/2), progressBarColorMark);
+ }
+ }
+ // marker bottom
+ if( isCurrent )
+ progressBarPixmap->DrawRectangle(cRect( posMark - mbig/2, progressBarHeight - sml, mbig, sml), progressBarColorMarkCurrent);
+ else
+ progressBarPixmap->DrawRectangle(cRect( posMark - mbig/2, progressBarHeight - sml, mbig, sml), progressBarColorMark);
+ }
+
+ if( posCurrent == posMarkLast && posMarkLast != 0 )
+ progressBarPixmap->DrawRectangle(cRect( posMarkLast - sml, 0, sml*2, progressBarHeight), progressBarColorMarkCurrent);
+ else if( posMarkLast != 0 )
+ progressBarPixmap->DrawRectangle(cRect( posMarkLast - sml/2, 0, sml, progressBarHeight), progressBarColorMark);
+
+}
+
+void cFlatBaseRender::ScrollbarDraw(cPixmap *Pixmap, int Left, int Top, int Height, int Total, int Offset, int Shown, bool CanScrollUp, bool CanScrollDown) {
+ if( !Pixmap )
+ return;
+
+ int scrollHeight = max(int((Height) * double(Shown) / Total + 0.5), 5);
+ int scrollTop = min(int(Top + (Height) * double(Offset) / Total + 0.5), Top + Height - scrollHeight);
+
+ /* Types
+ * 0 = left line + rect bar
+ * 1 = left line + round bar
+ * 2 = middle line + rect bar
+ * 3 = middle line + round bar
+ * 4 = outline + rect bar
+ * 5 = outline + round bar
+ * 6 = rect bar
+ * 7 = round bar
+ */
+ int Type = Config.decorScrollBarType;
+
+ if (Total > 0 && Total > Shown) {
+ Pixmap->Fill(clrTransparent);
+ Pixmap->DrawRectangle(cRect(Left, Top, scrollBarWidth, Height), Config.decorScrollBarBg);
+ switch( Type ) {
+ default:
+ case 0:
+ {
+ int lineWidth = 6;
+ if( scrollBarWidth <= 10 )
+ lineWidth = 2;
+ else if( scrollBarWidth <= 20 )
+ lineWidth = 4;
+ Pixmap->DrawRectangle(cRect(Left, Top, lineWidth, Height), Config.decorScrollBarFg);
+
+ // Bar
+ Pixmap->DrawRectangle(cRect(Left + lineWidth, scrollTop, scrollBarWidth - lineWidth, scrollHeight), Config.decorScrollBarBarFg);
+ break;
+ }
+ case 1:
+ {
+ int dotHeight = scrollBarWidth / 2;
+ int lineWidth = 6;
+ if( scrollBarWidth <= 10 )
+ lineWidth = 2;
+ else if( scrollBarWidth <= 20 )
+ lineWidth = 4;
+ Pixmap->DrawRectangle(cRect(Left, Top, lineWidth, Height), Config.decorScrollBarFg);
+
+ // Bar
+ Pixmap->DrawRectangle(cRect(Left + lineWidth, scrollTop + dotHeight, scrollBarWidth - lineWidth, scrollHeight - dotHeight*2), Config.decorScrollBarBarFg);
+ // dot
+ Pixmap->DrawEllipse(cRect( Left + lineWidth, scrollTop, scrollBarWidth - lineWidth, scrollBarWidth - lineWidth), Config.decorScrollBarBarFg, 0);
+ Pixmap->DrawEllipse(cRect( Left + lineWidth, scrollTop + scrollHeight - dotHeight*2, scrollBarWidth - lineWidth, scrollBarWidth - lineWidth), Config.decorScrollBarBarFg, 0);
+ break;
+ }
+ case 2:
+ {
+ int Middle = Left + scrollBarWidth / 2;
+ int lineWidth = 6;
+ if( scrollBarWidth <= 10 )
+ lineWidth = 2;
+ else if( scrollBarWidth <= 20 )
+ lineWidth = 4;
+
+ Pixmap->DrawRectangle(cRect(Middle - lineWidth/2, Top, lineWidth, Height), Config.decorScrollBarFg);
+ // Bar
+ Pixmap->DrawRectangle(cRect(Left, scrollTop, scrollBarWidth, scrollHeight), Config.decorScrollBarBarFg);
+ break;
+ }
+ case 3:
+ {
+ int dotHeight = scrollBarWidth / 2;
+ int Middle = Left + scrollBarWidth / 2;
+ int lineWidth = 6;
+ if( scrollBarWidth <= 10 )
+ lineWidth = 2;
+ else if( scrollBarWidth <= 20 )
+ lineWidth = 4;
+
+ Pixmap->DrawRectangle(cRect(Middle - lineWidth/2, Top, lineWidth, Height), Config.decorScrollBarFg);
+
+ // Bar
+ Pixmap->DrawRectangle(cRect(Left, scrollTop + dotHeight, scrollBarWidth, scrollHeight - dotHeight*2), Config.decorScrollBarBarFg);
+ // dot
+ Pixmap->DrawEllipse(cRect( Left, scrollTop, scrollBarWidth, scrollBarWidth), Config.decorScrollBarBarFg, 0);
+ Pixmap->DrawEllipse(cRect( Left, scrollTop + scrollHeight - dotHeight*2, scrollBarWidth, scrollBarWidth), Config.decorScrollBarBarFg, 0);
+ break;
+ }
+ case 4:
+ {
+ int out = 1;
+ if( scrollBarWidth > 10 )
+ out = 2;
+ // outline
+ Pixmap->DrawRectangle(cRect( Left, Top, scrollBarWidth, out), Config.decorScrollBarFg);
+ Pixmap->DrawRectangle(cRect( Left, Top + Height - out, scrollBarWidth, out), Config.decorScrollBarFg);
+ Pixmap->DrawRectangle(cRect( Left, Top, out, Height), Config.decorScrollBarFg);
+ Pixmap->DrawRectangle(cRect( Left + scrollBarWidth - out, Top, out, Height), Config.decorScrollBarFg);
+
+ // bar
+ Pixmap->DrawRectangle(cRect(Left + out, scrollTop + out, scrollBarWidth - out*2, scrollHeight - out*2), Config.decorScrollBarBarFg);
+ break;
+ }
+ case 5:
+ {
+ int dotHeight = scrollBarWidth / 2;
+ int out = 1;
+ if( scrollBarWidth > 10 )
+ out = 2;
+ // outline
+ Pixmap->DrawRectangle(cRect( Left, Top, scrollBarWidth, out), Config.decorScrollBarFg);
+ Pixmap->DrawRectangle(cRect( Left, Top + Height - out, scrollBarWidth, out), Config.decorScrollBarFg);
+ Pixmap->DrawRectangle(cRect( Left, Top, out, Height), Config.decorScrollBarFg);
+ Pixmap->DrawRectangle(cRect( Left + scrollBarWidth - out, Top, out, Height), Config.decorScrollBarFg);
+
+ // bar
+ Pixmap->DrawRectangle(cRect(Left + out, scrollTop + dotHeight + out, scrollBarWidth - out*2, scrollHeight - dotHeight*2 - out*2), Config.decorScrollBarBarFg);
+ // dot
+ Pixmap->DrawEllipse(cRect( Left + out, scrollTop + out, scrollBarWidth - out*2, scrollBarWidth - out*2), Config.decorScrollBarBarFg, 0);
+ Pixmap->DrawEllipse(cRect( Left + out, scrollTop + scrollHeight - dotHeight*2 + out, scrollBarWidth - out*2, scrollBarWidth - out*2), Config.decorScrollBarBarFg, 0);
+ break;
+ }
+ case 6:
+ {
+ Pixmap->DrawRectangle(cRect(Left, scrollTop, scrollBarWidth, scrollHeight), Config.decorScrollBarBarFg);
+ break;
+ }
+ case 7:
+ {
+ int dotHeight = scrollBarWidth / 2;
+
+ Pixmap->DrawRectangle(cRect(Left, scrollTop + dotHeight, scrollBarWidth, scrollHeight - dotHeight*2), Config.decorScrollBarBarFg);
+ // dot
+ Pixmap->DrawEllipse(cRect( Left, scrollTop, scrollBarWidth, scrollBarWidth), Config.decorScrollBarBarFg, 0);
+ Pixmap->DrawEllipse(cRect( Left, scrollTop + scrollHeight - dotHeight*2, scrollBarWidth, scrollBarWidth), Config.decorScrollBarBarFg, 0);
+
+ break;
+ }
+ }
+
+ }
+}
+
+int cFlatBaseRender::ScrollBarWidth(void) {
+ return scrollBarWidth;
+}
+
+void cFlatBaseRender::DecorBorderClear(int Left, int Top, int Width, int Height, int Size) {
+ int LeftDecor = Left - Size;
+ int TopDecor = Top - Size;
+ int WidthDecor = Width + Size*2;
+ int HeightDecor = Height + Size*2;
+ int BottomDecor = Height + Size;
+
+ if( decorPixmap ) {
+ // top
+ decorPixmap->DrawRectangle(cRect( LeftDecor, TopDecor, WidthDecor, Size), clrTransparent);
+ // right
+ decorPixmap->DrawRectangle(cRect( LeftDecor + Size + Width, TopDecor, Size, HeightDecor), clrTransparent);
+ // bottom
+ decorPixmap->DrawRectangle(cRect( LeftDecor, TopDecor + BottomDecor, WidthDecor, Size), clrTransparent);
+ // left
+ decorPixmap->DrawRectangle(cRect( LeftDecor, TopDecor, Size, HeightDecor), clrTransparent);
+ }
+}
+
+void cFlatBaseRender::DecorBorderClearByFrom(int From) {
+ std::list<sDecorBorder>::iterator it;
+ for( it = Borders.begin(); it != Borders.end(); ) {
+ if( (*it).From == From ) {
+ DecorBorderClear((*it).Left, (*it).Top, (*it).Width, (*it).Height, (*it).Size);
+ it = Borders.erase(it);
+ } else
+ ++it;
+ }
+}
+
+void cFlatBaseRender::DecorBorderRedrawAll(void) {
+ std::list<sDecorBorder>::iterator it;
+ for( it = Borders.begin(); it != Borders.end(); it++) {
+ DecorBorderDraw((*it).Left, (*it).Top, (*it).Width, (*it).Height, (*it).Size, (*it).Type, (*it).ColorFg, (*it).ColorBg, (*it).From, false);
+ }
+}
+
+void cFlatBaseRender::DecorBorderClearAll(void) {
+ if( decorPixmap )
+ decorPixmap->Fill(clrTransparent);
+}
+
+void cFlatBaseRender::DecorBorderDraw(int Left, int Top, int Width, int Height, int Size, int Type, tColor ColorFg, tColor ColorBg, int From, bool Store) {
+ if( Size == 0 || Type <= 0 )
+ return;
+
+ if( Store ) {
+ sDecorBorder f;
+ f.Left = Left;
+ f.Top = Top;
+ f.Width = Width;
+ f.Height = Height;
+ f.Size = Size;
+ f.Type = Type;
+ f.ColorFg = ColorFg;
+ f.ColorBg = ColorBg;
+ f.From = From;
+
+ Borders.push_back(f);
+ }
+
+ int LeftDecor = Left - Size;
+ int TopDecor = Top - Size;
+ int WidthDecor = Width + Size*2;
+ int HeightDecor = Height + Size*2;
+ int BottomDecor = Height + Size;
+
+ if( !decorPixmap ) {
+ decorPixmap = osd->CreatePixmap(4, cRect(0, 0, cOsd::OsdWidth(), cOsd::OsdHeight()));
+ decorPixmap->Fill(clrTransparent);
+ }
+
+ switch( Type ) {
+ case 1: // rect
+ // top
+ decorPixmap->DrawRectangle(cRect( LeftDecor, TopDecor, WidthDecor, Size), ColorBg);
+ // right
+ decorPixmap->DrawRectangle(cRect( LeftDecor + Size + Width, TopDecor, Size, HeightDecor), ColorBg);
+ // bottom
+ decorPixmap->DrawRectangle(cRect( LeftDecor, TopDecor + BottomDecor, WidthDecor, Size), ColorBg);
+ // left
+ decorPixmap->DrawRectangle(cRect( LeftDecor, TopDecor, Size, HeightDecor), ColorBg);
+ break;
+ case 2: // round
+ // top
+ decorPixmap->DrawRectangle(cRect( LeftDecor + Size, TopDecor, Width, Size), ColorBg);
+ // right
+ decorPixmap->DrawRectangle(cRect( LeftDecor + Size + Width, TopDecor + Size, Size, Height), ColorBg);
+ // bottom
+ decorPixmap->DrawRectangle(cRect( LeftDecor + Size, TopDecor + BottomDecor, Width, Size), ColorBg);
+ // left
+ decorPixmap->DrawRectangle(cRect( LeftDecor, TopDecor + Size, Size, Height), ColorBg);
+
+ // top,left corner
+ decorPixmap->DrawEllipse(cRect( LeftDecor, TopDecor, Size, Size), ColorBg, 2);
+ // top,right corner
+ decorPixmap->DrawEllipse(cRect( LeftDecor + Size + Width, TopDecor, Size, Size), ColorBg, 1);
+ // bottom,left corner
+ decorPixmap->DrawEllipse(cRect( LeftDecor, TopDecor + BottomDecor, Size, Size), ColorBg, 3);
+ // bottom,right corner
+ decorPixmap->DrawEllipse(cRect( LeftDecor + Size + Width, TopDecor + BottomDecor, Size, Size), ColorBg, 4);
+ break;
+ case 3: // invert round
+ // top
+ decorPixmap->DrawRectangle(cRect( LeftDecor + Size, TopDecor, Width, Size), ColorBg);
+ // right
+ decorPixmap->DrawRectangle(cRect( LeftDecor+ Size + Width, TopDecor + Size, Size, Height), ColorBg);
+ // bottom
+ decorPixmap->DrawRectangle(cRect( LeftDecor + Size, TopDecor + BottomDecor, Width, Size), ColorBg);
+ // left
+ decorPixmap->DrawRectangle(cRect( LeftDecor, TopDecor + Size, Size, Height), ColorBg);
+
+ // top,left corner
+ decorPixmap->DrawEllipse(cRect( LeftDecor, TopDecor, Size, Size), ColorBg, -4);
+ // top,right corner
+ decorPixmap->DrawEllipse(cRect( LeftDecor + Size + Width, TopDecor, Size, Size), ColorBg, -3);
+ // bottom,left corner
+ decorPixmap->DrawEllipse(cRect( LeftDecor, TopDecor + BottomDecor, Size, Size), ColorBg, -1);
+ // bottom,right corner
+ decorPixmap->DrawEllipse(cRect( LeftDecor + Size + Width, TopDecor + BottomDecor, Size, Size), ColorBg, -2);
+ break;
+ case 4: // rect + alpha blend
+ // top
+ DecorDrawGlowRectHor(decorPixmap, LeftDecor + Size, TopDecor, WidthDecor - Size*2, Size, ColorBg);
+ // bottom
+ DecorDrawGlowRectHor(decorPixmap, LeftDecor + Size, TopDecor + BottomDecor, WidthDecor - Size*2, -1*Size, ColorBg);
+ // left
+ DecorDrawGlowRectVer(decorPixmap, LeftDecor, TopDecor + Size, Size, HeightDecor - Size*2, ColorBg);
+ // right
+ DecorDrawGlowRectVer(decorPixmap, LeftDecor + Size + Width, TopDecor + Size, -1*Size, HeightDecor - Size*2, ColorBg);
+
+ DecorDrawGlowRectTL(decorPixmap, LeftDecor, TopDecor, Size, Size, ColorBg);
+ DecorDrawGlowRectTR(decorPixmap, LeftDecor + Size + Width, TopDecor, Size, Size, ColorBg);
+ DecorDrawGlowRectBL(decorPixmap, LeftDecor, TopDecor + Size + Height, Size, Size, ColorBg);
+ DecorDrawGlowRectBR(decorPixmap, LeftDecor + Size + Width, TopDecor + Size + Height, Size, Size, ColorBg);
+ break;
+ case 5: // round + alpha blend
+ // top
+ DecorDrawGlowRectHor(decorPixmap, LeftDecor + Size, TopDecor, WidthDecor - Size*2, Size, ColorBg);
+ // bottom
+ DecorDrawGlowRectHor(decorPixmap, LeftDecor + Size, TopDecor + BottomDecor, WidthDecor - Size*2, -1*Size, ColorBg);
+ // left
+ DecorDrawGlowRectVer(decorPixmap, LeftDecor, TopDecor + Size, Size, HeightDecor - Size*2, ColorBg);
+ // right
+ DecorDrawGlowRectVer(decorPixmap, LeftDecor + Size + Width, TopDecor + Size, -1*Size, HeightDecor - Size*2, ColorBg);
+
+ DecorDrawGlowEllipseTL(decorPixmap, LeftDecor, TopDecor, Size, Size, ColorBg, 2);
+ DecorDrawGlowEllipseTR(decorPixmap, LeftDecor + Size + Width, TopDecor, Size, Size, ColorBg, 1);
+ DecorDrawGlowEllipseBL(decorPixmap, LeftDecor, TopDecor + Size + Height, Size, Size, ColorBg, 3);
+ DecorDrawGlowEllipseBR(decorPixmap, LeftDecor + Size + Width, TopDecor + Size + Height, Size, Size, ColorBg, 4);
+ break;
+ case 6: // invert round + alpha blend
+ // top
+ DecorDrawGlowRectHor(decorPixmap, LeftDecor + Size, TopDecor, WidthDecor - Size*2, Size, ColorBg);
+ // bottom
+ DecorDrawGlowRectHor(decorPixmap, LeftDecor + Size, TopDecor + BottomDecor, WidthDecor - Size*2, -1*Size, ColorBg);
+ // left
+ DecorDrawGlowRectVer(decorPixmap, LeftDecor, TopDecor + Size, Size, HeightDecor - Size*2, ColorBg);
+ // right
+ DecorDrawGlowRectVer(decorPixmap, LeftDecor + Size + Width, TopDecor + Size, -1*Size, HeightDecor - Size*2, ColorBg);
+
+ DecorDrawGlowEllipseTL(decorPixmap, LeftDecor, TopDecor, Size, Size, ColorBg, -4);
+ DecorDrawGlowEllipseTR(decorPixmap, LeftDecor + Size + Width, TopDecor, Size, Size, ColorBg, -3);
+ DecorDrawGlowEllipseBL(decorPixmap, LeftDecor, TopDecor + Size + Height, Size, Size, ColorBg, -1);
+ DecorDrawGlowEllipseBR(decorPixmap, LeftDecor + Size + Width, TopDecor + Size + Height, Size, Size, ColorBg, -2);
+ break;
+ }
+}
+
+/*
+tColor cFlatBaseRender::Multiply(tColor Color, uint8_t Alpha)
+{
+ tColor RB = (Color & 0x00FF00FF) * Alpha;
+ RB = ((RB + ((RB >> 8) & 0x00FF00FF) + 0x00800080) >> 8) & 0x00FF00FF;
+ tColor AG = ((Color >> 8) & 0x00FF00FF) * Alpha;
+ AG = ((AG + ((AG >> 8) & 0x00FF00FF) + 0x00800080)) & 0xFF00FF00;
+ return AG | RB;
+}
+*/
+
+tColor cFlatBaseRender::SetAlpha(tColor Color, double am)
+{
+ uint8_t A = (Color & 0xFF000000) >> 24;
+ uint8_t R = (Color & 0x00FF0000) >> 16;
+ uint8_t G = (Color & 0x0000FF00) >> 8;
+ uint8_t B = (Color & 0x000000FF);
+
+ A = A * am;
+ return ArgbToColor(A, R, G, B);
+}
+
+void cFlatBaseRender::DecorDrawGlowRectHor(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg) {
+ double Alpha;
+ if( Height < 0 ) {
+ Height *= -1;
+ for(int i = Height, j = 0; i >= 0; i--, j++) {
+ Alpha = 255.0 / Height * j;
+ tColor col = SetAlpha(ColorBg, 100.0/255.0*Alpha/100.0);
+ pixmap->DrawRectangle(cRect( Left, Top + i, Width, 1), col);
+ }
+ } else {
+ for(int i = 0; i < Height; i++) {
+ Alpha = 255.0 / Height * i;
+ tColor col = SetAlpha(ColorBg, 100.0/255.0*Alpha/100.0);
+ pixmap->DrawRectangle(cRect( Left, Top + i, Width, 1), col);
+ }
+ }
+}
+
+void cFlatBaseRender::DecorDrawGlowRectVer(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg) {
+ double Alpha;
+ if( Width < 0 ) {
+ Width *= -1;
+ for(int i = Width, j = 0; i >= 0; i--, j++) {
+ Alpha = 255.0 / Width * j;
+ tColor col = SetAlpha(ColorBg, 100.0/255.0*Alpha/100.0);
+ pixmap->DrawRectangle(cRect( Left + i, Top, 1, Height), col);
+ }
+ } else {
+ for(int i = 0; i < Width; i++) {
+ Alpha = 255.0 / Width * i;
+ tColor col = SetAlpha(ColorBg, 100.0/255.0*Alpha/100.0);
+ pixmap->DrawRectangle(cRect( Left + i, Top, 1, Height), col);
+ }
+ }
+}
+
+void cFlatBaseRender::DecorDrawGlowRectTL(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg) {
+ double Alpha;
+
+ for(int i = 0; i < Width; i++) {
+ Alpha = 255.0 / Width * i;
+ tColor col = SetAlpha(ColorBg, 100.0/255.0*Alpha/100.0);
+ pixmap->DrawRectangle(cRect( Left + i, Top + i, Width-i, Height-i), col);
+ }
+}
+
+void cFlatBaseRender::DecorDrawGlowRectTR(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg) {
+ double Alpha;
+
+ for(int i = 0, j = Width; i < Width; i++, j--) {
+ Alpha = 255.0 / Width * i;
+ tColor col = SetAlpha(ColorBg, 100.0/255.0*Alpha/100.0);
+ pixmap->DrawRectangle(cRect( Left, Top + Height-j, j, j), col);
+ }
+}
+
+void cFlatBaseRender::DecorDrawGlowRectBL(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg) {
+ double Alpha;
+
+ for(int i = 0, j = Width; i < Width; i++, j--) {
+ Alpha = 255.0 / Width * i;
+ tColor col = SetAlpha(ColorBg, 100.0/255.0*Alpha/100.0);
+ pixmap->DrawRectangle(cRect( Left + Width - j, Top, j, j), col);
+ }
+}
+
+void cFlatBaseRender::DecorDrawGlowRectBR(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg) {
+ double Alpha;
+
+ for(int i = 0, j = Width; i < Width; i++, j--) {
+ Alpha = 255 / Width * i;
+ tColor col = SetAlpha(ColorBg, 100.0/255.0*Alpha/100.0);
+ pixmap->DrawRectangle(cRect( Left, Top, j, j), col);
+ }
+}
+
+void cFlatBaseRender::DecorDrawGlowEllipseTL(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg, int type) {
+ double Alpha;
+
+ for(int i = 0, j = Width; i < Width; i++, j--) {
+ if( VDRVERSNUM < 20002 && j == 1 ) // in VDR Version < 2.0.2 osd breaks if width & height == 1
+ continue;
+ Alpha = 255 / Width * i;
+ tColor col = SetAlpha(ColorBg, 100.0/255.0*Alpha/100.0);
+ pixmap->DrawEllipse(cRect( Left + i, Top + i, j, j), col, type);
+ }
+}
+
+void cFlatBaseRender::DecorDrawGlowEllipseTR(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg, int type) {
+ double Alpha;
+
+ for(int i = 0, j = Width; i < Width; i++, j--) {
+ if( VDRVERSNUM < 20002 && j == 1 ) // in VDR Version < 2.0.2 osd breaks if width & height == 1
+ continue;
+ Alpha = 255 / Width * i;
+ tColor col = SetAlpha(ColorBg, 100.0/255.0*Alpha/100.0);
+ pixmap->DrawEllipse(cRect( Left, Top + Height-j, j, j), col, type);
+ }
+}
+
+void cFlatBaseRender::DecorDrawGlowEllipseBL(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg, int type) {
+ double Alpha;
+
+ for(int i = 0, j = Width; i < Width; i++, j--) {
+ if( VDRVERSNUM < 20002 && j == 1 ) // in VDR Version < 2.0.2 osd breaks if width & height == 1
+ continue;
+ Alpha = 255 / Width * i;
+ tColor col = SetAlpha(ColorBg, 100.0/255.0*Alpha/100.0);
+ pixmap->DrawEllipse(cRect( Left + Width - j, Top, j, j), col, type);
+ }
+}
+
+void cFlatBaseRender::DecorDrawGlowEllipseBR(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg, int type) {
+ double Alpha;
+
+ for(int i = 0, j = Width; i < Width; i++, j--) {
+ if( VDRVERSNUM < 20002 && j == 1 ) // in VDR Version < 2.0.2 osd breaks if width & height == 1
+ continue;
+ Alpha = 255 / Width * i;
+ tColor col = SetAlpha(ColorBg, 100.0/255.0*Alpha/100.0);
+ pixmap->DrawEllipse(cRect( Left, Top, j, j), col, type);
+ }
+}
+
+int cFlatBaseRender::GetFontAscender(const char *Name, int CharHeight, int CharWidth) {
+ FT_Library library;
+ FT_Face face;
+ cString fontFileName = cFont::GetFontFileName(Name);
+ int Ascender = CharHeight;
+ int error = FT_Init_FreeType(&library);
+ if (!error) {
+ error = FT_New_Face(library, fontFileName, 0, &face);
+ if (!error) {
+ if (face->num_fixed_sizes && face->available_sizes) { // fixed font
+ // TODO what exactly does all this mean?
+ Ascender = face->available_sizes->height;
+ } else {
+ error = FT_Set_Char_Size(face, CharWidth * 64, CharHeight * 64, 0, 0);
+ if (!error) {
+ Ascender = face->size->metrics.ascender/64;
+ }
+ else
+ esyslog("ERROR: FreeType: error %d during FT_Set_Char_Size (font = %s)\n", error, *fontFileName);
+ }
+ }
+ else
+ esyslog("ERROR: FreeType: load error %d (font = %s)", error, *fontFileName);
+ }
+ else
+ esyslog("ERROR: FreeType: initialization error %d (font = %s)", error, *fontFileName);
+
+ FT_Done_Face(face);
+ FT_Done_FreeType(library);
+
+ return Ascender;
+}
+
+void cFlatBaseRender::DrawWidgetWeather(void) {
+ int fs = int(round(cOsd::OsdHeight() * Config.WeatherFontSize));
+ cFont *weatherFont = cFont::CreateFont(Setup.FontOsd, fs);
+ cFont *weatherFontSml = cFont::CreateFont(Setup.FontOsd, fs/2.0 );
+ cFont *weatherFontSign = cFont::CreateFont(Setup.FontOsd, fs/2.5 );
+
+ std::string tempToday = "", tempTodaySign = "";
+ std::string iconToday, iconTomorrow;
+ std::string tempMaxToday, tempMaxTomorrow;
+ std::string tempMinToday, tempMinTomorrow;
+ std::string precToday, precTomorrow;
+
+ std::ifstream file;
+ cString filename;
+
+ filename = cString::sprintf("%s/weather/weather.0.temp", WIDGETOUTPUTPATH );
+ file.open(*filename, std::ifstream::in);
+ if( file.is_open() ) {
+ std::getline(file, tempToday);
+ file.close();
+ std::size_t found = tempToday.find("°");
+ if( found != std::string::npos) {
+ tempTodaySign = tempToday.substr(found);
+ tempToday = tempToday.substr(0, found);
+ }
+ } else
+ return;
+
+ filename = cString::sprintf("%s/weather/weather.0.icon", WIDGETOUTPUTPATH );
+ file.open(*filename, std::ifstream::in);
+ if( file.is_open() ) {
+ std::getline(file, iconToday);
+ file.close();
+ } else
+ return;
+
+ filename = cString::sprintf("%s/weather/weather.1.icon", WIDGETOUTPUTPATH );
+ file.open(*filename, std::ifstream::in);
+ if( file.is_open() ) {
+ std::getline(file, iconTomorrow);
+ file.close();
+ } else
+ return;
+
+ filename = cString::sprintf("%s/weather/weather.0.tempMax", WIDGETOUTPUTPATH );
+ file.open(*filename, std::ifstream::in);
+ if( file.is_open() ) {
+ std::getline(file, tempMaxToday);
+ file.close();
+ } else
+ return;
+
+ filename = cString::sprintf("%s/weather/weather.1.tempMax", WIDGETOUTPUTPATH );
+ file.open(*filename, std::ifstream::in);
+ if( file.is_open() ) {
+ std::getline(file, tempMaxTomorrow);
+ file.close();
+ } else
+ return;
+
+ filename = cString::sprintf("%s/weather/weather.0.tempMin", WIDGETOUTPUTPATH );
+ file.open(*filename, std::ifstream::in);
+ if( file.is_open() ) {
+ std::getline(file, tempMinToday);
+ file.close();
+ } else
+ return;
+
+ filename = cString::sprintf("%s/weather/weather.1.tempMin", WIDGETOUTPUTPATH );
+ file.open(*filename, std::ifstream::in);
+ if( file.is_open() ) {
+ std::getline(file, tempMinTomorrow);
+ file.close();
+ } else
+ return;
+
+ double p = 0.0;
+ filename = cString::sprintf("%s/weather/weather.0.precipitation", WIDGETOUTPUTPATH );
+ file.open(*filename, std::ifstream::in);
+ if( file.is_open() ) {
+ std::getline(file, precToday);
+ std::replace( precToday.begin(), precToday.end(), '.', ',');
+ file.close();
+ p = atof(precToday.c_str()) * 100.0;
+ p = roundUp(p, 10);
+ precToday = cString::sprintf("%.0f%%", p);
+ }
+
+ filename = cString::sprintf("%s/weather/weather.1.precipitation", WIDGETOUTPUTPATH );
+ file.open(*filename, std::ifstream::in);
+ if( file.is_open() ) {
+ std::getline(file, precTomorrow);
+ std::replace( precTomorrow.begin(), precTomorrow.end(), '.', ',');
+ file.close();
+ p = atof(precTomorrow.c_str()) * 100.0;
+ p = roundUp(p, 10);
+ precTomorrow = cString::sprintf("%.0f%%", p);
+ }
+
+ int left = marginItem;
+
+ int widthTempToday = max(weatherFontSml->Width(tempMaxToday.c_str()), weatherFontSml->Width(tempMinToday.c_str()) );
+ int widthTempTomorrow = max(weatherFontSml->Width(tempMaxTomorrow.c_str()), weatherFontSml->Width(tempMinTomorrow.c_str()) );
+
+ int wTop = topBarHeight + Config.decorBorderTopBarSize*2 + 20 + Config.decorBorderChannelEPGSize;
+ int wWidth = marginItem + weatherFont->Width(tempToday.c_str()) + weatherFontSign->Width(tempTodaySign.c_str()) + marginItem*2 + weatherFont->Height() + marginItem \
+ + widthTempToday + marginItem + weatherFont->Height() - marginItem*2 \
+ + weatherFontSml->Width(precToday.c_str()) + marginItem*4 + weatherFont->Height() + marginItem \
+ + widthTempTomorrow + marginItem + weatherFont->Height() - marginItem*2 \
+ + weatherFontSml->Width(precTomorrow.c_str()) + marginItem*2;
+ int wLeft = osdWidth - wWidth - 20;
+
+ weatherWidget.Clear();
+ weatherWidget.SetOsd(osd);
+ weatherWidget.SetPosition(cRect(wLeft, wTop, wWidth, weatherFont->Height()));
+ weatherWidget.SetBGColor(Theme.Color(clrItemCurrentBg));
+ weatherWidget.SetScrollingActive(false);
+
+ weatherWidget.AddText(tempToday.c_str(), false, cRect(left, 0, 0, 0), Theme.Color(clrChannelFontEpg), Theme.Color(clrItemCurrentBg), weatherFont);
+ left += weatherFont->Width(tempToday.c_str());
+
+ int fontAscender = GetFontAscender(Setup.FontOsd, fs);
+ int fontAscender2 = GetFontAscender(Setup.FontOsd, fs / 2.5);
+ int t = (weatherFont->Height() - fontAscender) - (weatherFontSign->Height() - fontAscender2);
+
+ weatherWidget.AddText(tempTodaySign.c_str(), false, cRect(left, t, 0, 0), Theme.Color(clrChannelFontEpg), Theme.Color(clrItemCurrentBg), weatherFontSign);
+ left += weatherFontSign->Width(tempTodaySign.c_str()) + marginItem*2;
+
+ cString weatherIcon = cString::sprintf("widgets/%s", iconToday.c_str());
+ cImage *img = imgLoader.LoadIcon(*weatherIcon, weatherFont->Height(), weatherFont->Height() - marginItem*2);
+ if( img ) {
+ weatherWidget.AddImage(img, cRect(left, 0 + marginItem, weatherFont->Height(), weatherFont->Height()));
+ left += weatherFont->Height() + marginItem;
+ }
+ weatherWidget.AddText(tempMaxToday.c_str(), false, cRect(left, 0, 0, 0), Theme.Color(clrChannelFontEpg), Theme.Color(clrItemCurrentBg), weatherFontSml, widthTempToday, weatherFontSml->Height(), taRight);
+ weatherWidget.AddText(tempMinToday.c_str(), false, cRect(left, 0 + weatherFontSml->Height(), 0, 0), Theme.Color(clrChannelFontEpg), Theme.Color(clrItemCurrentBg), weatherFontSml, widthTempToday, weatherFontSml->Height(), taRight);
+ left += widthTempToday + marginItem;
+
+ img = imgLoader.LoadIcon("widgets/umbrella", weatherFont->Height(), weatherFont->Height() - marginItem*2);
+ if( img ) {
+ weatherWidget.AddImage(img, cRect(left, 0 + marginItem, weatherFont->Height(), weatherFont->Height()));
+ left += weatherFont->Height() - marginItem*2;
+ }
+ weatherWidget.AddText(precToday.c_str(), false, cRect(left, 0 + (weatherFont->Height()/2 - weatherFontSml->Height()/2), 0, 0), Theme.Color(clrChannelFontEpg), Theme.Color(clrItemCurrentBg), weatherFontSml);
+ left += weatherFontSml->Width(precToday.c_str()) + marginItem*4;
+
+ weatherWidget.AddRect(cRect(left - marginItem*2, 0, wWidth - left + marginItem*2, weatherFont->Height()), Theme.Color(clrChannelBg));
+
+ weatherIcon = cString::sprintf("widgets/%s", iconTomorrow.c_str());
+ img = imgLoader.LoadIcon(*weatherIcon, weatherFont->Height(), weatherFont->Height() - marginItem*2);
+ if( img ) {
+ weatherWidget.AddImage(img, cRect(left, 0 + marginItem, weatherFont->Height(), weatherFont->Height()));
+ left += weatherFont->Height() + marginItem;
+ }
+ weatherWidget.AddText(tempMaxTomorrow.c_str(), false, cRect(left, 0, 0, 0), Theme.Color(clrChannelFontEpg), Theme.Color(clrChannelBg), weatherFontSml, widthTempTomorrow, weatherFontSml->Height(), taRight);
+ weatherWidget.AddText(tempMinTomorrow.c_str(), false, cRect(left, 0 + weatherFontSml->Height(), 0, 0), Theme.Color(clrChannelFontEpg), Theme.Color(clrChannelBg), weatherFontSml, widthTempTomorrow, weatherFontSml->Height(), taRight);
+ left += widthTempTomorrow + marginItem;
+
+ img = imgLoader.LoadIcon("widgets/umbrella", weatherFont->Height(), weatherFont->Height() - marginItem*2);
+ if( img ) {
+ weatherWidget.AddImage(img, cRect(left, 0 + marginItem, weatherFont->Height(), weatherFont->Height()));
+ left += weatherFont->Height() - marginItem*2;
+ }
+ weatherWidget.AddText(precTomorrow.c_str(), false, cRect(left, 0 + (weatherFont->Height()/2 - weatherFontSml->Height()/2), 0, 0), Theme.Color(clrChannelFontEpg), Theme.Color(clrChannelBg), weatherFontSml);
+ left += weatherFontSml->Width(precTomorrow.c_str());
+
+ //weatherWidget.AddRect(cRect(left, 0, wWidth - left, fontHeight), clrTransparent);
+
+ weatherWidget.CreatePixmaps(false);
+ weatherWidget.Draw();
+}
diff --git a/baserender.h b/baserender.h
new file mode 100644
index 0000000..9a63f73
--- /dev/null
+++ b/baserender.h
@@ -0,0 +1,183 @@
+#pragma once
+
+#include "imageloader.h"
+#include <list>
+#include "flat.h"
+#include "textscroller.h"
+#include "complexcontent.h"
+
+enum eBorder {
+ BorderMenuItem,
+ BorderRecordJump,
+ BorderMenuRecord,
+ BorderMessage,
+ BorderButton,
+ BorderContent,
+ BorderTVSPoster,
+ BorderSetRecording,
+ BorderMMWidget
+};
+
+struct sDecorBorder {
+ int Left, Top, Width, Height, Size, Type;
+ tColor ColorFg, ColorBg;
+ int From;
+};
+
+template<class T> inline T myMax(T a, T b) { return a >= b ? a : b; }
+
+class cFlatBaseRender
+{
+ protected:
+ cOsd *osd;
+
+ int osdLeft, osdTop, osdWidth, osdHeight;
+ int marginItem;
+
+ // Standard fonts
+ cFont *font;
+ cFont *fontSml;
+ cFont *fontFixed;
+ int fontHeight;
+ int fontSmlHeight;
+ int fontFixedHeight;
+
+ // TopBar
+ cPixmap *topBarPixmap;
+ cPixmap *topBarIconPixmap;
+ cPixmap *topBarIconBGPixmap;
+ cFont *topBarFont, *topBarFontSml, *topBarFontClock;
+ int topBarFontHeight, topBarFontSmlHeight, topBarFontClockHeight;
+
+ cString topBarTitle;
+ cString tobBarTitleExtra1, tobBarTitleExtra2;
+ cString topBarExtraIcon;
+ bool topBarExtraIconSet;
+ cString topBarMenuIcon;
+ bool topBarMenuIconSet;
+ cString topBarMenuIconRight;
+ bool topBarMenuIconRightSet;
+ cString topBarMenuLogo;
+ bool topBarMenuLogoSet;
+
+ bool topBarUpdateTitle;
+ cString topBarLastDate;
+ int topBarHeight;
+ int VideoDiskUsageState;
+
+ // Progressbar
+ cPixmap *progressBarPixmap;
+ cPixmap *progressBarPixmapBg;
+ int progressBarHeight, progressBarTop, progressBarWidth, progressBarMarginHor, progressBarMarginVer;
+ int ProgressType;
+ bool progressBarSetBackground;
+ bool progressBarIsSignal;
+ tColor progressBarColorFg, progressBarColorBarFg, progressBarColorBarCurFg, progressBarColorBg;
+ tColor progressBarColorMark, progressBarColorMarkCurrent;
+
+ // Scrollbar
+ int scrollBarWidth;
+
+ // Buttons rot, grün, gelb, blau
+ cPixmap *buttonsPixmap;
+ int buttonsWidth, buttonsHeight, buttonsTop;
+ int marginButtonColor, buttonColorHeight;
+ bool buttonsDrawn;
+
+ // Nachricht
+ cPixmap *messagePixmap, *messageIconPixmap;
+ int messageWidth, messageHeight;
+ cTextScrollers messageScroller;
+
+ // Mehrzeiliger Content mit Scrollbalken
+ cPixmap *contentPixmap;
+ cPixmap *contentEpgImagePixmap;
+ int contentLeft, contentTop, contentHeight, contentWidth;
+ int contentDrawPortHeight; // gesamth�he des Textes
+ int contentTextHeight;
+ bool contentHasScrollbar;
+ bool contentShown;
+ int contentFontType;
+ int contentEventType;
+ int contentEventHeight;
+ int contentEventPosterWidth, contentEventPosterHeight;
+
+ tColor contentColorFg, contentColorBg;
+ cTextWrapper contentWrapper;
+ cTextWrapper contentWrapperPoster;
+ const cEvent *contentEvent;
+
+ cComplexContent weatherWidget;
+
+ cPixmap *decorPixmap;
+ std::list<sDecorBorder> Borders; // for clear specific Borders (clear only MenuItems and not TopBar)
+
+ void contentDraw(void);
+ void contentEventDraw(void);
+ double ScrollbarSize(void);
+
+ void ProgressBarDrawMark(int posMark, int posMarkLast, int posCurrent, bool Start, bool isCurrent);
+ int ProgressBarMarkPos(int P, int Total);
+
+ void DecorDrawGlowRectHor(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg);
+ void DecorDrawGlowRectVer(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg);
+
+ void DecorDrawGlowRectTL(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg);
+ void DecorDrawGlowRectTR(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg);
+ void DecorDrawGlowRectBL(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg);
+ void DecorDrawGlowRectBR(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg);
+
+ void DecorDrawGlowEllipseTL(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg, int type);
+ void DecorDrawGlowEllipseTR(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg, int type);
+ void DecorDrawGlowEllipseBL(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg, int type);
+ void DecorDrawGlowEllipseBR(cPixmap *pixmap, int Left, int Top, int Width, int Height, tColor ColorBg, int type);
+
+ void TopBarEnableDiskUsage(void);
+ //tColor Multiply(tColor Color, uint8_t Alpha);
+ tColor SetAlpha(tColor Color, double am);
+ public:
+ cImageLoader imgLoader;
+
+ cFlatBaseRender(void);
+ ~cFlatBaseRender(void);
+
+ void CreateFullOsd(void);
+ void CreateOsd(int Left, int Top, int Width, int Height);
+
+ void TopBarCreate(void);
+ void TopBarSetTitle(cString title);
+ void TopBarSetTitleWithoutClear(cString title);
+ void TopBarSetTitleExtra(cString extra1, cString extra2);
+ void TopBarSetMenuIcon(cString icon);
+ void TopBarSetMenuIconRight(cString icon);
+ void TopBarSetMenuLogo(cString icon);
+ void TopBarSetExtraIcon(cString icon);
+ void TopBarUpdate(void);
+
+ void ButtonsCreate(void);
+ void ButtonsSet(const char *Red, const char *Green = NULL, const char *Yellow = NULL, const char *Blue = NULL);
+ bool ButtonsDrawn(void);
+
+ void MessageCreate(void);
+ void MessageSet(eMessageType Type, const char *Text);
+ void MessageClear(void);
+
+ void ProgressBarDrawRaw(cPixmap *Pixmap, cPixmap *PixmapBg, cRect rec, cRect recBg, int Current, int Total, tColor ColorFg, tColor ColorBarFg, tColor ColorBg, int Type, bool SetBackground, bool isSignal = false);
+ void ProgressBarCreate(int Left, int Top, int Width, int Height, int MarginHor, int MarginVer, tColor ColorFg, tColor ColorBarFg, tColor ColorBg, int Type, bool SetBackground = false, bool isSignal = false);
+ void ProgressBarDrawBgColor(void);
+ void ProgressBarDraw(int Current, int Total);
+ void ProgressBarDrawMarks(int Current, int Total, const cMarks *Marks, tColor Color, tColor ColorCurrent);
+
+ void ScrollbarDraw(cPixmap *Pixmap, int Left, int Top, int Height, int Total, int Offset, int Shown, bool CanScrollUp, bool CanScrollDown);
+ int ScrollBarWidth(void);
+
+ void DecorBorderDraw(int Left, int Top, int Width, int Height, int Size, int Type, tColor ColorFg, tColor ColorBg, int From = 0, bool Store = true);
+ void DecorBorderClear(int Left, int Top, int Width, int Height, int Size);
+ void DecorBorderClearAll(void);
+ void DecorBorderRedrawAll(void);
+ void DecorBorderClearByFrom(int From);
+
+ int GetFontAscender(const char *Name, int CharHeight, int CharWidth = 0);
+
+ void DrawWidgetWeather(void);
+};
diff --git a/complexcontent.c b/complexcontent.c
new file mode 100644
index 0000000..7c26541
--- /dev/null
+++ b/complexcontent.c
@@ -0,0 +1,301 @@
+#include "complexcontent.h"
+
+cComplexContent::cComplexContent() {
+ Osd = NULL;
+ Pixmap = NULL;
+ PixmapImage = NULL;
+ isShown = false;
+ isScrollingActive = true;
+}
+
+cComplexContent::cComplexContent(cOsd *osd, int scrollSize) {
+ Osd = osd;
+ ScrollSize = scrollSize;
+
+ Pixmap = NULL;
+ PixmapImage = NULL;
+ isShown = false;
+ isScrollingActive = true;
+}
+
+cComplexContent::~cComplexContent() {
+}
+
+void cComplexContent::Clear(void) {
+ isShown = false;
+ Contents.clear();
+ if( Osd ) {
+ if( Pixmap != NULL ) {
+ Osd->DestroyPixmap(Pixmap);
+ Pixmap = NULL;
+ }
+ if( PixmapImage != NULL ) {
+ Osd->DestroyPixmap(PixmapImage);
+ PixmapImage = NULL;
+ }
+ }
+}
+
+void cComplexContent::CreatePixmaps(bool fullFillBackground) {
+ CalculateDrawPortHeight();
+ FullFillBackground = fullFillBackground;
+
+ if( !Osd )
+ return;
+ if( Pixmap != NULL ) {
+ Osd->DestroyPixmap(Pixmap);
+ Pixmap = NULL;
+ }
+ if( PixmapImage != NULL ) {
+ Osd->DestroyPixmap(PixmapImage);
+ PixmapImage = NULL;
+ }
+
+ cRect PositionDraw;
+ PositionDraw.SetLeft(0);
+ PositionDraw.SetTop(0);
+ PositionDraw.SetWidth(Position.Width());
+ if( FullFillBackground && DrawPortHeight < Position.Height() )
+ PositionDraw.SetHeight(Position.Height());
+ else
+ PositionDraw.SetHeight(DrawPortHeight);
+
+ Pixmap = Osd->CreatePixmap(1, Position, PositionDraw);
+ PixmapImage = Osd->CreatePixmap(2, Position, PositionDraw);
+ //dsyslog("skinflatplus: ComplexContentPixmap left: %d top: %d width: %d height: %d", Position.Left(), Position.Top(), Position.Width(), Position.Height() );
+ //dsyslog("skinflatplus: ComplexContentPixmap drawport left: %d top: %d width: %d height: %d", PositionDraw.Left(), PositionDraw.Top(), PositionDraw.Width(), PositionDraw.Height() );
+
+ if( FullFillBackground ) {
+ Pixmap->Fill(ColorBg);
+ } else {
+ Pixmap->DrawRectangle(cRect(0, 0, Position.Width(), ContentHeight(false)), ColorBg);
+ }
+
+ PixmapImage->Fill(clrTransparent);
+}
+
+void cComplexContent::CalculateDrawPortHeight(void) {
+ DrawPortHeight = 0;
+ std::vector<cSimpleContent>::iterator it;
+ for( it = Contents.begin(); it != Contents.end(); it++) {
+ if( (*it).GetBottom() > DrawPortHeight )
+ DrawPortHeight = (*it).GetBottom();
+ }
+ if( isScrollingActive )
+ DrawPortHeight = ScrollTotal() * ScrollSize;
+}
+
+int cComplexContent::BottomContent(void) {
+ int bottom = 0;
+ std::vector<cSimpleContent>::iterator it;
+ for( it = Contents.begin(); it != Contents.end(); it++) {
+ if( (*it).GetBottom() > bottom )
+ bottom = (*it).GetBottom();
+ }
+ return bottom;
+}
+
+int cComplexContent::ContentHeight( bool Full ) {
+ if( Full )
+ return Height();
+ CalculateDrawPortHeight();
+ if( DrawPortHeight > Height() )
+ return Height();
+
+ return DrawPortHeight;
+}
+
+bool cComplexContent::Scrollable(int height) {
+ CalculateDrawPortHeight();
+
+ int total, shown;
+ total = ScrollTotal();
+ if( height == 0 )
+ height = Position.Height();
+ shown = ceil( (double)height / (double)ScrollSize);
+ if( total > shown )
+ return true;
+
+ return false;
+}
+
+void cComplexContent::AddText(const char *text, bool multiline, cRect position, tColor colorFg, tColor colorBg, cFont *font, int textWidth, int textHeight, int textAlignment ) {
+ Contents.push_back( cSimpleContent() );
+ Contents.back().SetText(text, multiline, position, colorFg, colorBg, font, textWidth, textHeight, textAlignment);
+}
+
+void cComplexContent::AddImage(cImage *image, cRect position) {
+ Contents.push_back( cSimpleContent() );
+ Contents.back().SetImage(image, position);
+}
+
+void cComplexContent::AddImageWithFloatedText(cImage *image, int imageAlignment, const char *text, cRect textPos, tColor colorFg, tColor colorBg, cFont *font, int textWidth, int textHeight, int textAlignment) {
+ int TextWidthLeft = Position.Width() - image->Width() - 10 - textPos.Left();
+
+ cTextWrapper WrapperFloat;
+ WrapperFloat.Set(text, font, TextWidthLeft);
+ int FloatLines = ceil((double)image->Height() / (double)ScrollSize);
+ int Lines = WrapperFloat.Lines();
+
+ if( Lines < FloatLines ) {
+ cRect FloatedTextPos;
+ FloatedTextPos.SetLeft(textPos.Left());
+ FloatedTextPos.SetTop(textPos.Top());
+ FloatedTextPos.SetWidth( TextWidthLeft );
+ FloatedTextPos.SetHeight(textPos.Height());
+
+ AddText(text, true, FloatedTextPos, colorFg, colorBg, font, textWidth, textHeight, textAlignment);
+
+ cRect ImagePos;
+ ImagePos.SetLeft(textPos.Left() + TextWidthLeft + 5);
+ ImagePos.SetTop(textPos.Top());
+ ImagePos.SetWidth( image->Width() );
+ ImagePos.SetHeight( image->Height() );
+
+ AddImage(image, ImagePos);
+ } else {
+ int NumChars = 0;
+ for( int i = 0; i < Lines && i < FloatLines; i++) {
+ NumChars += strlen(WrapperFloat.GetLine(i));
+ }
+ // detect end of last word
+ for(; text[NumChars] != ' ' && text[NumChars] != '\0' && text[NumChars] != '\r' && text[NumChars] != '\n'; NumChars++)
+ ;
+ char *FloatedText;
+ FloatedText = new char[NumChars+1];
+ memset(FloatedText, '\0', NumChars+1);
+ strncpy(FloatedText, text, NumChars);
+
+ NumChars++;
+ char *SecondText;
+ SecondText = new char[strlen(text) - NumChars + 2];
+ memset(SecondText, '\0', strlen(text) - NumChars + 2);
+ strncpy(SecondText, text+NumChars, strlen(text) - NumChars);
+
+ cRect FloatedTextPos;
+ FloatedTextPos.SetLeft(textPos.Left());
+ FloatedTextPos.SetTop(textPos.Top());
+ FloatedTextPos.SetWidth( TextWidthLeft );
+ FloatedTextPos.SetHeight(textPos.Height());
+
+ cRect SecondTextPos;
+ SecondTextPos.SetLeft(textPos.Left());
+ SecondTextPos.SetTop(textPos.Top() + FloatLines * ScrollSize );
+ SecondTextPos.SetWidth( textPos.Width() );
+ SecondTextPos.SetHeight( textPos.Height() );
+
+ AddText(FloatedText, true, FloatedTextPos, colorFg, colorBg, font, textWidth, textHeight, textAlignment);
+ AddText(SecondText, true, SecondTextPos, colorFg, colorBg, font, textWidth, textHeight, textAlignment);
+
+ cRect ImagePos;
+ ImagePos.SetLeft(textPos.Left() + TextWidthLeft + 5);
+ ImagePos.SetTop(textPos.Top());
+ ImagePos.SetWidth( image->Width() );
+ ImagePos.SetHeight( image->Height() );
+
+ AddImage(image, ImagePos);
+
+ delete[] FloatedText;
+ delete[] SecondText;
+ }
+}
+
+void cComplexContent::AddRect(cRect position, tColor colorBg) {
+ Contents.push_back( cSimpleContent() );
+ Contents.back().SetRect(position, colorBg);
+}
+
+void cComplexContent::Draw() {
+ isShown = true;
+ std::vector<cSimpleContent>::iterator it;
+ for( it = Contents.begin(); it != Contents.end(); it++) {
+ if( (*it).GetContentType() == CT_Image )
+ (*it).Draw(PixmapImage);
+ else
+ (*it).Draw(Pixmap);
+ }
+}
+
+double cComplexContent::ScrollbarSize(void) {
+ double barSize = (double)Position.Height() / (double)DrawPortHeight;
+ return barSize;
+}
+
+int cComplexContent::ScrollTotal(void) {
+ int total = ceil( (double)DrawPortHeight / (double)ScrollSize);
+ return total;
+}
+
+int cComplexContent::ScrollShown(void) {
+ //int shown = ceil( (double)Position.Height() / (double)ScrollSize);
+ int shown = Position.Height() / ScrollSize;
+ return shown;
+}
+
+int cComplexContent::ScrollOffset(void) {
+ double offset;
+
+ int y = Pixmap->DrawPort().Point().Y()*-1;
+ if( y + Position.Height() + ScrollSize > DrawPortHeight ) {
+ if( y == DrawPortHeight - Position.Height() ) {
+ y += ScrollSize;
+ } else {
+ y = DrawPortHeight - Position.Height() - 1;
+ }
+ }
+ offset = (double)y / (double)DrawPortHeight;
+ return ScrollTotal() * offset;
+}
+
+bool cComplexContent::Scroll(bool Up, bool Page) {
+ int aktHeight = Pixmap->DrawPort().Point().Y();
+ int totalHeight = Pixmap->DrawPort().Height();
+ int screenHeight = Pixmap->ViewPort().Height();
+ int lineHeight = ScrollSize;
+
+ bool scrolled = false;
+ if (Up) {
+ if (Page) {
+ int newY = aktHeight + screenHeight;
+ if (newY > 0)
+ newY = 0;
+ Pixmap->SetDrawPortPoint(cPoint(0, newY));
+ PixmapImage->SetDrawPortPoint(cPoint(0, newY));
+ scrolled = true;
+ } else {
+ if (aktHeight < 0) {
+ if( aktHeight + lineHeight < 0 ) {
+ Pixmap->SetDrawPortPoint(cPoint(0, aktHeight + lineHeight));
+ PixmapImage->SetDrawPortPoint(cPoint(0, aktHeight + lineHeight));
+ } else {
+ Pixmap->SetDrawPortPoint(cPoint(0, 0));
+ PixmapImage->SetDrawPortPoint(cPoint(0, 0));
+ }
+ scrolled = true;
+ }
+ }
+ } else {
+ if (Page) {
+ int newY = aktHeight - screenHeight;
+ if ((-1)*newY > totalHeight - screenHeight)
+ newY = (-1)*(totalHeight - screenHeight);
+ Pixmap->SetDrawPortPoint(cPoint(0, newY));
+ PixmapImage->SetDrawPortPoint(cPoint(0, newY));
+ scrolled = true;
+ } else {
+ if (totalHeight - ((-1)*aktHeight + lineHeight) > screenHeight) {
+ Pixmap->SetDrawPortPoint(cPoint(0, aktHeight - lineHeight));
+ PixmapImage->SetDrawPortPoint(cPoint(0, aktHeight - lineHeight));
+ } else {
+ int newY = aktHeight - screenHeight;
+ if ((-1)*newY > totalHeight - screenHeight)
+ newY = (-1)*(totalHeight - screenHeight);
+ Pixmap->SetDrawPortPoint(cPoint(0, newY));
+ PixmapImage->SetDrawPortPoint(cPoint(0, newY));
+ }
+ scrolled = true;
+ }
+ }
+
+ return scrolled;
+}
diff --git a/complexcontent.h b/complexcontent.h
new file mode 100644
index 0000000..c84704f
--- /dev/null
+++ b/complexcontent.h
@@ -0,0 +1,172 @@
+#pragma once
+
+#include "imageloader.h"
+#include <list>
+#include "flat.h"
+#include <string.h>
+
+enum eContentType {
+ CT_Text,
+ CT_TextMultiline,
+ CT_Image,
+ CT_Rect
+};
+
+enum eContentImageAlignment {
+ CIP_Right
+};
+
+class cSimpleContent
+{
+private:
+ int ContentType;
+ cRect Position;
+
+ int TextWidth, TextHeight, TextAlignment;
+ tColor ColorFg, ColorBg;
+ std::string Text;
+ cImage *Image;
+ cFont *Font;
+
+public:
+ cSimpleContent(void) {
+ Image = NULL;
+ Font = NULL;
+ }
+
+ ~cSimpleContent() {
+ }
+
+ cSimpleContent& operator=(const cSimpleContent& other) {
+ if( this != &other ) {
+ this->ContentType = other.ContentType;
+ this->Position = other.Position;
+ this->Text = other.Text;
+ this->TextWidth = other.TextWidth;
+ this->TextHeight = other.TextHeight;
+ this->TextAlignment = other.TextAlignment;
+ this->ColorFg = other.ColorFg;
+ this->ColorBg = other.ColorBg;
+ this->Image = other.Image;
+ this->Font = other.Font;
+ }
+ return *this;
+ }
+
+ void SetText(const char *text, bool Multiline, cRect position, tColor colorFg, tColor colorBg, cFont *font, int textWidth = 0, int textHeight = 0, int textAlignment = taDefault) {
+ ContentType = CT_Text;
+ Text = text;
+
+ Font = font;
+ Position = position;
+
+ if( Multiline ) {
+ ContentType = CT_TextMultiline;
+ }
+ ColorFg = colorFg; ColorBg = colorBg;
+ TextWidth = textWidth; TextHeight = textHeight; TextAlignment = textAlignment;
+ }
+
+ void SetImage(cImage *image, cRect position) {
+ ContentType = CT_Image;
+ Image = image;
+ Position = position;
+ }
+
+ void SetRect(cRect position, tColor colorBg) {
+ ContentType = CT_Rect;
+ Position = position;
+ ColorBg = colorBg;
+ }
+
+ int GetContentType(void) { return ContentType; }
+ int GetBottom(void) {
+ if( ContentType == CT_Text )
+ return Position.Top() + Font->Height();
+ else if( ContentType == CT_TextMultiline ) {
+ cTextWrapper Wrapper;
+ Wrapper.Set(Text.c_str(), Font, Position.Width());
+ return Position.Top() + (Wrapper.Lines() * Font->Height());
+ } else if( ContentType == CT_Image ) {
+ return Position.Top() + Image->Height();
+ } else if( ContentType == CT_Rect )
+ return Position.Top() + Position.Height();
+
+ return 0;
+ }
+
+ void Draw(cPixmap *Pixmap) {
+ if( !Pixmap )
+ return;
+ if( ContentType == CT_Text ) {
+ Pixmap->DrawText(cPoint(Position.Left(), Position.Top()), Text.c_str(), ColorFg, ColorBg, Font, TextWidth, TextHeight, TextAlignment);
+ } else if( ContentType == CT_TextMultiline ) {
+ cTextWrapper Wrapper;
+ Wrapper.Set(Text.c_str(), Font, Position.Width());
+ int Lines = Wrapper.Lines();
+ for( int i = 0; i < Lines; i++) {
+ Pixmap->DrawText(cPoint(Position.Left(), Position.Top() + (i * Font->Height())), Wrapper.GetLine(i), ColorFg, ColorBg, Font, TextWidth, TextHeight, TextAlignment);
+ }
+ } else if( ContentType == CT_Rect ) {
+ Pixmap->DrawRectangle(Position, ColorBg);
+ } else if( ContentType == CT_Image ) {
+ Pixmap->DrawImage(cPoint(Position.Left(), Position.Top()), *Image);
+ }
+ }
+};
+
+class cComplexContent
+{
+private:
+ std::vector<cSimpleContent> Contents;
+
+ cPixmap *Pixmap, *PixmapImage;
+ cRect Position;
+
+ tColor ColorBg;
+
+ bool FullFillBackground;
+ int DrawPortHeight;
+ int ScrollSize;
+ bool isShown;
+ bool isScrollingActive;
+
+ cOsd *Osd;
+
+ void CalculateDrawPortHeight(void);
+
+public:
+ cComplexContent(void);
+ cComplexContent(cOsd *osd, int scrollSize);
+ ~cComplexContent();
+
+ void SetOsd(cOsd *osd) { Osd = osd; }
+ void SetPosition(cRect position) { Position = position; }
+ void SetScrollSize(int scrollSize) { ScrollSize = scrollSize; }
+ void SetBGColor(tColor colorBg) { ColorBg = colorBg; }
+ void CreatePixmaps(bool fullFillBackground);
+
+ void Clear(void);
+
+ void AddText(const char *text, bool multiline, cRect position, tColor colorFg, tColor colorBg, cFont *font, int textWidth = 0, int textHeight = 0, int textAlignment = taDefault );
+ void AddImage(cImage *image, cRect position);
+ void AddImageWithFloatedText(cImage *image, int imageAlignment, const char *text, cRect textPos, tColor colorFg, tColor colorBg, cFont *font, int textWidth = 0, int textHeight = 0, int textAlignment = taDefault);
+ void AddRect(cRect position, tColor colorBg);
+ bool Scrollable(int height = 0);
+ int ScrollTotal(void);
+ int ScrollOffset(void);
+ int ScrollShown(void);
+ bool Scroll(bool Up, bool Page);
+ double ScrollbarSize(void);
+ void SetScrollingActive(bool active) { isScrollingActive = active; }
+
+ int Height(void){ return Position.Height(); }
+ int ContentHeight( bool Full );
+
+ int BottomContent(void);
+
+ int Top(void) { return Position.Top(); }
+ void Draw();
+ bool IsShown(void) { return isShown; }
+ bool IsScrollingActive(void) { return isScrollingActive; }
+};
diff --git a/config.c b/config.c
new file mode 100644
index 0000000..1018fab
--- /dev/null
+++ b/config.c
@@ -0,0 +1,861 @@
+#include "config.h"
+
+#include <vector>
+#include <algorithm>
+cFlatConfig::cFlatConfig(void) {
+ logoPath = "";
+ iconPath = "";
+
+ DecorCurrent = -1;
+ DecorIndex = 0;
+
+ ButtonsShowEmpty = true;
+
+ ChannelIconsShow = true;
+ SignalQualityShow = true;
+ SignalQualityUseColors = false;
+
+ DiskUsageShow = true;
+ DiskUsageShort = false;
+ DiskUsageFree = 1;
+
+ MenuContentFullSize = true;
+
+ ChannelFormatShow = true;
+ ChannelResolutionAspectShow = true;
+ ChannelSimpleAspectFormat = true;
+ ChannelBitrateShow = false;
+ ChannelBitrateShowCalcInterval = 20;
+ ChannelTimeLeft = 0;
+
+ RecordingResolutionAspectShow = true;
+ RecordingFormatShow = true;
+ RecordingSimpleAspectFormat = true;
+ TimeSecsScale = 1.0;
+
+ RecordingDimmOnPause = true;
+ RecordingDimmOnPauseDelay = 20;
+ RecordingDimmOnPauseOpaque = 240;
+
+ RecordingAdditionalInfoShow = true;
+ EpgAdditionalInfoShow = true;
+ EpgRerunsShow = true;
+
+ TopBarRecordingShow = true;
+ TopBarRecConflictsShow = true;
+ TopBarRecConflictsHigh = 2;
+
+ MenuItemIconsShow = true;
+ TopBarMenuIconShow = true;
+
+ MenuItemPadding = 3;
+ marginOsdVer = 5;
+ marginOsdHor = 5;
+ TopBarFontSize = 0.05;
+ MessageOffset = 50;
+
+ MessageColorPosition = 1;
+
+ MenuChannelView = 1;
+ MenuTimerView = 1;
+ MenuEventView = 1;
+ MenuRecordingView = 1;
+
+ MenuRecordingShowCount = 1;
+ MenuTimerShowCount = 1;
+ MenuChannelShowCount = 1;
+
+ MenuFullOsd = 0;
+
+ ShortRecordingCount = 0;
+
+ MenuItemRecordingClearPercent = 1;
+ MenuItemRecordingShowFolderDate = 1;
+ MenuItemParseTilde = 1;
+
+ ScrollerEnable = 1;
+ ScrollerStep = 2;
+ ScrollerDelay = 40;
+ ScrollerType = 0;
+
+ // Widgets
+ MainMenuWidgetsEnable = 1;
+ MainMenuItemScale = 0.5;
+
+ MainMenuWidgetDVBDevicesShow = true;
+ MainMenuWidgetDVBDevicesPosition = 2;
+ MainMenuWidgetDVBDevicesDiscardUnknown = true;
+ MainMenuWidgetDVBDevicesDiscardNotUsed = false;
+
+ MainMenuWidgetActiveTimerShow = true;
+ MainMenuWidgetActiveTimerPosition = 3;
+ MainMenuWidgetActiveTimerMaxCount = 2;
+ MainMenuWidgetActiveTimerHideEmpty = false;
+
+ MainMenuWidgetLastRecShow = false;
+ MainMenuWidgetLastRecPosition = 4;
+ MainMenuWidgetLastRecMaxCount = 3;
+
+ MainMenuWidgetTimerConflictsShow = false;
+ MainMenuWidgetTimerConflictsPosition = 5;
+ MainMenuWidgetTimerConflictsHideEmpty = false;
+
+ MainMenuWidgetSystemInfoShow = true;
+ MainMenuWidgetSystemInfoPosition = 6;
+
+ MainMenuWidgetSystemUpdatesShow = true;
+ MainMenuWidgetSystemUpdatesPosition = 7;
+ MainMenuWidgetSystemUpdatesHideIfZero = 0;
+
+ MainMenuWidgetTemperaturesShow = true;
+ MainMenuWidgetTemperaturesPosition = 8;
+
+ MainMenuWidgetCommandShow = true;
+ MainMenuWidgetCommandPosition = 9;
+
+ MainMenuWidgetWeatherShow = true;
+ MainMenuWidgetWeatherPosition = 1;
+ MainMenuWidgetWeatherDays = 5;
+ MainMenuWidgetWeatherType = 0;
+
+ ChannelWeatherShow = 1;
+ PlaybackWeatherShow = 1;
+ WeatherFontSize = 0.05;
+
+ TopBarFontClockScale = 0.01;
+ TopBarHideClockText = 0;
+
+ TVScraperChanInfoShowPoster = 1;
+ TVScraperChanInfoPosterSize = 0.01;
+
+ TVScraperReplayInfoShowPoster = 1;
+ TVScraperReplayInfoPosterSize = 0.01;
+
+ TVScraperEPGInfoShowPoster = 1;
+ TVScraperRecInfoShowPoster = 1;
+
+ TVScraperEPGInfoShowActors = 1;
+ TVScraperRecInfoShowActors = 1;
+
+ decorBorderChannelByTheme = 1;
+ decorBorderChannelTypeUser = 0;
+ decorBorderChannelSizeUser = 0;
+
+ decorBorderChannelEPGByTheme = 1;
+ decorBorderChannelEPGTypeUser = 0;
+ decorBorderChannelEPGSizeUser = 0;
+
+ decorBorderTopBarByTheme = 1;
+ decorBorderTopBarTypeUser = 0;
+ decorBorderTopBarSizeUser = 0;
+
+ decorBorderMessageByTheme = 1;
+ decorBorderMessageTypeUser = 0;
+ decorBorderMessageSizeUser = 0;
+
+ decorBorderVolumeByTheme = 1;
+ decorBorderVolumeTypeUser = 0;
+ decorBorderVolumeSizeUser = 0;
+
+ decorBorderTrackByTheme = 1;
+ decorBorderTrackTypeUser = 0;
+ decorBorderTrackSizeUser = 0;
+
+ decorBorderReplayByTheme = 1;
+ decorBorderReplayTypeUser = 0;
+ decorBorderReplaySizeUser = 0;
+
+ decorBorderMenuItemByTheme = 1;
+ decorBorderMenuItemTypeUser = 0;
+ decorBorderMenuItemSizeUser = 0;
+
+ decorBorderMenuContentHeadByTheme = 1;
+ decorBorderMenuContentHeadTypeUser = 0;
+ decorBorderMenuContentHeadSizeUser = 0;
+
+ decorBorderMenuContentByTheme = 1;
+ decorBorderMenuContentTypeUser = 0;
+ decorBorderMenuContentSizeUser = 0;
+
+ decorBorderButtonByTheme = 1;
+ decorBorderButtonTypeUser = 0;
+ decorBorderButtonSizeUser = 0;
+
+ decorProgressChannelByTheme = 1;
+ decorProgressChannelTypeUser = 0;
+ decorProgressChannelSizeUser = 20;
+
+ decorProgressVolumeByTheme = 1;
+ decorProgressVolumeTypeUser = 0;
+ decorProgressVolumeSizeUser = 20;
+
+ decorProgressMenuItemByTheme = 1;
+ decorProgressMenuItemTypeUser = 0;
+ decorProgressMenuItemSizeUser = 20;
+
+ decorProgressReplayByTheme = 1;
+ decorProgressReplayTypeUser = 0;
+ decorProgressReplaySizeUser = 40;
+
+ decorProgressSignalByTheme = 1;
+ decorProgressSignalTypeUser = 0;
+ decorProgressSignalSizeUser = 20;
+
+ decorScrollBarByTheme = 0;
+ decorScrollBarTypeTheme = 0;
+ decorScrollBarSizeTheme = 20;
+ decorScrollBarTypeUser = 0;
+ decorScrollBarSizeUser = 20;
+
+ ThemeCurrent = "";
+}
+
+cFlatConfig::~cFlatConfig(void) {
+}
+
+bool cFlatConfig::SetupParse(const char *Name, const char *Value) {
+ if (strcmp(Name, "decorBorderChannelByTheme") == 0) decorBorderChannelByTheme = atoi(Value);
+ else if (strcmp(Name, "decorBorderChannelTypeUser") == 0) decorBorderChannelTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderChannelSizeUser") == 0) decorBorderChannelSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderChannelEPGByTheme") == 0) decorBorderChannelEPGByTheme = atoi(Value);
+ else if (strcmp(Name, "decorBorderChannelEPGTypeUser") == 0) decorBorderChannelEPGTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderChannelEPGSizeUser") == 0) decorBorderChannelEPGSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderTopBarByTheme") == 0) decorBorderTopBarByTheme = atoi(Value);
+ else if (strcmp(Name, "decorBorderTopBarTypeUser") == 0) decorBorderTopBarTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderTopBarSizeUser") == 0) decorBorderTopBarSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderMessageByTheme") == 0) decorBorderMessageByTheme = atoi(Value);
+ else if (strcmp(Name, "decorBorderMessageTypeUser") == 0) decorBorderMessageTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderMessageSizeUser") == 0) decorBorderMessageSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderVolumeByTheme") == 0) decorBorderVolumeByTheme = atoi(Value);
+ else if (strcmp(Name, "decorBorderVolumeTypeUser") == 0) decorBorderVolumeTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderVolumeSizeUser") == 0) decorBorderVolumeSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderTrackByTheme") == 0) decorBorderTrackByTheme = atoi(Value);
+ else if (strcmp(Name, "decorBorderTrackTypeUser") == 0) decorBorderTrackTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderTrackSizeUser") == 0) decorBorderTrackSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderReplayByTheme") == 0) decorBorderReplayByTheme = atoi(Value);
+ else if (strcmp(Name, "decorBorderReplayTypeUser") == 0) decorBorderReplayTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderReplaySizeUser") == 0) decorBorderReplaySizeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderMenuItemByTheme") == 0) decorBorderMenuItemByTheme = atoi(Value);
+ else if (strcmp(Name, "decorBorderMenuItemTypeUser") == 0) decorBorderMenuItemTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderMenuItemSizeUser") == 0) decorBorderMenuItemSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderMenuContentHeadByTheme") == 0) decorBorderMenuContentHeadByTheme = atoi(Value);
+ else if (strcmp(Name, "decorBorderMenuContentHeadTypeUser") == 0) decorBorderMenuContentHeadTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderMenuContentHeadSizeUser") == 0) decorBorderMenuContentHeadSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderMenuContentByTheme") == 0) decorBorderMenuContentByTheme = atoi(Value);
+ else if (strcmp(Name, "decorBorderMenuContentTypeUser") == 0) decorBorderMenuContentTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderMenuContentSizeUser") == 0) decorBorderMenuContentSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderButtonByTheme") == 0) decorBorderButtonByTheme = atoi(Value);
+ else if (strcmp(Name, "decorBorderButtonTypeUser") == 0) decorBorderButtonTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderButtonSizeUser") == 0) decorBorderButtonSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorProgressChannelByTheme") == 0) decorProgressChannelByTheme = atoi(Value);
+ else if (strcmp(Name, "decorProgressChannelTypeUser") == 0) decorProgressChannelTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorProgressChannelSizeUser") == 0) decorProgressChannelSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorProgressVolumeByTheme") == 0) decorProgressVolumeByTheme = atoi(Value);
+ else if (strcmp(Name, "decorProgressVolumeTypeUser") == 0) decorProgressVolumeTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorProgressVolumeSizeUser") == 0) decorProgressVolumeSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorProgressMenuItemByTheme") == 0) decorProgressMenuItemByTheme = atoi(Value);
+ else if (strcmp(Name, "decorProgressMenuItemTypeUser") == 0) decorProgressMenuItemTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorProgressMenuItemSizeUser") == 0) decorProgressMenuItemSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorProgressReplayByTheme") == 0) decorProgressReplayByTheme = atoi(Value);
+ else if (strcmp(Name, "decorProgressReplayTypeUser") == 0) decorProgressReplayTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorProgressReplaySizeUser") == 0) decorProgressReplaySizeUser = atoi(Value);
+ else if (strcmp(Name, "decorProgressSignalByTheme") == 0) decorProgressSignalByTheme = atoi(Value);
+ else if (strcmp(Name, "decorProgressSignalTypeUser") == 0) decorProgressSignalTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorProgressSignalSizeUser") == 0) decorProgressSignalSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorScrollBarByTheme") == 0) decorScrollBarByTheme = atoi(Value);
+ else if (strcmp(Name, "decorScrollBarTypeUser") == 0) decorScrollBarTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorScrollBarSizeUser") == 0) decorScrollBarSizeUser = atoi(Value);
+ else if (strcmp(Name, "ButtonsShowEmpty") == 0) ButtonsShowEmpty = atoi(Value);
+ else if (strcmp(Name, "ChannelIconsShow") == 0) ChannelIconsShow = atoi(Value);
+ else if (strcmp(Name, "SignalQualityShow") == 0) SignalQualityShow = atoi(Value);
+ else if (strcmp(Name, "DiskUsageShow") == 0) DiskUsageShow = atoi(Value);
+ else if (strcmp(Name, "MenuItemPadding") == 0) MenuItemPadding = atoi(Value);
+ else if (strcmp(Name, "marginOsdVer") == 0) marginOsdVer = atoi(Value);
+ else if (strcmp(Name, "marginOsdHor") == 0) marginOsdHor = atoi(Value);
+ else if (strcmp(Name, "MessageOffset") == 0) MessageOffset = atoi(Value);
+ else if (strcmp(Name, "TopBarFontSize") == 0) TopBarFontSize = atod(Value);
+ else if (strcmp(Name, "MenuContentFullSize") == 0) MenuContentFullSize = atoi(Value);
+ else if (strcmp(Name, "ChannelResolutionAspectShow") == 0) ChannelResolutionAspectShow = atoi(Value);
+ else if (strcmp(Name, "ChannelFormatShow") == 0) ChannelFormatShow = atoi(Value);
+ else if (strcmp(Name, "RecordingResolutionAspectShow") == 0) RecordingResolutionAspectShow = atoi(Value);
+ else if (strcmp(Name, "RecordingFormatShow") == 0) RecordingFormatShow = atoi(Value);
+ else if (strcmp(Name, "RecordingAdditionalInfoShow") == 0) RecordingAdditionalInfoShow = atoi(Value);
+ else if (strcmp(Name, "EpgAdditionalInfoShow") == 0) EpgAdditionalInfoShow = atoi(Value);
+ else if (strcmp(Name, "TopBarRecordingShow") == 0) TopBarRecordingShow = atoi(Value);
+ else if (strcmp(Name, "MenuItemIconsShow") == 0) MenuItemIconsShow = atoi(Value);
+ else if (strcmp(Name, "TopBarMenuIconShow") == 0) TopBarMenuIconShow = atoi(Value);
+ else if (strcmp(Name, "DecorIndex") == 0) DecorIndex = atoi(Value);
+ else if (strcmp(Name, "MainMenuItemScale") == 0) MainMenuItemScale = atod(Value);
+ else if (strcmp(Name, "MenuChannelView") == 0) MenuChannelView = atoi(Value);
+ else if (strcmp(Name, "MenuTimerView") == 0) MenuTimerView = atoi(Value);
+ else if (strcmp(Name, "MenuEventView") == 0) MenuEventView = atoi(Value);
+ else if (strcmp(Name, "MenuRecordingView") == 0) MenuRecordingView = atoi(Value);
+ else if (strcmp(Name, "ChannelSimpleAspectFormat") == 0) ChannelSimpleAspectFormat = atoi(Value);
+ else if (strcmp(Name, "RecordingSimpleAspectFormat") == 0) RecordingSimpleAspectFormat = atoi(Value);
+ else if (strcmp(Name, "MenuItemRecordingClearPercent") == 0) MenuItemRecordingClearPercent = atoi(Value);
+ else if (strcmp(Name, "MenuItemRecordingShowFolderDate") == 0) MenuItemRecordingShowFolderDate = atoi(Value);
+ else if (strcmp(Name, "MenuItemParseTilde") == 0) MenuItemParseTilde = atoi(Value);
+ else if (strcmp(Name, "TopBarRecConflictsShow") == 0) TopBarRecConflictsShow = atoi(Value);
+ else if (strcmp(Name, "TopBarRecConflictsHigh") == 0) TopBarRecConflictsHigh = atoi(Value);
+ else if (strcmp(Name, "SignalQualityUseColors") == 0) SignalQualityUseColors = atoi(Value);
+ else if (strcmp(Name, "TVScraperChanInfoShowPoster") == 0) TVScraperChanInfoShowPoster = atoi(Value);
+ else if (strcmp(Name, "TVScraperChanInfoPosterSize") == 0) TVScraperChanInfoPosterSize = atod(Value);
+ else if (strcmp(Name, "TVScraperEPGInfoShowPoster") == 0) TVScraperEPGInfoShowPoster = atoi(Value);
+ else if (strcmp(Name, "TVScraperRecInfoShowPoster") == 0) TVScraperRecInfoShowPoster = atoi(Value);
+ else if (strcmp(Name, "EpgRerunsShow") == 0) EpgRerunsShow = atoi(Value);
+ else if (strcmp(Name, "TVScraperEPGInfoShowActors") == 0) TVScraperEPGInfoShowActors = atoi(Value);
+ else if (strcmp(Name, "TVScraperRecInfoShowActors") == 0) TVScraperRecInfoShowActors = atoi(Value);
+ else if (strcmp(Name, "MessageColorPosition") == 0) MessageColorPosition = atoi(Value);
+ else if (strcmp(Name, "ScrollerEnable") == 0) ScrollerEnable = atoi(Value);
+ else if (strcmp(Name, "ScrollerStep") == 0) ScrollerStep = atoi(Value);
+ else if (strcmp(Name, "ScrollerDelay") == 0) ScrollerDelay = atoi(Value);
+ else if (strcmp(Name, "ScrollerType") == 0) ScrollerType = atoi(Value);
+ else if (strcmp(Name, "DiskUsageShort") == 0) DiskUsageShort = atoi(Value);
+ else if (strcmp(Name, "DiskUsageFree") == 0) DiskUsageFree = atoi(Value);
+ else if (strcmp(Name, "ChannelBitrateShow") == 0) ChannelBitrateShow = atoi(Value);
+ else if (strcmp(Name, "TopBarFontClockScale") == 0) TopBarFontClockScale = atod(Value);
+ else if (strcmp(Name, "TimeSecsScale") == 0) TimeSecsScale = atod(Value);
+ else if (strcmp(Name, "ChannelBitrateShowCalcInterval") == 0) ChannelBitrateShowCalcInterval = atoi(Value);
+ else if (strcmp(Name, "TopBarHideClockText") == 0) TopBarHideClockText = atoi(Value);
+ else if (strcmp(Name, "ChannelTimeLeft") == 0) ChannelTimeLeft = atoi(Value);
+ else if (strcmp(Name, "MenuFullOsd") == 0) MenuFullOsd = atoi(Value);
+ else if (strcmp(Name, "MenuRecordingShowCount") == 0) MenuRecordingShowCount = atoi(Value);
+ else if (strcmp(Name, "MenuTimerShowCount") == 0) MenuTimerShowCount = atoi(Value);
+ else if (strcmp(Name, "MenuChannelShowCount") == 0) MenuChannelShowCount = atoi(Value);
+ else if (strcmp(Name, "ShortRecordingCount") == 0) ShortRecordingCount = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetsEnable") == 0) MainMenuWidgetsEnable = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetDVBDevicesShow") == 0) MainMenuWidgetDVBDevicesShow = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetDVBDevicesPosition") == 0) MainMenuWidgetDVBDevicesPosition = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetActiveTimerShow") == 0) MainMenuWidgetActiveTimerShow = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetActiveTimerPosition") == 0) MainMenuWidgetActiveTimerPosition = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetActiveTimerMaxCount") == 0) MainMenuWidgetActiveTimerMaxCount = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetActiveTimerHideEmpty") == 0) MainMenuWidgetActiveTimerHideEmpty = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetLastRecShow") == 0) MainMenuWidgetLastRecShow = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetLastRecPosition") == 0) MainMenuWidgetLastRecPosition = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetLastRecMaxCount") == 0) MainMenuWidgetLastRecMaxCount = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetTimerConflictsShow") == 0) MainMenuWidgetTimerConflictsShow = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetTimerConflictsPosition") == 0) MainMenuWidgetTimerConflictsPosition = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetTimerConflictsHideEmpty") == 0)MainMenuWidgetTimerConflictsHideEmpty = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetSystemInfoShow") == 0) MainMenuWidgetSystemInfoShow = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetSystemInfoPosition") == 0) MainMenuWidgetSystemInfoPosition = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetSystemUpdatesShow") == 0) MainMenuWidgetSystemUpdatesShow = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetSystemUpdatesPosition") == 0) MainMenuWidgetSystemUpdatesPosition = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetSystemUpdatesHideIfZero") == 0)MainMenuWidgetSystemUpdatesHideIfZero = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetTemperaturesShow") == 0) MainMenuWidgetTemperaturesShow = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetTemperaturesPosition") == 0) MainMenuWidgetTemperaturesPosition = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetCommandShow") == 0) MainMenuWidgetCommandShow = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetCommandPosition") == 0) MainMenuWidgetCommandPosition = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetWeatherShow") == 0) MainMenuWidgetWeatherShow = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetWeatherPosition") == 0) MainMenuWidgetWeatherPosition = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetWeatherDays") == 0) MainMenuWidgetWeatherDays = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetWeatherType") == 0) MainMenuWidgetWeatherType = atoi(Value);
+ else if (strcmp(Name, "ChannelWeatherShow") == 0) ChannelWeatherShow = atoi(Value);
+ else if (strcmp(Name, "PlaybackWeatherShow") == 0) PlaybackWeatherShow = atoi(Value);
+ else if (strcmp(Name, "WeatherFontSize") == 0) WeatherFontSize = atod(Value);
+ else if (strcmp(Name, "TVScraperReplayInfoShowPoster") == 0) TVScraperReplayInfoShowPoster = atoi(Value);
+ else if (strcmp(Name, "TVScraperReplayInfoPosterSize") == 0) TVScraperReplayInfoPosterSize = atod(Value);
+ else if (strcmp(Name, "MainMenuWidgetDVBDevicesDiscardUnknown") == 0) MainMenuWidgetDVBDevicesDiscardUnknown = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetDVBDevicesDiscardNotUsed") == 0) MainMenuWidgetDVBDevicesDiscardNotUsed = atoi(Value);
+ else if (strcmp(Name, "RecordingDimmOnPause") == 0) RecordingDimmOnPause = atoi(Value);
+ else if (strcmp(Name, "RecordingDimmOnPauseDelay") == 0) RecordingDimmOnPauseDelay = atoi(Value);
+ else if (strcmp(Name, "RecordingDimmOnPauseOpaque") == 0) RecordingDimmOnPauseOpaque = atoi(Value);
+
+ else return false;
+
+ return true;
+}
+
+void cFlatConfig::ThemeCheckAndInit(void) {
+ if( strcmp(Theme.Name(), *ThemeCurrent) != 0 ) {
+ dsyslog("skinflatplus: load theme: %s", *ThemeCurrent);
+ ThemeCurrent = Theme.Name();
+ ThemeInit();
+ }
+}
+
+void cFlatConfig::DecorCheckAndInit(void) {
+ if( DecorCurrent != DecorIndex ) {
+ DecorCurrent = DecorIndex;
+ DecorLoadCurrent();
+ }
+ if( decorBorderChannelByTheme ) {
+ decorBorderChannelType = decorBorderChannelTypeTheme;
+ decorBorderChannelSize = decorBorderChannelSizeTheme;
+ } else {
+ decorBorderChannelType = decorBorderChannelTypeUser;
+ decorBorderChannelSize = decorBorderChannelSizeUser;
+ }
+
+ if( decorBorderChannelEPGByTheme ) {
+ decorBorderChannelEPGType = decorBorderChannelEPGTypeTheme;
+ decorBorderChannelEPGSize = decorBorderChannelEPGSizeTheme;
+ } else {
+ decorBorderChannelEPGType = decorBorderChannelEPGTypeUser;
+ decorBorderChannelEPGSize = decorBorderChannelEPGSizeUser;
+ }
+
+ if( decorBorderTopBarByTheme ) {
+ decorBorderTopBarType = decorBorderTopBarTypeTheme;
+ decorBorderTopBarSize = decorBorderTopBarSizeTheme;
+ } else {
+ decorBorderTopBarType = decorBorderTopBarTypeUser;
+ decorBorderTopBarSize = decorBorderTopBarSizeUser;
+ }
+
+ if( decorBorderMessageByTheme ) {
+ decorBorderMessageType = decorBorderMessageTypeTheme;
+ decorBorderMessageSize = decorBorderMessageSizeTheme;
+ } else {
+ decorBorderMessageType = decorBorderMessageTypeUser;
+ decorBorderMessageSize = decorBorderMessageSizeUser;
+ }
+
+ if( decorBorderVolumeByTheme ) {
+ decorBorderVolumeType = decorBorderVolumeTypeTheme;
+ decorBorderVolumeSize = decorBorderVolumeSizeTheme;
+ } else {
+ decorBorderVolumeType = decorBorderVolumeTypeUser;
+ decorBorderVolumeSize = decorBorderVolumeSizeUser;
+ }
+
+ if( decorBorderTrackByTheme ) {
+ decorBorderTrackType = decorBorderTrackTypeTheme;
+ decorBorderTrackSize = decorBorderTrackSizeTheme;
+ } else {
+ decorBorderTrackType = decorBorderTrackTypeUser;
+ decorBorderTrackSize = decorBorderTrackSizeUser;
+ }
+
+ if( decorBorderReplayByTheme ) {
+ decorBorderReplayType = decorBorderReplayTypeTheme;
+ decorBorderReplaySize = decorBorderReplaySizeTheme;
+ } else {
+ decorBorderReplayType = decorBorderReplayTypeUser;
+ decorBorderReplaySize = decorBorderReplaySizeUser;
+ }
+
+ if( decorBorderMenuItemByTheme ) {
+ decorBorderMenuItemType = decorBorderMenuItemTypeTheme;
+ decorBorderMenuItemSize = decorBorderMenuItemSizeTheme;
+ } else {
+ decorBorderMenuItemType = decorBorderMenuItemTypeUser;
+ decorBorderMenuItemSize = decorBorderMenuItemSizeUser;
+ }
+
+ if( decorBorderMenuContentHeadByTheme ) {
+ decorBorderMenuContentHeadType = decorBorderMenuContentHeadTypeTheme;
+ decorBorderMenuContentHeadSize = decorBorderMenuContentHeadSizeTheme;
+ } else {
+ decorBorderMenuContentHeadType = decorBorderMenuContentHeadTypeUser;
+ decorBorderMenuContentHeadSize = decorBorderMenuContentHeadSizeUser;
+ }
+
+ if( decorBorderMenuContentByTheme ) {
+ decorBorderMenuContentType = decorBorderMenuContentTypeTheme;
+ decorBorderMenuContentSize = decorBorderMenuContentSizeTheme;
+ } else {
+ decorBorderMenuContentType = decorBorderMenuContentTypeUser;
+ decorBorderMenuContentSize = decorBorderMenuContentSizeUser;
+ }
+
+ if( decorBorderButtonByTheme ) {
+ decorBorderButtonType = decorBorderButtonTypeTheme;
+ decorBorderButtonSize = decorBorderButtonSizeTheme;
+ } else {
+ decorBorderButtonType = decorBorderButtonTypeUser;
+ decorBorderButtonSize = decorBorderButtonSizeUser;
+ }
+
+ if( decorProgressChannelByTheme ) {
+ decorProgressChannelType = decorProgressChannelTypeTheme;
+ decorProgressChannelSize = decorProgressChannelSizeTheme;
+ } else {
+ decorProgressChannelType = decorProgressChannelTypeUser;
+ decorProgressChannelSize = decorProgressChannelSizeUser;
+ }
+
+ if( decorProgressVolumeByTheme ) {
+ decorProgressVolumeType = decorProgressVolumeTypeTheme;
+ decorProgressVolumeSize = decorProgressVolumeSizeTheme;
+ } else {
+ decorProgressVolumeType = decorProgressVolumeTypeUser;
+ decorProgressVolumeSize = decorProgressVolumeSizeUser;
+ }
+
+ if( decorProgressMenuItemByTheme ) {
+ decorProgressMenuItemType = decorProgressMenuItemTypeTheme;
+ decorProgressMenuItemSize = decorProgressMenuItemSizeTheme;
+ } else {
+ decorProgressMenuItemType = decorProgressMenuItemTypeUser;
+ decorProgressMenuItemSize = decorProgressMenuItemSizeUser;
+ }
+
+ if( decorProgressReplayByTheme ) {
+ decorProgressReplayType = decorProgressReplayTypeTheme;
+ decorProgressReplaySize = decorProgressReplaySizeTheme;
+ } else {
+ decorProgressReplayType = decorProgressReplayTypeUser;
+ decorProgressReplaySize = decorProgressReplaySizeUser;
+ }
+
+ if( decorProgressSignalByTheme ) {
+ decorProgressSignalType = decorProgressSignalTypeTheme;
+ decorProgressSignalSize = decorProgressSignalSizeTheme;
+ } else {
+ decorProgressSignalType = decorProgressSignalTypeUser;
+ decorProgressSignalSize = decorProgressSignalSizeUser;
+ }
+
+ if( decorScrollBarByTheme ) {
+ decorScrollBarType = decorScrollBarTypeTheme;
+ decorScrollBarSize = decorScrollBarSizeTheme;
+ } else {
+ decorScrollBarType = decorScrollBarTypeUser;
+ decorScrollBarSize = decorScrollBarSizeUser;
+ }
+
+ if( decorBorderChannelType == 0 )
+ decorBorderChannelSize = 0;
+ if( decorBorderTopBarType == 0 )
+ decorBorderTopBarSize = 0;
+ if( decorBorderMessageType == 0 )
+ decorBorderMessageSize = 0;
+ if( decorBorderVolumeType == 0 )
+ decorBorderVolumeSize = 0;
+ if( decorBorderTrackType == 0 )
+ decorBorderTrackSize = 0;
+ if( decorBorderReplayType == 0 )
+ decorBorderReplaySize = 0;
+ if( decorBorderMenuItemType == 0 )
+ decorBorderMenuItemSize = 0;
+ if( decorBorderMenuContentHeadType == 0 )
+ decorBorderMenuContentHeadSize = 0;
+ if( decorBorderMenuContentType == 0 )
+ decorBorderMenuContentSize = 0;
+ if( decorBorderButtonType == 0 )
+ decorBorderButtonSize = 0;
+}
+
+void cFlatConfig::ThemeInit(void) {
+ decorBorderChannelFg = Theme.Color(clrChannelBorderFg);
+ decorBorderChannelBg = Theme.Color(clrChannelBorderBg);
+
+ decorBorderChannelEPGFg = Theme.Color(clrChannelEPGBorderFg);
+ decorBorderChannelEPGBg = Theme.Color(clrChannelEPGBorderBg);
+
+ decorBorderTopBarFg = Theme.Color(clrTopBarBorderFg);
+ decorBorderTopBarBg = Theme.Color(clrTopBarBorderBg);
+
+ decorBorderMessageFg = Theme.Color(clrMessageBorderFg);
+ decorBorderMessageBg = Theme.Color(clrMessageBorderBg);
+
+ decorBorderVolumeFg = Theme.Color(clrVolumeBorderFg);
+ decorBorderVolumeBg = Theme.Color(clrVolumeBorderBg);
+
+ decorBorderTrackFg = Theme.Color(clrTrackItemBorderFg);
+ decorBorderTrackBg = Theme.Color(clrTrackItemBorderBg);
+ decorBorderTrackCurFg = Theme.Color(clrTrackItemCurrentBorderFg);
+ decorBorderTrackCurBg = Theme.Color(clrTrackItemCurrentBorderBg);
+ decorBorderTrackSelFg = Theme.Color(clrTrackItemSelableBorderFg);
+ decorBorderTrackSelBg = Theme.Color(clrTrackItemSelableBorderBg);
+
+ decorBorderReplayFg = Theme.Color(clrReplayBorderFg);
+ decorBorderReplayBg = Theme.Color(clrReplayBorderBg);
+
+ decorBorderMenuItemFg = Theme.Color(clrMenuItemBorderFg);
+ decorBorderMenuItemBg = Theme.Color(clrMenuItemBorderBg);
+ decorBorderMenuItemSelFg = Theme.Color(clrMenuItemSelableBorderFg);
+ decorBorderMenuItemSelBg = Theme.Color(clrMenuItemSelableBorderBg);
+ decorBorderMenuItemCurFg = Theme.Color(clrMenuItemCurrentBorderFg);
+ decorBorderMenuItemCurBg = Theme.Color(clrMenuItemCurrentBorderBg);
+
+ decorBorderMenuContentHeadFg = Theme.Color(clrMenuContentHeadBorderFg);
+ decorBorderMenuContentHeadBg = Theme.Color(clrMenuContentHeadBorderBg);
+
+ decorBorderMenuContentFg = Theme.Color(clrMenuContentBorderFg);
+ decorBorderMenuContentBg = Theme.Color(clrMenuContentBorderBg);
+
+ decorBorderButtonFg = Theme.Color(clrButtonBorderFg);
+ decorBorderButtonBg = Theme.Color(clrButtonBorderBg);
+
+ decorProgressChannelFg = Theme.Color(clrChannelProgressFg);
+ decorProgressChannelBarFg = Theme.Color(clrChannelProgressBarFg);
+ decorProgressChannelBg = Theme.Color(clrChannelProgressBg);
+
+ decorProgressVolumeFg = Theme.Color(clrVolumeProgressFg);
+ decorProgressVolumeBarFg = Theme.Color(clrVolumeProgressBarFg);
+ decorProgressVolumeBg = Theme.Color(clrVolumeProgressBg);
+
+ decorProgressMenuItemFg = Theme.Color(clrMenuItemProgressFg);
+ decorProgressMenuItemBarFg = Theme.Color(clrMenuItemProgressBarFg);
+ decorProgressMenuItemBg = Theme.Color(clrMenuItemProgressBg);
+ decorProgressMenuItemCurFg = Theme.Color(clrMenuItemCurProgressFg);
+ decorProgressMenuItemCurBarFg = Theme.Color(clrMenuItemCurProgressBarFg);
+ decorProgressMenuItemCurBg = Theme.Color(clrMenuItemCurProgressBg);
+
+ decorProgressReplayFg = Theme.Color(clrReplayProgressFg);
+ decorProgressReplayBarFg = Theme.Color(clrReplayProgressBarFg);
+ decorProgressReplayBg = Theme.Color(clrReplayProgressBg);
+
+ decorProgressSignalFg = Theme.Color(clrChannelSignalProgressFg);
+ decorProgressSignalBarFg = Theme.Color(clrChannelSignalProgressBarFg);
+ decorProgressSignalBg = Theme.Color(clrChannelSignalProgressBg);
+
+ decorScrollBarFg = Theme.Color(clrScrollbarFg);
+ decorScrollBarBarFg = Theme.Color(clrScrollbarBarFg);
+ decorScrollBarBg = Theme.Color(clrScrollbarBg);
+}
+
+void cFlatConfig::Init(void) {
+ if( !strcmp(logoPath, "") ) {
+ logoPath = cString::sprintf("%s/logos/", PLUGINRESOURCEPATH);
+ dsyslog("skinflatplus: logoPath: %s", *logoPath);
+ }
+ if( !strcmp(iconPath, "") ) {
+ iconPath = cString::sprintf("%s/icons/", PLUGINRESOURCEPATH);
+ dsyslog("skinflatplus: iconPath: %s", *iconPath);
+ }
+
+ ThemeInit();
+ DecorCheckAndInit();
+}
+
+bool stringCompare( const std::string &left, const std::string &right ) {
+ for( std::string::const_iterator lit = left.begin(), rit = right.begin(); lit != left.end() && rit != right.end(); ++lit, ++rit )
+ if( tolower( *lit ) < tolower( *rit ) )
+ return true;
+ else if( tolower( *lit ) > tolower( *rit ) )
+ return false;
+ if( left.size() < right.size() )
+ return true;
+ return false;
+}
+
+bool pairCompareTimeStringDesc(const std::pair<time_t, std::string>&i, const std::pair<time_t, std::string>&j) {
+ return i.first < j.first;
+}
+
+bool pairCompareIntString(const std::pair<int, std::string>&i, const std::pair<int, std::string>&j) {
+ return i.first > j.first;
+}
+
+int roundUp(int numToRound, int multiple)
+{
+ if(multiple == 0)
+ return numToRound;
+ int remainder = numToRound % multiple;
+ if (remainder == 0)
+ return numToRound;
+ return numToRound + multiple - remainder;
+}
+
+void cFlatConfig::DecorDescriptions(cStringList &Decors) {
+ cString decorPath = cString::sprintf("%s/decors", PLUGINRESOURCEPATH);
+ std::vector<std::string> files;
+ Decors.Clear();
+
+ cReadDir d(decorPath);
+ struct dirent *e;
+ while ((e = d.Next()) != NULL) {
+ cString FileName = AddDirectory(decorPath, e->d_name);
+ files.push_back(*FileName);
+ }
+
+ std::sort(files.begin(), files.end(), stringCompare);
+ for (unsigned i = 0; i < files.size(); i++) {
+ std::string FileName = files.at(i);
+ cString Desc = DecorDescription(FileName.c_str());
+ Decors.Append(strdup(*Desc));
+ }
+}
+
+cString cFlatConfig::DecorDescription(cString File) {
+ cString description;
+ FILE *f = fopen(File, "r");
+ if( f ) {
+ int line = 0;
+ char *s;
+ cReadLine ReadLine;
+ while( (s = ReadLine.Read(f)) != NULL ) {
+ line++;
+ char *p = strchr(s, '#');
+ if (p)
+ *p = 0;
+ s = stripspace(skipspace(s));
+ if (!isempty(s)) {
+ char *n = s;
+ char *v = strchr(s, '=');
+ if (v) {
+ *v++ = 0;
+ n = stripspace(skipspace(n));
+ v = stripspace(skipspace(v));
+ if (strstr(n, "Description") == n) {
+ description = strdup(v);
+ break;
+ }
+ }
+ }
+ }
+ }
+ return description;
+}
+
+void cFlatConfig::DecorLoadCurrent(void) {
+ cString decorPath = cString::sprintf("%s/decors", PLUGINRESOURCEPATH);
+ std::vector<std::string> files;
+
+ cReadDir d(decorPath);
+ struct dirent *e;
+ while ((e = d.Next()) != NULL) {
+ cString FileName = AddDirectory(decorPath, e->d_name);
+ files.push_back(*FileName);
+ }
+
+ std::sort(files.begin(), files.end(), stringCompare);
+ if( DecorIndex >= 0 && DecorIndex < (int)files.size() ) {
+ std::string FileName = files.at(DecorIndex);
+ DecorLoadFile( FileName.c_str() );
+ }
+}
+
+void cFlatConfig::DecorLoadFile(cString File) {
+ dsyslog("skinflatplus: load decor file: %s", *File);
+
+ FILE *f = fopen(File, "r");
+ if( f ) {
+ int line = 0;
+ char *s;
+ cReadLine ReadLine;
+ while( (s = ReadLine.Read(f)) != NULL ) {
+ line++;
+ char *p = strchr(s, '#');
+ if (p)
+ *p = 0;
+ s = stripspace(skipspace(s));
+ if (!isempty(s)) {
+ char *n = s;
+ char *v = strchr(s, '=');
+ if (v) {
+ *v++ = 0;
+ n = stripspace(skipspace(n));
+ v = stripspace(skipspace(v));
+ int value = atoi( v );
+ if( strstr(n, "ChannelBorderType") == n ) {
+ decorBorderChannelTypeTheme = value; continue; }
+ if( strstr(n, "ChannelBorderSize") == n ) {
+ decorBorderChannelSizeTheme = value; continue; }
+ if( strstr(n, "ChannelEPGBorderType") == n ) {
+ decorBorderChannelEPGTypeTheme = value; continue; }
+ if( strstr(n, "ChannelEPGBorderSize") == n ) {
+ decorBorderChannelEPGSizeTheme = value; continue; }
+ if( strstr(n, "TopBarBorderType") == n ) {
+ decorBorderTopBarTypeTheme = value; continue; }
+ if( strstr(n, "TopBarBorderSize") == n ) {
+ decorBorderTopBarSizeTheme = value; continue; }
+ if( strstr(n, "MessageBorderType") == n ) {
+ decorBorderMessageTypeTheme = value; continue; }
+ if( strstr(n, "MessageBorderSize") == n ) {
+ decorBorderMessageSizeTheme = value; continue; }
+ if( strstr(n, "VolumeBorderType") == n ) {
+ decorBorderVolumeTypeTheme = value; continue; }
+ if( strstr(n, "VolumeBorderSize") == n ) {
+ decorBorderVolumeSizeTheme = value; continue; }
+ if( strstr(n, "TrackItemBorderType") == n ) {
+ decorBorderTrackTypeTheme = value; continue; }
+ if( strstr(n, "TrackItemBorderSize") == n ) {
+ decorBorderTrackSizeTheme = value; continue; }
+ if( strstr(n, "ReplayBorderType") == n ) {
+ decorBorderReplayTypeTheme = value; continue; }
+ if( strstr(n, "ReplayBorderSize") == n ) {
+ decorBorderReplaySizeTheme = value; continue; }
+ if( strstr(n, "MenuItemBorderType") == n ) {
+ decorBorderMenuItemTypeTheme = value; continue; }
+ if( strstr(n, "MenuItemBorderSize") == n ) {
+ decorBorderMenuItemSizeTheme = value; continue; }
+ if( strstr(n, "MenuContentHeadBorderType") == n ) {
+ decorBorderMenuContentHeadTypeTheme = value; continue; }
+ if( strstr(n, "MenuContentHeadBorderSize") == n ) {
+ decorBorderMenuContentHeadSizeTheme = value; continue; }
+ if( strstr(n, "MenuContentBorderType") == n ) {
+ decorBorderMenuContentTypeTheme = value; continue; }
+ if( strstr(n, "MenuContentBorderSize") == n ) {
+ decorBorderMenuContentSizeTheme = value; continue; }
+ if( strstr(n, "ButtonBorderType") == n ) {
+ decorBorderButtonTypeTheme = value; continue; }
+ if( strstr(n, "ButtonBorderSize") == n ) {
+ decorBorderButtonSizeTheme = value; continue; }
+ if( strstr(n, "ChannelProgressType") == n ) {
+ decorProgressChannelTypeTheme = value; continue; }
+ if( strstr(n, "ChannelProgressSize") == n ) {
+ decorProgressChannelSizeTheme = value; continue; }
+ if( strstr(n, "VolumeProgressType") == n ) {
+ decorProgressVolumeTypeTheme = value; continue; }
+ if( strstr(n, "VolumeProgressSize") == n ) {
+ decorProgressVolumeSizeTheme = value; continue; }
+ if( strstr(n, "MenuItemProgressType") == n ) {
+ decorProgressMenuItemTypeTheme = value; continue; }
+ if( strstr(n, "MenuItemProgressSize") == n ) {
+ decorProgressMenuItemSizeTheme = value; continue; }
+ if( strstr(n, "ReplayProgressType") == n ) {
+ decorProgressReplayTypeTheme = value; continue; }
+ if( strstr(n, "ReplayProgressSize") == n ) {
+ decorProgressReplaySizeTheme = value; continue; }
+ if( strstr(n, "ChannelSignalProgressType") == n ) {
+ decorProgressSignalTypeTheme = value; continue; }
+ if( strstr(n, "ChannelSignalProgressSize") == n ) {
+ decorProgressSignalSizeTheme = value; continue; }
+ if( strstr(n, "ScrollBarType") == n ) {
+ decorScrollBarTypeTheme = value; continue; }
+ if( strstr(n, "ScrollBarSize") == n ) {
+ decorScrollBarSizeTheme = value; continue; }
+ }
+ }
+ }
+ }
+}
+
+void cFlatConfig::SetLogoPath(cString path) {
+ logoPath = checkSlashAtEnd(*path);
+}
+
+cString cFlatConfig::checkSlashAtEnd(std::string path) {
+ try {
+ if (!(path.at(path.size()-1) == '/'))
+ return cString::sprintf("%s/", path.c_str());
+ } catch (...) {return path.c_str();}
+ return path.c_str();
+}
+
+void cFlatConfig::Store(const char *Name, int Value, const char *Filename) {
+ Store(Name, cString::sprintf("%d", Value), Filename);
+}
+
+void cFlatConfig::Store(const char *Name, double &Value, const char *Filename) {
+ Store(Name, dtoa(Value), Filename);
+}
+
+void cFlatConfig::Store(const char *Name, const char *Value, const char *Filename) {
+ FILE *f = fopen(Filename, "a");
+ if(f == NULL)
+ return;
+ fprintf(f, "%s = %s\n", Name, Value);
+ fclose(f);
+}
+
+void cFlatConfig::GetConfigFiles(cStringList &Files) {
+ cString configsPath = cString::sprintf("%s/configs", cPlugin::ConfigDirectory(PLUGIN_NAME_I18N));
+ std::vector<std::string> files;
+ Files.Clear();
+
+ cReadDir d(configsPath);
+ struct dirent *e;
+ while ((e = d.Next()) != NULL) {
+ files.push_back(e->d_name);
+ }
+
+ std::sort(files.begin(), files.end(), stringCompare);
+ for (unsigned i = 0; i < files.size(); i++) {
+ std::string FileName = files.at(i);
+ Files.Append(strdup(FileName.c_str()));
+ }
+}
diff --git a/config.h b/config.h
new file mode 100644
index 0000000..0e3381e
--- /dev/null
+++ b/config.h
@@ -0,0 +1,319 @@
+#pragma once
+
+#include <string>
+#include <vector>
+
+#include <vdr/plugin.h>
+#include "flat.h"
+
+#define PLUGINCONFIGPATH (cPlugin::ConfigDirectory(PLUGIN_NAME_I18N))
+#define PLUGINRESOURCEPATH (cPlugin::ResourceDirectory(PLUGIN_NAME_I18N))
+#define WIDGETOUTPUTPATH "/tmp/skinflatplus/widgets"
+
+
+bool stringCompare( const std::string &left, const std::string &right );
+bool pairCompareTimeStringDesc(const std::pair<time_t, std::string>&i, const std::pair<time_t, std::string>&j);
+bool pairCompareIntString(const std::pair<int, std::string>&i, const std::pair<int, std::string>&j);
+int roundUp(int numToRound, int multiple);
+
+class cFlatConfig
+{
+ private:
+ cString checkSlashAtEnd(std::string path);
+
+ int DecorCurrent;
+ public:
+ cFlatConfig(void);
+ ~cFlatConfig(void);
+
+ void Init(void);
+ void SetLogoPath(cString path);
+ bool SetupParse(const char *Name, const char *Value);
+
+ void ThemeCheckAndInit(void);
+ void ThemeInit(void);
+ void DecorDescriptions(cStringList &Decors);
+ cString DecorDescription(cString File);
+ void DecorLoadFile(cString File);
+ void DecorLoadCurrent(void);
+ void DecorCheckAndInit(void);
+
+ void GetConfigFiles(cStringList &Files);
+ public:
+
+ cString ThemeCurrent;
+ cString logoPath;
+ cString iconPath;
+
+ // BORDER TYPES
+ // 0 = none
+ // 1 = rect
+ // 2 = round
+ // 3 = invert round
+ // 4 = rect + alpha blend
+ // 5 = round + alpha blend
+ // 6 = invert round + alpha blend
+
+ int decorBorderChannelByTheme;
+ int decorBorderChannelTypeTheme, decorBorderChannelSizeTheme;
+ int decorBorderChannelTypeUser, decorBorderChannelSizeUser;
+ int decorBorderChannelType, decorBorderChannelSize;
+ tColor decorBorderChannelFg, decorBorderChannelBg;
+
+ int decorBorderChannelEPGByTheme;
+ int decorBorderChannelEPGTypeTheme, decorBorderChannelEPGSizeTheme;
+ int decorBorderChannelEPGTypeUser, decorBorderChannelEPGSizeUser;
+ int decorBorderChannelEPGType, decorBorderChannelEPGSize;
+ tColor decorBorderChannelEPGFg, decorBorderChannelEPGBg;
+
+ int decorBorderTopBarByTheme;
+ int decorBorderTopBarTypeTheme, decorBorderTopBarSizeTheme;
+ int decorBorderTopBarTypeUser, decorBorderTopBarSizeUser;
+ int decorBorderTopBarType, decorBorderTopBarSize;
+ tColor decorBorderTopBarFg, decorBorderTopBarBg;
+
+ int decorBorderMessageByTheme;
+ int decorBorderMessageTypeTheme, decorBorderMessageSizeTheme;
+ int decorBorderMessageTypeUser, decorBorderMessageSizeUser;
+ int decorBorderMessageType, decorBorderMessageSize;
+ tColor decorBorderMessageFg, decorBorderMessageBg;
+
+ int decorBorderVolumeByTheme;
+ int decorBorderVolumeTypeTheme, decorBorderVolumeSizeTheme;
+ int decorBorderVolumeTypeUser, decorBorderVolumeSizeUser;
+ int decorBorderVolumeType, decorBorderVolumeSize;
+ tColor decorBorderVolumeFg, decorBorderVolumeBg;
+
+ int decorBorderTrackByTheme;
+ int decorBorderTrackTypeTheme, decorBorderTrackSizeTheme;
+ int decorBorderTrackTypeUser, decorBorderTrackSizeUser;
+ int decorBorderTrackType, decorBorderTrackSize;
+ tColor decorBorderTrackFg, decorBorderTrackBg;
+ tColor decorBorderTrackSelFg, decorBorderTrackSelBg;
+ tColor decorBorderTrackCurFg, decorBorderTrackCurBg;
+
+ int decorBorderReplayByTheme;
+ int decorBorderReplayTypeTheme, decorBorderReplaySizeTheme;
+ int decorBorderReplayTypeUser, decorBorderReplaySizeUser;
+ int decorBorderReplayType, decorBorderReplaySize;
+ tColor decorBorderReplayFg, decorBorderReplayBg;
+
+ int decorBorderMenuItemByTheme;
+ int decorBorderMenuItemTypeTheme, decorBorderMenuItemSizeTheme;
+ int decorBorderMenuItemTypeUser, decorBorderMenuItemSizeUser;
+ int decorBorderMenuItemType, decorBorderMenuItemSize;
+ tColor decorBorderMenuItemFg, decorBorderMenuItemBg;
+ tColor decorBorderMenuItemSelFg, decorBorderMenuItemSelBg;
+ tColor decorBorderMenuItemCurFg, decorBorderMenuItemCurBg;
+
+ int decorBorderMenuContentHeadByTheme;
+ int decorBorderMenuContentHeadTypeTheme, decorBorderMenuContentHeadSizeTheme;
+ int decorBorderMenuContentHeadTypeUser, decorBorderMenuContentHeadSizeUser;
+ int decorBorderMenuContentHeadType, decorBorderMenuContentHeadSize;
+ tColor decorBorderMenuContentHeadFg, decorBorderMenuContentHeadBg;
+
+ int decorBorderMenuContentByTheme;
+ int decorBorderMenuContentTypeTheme, decorBorderMenuContentSizeTheme;
+ int decorBorderMenuContentTypeUser, decorBorderMenuContentSizeUser;
+ int decorBorderMenuContentType, decorBorderMenuContentSize;
+ tColor decorBorderMenuContentFg, decorBorderMenuContentBg;
+
+ int decorBorderButtonByTheme;
+ int decorBorderButtonTypeTheme, decorBorderButtonSizeTheme;
+ int decorBorderButtonTypeUser, decorBorderButtonSizeUser;
+ int decorBorderButtonType, decorBorderButtonSize;
+ tColor decorBorderButtonFg, decorBorderButtonBg;
+
+ // PROGRESS TYPES
+ // 0 = small line + big line
+ // 1 = big line
+ // 2 = big line + outline
+ // 3 = small line + big line + dot
+ // 4 = big line + dot
+ // 5 = big line + outline + dot
+ // 6 = small line + dot
+ // 7 = outline + dot
+ // 8 = small line + big line + alpha blend
+ // 9 = big line + alpha blend
+ int decorProgressChannelByTheme;
+ int decorProgressChannelTypeTheme, decorProgressChannelSizeTheme;
+ int decorProgressChannelTypeUser, decorProgressChannelSizeUser;
+ int decorProgressChannelType, decorProgressChannelSize;
+ tColor decorProgressChannelFg, decorProgressChannelBarFg, decorProgressChannelBg;
+
+ int decorProgressVolumeByTheme;
+ int decorProgressVolumeTypeTheme, decorProgressVolumeSizeTheme;
+ int decorProgressVolumeTypeUser, decorProgressVolumeSizeUser;
+ int decorProgressVolumeType, decorProgressVolumeSize;
+ tColor decorProgressVolumeFg, decorProgressVolumeBarFg, decorProgressVolumeBg;
+
+ int decorProgressMenuItemByTheme;
+ int decorProgressMenuItemTypeTheme, decorProgressMenuItemSizeTheme;
+ int decorProgressMenuItemTypeUser, decorProgressMenuItemSizeUser;
+ int decorProgressMenuItemType, decorProgressMenuItemSize;
+ tColor decorProgressMenuItemFg, decorProgressMenuItemBarFg, decorProgressMenuItemBg;
+ tColor decorProgressMenuItemCurFg, decorProgressMenuItemCurBarFg, decorProgressMenuItemCurBg;
+
+ int decorProgressReplayByTheme;
+ int decorProgressReplayTypeTheme, decorProgressReplaySizeTheme;
+ int decorProgressReplayTypeUser, decorProgressReplaySizeUser;
+ int decorProgressReplayType, decorProgressReplaySize;
+ tColor decorProgressReplayFg, decorProgressReplayBarFg, decorProgressReplayBg;
+
+ int decorProgressSignalByTheme;
+ int decorProgressSignalTypeTheme, decorProgressSignalSizeTheme;
+ int decorProgressSignalTypeUser, decorProgressSignalSizeUser;
+ int decorProgressSignalType, decorProgressSignalSize;
+ tColor decorProgressSignalFg, decorProgressSignalBarFg, decorProgressSignalBg;
+
+ /* Types
+ * 0 = left line + rect bar
+ * 1 = left line + round bar
+ * 2 = middle line + rect bar
+ * 3 = middle line + round bar
+ * 4 = outline + rect bar
+ * 5 = outline + round bar
+ * 6 = rect bar
+ * 7 = round bar
+ */
+ int decorScrollBarByTheme;
+ int decorScrollBarTypeTheme, decorScrollBarSizeTheme;
+ int decorScrollBarTypeUser, decorScrollBarSizeUser;
+ int decorScrollBarType, decorScrollBarSize;
+ tColor decorScrollBarFg, decorScrollBarBarFg, decorScrollBarBg;
+
+ // General Config
+ int ButtonsShowEmpty;
+ int ChannelIconsShow;
+ int SignalQualityShow;
+ int SignalQualityUseColors;
+ int DiskUsageShow;
+ int DiskUsageShort;
+ // 0 = occupied
+ // 1 = free
+ int DiskUsageFree;
+
+ int MenuItemPadding;
+ int marginOsdVer, marginOsdHor;
+ int MessageOffset;
+
+ int MenuContentFullSize;
+ double TopBarFontSize;
+ double TopBarFontClockScale;
+
+ int ChannelResolutionAspectShow;
+ int ChannelFormatShow;
+ int ChannelSimpleAspectFormat;
+ int ChannelBitrateShow;
+ int ChannelBitrateShowCalcInterval; // hidden config
+ int ChannelTimeLeft;
+
+ int ChannelWeatherShow;
+ int PlaybackWeatherShow;
+ double WeatherFontSize;
+
+ int RecordingResolutionAspectShow;
+ int RecordingFormatShow;
+ int RecordingSimpleAspectFormat;
+ int RecordingAdditionalInfoShow;
+ double TimeSecsScale;
+
+ int RecordingDimmOnPause;
+ int RecordingDimmOnPauseDelay;
+ int RecordingDimmOnPauseOpaque;
+
+ int EpgRerunsShow;
+ int EpgAdditionalInfoShow;
+ int TopBarRecordingShow;
+ int TopBarRecConflictsShow;
+ int TopBarRecConflictsHigh;
+ int MenuItemIconsShow;
+ int TopBarMenuIconShow;
+ int TopBarHideClockText;
+
+ int MenuChannelView;
+ int MenuTimerView;
+ int MenuEventView;
+ int MenuRecordingView;
+ int MenuFullOsd;
+
+ int MenuRecordingShowCount;
+ int MenuTimerShowCount;
+ int MenuChannelShowCount;
+
+ // 0 = vertikal
+ // 1 = horizontal
+ int MessageColorPosition;
+
+ /* hidden configs (only in setup.conf, no osd menu) */
+ int MenuItemRecordingClearPercent;
+ int MenuItemRecordingShowFolderDate; // 0 = disable, 1 = newest recording date, 2 = oldest recording date
+ int MenuItemParseTilde;
+ int ShortRecordingCount;
+ /* hidden configs (only in setup.conf, no osd menu) */
+
+ // Text Scroller
+ int ScrollerEnable;
+ int ScrollerStep;
+ int ScrollerDelay;
+ int ScrollerType;
+
+ // mainmenu widgets
+ int MainMenuWidgetsEnable;
+ double MainMenuItemScale;
+
+ int MainMenuWidgetDVBDevicesShow;
+ int MainMenuWidgetDVBDevicesPosition;
+ int MainMenuWidgetDVBDevicesDiscardUnknown;
+ int MainMenuWidgetDVBDevicesDiscardNotUsed;
+
+ int MainMenuWidgetActiveTimerShow;
+ int MainMenuWidgetActiveTimerPosition;
+ int MainMenuWidgetActiveTimerMaxCount;
+ int MainMenuWidgetActiveTimerHideEmpty;
+
+ int MainMenuWidgetLastRecShow;
+ int MainMenuWidgetLastRecPosition;
+ int MainMenuWidgetLastRecMaxCount;
+
+ int MainMenuWidgetTimerConflictsShow;
+ int MainMenuWidgetTimerConflictsPosition;
+ int MainMenuWidgetTimerConflictsHideEmpty;
+
+ int MainMenuWidgetSystemInfoShow;
+ int MainMenuWidgetSystemInfoPosition;
+
+ int MainMenuWidgetSystemUpdatesShow;
+ int MainMenuWidgetSystemUpdatesPosition;
+ int MainMenuWidgetSystemUpdatesHideIfZero;
+
+ int MainMenuWidgetTemperaturesShow;
+ int MainMenuWidgetTemperaturesPosition;
+
+ int MainMenuWidgetCommandShow;
+ int MainMenuWidgetCommandPosition;
+
+ int MainMenuWidgetWeatherShow;
+ int MainMenuWidgetWeatherPosition;
+ int MainMenuWidgetWeatherType;
+ int MainMenuWidgetWeatherDays;
+
+ // TVScraper
+ int TVScraperChanInfoShowPoster;
+ double TVScraperChanInfoPosterSize;
+
+ int TVScraperReplayInfoShowPoster;
+ double TVScraperReplayInfoPosterSize;
+
+ int TVScraperEPGInfoShowPoster;
+ int TVScraperRecInfoShowPoster;
+
+ int TVScraperEPGInfoShowActors;
+ int TVScraperRecInfoShowActors;
+
+ int DecorIndex;
+
+ void Store(const char *Name, const char *Value, const char *Filename);
+ void Store(const char *Name, int Value, const char *Filename);
+ void Store(const char *Name, double &Value, const char *Filename);
+};
diff --git a/configs/MV_default b/configs/MV_default
new file mode 100644
index 0000000..c4b59a5
--- /dev/null
+++ b/configs/MV_default
@@ -0,0 +1,145 @@
+decorBorderChannelByTheme = 1
+decorBorderChannelTypeUser = 1
+decorBorderChannelSizeUser = 5
+decorBorderChannelEPGByTheme = 1
+decorBorderChannelEPGTypeUser = 0
+decorBorderChannelEPGSizeUser = 0
+decorBorderTopBarByTheme = 1
+decorBorderTopBarTypeUser = 1
+decorBorderTopBarSizeUser = 5
+decorBorderMessageByTheme = 1
+decorBorderMessageTypeUser = 0
+decorBorderMessageSizeUser = 0
+decorBorderVolumeByTheme = 1
+decorBorderVolumeTypeUser = 0
+decorBorderVolumeSizeUser = 0
+decorBorderTrackByTheme = 1
+decorBorderTrackTypeUser = 0
+decorBorderTrackSizeUser = 0
+decorBorderReplayByTheme = 1
+decorBorderReplayTypeUser = 1
+decorBorderReplaySizeUser = 0
+decorBorderMenuItemByTheme = 1
+decorBorderMenuItemTypeUser = 1
+decorBorderMenuItemSizeUser = 2
+decorBorderMenuContentHeadByTheme = 1
+decorBorderMenuContentHeadTypeUser = 0
+decorBorderMenuContentHeadSizeUser = 0
+decorBorderMenuContentByTheme = 1
+decorBorderMenuContentTypeUser = 0
+decorBorderMenuContentSizeUser = 0
+decorBorderButtonByTheme = 1
+decorBorderButtonTypeUser = 0
+decorBorderButtonSizeUser = 5
+decorProgressChannelByTheme = 1
+decorProgressChannelTypeUser = 0
+decorProgressChannelSizeUser = 20
+decorProgressVolumeByTheme = 1
+decorProgressVolumeTypeUser = 0
+decorProgressVolumeSizeUser = 20
+decorProgressMenuItemByTheme = 1
+decorProgressMenuItemTypeUser = 0
+decorProgressMenuItemSizeUser = 20
+decorProgressReplayByTheme = 1
+decorProgressReplayTypeUser = 0
+decorProgressReplaySizeUser = 20
+decorProgressSignalByTheme = 1
+decorProgressSignalTypeUser = 0
+decorProgressSignalSizeUser = 20
+decorScrollBarByTheme = 1
+decorScrollBarTypeUser = 0
+decorScrollBarSizeUser = 15
+ButtonsShowEmpty = 0
+ChannelIconsShow = 1
+SignalQualityShow = 1
+DiskUsageShow = 2
+MenuItemPadding = 0
+marginOsdVer = 0
+marginOsdHor = 0
+TopBarFontSize = 0.050000
+MessageOffset = 0
+MenuContentFullSize = 0
+ChannelResolutionAspectShow = 1
+ChannelFormatShow = 1
+RecordingResolutionAspectShow = 1
+RecordingFormatShow = 1
+RecordingAdditionalInfoShow = 1
+EpgAdditionalInfoShow = 1
+TopBarRecordingShow = 1
+MenuItemIconsShow = 1
+TopBarMenuIconShow = 1
+DecorIndex = 18
+MainMenuItemScale = 0.550000
+MenuChannelView = 1
+MenuTimerView = 3
+MenuEventView = 1
+MenuRecordingView = 1
+ChannelSimpleAspectFormat = 1
+RecordingSimpleAspectFormat = 1
+MenuItemRecordingClearPercent = 1
+MenuItemRecordingShowFolderDate = 1
+MenuItemParseTilde = 1
+TopBarRecConflictsShow = 1
+TopBarRecConflictsHigh = 3
+SignalQualityUseColors = 1
+TVScraperChanInfoShowPoster = 1
+TVScraperChanInfoPosterSize = 0.010000
+TVScraperEPGInfoShowPoster = 1
+TVScraperRecInfoShowPoster = 1
+EpgRerunsShow = 0
+TVScraperEPGInfoShowActors = 1
+TVScraperRecInfoShowActors = 1
+MessageColorPosition = 1
+ScrollerEnable = 1
+ScrollerStep = 4
+ScrollerDelay = 25
+ScrollerType = 1
+DiskUsageShort = 0
+DiskUsageFree = 1
+TopBarFontClockScale = 0.012000
+TimeSecsScale = 0.007000
+ChannelBitrateShow = 0
+ChannelBitrateShowCalcInterval = 10
+TopBarHideClockText = 1
+ChannelTimeLeft = 0
+MenuFullOsd = 0
+MenuRecordingShowCount = 1
+MenuTimerShowCount = 1
+MenuChannelShowCount = 1
+ShortRecordingCount = 1
+MainMenuWidgetsEnable = 1
+MainMenuWidgetDVBDevicesShow = 1
+MainMenuWidgetDVBDevicesPosition = 2
+MainMenuWidgetActiveTimerShow = 0
+MainMenuWidgetActiveTimerPosition = 3
+MainMenuWidgetActiveTimerMaxCount = 2
+MainMenuWidgetActiveTimerHideEmpty = 1
+MainMenuWidgetLastRecShow = 0
+MainMenuWidgetLastRecPosition = 4
+MainMenuWidgetLastRecMaxCount = 3
+MainMenuWidgetTimerConflictsShow = 0
+MainMenuWidgetTimerConflictsPosition = 6
+MainMenuWidgetTimerConflictsHideEmpty = 0
+MainMenuWidgetSystemInfoShow = 1
+MainMenuWidgetSystemInfoPosition = 6
+MainMenuWidgetSystemUpdatesShow = 0
+MainMenuWidgetSystemUpdatesPosition = 7
+MainMenuWidgetSystemUpdatesHideIfZero = 0
+MainMenuWidgetTemperaturesShow = 1
+MainMenuWidgetTemperaturesPosition = 8
+MainMenuWidgetCommandShow = 0
+MainMenuWidgetCommandPosition = 9
+MainMenuWidgetWeatherShow = 1
+MainMenuWidgetWeatherPosition = 1
+MainMenuWidgetWeatherDays = 2
+MainMenuWidgetWeatherType = 1
+ChannelWeatherShow = 1
+PlaybackWeatherShow = 1
+WeatherFontSize = 0.055000
+TVScraperReplayInfoShowPoster = 1
+TVScraperReplayInfoPosterSize = 0.010000
+MainMenuWidgetDVBDevicesDiscardUnknown = 0
+MainMenuWidgetDVBDevicesDiscardNotUsed = 0
+RecordingDimmOnPause = 1
+RecordingDimmOnPauseDelay = 5
+RecordingDimmOnPauseOpaque = 200
diff --git a/configs/default b/configs/default
new file mode 100644
index 0000000..3285cce
--- /dev/null
+++ b/configs/default
@@ -0,0 +1,102 @@
+decorBorderChannelByTheme = 1
+decorBorderChannelTypeUser = 0
+decorBorderChannelSizeUser = 0
+decorBorderChannelEPGByTheme = 1
+decorBorderChannelEPGTypeUser = 0
+decorBorderChannelEPGSizeUser = 0
+decorBorderTopBarByTheme = 1
+decorBorderTopBarTypeUser = 0
+decorBorderTopBarSizeUser = 0
+decorBorderMessageByTheme = 1
+decorBorderMessageTypeUser = 0
+decorBorderMessageSizeUser = 0
+decorBorderVolumeByTheme = 1
+decorBorderVolumeTypeUser = 0
+decorBorderVolumeSizeUser = 0
+decorBorderTrackByTheme = 1
+decorBorderTrackTypeUser = 0
+decorBorderTrackSizeUser = 0
+decorBorderReplayByTheme = 1
+decorBorderReplayTypeUser = 0
+decorBorderReplaySizeUser = 0
+decorBorderMenuItemByTheme = 1
+decorBorderMenuItemTypeUser = 0
+decorBorderMenuItemSizeUser = 0
+decorBorderMenuContentHeadByTheme = 1
+decorBorderMenuContentHeadTypeUser = 0
+decorBorderMenuContentHeadSizeUser = 0
+decorBorderMenuContentByTheme = 1
+decorBorderMenuContentTypeUser = 0
+decorBorderMenuContentSizeUser = 0
+decorBorderButtonByTheme = 1
+decorBorderButtonTypeUser = 0
+decorBorderButtonSizeUser = 0
+decorProgressChannelByTheme = 1
+decorProgressChannelTypeUser = 0
+decorProgressChannelSizeUser = 20
+decorProgressVolumeByTheme = 1
+decorProgressVolumeTypeUser = 0
+decorProgressVolumeSizeUser = 20
+decorProgressMenuItemByTheme = 1
+decorProgressMenuItemTypeUser = 0
+decorProgressMenuItemSizeUser = 20
+decorProgressReplayByTheme = 1
+decorProgressReplayTypeUser = 0
+decorProgressReplaySizeUser = 40
+decorProgressSignalByTheme = 1
+decorProgressSignalTypeUser = 0
+decorProgressSignalSizeUser = 20
+decorScrollBarByTheme = 0
+decorScrollBarTypeUser = 0
+decorScrollBarSizeUser = 20
+ButtonsShowEmpty = 1
+ChannelIconsShow = 1
+SignalQualityShow = 1
+DiskUsageShow = 1
+MenuItemPadding = 3
+marginOsdVer = 5
+marginOsdHor = 5
+TopBarFontSize = 0.050000
+MessageOffset = 50
+MenuContentFullSize = 1
+ChannelResolutionAspectShow = 1
+ChannelFormatShow = 1
+RecordingResolutionAspectShow = 1
+RecordingFormatShow = 1
+RecordingAdditionalInfoShow = 1
+EpgAdditionalInfoShow = 1
+TopBarRecordingShow = 1
+MenuItemIconsShow = 1
+TopBarMenuIconShow = 1
+DecorIndex = 0
+MainMenuItemScale = 1.000000
+MenuChannelView = 1
+MenuTimerView = 1
+MenuEventView = 1
+MenuRecordingView = 1
+ChannelSimpleAspectFormat = 1
+RecordingSimpleAspectFormat = 1
+MenuItemRecordingClearPercent = 1
+MenuItemRecordingShowFolderDate = 1
+MenuItemParseTilde = 1
+TopBarRecConflictsShow = 1
+TopBarRecConflictsHigh = 2
+SignalQualityUseColors = 0
+TVScraperChanInfoShowPoster = 1
+TVScraperChanInfoPosterSize = 0.010000
+TVScraperEPGInfoShowPoster = 1
+TVScraperRecInfoShowPoster = 1
+EpgRerunsShow = 1
+TVScraperEPGInfoShowActors = 1
+TVScraperRecInfoShowActors = 1
+MessageColorPosition = 1
+ScrollerEnable = 1
+ScrollerStep = 2
+ScrollerDelay = 40
+ScrollerType = 0
+DiskUsageShort = 0
+DiskUsageFree = 1
+TopBarFontClockScale = 0.010000
+TimeSecsScale = 1.000000
+ChannelBitrateShow = 0
+ChannelBitrateShowCalcInterval = 20
diff --git a/configs/fnu_default b/configs/fnu_default
new file mode 100644
index 0000000..c2d60a2
--- /dev/null
+++ b/configs/fnu_default
@@ -0,0 +1,102 @@
+decorBorderChannelByTheme = 1
+decorBorderChannelTypeUser = 0
+decorBorderChannelSizeUser = 0
+decorBorderChannelEPGByTheme = 1
+decorBorderChannelEPGTypeUser = 0
+decorBorderChannelEPGSizeUser = 0
+decorBorderTopBarByTheme = 1
+decorBorderTopBarTypeUser = 0
+decorBorderTopBarSizeUser = 0
+decorBorderMessageByTheme = 1
+decorBorderMessageTypeUser = 0
+decorBorderMessageSizeUser = 0
+decorBorderVolumeByTheme = 1
+decorBorderVolumeTypeUser = 0
+decorBorderVolumeSizeUser = 0
+decorBorderTrackByTheme = 1
+decorBorderTrackTypeUser = 0
+decorBorderTrackSizeUser = 0
+decorBorderReplayByTheme = 1
+decorBorderReplayTypeUser = 0
+decorBorderReplaySizeUser = 0
+decorBorderMenuItemByTheme = 1
+decorBorderMenuItemTypeUser = 0
+decorBorderMenuItemSizeUser = 0
+decorBorderMenuContentHeadByTheme = 1
+decorBorderMenuContentHeadTypeUser = 0
+decorBorderMenuContentHeadSizeUser = 0
+decorBorderMenuContentByTheme = 1
+decorBorderMenuContentTypeUser = 0
+decorBorderMenuContentSizeUser = 0
+decorBorderButtonByTheme = 1
+decorBorderButtonTypeUser = 0
+decorBorderButtonSizeUser = 0
+decorProgressChannelByTheme = 1
+decorProgressChannelTypeUser = 0
+decorProgressChannelSizeUser = 20
+decorProgressVolumeByTheme = 1
+decorProgressVolumeTypeUser = 0
+decorProgressVolumeSizeUser = 20
+decorProgressMenuItemByTheme = 1
+decorProgressMenuItemTypeUser = 0
+decorProgressMenuItemSizeUser = 20
+decorProgressReplayByTheme = 1
+decorProgressReplayTypeUser = 0
+decorProgressReplaySizeUser = 40
+decorProgressSignalByTheme = 1
+decorProgressSignalTypeUser = 0
+decorProgressSignalSizeUser = 20
+decorScrollBarByTheme = 0
+decorScrollBarTypeUser = 7
+decorScrollBarSizeUser = 12
+ButtonsShowEmpty = 0
+ChannelIconsShow = 1
+SignalQualityShow = 1
+DiskUsageShow = 2
+MenuItemPadding = 3
+marginOsdVer = 5
+marginOsdHor = 5
+TopBarFontSize = 0.040000
+MessageOffset = 50
+MenuContentFullSize = 1
+ChannelResolutionAspectShow = 1
+ChannelFormatShow = 1
+RecordingResolutionAspectShow = 1
+RecordingFormatShow = 1
+RecordingAdditionalInfoShow = 1
+EpgAdditionalInfoShow = 1
+TopBarRecordingShow = 1
+MenuItemIconsShow = 1
+TopBarMenuIconShow = 1
+DecorIndex = 5
+MainMenuItemScale = 1.000000
+MenuChannelView = 2
+MenuTimerView = 1
+MenuEventView = 3
+MenuRecordingView = 3
+ChannelSimpleAspectFormat = 1
+RecordingSimpleAspectFormat = 1
+MenuItemRecordingClearPercent = 1
+MenuItemRecordingShowFolderDate = 1
+MenuItemParseTilde = 1
+TopBarRecConflictsShow = 1
+TopBarRecConflictsHigh = 2
+SignalQualityUseColors = 0
+TVScraperChanInfoShowPoster = 1
+TVScraperChanInfoPosterSize = 0.010000
+TVScraperEPGInfoShowPoster = 1
+TVScraperRecInfoShowPoster = 1
+EpgRerunsShow = 1
+TVScraperEPGInfoShowActors = 1
+TVScraperRecInfoShowActors = 1
+MessageColorPosition = 1
+ScrollerEnable = 1
+ScrollerStep = 2
+ScrollerDelay = 40
+ScrollerType = 0
+DiskUsageShort = 0
+DiskUsageFree = 1
+TopBarFontClockScale = 0.010000
+TimeSecsScale = 0.010000
+ChannelBitrateShow = 0
+ChannelBitrateShowCalcInterval = 20
diff --git a/configs/skin flat b/configs/skin flat
new file mode 100644
index 0000000..f3fac0c
--- /dev/null
+++ b/configs/skin flat
@@ -0,0 +1,102 @@
+decorBorderChannelByTheme = 0
+decorBorderChannelTypeUser = 0
+decorBorderChannelSizeUser = 0
+decorBorderChannelEPGByTheme = 0
+decorBorderChannelEPGTypeUser = 0
+decorBorderChannelEPGSizeUser = 0
+decorBorderTopBarByTheme = 0
+decorBorderTopBarTypeUser = 0
+decorBorderTopBarSizeUser = 0
+decorBorderMessageByTheme = 0
+decorBorderMessageTypeUser = 0
+decorBorderMessageSizeUser = 0
+decorBorderVolumeByTheme = 0
+decorBorderVolumeTypeUser = 0
+decorBorderVolumeSizeUser = 0
+decorBorderTrackByTheme = 0
+decorBorderTrackTypeUser = 0
+decorBorderTrackSizeUser = 0
+decorBorderReplayByTheme = 0
+decorBorderReplayTypeUser = 0
+decorBorderReplaySizeUser = 0
+decorBorderMenuItemByTheme = 0
+decorBorderMenuItemTypeUser = 0
+decorBorderMenuItemSizeUser = 0
+decorBorderMenuContentHeadByTheme = 0
+decorBorderMenuContentHeadTypeUser = 0
+decorBorderMenuContentHeadSizeUser = 0
+decorBorderMenuContentByTheme = 0
+decorBorderMenuContentTypeUser = 0
+decorBorderMenuContentSizeUser = 0
+decorBorderButtonByTheme = 0
+decorBorderButtonTypeUser = 0
+decorBorderButtonSizeUser = 0
+decorProgressChannelByTheme = 0
+decorProgressChannelTypeUser = 0
+decorProgressChannelSizeUser = 20
+decorProgressVolumeByTheme = 0
+decorProgressVolumeTypeUser = 2
+decorProgressVolumeSizeUser = 20
+decorProgressMenuItemByTheme = 0
+decorProgressMenuItemTypeUser = 0
+decorProgressMenuItemSizeUser = 20
+decorProgressReplayByTheme = 1
+decorProgressReplayTypeUser = 0
+decorProgressReplaySizeUser = 40
+decorProgressSignalByTheme = 0
+decorProgressSignalTypeUser = 0
+decorProgressSignalSizeUser = 20
+decorScrollBarByTheme = 0
+decorScrollBarTypeUser = 0
+decorScrollBarSizeUser = 20
+ButtonsShowEmpty = 1
+ChannelIconsShow = 1
+SignalQualityShow = 0
+DiskUsageShow = 1
+MenuItemPadding = 3
+marginOsdVer = 5
+marginOsdHor = 5
+TopBarFontSize = 0.050000
+MessageOffset = 50
+MenuContentFullSize = 1
+ChannelResolutionAspectShow = 0
+ChannelFormatShow = 0
+RecordingResolutionAspectShow = 0
+RecordingFormatShow = 0
+RecordingAdditionalInfoShow = 0
+EpgAdditionalInfoShow = 0
+TopBarRecordingShow = 0
+MenuItemIconsShow = 0
+TopBarMenuIconShow = 0
+DecorIndex = 21
+MainMenuItemScale = 1.000000
+MenuChannelView = 0
+MenuTimerView = 0
+MenuEventView = 0
+MenuRecordingView = 0
+ChannelSimpleAspectFormat = 0
+RecordingSimpleAspectFormat = 0
+MenuItemRecordingClearPercent = 1
+MenuItemRecordingShowFolderDate = 1
+MenuItemParseTilde = 1
+TopBarRecConflictsShow = 0
+TopBarRecConflictsHigh = 2
+SignalQualityUseColors = 0
+TVScraperChanInfoShowPoster = 1
+TVScraperChanInfoPosterSize = 0.010000
+TVScraperEPGInfoShowPoster = 1
+TVScraperRecInfoShowPoster = 1
+EpgRerunsShow = 0
+TVScraperEPGInfoShowActors = 1
+TVScraperRecInfoShowActors = 1
+MessageColorPosition = 1
+ScrollerEnable = 0
+ScrollerStep = 2
+ScrollerDelay = 40
+ScrollerType = 0
+DiskUsageShort = 0
+DiskUsageFree = 1
+TopBarFontClockScale = 0.010000
+TimeSecsScale = 0.010000
+ChannelBitrateShow = 0
+ChannelBitrateShowCalcInterval = 20
diff --git a/contrib/eventsview-flatplus.sql b/contrib/eventsview-flatplus.sql
new file mode 100644
index 0000000..5d385a6
--- /dev/null
+++ b/contrib/eventsview-flatplus.sql
@@ -0,0 +1,11 @@
+CREATE VIEW eventsview as select sub.masterid as useid, cnt.eventid, cnt.channelid, cnt.source, GREATEST(cnt.updsp,sub.updsp,IFNULL(epi.updsp,0)) updsp, cnt.updflg, cnt.delflg, cnt.fileref, cnt.tableid, cnt.version, sub.title,
+case
+ when sub.shorttext is null then
+ case when sub.genre is null then '' else concat(sub.genre,' (', sub.country, ' ',sub.year, ')') end
+ else sub.shorttext
+end shorttext,
+cnt.starttime, cnt.duration, cnt.parentalrating, cnt.vps, sub.longdescription as description
+from
+ events cnt
+ inner join events sub on (case when cnt.useid = 0 then cnt.masterid else cnt.useid end = sub.masterid)
+ left outer join episodes epi on (sub.episode = epi.compname and sub.episodepart = epi.comppartname and sub.episodelang = epi.lang);
diff --git a/contrib/flatPlus-MVFonts-info.txt b/contrib/flatPlus-MVFonts-info.txt
new file mode 100644
index 0000000..5c08caa
--- /dev/null
+++ b/contrib/flatPlus-MVFonts-info.txt
@@ -0,0 +1,6 @@
+Schriften für flatPlus-MV_Themen
+
+Installationshinweise (Pfade evtl. Anpassen!):
+ - Schrift(en) VDR* nach /usr/share/fonts kopieren.
+ Die Schriften enthalten auch die VDR-Symbole.
+
diff --git a/contrib/flatPlus_MV_Update.sh b/contrib/flatPlus_MV_Update.sh
new file mode 100755
index 0000000..575512a
--- /dev/null
+++ b/contrib/flatPlus_MV_Update.sh
@@ -0,0 +1,125 @@
+#!/bin/bash
+
+# flatPlus_MV_Update.sh
+# Skript zum Updaten der MV-Themen
+
+# Ordner und Dateien
+ICONS="icons" ; THEMES="themes" ; DECORS="decors" ; CONFIGS="configs" ; PREVIEWS="previews"
+INFO=MV_Themes.INFO ; HIST=MV_Themes.HISTORY
+
+# Ordner für Direktupdate (Im aktuellem Filesystem); Beispiel für Gen2VDR
+THEMEDIR="/etc/vdr/themes"
+PLUGINDIR="/etc/vdr/plugins/skinflatplus"
+ICONDIR="${PLUGINDIR}/icons"
+DECORDIR="${PLUGINDIR}/decors"
+CONFIGSDIR="${PLUGINDIR}/configs"
+PREVIEWDIR="${PLUGINDIR}/previews"
+
+timedout_read() {
+ timeout=$1 ; varname=$2 ; old_tty_settings=`stty -g`
+ stty -icanon min 0 time ${timeout}0
+ read $varname
+ stty "$old_tty_settings" # See man page for "stty."
+}
+
+_help() {
+ echo "-------------------------------"
+ echo "Falscher Parameter: $1"
+ echo "Aufruf mit $(basename $0)"
+ echo "Parameter -Silent Keine Abfragen (Silent Update)."
+ echo "Parameter -Direct Direktes Update der Daten im Filesysten (/etc/vdr)."
+ echo " !!! Speziell für Gen2VDR angepasst !!!"
+ exit
+}
+### Start
+# In Skriptordner wechseln (contrib)
+cd $(dirname $0) # Skript im contrib-Ordner
+
+if [ ! -d "../$ICONS" -o ! -d "../$THEMES" -o ! -d "../$DECORS" ] ; then
+ echo "Falsches Verzeichnis! Skript muss im ./contrib-Ordner ausgeführt werden"
+ exit 1
+fi
+
+if [ -n "$1" ] ; then # Parameter wurde übergeben
+ case $1 in
+ -Silent) SILENTUPDATE=1 ; echo "Silent Update! ($1)" ;;
+ -Direct) DIRECTUPDATE=1 ; echo "Direct Update! ($1)" ; unset SILENTUPDATE ;;
+ *) _help
+ esac
+fi
+
+# MV_Themes Löschen!
+if [ -z "$SILENTUPDATE" ] ; then
+ echo "-------------------------------"
+ [ -n "$DIRECTUPDATE" ] && echo "ACHTUNG: Dateien in /etc werden gelöscht!"
+ echo "MV_Themen löschen? (J/n)"
+ timedout_read 5 TASTE
+ if [ "$TASTE" = "n" -o "$TASTE" = "N" ] ; then
+ echo "Skript abgebrochen. Es wurde nichts gelöscht!"
+ exit
+ fi
+fi
+
+if [ -n "$DIRECTUPDATE" ] ; then # Löschen im Dateisystem (/etc)
+ [ -d $ICONDIR ] && rm -rf $ICONDIR/MV*
+ [ -d $THEMEDIR ] && rm -f $THEMEDIR/flatPlus-MV*
+ [ -d $DECORDIR ] && rm -f $DECORDIR/*MV*
+ [ -d $CONFIGSDIR ] && rm -f $CONFIGSDIR/*MV*
+ [ -d $PREVIEWDIR ] && rm -f $PREVIEWDIR/*MV*
+else # Löschen im Source-Dir von skinflatPlus
+ rm -rf ../$ICONS/MV*
+ rm -f ../$THEMES/flatPlus-MV*
+ rm -f ../$DECORS/*MV*
+ rm -f ../$INFO ../$HIST
+ rm -f ../$CONFIGSDIR/*MV*
+ rm -f ../$PREVIEWDIR/*MV*
+fi
+
+echo "MV-Themen wurden entfernt."
+
+# MV_Themes neu laden
+if [ -z "$SILENTUPDATE" ] ; then
+ echo "-------------------------------"
+ echo "MV_Themes neu herunterladen und entpacken? (J/n)"
+ timedout_read 5 TASTE
+ [ "$TASTE" = "n" -o "$TASTE" = "N" ] && exit
+fi
+
+cd .. # In das Source-Verzeichnis von SkinFlatPlus
+
+# Download
+[ -n "$DIRECTUPDATE" ] && cd /tmp
+wget https://dl.dropboxusercontent.com/u/1490505/VDR/skinflatplus/MV_Themes.tar.xz
+tar -xJf MV_Themes.tar.xz # Entpacken
+rm -f MV_Themes.tar.xz # Archiv entfernen
+
+if [ -n "$DIRECTUPDATE" ] ; then
+ cp -f ${THEMES}/flatPlus-MV* $THEMEDIR
+ cp -f ${DECORS}/*MV* $DECORDIR
+ cp -rf ${ICONS}/MV* $ICONDIR
+ cp -f ${CONFIGS}/*MV* $CONFIGSDIR
+ cp -f ${PREVIEWDIR}/*MV* $PREVIEWDIR
+fi
+
+echo "-------------------------------"
+echo "MV-Themen wurden aktualisiert."
+
+[ -n "$DIRECTUPDATE" ] && exit
+
+if [ -z "$SILENTUPDATE" ] ; then
+ echo "-------------------------------"
+ echo "MV_Themen installieren (make install)? (j/N)"
+ timedout_read 5 TASTE
+ if [ "$TASTE" = "j" -o "$TASTE" = "J" ] ; then
+ #cd ..
+ make install
+ echo "-------------------------------"
+ echo "MV-Themen wurden installiert."
+ fi
+else # Silentupdate - Themen instalieren
+ make install
+fi
+
+echo "-------------------------------"
+
+exit
diff --git a/decors/10_rect_sml.decor b/decors/10_rect_sml.decor
new file mode 100644
index 0000000..6d3fdfe
--- /dev/null
+++ b/decors/10_rect_sml.decor
@@ -0,0 +1,73 @@
+Description = rect sml
+# BORDER TYPES
+# 0 = none
+# 1 = rect
+# 2 = round
+# 3 = invert round
+# 4 = rect + alpha blend
+# 5 = round + alpha blend
+# 6 = invert round + alpha blend
+
+# PROGRESS TYPES
+# 0 = small line + big line
+# 1 = big line
+# 2 = big line + outline
+# 3 = small line + big line + dot
+# 4 = big line + dot
+# 5 = big line + outline + dot
+# 6 = small line + dot
+# 7 = outline + dot
+# 8 = small line + big line + alpha blend
+# 9 = big line + alpha blend
+
+# TopBar
+TopBarBorderType = 1
+TopBarBorderSize = 5
+
+# Buttons
+ButtonBorderType = 1
+ButtonBorderSize = 5
+
+# Messages
+MessageBorderType = 1
+MessageBorderSize = 5
+
+# Display Channel
+ChannelBorderType = 1
+ChannelBorderSize = 5
+ChannelEPGBorderType = 1
+ChannelEPGBorderSize = 5
+ChannelProgressType = 0
+ChannelProgressSize = 10
+ChannelSignalProgressType = 2
+ChannelSignalProgressSize = 10
+
+# Display Menu
+MenuItemBorderType = 1
+MenuItemBorderSize = 5
+MenuContentHeadBorderType = 1
+MenuContentHeadBorderSize = 5
+MenuContentBorderType = 1
+MenuContentBorderSize = 5
+MenuItemProgressType = 2
+MenuItemProgressSize = 20
+
+# Display Replay
+ReplayBorderType = 1
+ReplayBorderSize = 5
+ReplayProgressType = 0
+ReplayProgressSize = 32
+
+# Display Tracks
+TrackItemBorderType = 1
+TrackItemBorderSize = 5
+
+# Display Volume
+VolumeBorderType = 1
+VolumeBorderSize = 5
+VolumeProgressType = 3
+VolumeProgressSize = 10
+
+# Scrollbar
+ScrollBarType = 0
+ScrollBarSize = 10
\ No newline at end of file
diff --git a/decors/11_rect_mid.decor b/decors/11_rect_mid.decor
new file mode 100644
index 0000000..2dc8c7b
--- /dev/null
+++ b/decors/11_rect_mid.decor
@@ -0,0 +1,73 @@
+Description = rect mid
+# BORDER TYPES
+# 0 = none
+# 1 = rect
+# 2 = round
+# 3 = invert round
+# 4 = rect + alpha blend
+# 5 = round + alpha blend
+# 6 = invert round + alpha blend
+
+# PROGRESS TYPES
+# 0 = small line + big line
+# 1 = big line
+# 2 = big line + outline
+# 3 = small line + big line + dot
+# 4 = big line + dot
+# 5 = big line + outline + dot
+# 6 = small line + dot
+# 7 = outline + dot
+# 8 = small line + big line + alpha blend
+# 9 = big line + alpha blend
+
+# TopBar
+TopBarBorderType = 1
+TopBarBorderSize = 10
+
+# Buttons
+ButtonBorderType = 1
+ButtonBorderSize = 10
+
+# Messages
+MessageBorderType = 1
+MessageBorderSize = 10
+
+# Display Channel
+ChannelBorderType = 1
+ChannelBorderSize = 10
+ChannelEPGBorderType = 1
+ChannelEPGBorderSize = 10
+ChannelProgressType = 0
+ChannelProgressSize = 10
+ChannelSignalProgressType = 2
+ChannelSignalProgressSize = 10
+
+# Display Menu
+MenuContentHeadBorderType = 1
+MenuContentHeadBorderSize = 10
+MenuContentBorderType = 1
+MenuContentBorderSize = 10
+MenuItemBorderType = 1
+MenuItemBorderSize = 10
+MenuItemProgressType = 2
+MenuItemProgressSize = 20
+
+# Display Replay
+ReplayBorderType = 1
+ReplayBorderSize = 10
+ReplayProgressType = 0
+ReplayProgressSize = 32
+
+# Display Tracks
+TrackItemBorderType = 1
+TrackItemBorderSize = 10
+
+# Display Volume
+VolumeBorderType = 1
+VolumeBorderSize = 10
+VolumeProgressType = 3
+VolumeProgressSize = 10
+
+# Scrollbar
+ScrollBarType = 0
+ScrollBarSize = 15
\ No newline at end of file
diff --git a/decors/12_rect_big.decor b/decors/12_rect_big.decor
new file mode 100644
index 0000000..b6af43d
--- /dev/null
+++ b/decors/12_rect_big.decor
@@ -0,0 +1,73 @@
+Description = rect big
+# BORDER TYPES
+# 0 = none
+# 1 = rect
+# 2 = round
+# 3 = invert round
+# 4 = rect + alpha blend
+# 5 = round + alpha blend
+# 6 = invert round + alpha blend
+
+# PROGRESS TYPES
+# 0 = small line + big line
+# 1 = big line
+# 2 = big line + outline
+# 3 = small line + big line + dot
+# 4 = big line + dot
+# 5 = big line + outline + dot
+# 6 = small line + dot
+# 7 = outline + dot
+# 8 = small line + big line + alpha blend
+# 9 = big line + alpha blend
+
+# TopBar
+TopBarBorderType = 1
+TopBarBorderSize = 20
+
+# Buttons
+ButtonBorderType = 1
+ButtonBorderSize = 20
+
+# Messages
+MessageBorderType = 1
+MessageBorderSize = 20
+
+# Display Channel
+ChannelBorderType = 1
+ChannelBorderSize = 20
+ChannelEPGBorderType = 1
+ChannelEPGBorderSize = 20
+ChannelProgressType = 0
+ChannelProgressSize = 10
+ChannelSignalProgressType = 2
+ChannelSignalProgressSize = 10
+
+# Display Menu
+MenuContentHeadBorderType = 1
+MenuContentHeadBorderSize = 20
+MenuContentBorderType = 1
+MenuContentBorderSize = 20
+MenuItemBorderType = 1
+MenuItemBorderSize = 10
+MenuItemProgressType = 2
+MenuItemProgressSize = 20
+
+# Display Replay
+ReplayBorderType = 1
+ReplayBorderSize = 20
+ReplayProgressType = 0
+ReplayProgressSize = 32
+
+# Display Tracks
+TrackItemBorderType = 1
+TrackItemBorderSize = 20
+
+# Display Volume
+VolumeBorderType = 1
+VolumeBorderSize = 20
+VolumeProgressType = 3
+VolumeProgressSize = 10
+
+# Scrollbar
+ScrollBarType = 0
+ScrollBarSize = 20
\ No newline at end of file
diff --git a/decors/20_round_sml.decor b/decors/20_round_sml.decor
new file mode 100644
index 0000000..bb753cf
--- /dev/null
+++ b/decors/20_round_sml.decor
@@ -0,0 +1,73 @@
+Description = round sml
+# BORDER TYPES
+# 0 = none
+# 1 = rect
+# 2 = round
+# 3 = invert round
+# 4 = rect + alpha blend
+# 5 = round + alpha blend
+# 6 = invert round + alpha blend
+
+# PROGRESS TYPES
+# 0 = small line + big line
+# 1 = big line
+# 2 = big line + outline
+# 3 = small line + big line + dot
+# 4 = big line + dot
+# 5 = big line + outline + dot
+# 6 = small line + dot
+# 7 = outline + dot
+# 8 = small line + big line + alpha blend
+# 9 = big line + alpha blend
+
+# TopBar
+TopBarBorderType = 2
+TopBarBorderSize = 5
+
+# Buttons
+ButtonBorderType = 2
+ButtonBorderSize = 5
+
+# Messages
+MessageBorderType = 2
+MessageBorderSize = 5
+
+# Display Channel
+ChannelBorderType = 2
+ChannelBorderSize = 5
+ChannelEPGBorderType = 2
+ChannelEPGBorderSize = 5
+ChannelProgressType = 0
+ChannelProgressSize = 10
+ChannelSignalProgressType = 2
+ChannelSignalProgressSize = 10
+
+# Display Menu
+MenuContentHeadBorderType = 2
+MenuContentHeadBorderSize = 5
+MenuContentBorderType = 2
+MenuContentBorderSize = 5
+MenuItemBorderType = 2
+MenuItemBorderSize = 5
+MenuItemProgressType = 2
+MenuItemProgressSize = 20
+
+# Display Replay
+ReplayBorderType = 2
+ReplayBorderSize = 5
+ReplayProgressType = 0
+ReplayProgressSize = 32
+
+# Display Tracks
+TrackItemBorderType = 2
+TrackItemBorderSize = 5
+
+# Display Volume
+VolumeBorderType = 2
+VolumeBorderSize = 5
+VolumeProgressType = 3
+VolumeProgressSize = 10
+
+# Scrollbar
+ScrollBarType = 3
+ScrollBarSize = 10
\ No newline at end of file
diff --git a/decors/21_round_mid.decor b/decors/21_round_mid.decor
new file mode 100644
index 0000000..c5fa200
--- /dev/null
+++ b/decors/21_round_mid.decor
@@ -0,0 +1,73 @@
+Description = round mid
+# BORDER TYPES
+# 0 = none
+# 1 = rect
+# 2 = round
+# 3 = invert round
+# 4 = rect + alpha blend
+# 5 = round + alpha blend
+# 6 = invert round + alpha blend
+
+# PROGRESS TYPES
+# 0 = small line + big line
+# 1 = big line
+# 2 = big line + outline
+# 3 = small line + big line + dot
+# 4 = big line + dot
+# 5 = big line + outline + dot
+# 6 = small line + dot
+# 7 = outline + dot
+# 8 = small line + big line + alpha blend
+# 9 = big line + alpha blend
+
+# TopBar
+TopBarBorderType = 2
+TopBarBorderSize = 10
+
+# Buttons
+ButtonBorderType = 2
+ButtonBorderSize = 10
+
+# Messages
+MessageBorderType = 2
+MessageBorderSize = 10
+
+# Display Channel
+ChannelBorderType = 2
+ChannelBorderSize = 10
+ChannelEPGBorderType = 2
+ChannelEPGBorderSize = 10
+ChannelProgressType = 0
+ChannelProgressSize = 10
+ChannelSignalProgressType = 2
+ChannelSignalProgressSize = 10
+
+# Display Menu
+MenuContentHeadBorderType = 2
+MenuContentHeadBorderSize = 10
+MenuContentBorderType = 2
+MenuContentBorderSize = 10
+MenuItemBorderType = 2
+MenuItemBorderSize = 10
+MenuItemProgressType = 2
+MenuItemProgressSize = 20
+
+# Display Replay
+ReplayBorderType = 2
+ReplayBorderSize = 10
+ReplayProgressType = 0
+ReplayProgressSize = 32
+
+# Display Tracks
+TrackItemBorderType = 2
+TrackItemBorderSize = 10
+
+# Display Volume
+VolumeBorderType = 2
+VolumeBorderSize = 10
+VolumeProgressType = 3
+VolumeProgressSize = 10
+
+# Scrollbar
+ScrollBarType = 3
+ScrollBarSize = 15
\ No newline at end of file
diff --git a/decors/22_round_big.decor b/decors/22_round_big.decor
new file mode 100644
index 0000000..7ce7bbd
--- /dev/null
+++ b/decors/22_round_big.decor
@@ -0,0 +1,73 @@
+Description = round big
+# BORDER TYPES
+# 0 = none
+# 1 = rect
+# 2 = round
+# 3 = invert round
+# 4 = rect + alpha blend
+# 5 = round + alpha blend
+# 6 = invert round + alpha blend
+
+# PROGRESS TYPES
+# 0 = small line + big line
+# 1 = big line
+# 2 = big line + outline
+# 3 = small line + big line + dot
+# 4 = big line + dot
+# 5 = big line + outline + dot
+# 6 = small line + dot
+# 7 = outline + dot
+# 8 = small line + big line + alpha blend
+# 9 = big line + alpha blend
+
+# TopBar
+TopBarBorderType = 2
+TopBarBorderSize = 20
+
+# Buttons
+ButtonBorderType = 2
+ButtonBorderSize = 20
+
+# Messages
+MessageBorderType = 2
+MessageBorderSize = 20
+
+# Display Channel
+ChannelBorderType = 2
+ChannelBorderSize = 20
+ChannelEPGBorderType = 2
+ChannelEPGBorderSize = 20
+ChannelProgressType = 0
+ChannelProgressSize = 10
+ChannelSignalProgressType = 2
+ChannelSignalProgressSize = 10
+
+# Display Menu
+MenuContentHeadBorderType = 2
+MenuContentHeadBorderSize = 20
+MenuContentBorderType = 2
+MenuContentBorderSize = 20
+MenuItemBorderType = 2
+MenuItemBorderSize = 10
+MenuItemProgressType = 2
+MenuItemProgressSize = 20
+
+# Display Replay
+ReplayBorderType = 2
+ReplayBorderSize = 20
+ReplayProgressType = 0
+ReplayProgressSize = 32
+
+# Display Tracks
+TrackItemBorderType = 2
+TrackItemBorderSize = 20
+
+# Display Volume
+VolumeBorderType = 2
+VolumeBorderSize = 20
+VolumeProgressType = 3
+VolumeProgressSize = 10
+
+# Scrollbar
+ScrollBarType = 3
+ScrollBarSize = 20
\ No newline at end of file
diff --git a/decors/30_invert-round_sml.decor b/decors/30_invert-round_sml.decor
new file mode 100644
index 0000000..4830553
--- /dev/null
+++ b/decors/30_invert-round_sml.decor
@@ -0,0 +1,73 @@
+Description = invert round sml
+# BORDER TYPES
+# 0 = none
+# 1 = rect
+# 2 = round
+# 3 = invert round
+# 4 = rect + alpha blend
+# 5 = round + alpha blend
+# 6 = invert round + alpha blend
+
+# PROGRESS TYPES
+# 0 = small line + big line
+# 1 = big line
+# 2 = big line + outline
+# 3 = small line + big line + dot
+# 4 = big line + dot
+# 5 = big line + outline + dot
+# 6 = small line + dot
+# 7 = outline + dot
+# 8 = small line + big line + alpha blend
+# 9 = big line + alpha blend
+
+# TopBar
+TopBarBorderType = 3
+TopBarBorderSize = 5
+
+# Buttons
+ButtonBorderType = 3
+ButtonBorderSize = 5
+
+# Messages
+MessageBorderType = 3
+MessageBorderSize = 5
+
+# Display Channel
+ChannelBorderType = 3
+ChannelBorderSize = 5
+ChannelEPGBorderType = 3
+ChannelEPGBorderSize = 5
+ChannelProgressType = 0
+ChannelProgressSize = 10
+ChannelSignalProgressType = 2
+ChannelSignalProgressSize = 10
+
+# Display Menu
+MenuContentHeadBorderType = 3
+MenuContentHeadBorderSize = 5
+MenuContentBorderType = 3
+MenuContentBorderSize = 5
+MenuItemBorderType = 3
+MenuItemBorderSize = 5
+MenuItemProgressType = 2
+MenuItemProgressSize = 20
+
+# Display Replay
+ReplayBorderType = 3
+ReplayBorderSize = 5
+ReplayProgressType = 0
+ReplayProgressSize = 32
+
+# Display Tracks
+TrackItemBorderType = 3
+TrackItemBorderSize = 5
+
+# Display Volume
+VolumeBorderType = 3
+VolumeBorderSize = 5
+VolumeProgressType = 3
+VolumeProgressSize = 10
+
+# Scrollbar
+ScrollBarType = 0
+ScrollBarSize = 10
\ No newline at end of file
diff --git a/decors/31_invert-round_mid.decor b/decors/31_invert-round_mid.decor
new file mode 100644
index 0000000..f61d178
--- /dev/null
+++ b/decors/31_invert-round_mid.decor
@@ -0,0 +1,73 @@
+Description = invert round mid
+# BORDER TYPES
+# 0 = none
+# 1 = rect
+# 2 = round
+# 3 = invert round
+# 4 = rect + alpha blend
+# 5 = round + alpha blend
+# 6 = invert round + alpha blend
+
+# PROGRESS TYPES
+# 0 = small line + big line
+# 1 = big line
+# 2 = big line + outline
+# 3 = small line + big line + dot
+# 4 = big line + dot
+# 5 = big line + outline + dot
+# 6 = small line + dot
+# 7 = outline + dot
+# 8 = small line + big line + alpha blend
+# 9 = big line + alpha blend
+
+# TopBar
+TopBarBorderType = 3
+TopBarBorderSize = 10
+
+# Buttons
+ButtonBorderType = 3
+ButtonBorderSize = 10
+
+# Messages
+MessageBorderType = 3
+MessageBorderSize = 10
+
+# Display Channel
+ChannelBorderType = 3
+ChannelBorderSize = 10
+ChannelEPGBorderType = 3
+ChannelEPGBorderSize = 10
+ChannelProgressType = 0
+ChannelProgressSize = 10
+ChannelSignalProgressType = 2
+ChannelSignalProgressSize = 10
+
+# Display Menu
+MenuContentHeadBorderType = 3
+MenuContentHeadBorderSize = 10
+MenuContentBorderType = 3
+MenuContentBorderSize = 10
+MenuItemBorderType = 3
+MenuItemBorderSize = 10
+MenuItemProgressType = 2
+MenuItemProgressSize = 20
+
+# Display Replay
+ReplayBorderType = 3
+ReplayBorderSize = 10
+ReplayProgressType = 0
+ReplayProgressSize = 32
+
+# Display Tracks
+TrackItemBorderType = 3
+TrackItemBorderSize = 10
+
+# Display Volume
+VolumeBorderType = 3
+VolumeBorderSize = 10
+VolumeProgressType = 3
+VolumeProgressSize = 10
+
+# Scrollbar
+ScrollBarType = 0
+ScrollBarSize = 15
\ No newline at end of file
diff --git a/decors/32_invert-round_big.decor b/decors/32_invert-round_big.decor
new file mode 100644
index 0000000..aa5db8d
--- /dev/null
+++ b/decors/32_invert-round_big.decor
@@ -0,0 +1,73 @@
+Description = invert round big
+# BORDER TYPES
+# 0 = none
+# 1 = rect
+# 2 = round
+# 3 = invert round
+# 4 = rect + alpha blend
+# 5 = round + alpha blend
+# 6 = invert round + alpha blend
+
+# PROGRESS TYPES
+# 0 = small line + big line
+# 1 = big line
+# 2 = big line + outline
+# 3 = small line + big line + dot
+# 4 = big line + dot
+# 5 = big line + outline + dot
+# 6 = small line + dot
+# 7 = outline + dot
+# 8 = small line + big line + alpha blend
+# 9 = big line + alpha blend
+
+# TopBar
+TopBarBorderType = 3
+TopBarBorderSize = 20
+
+# Buttons
+ButtonBorderType = 3
+ButtonBorderSize = 20
+
+# Messages
+MessageBorderType = 3
+MessageBorderSize = 20
+
+# Display Channel
+ChannelBorderType = 3
+ChannelBorderSize = 20
+ChannelEPGBorderType = 3
+ChannelEPGBorderSize = 20
+ChannelProgressType = 0
+ChannelProgressSize = 10
+ChannelSignalProgressType = 2
+ChannelSignalProgressSize = 10
+
+# Display Menu
+MenuContentHeadBorderType = 3
+MenuContentHeadBorderSize = 20
+MenuContentBorderType = 3
+MenuContentBorderSize = 20
+MenuItemBorderType = 3
+MenuItemBorderSize = 10
+MenuItemProgressType = 2
+MenuItemProgressSize = 20
+
+# Display Replay
+ReplayBorderType = 3
+ReplayBorderSize = 20
+ReplayProgressType = 0
+ReplayProgressSize = 32
+
+# Display Tracks
+TrackItemBorderType = 3
+TrackItemBorderSize = 20
+
+# Display Volume
+VolumeBorderType = 3
+VolumeBorderSize = 20
+VolumeProgressType = 3
+VolumeProgressSize = 10
+
+# Scrollbar
+ScrollBarType = 0
+ScrollBarSize = 20
\ No newline at end of file
diff --git a/decors/40_rect-alpha_sml.decor b/decors/40_rect-alpha_sml.decor
new file mode 100644
index 0000000..832d2c6
--- /dev/null
+++ b/decors/40_rect-alpha_sml.decor
@@ -0,0 +1,73 @@
+Description = rect alpha sml
+# BORDER TYPES
+# 0 = none
+# 1 = rect
+# 2 = round
+# 3 = invert round
+# 4 = rect + alpha blend
+# 5 = round + alpha blend
+# 6 = invert round + alpha blend
+
+# PROGRESS TYPES
+# 0 = small line + big line
+# 1 = big line
+# 2 = big line + outline
+# 3 = small line + big line + dot
+# 4 = big line + dot
+# 5 = big line + outline + dot
+# 6 = small line + dot
+# 7 = outline + dot
+# 8 = small line + big line + alpha blend
+# 9 = big line + alpha blend
+
+# TopBar
+TopBarBorderType = 4
+TopBarBorderSize = 5
+
+# Buttons
+ButtonBorderType = 4
+ButtonBorderSize = 5
+
+# Messages
+MessageBorderType = 4
+MessageBorderSize = 5
+
+# Display Channel
+ChannelBorderType = 4
+ChannelBorderSize = 5
+ChannelEPGBorderType = 4
+ChannelEPGBorderSize = 5
+ChannelProgressType = 0
+ChannelProgressSize = 10
+ChannelSignalProgressType = 2
+ChannelSignalProgressSize = 10
+
+# Display Menu
+MenuContentHeadBorderType = 4
+MenuContentHeadBorderSize = 5
+MenuContentBorderType = 4
+MenuContentBorderSize = 5
+MenuItemBorderType = 4
+MenuItemBorderSize = 5
+MenuItemProgressType = 2
+MenuItemProgressSize = 20
+
+# Display Replay
+ReplayBorderType = 4
+ReplayBorderSize = 5
+ReplayProgressType = 0
+ReplayProgressSize = 32
+
+# Display Tracks
+TrackItemBorderType = 4
+TrackItemBorderSize = 5
+
+# Display Volume
+VolumeBorderType = 4
+VolumeBorderSize = 5
+VolumeProgressType = 3
+VolumeProgressSize = 10
+
+# Scrollbar
+ScrollBarType = 0
+ScrollBarSize = 10
\ No newline at end of file
diff --git a/decors/41_rect-alpha_mid.decor b/decors/41_rect-alpha_mid.decor
new file mode 100644
index 0000000..92fd1bb
--- /dev/null
+++ b/decors/41_rect-alpha_mid.decor
@@ -0,0 +1,73 @@
+Description = rect alpha mid
+# BORDER TYPES
+# 0 = none
+# 1 = rect
+# 2 = round
+# 3 = invert round
+# 4 = rect + alpha blend
+# 5 = round + alpha blend
+# 6 = invert round + alpha blend
+
+# PROGRESS TYPES
+# 0 = small line + big line
+# 1 = big line
+# 2 = big line + outline
+# 3 = small line + big line + dot
+# 4 = big line + dot
+# 5 = big line + outline + dot
+# 6 = small line + dot
+# 7 = outline + dot
+# 8 = small line + big line + alpha blend
+# 9 = big line + alpha blend
+
+# TopBar
+TopBarBorderType = 4
+TopBarBorderSize = 10
+
+# Buttons
+ButtonBorderType = 4
+ButtonBorderSize = 10
+
+# Messages
+MessageBorderType = 4
+MessageBorderSize = 10
+
+# Display Channel
+ChannelBorderType = 4
+ChannelBorderSize = 10
+ChannelEPGBorderType = 4
+ChannelEPGBorderSize = 10
+ChannelProgressType = 0
+ChannelProgressSize = 10
+ChannelSignalProgressType = 2
+ChannelSignalProgressSize = 10
+
+# Display Menu
+MenuContentHeadBorderType = 4
+MenuContentHeadBorderSize = 10
+MenuContentBorderType = 4
+MenuContentBorderSize = 10
+MenuItemBorderType = 4
+MenuItemBorderSize = 10
+MenuItemProgressType = 2
+MenuItemProgressSize = 20
+
+# Display Replay
+ReplayBorderType = 4
+ReplayBorderSize = 10
+ReplayProgressType = 0
+ReplayProgressSize = 32
+
+# Display Tracks
+TrackItemBorderType = 4
+TrackItemBorderSize = 10
+
+# Display Volume
+VolumeBorderType = 4
+VolumeBorderSize = 10
+VolumeProgressType = 3
+VolumeProgressSize = 10
+
+# Scrollbar
+ScrollBarType = 0
+ScrollBarSize = 15
\ No newline at end of file
diff --git a/decors/42_rect-alpha_big.decor b/decors/42_rect-alpha_big.decor
new file mode 100644
index 0000000..523fad2
--- /dev/null
+++ b/decors/42_rect-alpha_big.decor
@@ -0,0 +1,73 @@
+Description = rect alpha big
+# BORDER TYPES
+# 0 = none
+# 1 = rect
+# 2 = round
+# 3 = invert round
+# 4 = rect + alpha blend
+# 5 = round + alpha blend
+# 6 = invert round + alpha blend
+
+# PROGRESS TYPES
+# 0 = small line + big line
+# 1 = big line
+# 2 = big line + outline
+# 3 = small line + big line + dot
+# 4 = big line + dot
+# 5 = big line + outline + dot
+# 6 = small line + dot
+# 7 = outline + dot
+# 8 = small line + big line + alpha blend
+# 9 = big line + alpha blend
+
+# TopBar
+TopBarBorderType = 4
+TopBarBorderSize = 20
+
+# Buttons
+ButtonBorderType = 4
+ButtonBorderSize = 20
+
+# Messages
+MessageBorderType = 4
+MessageBorderSize = 20
+
+# Display Channel
+ChannelBorderType = 4
+ChannelBorderSize = 20
+ChannelEPGBorderType = 4
+ChannelEPGBorderSize = 20
+ChannelProgressType = 0
+ChannelProgressSize = 10
+ChannelSignalProgressType = 2
+ChannelSignalProgressSize = 10
+
+# Display Menu
+MenuContentHeadBorderType = 4
+MenuContentHeadBorderSize = 20
+MenuContentBorderType = 4
+MenuContentBorderSize = 20
+MenuItemBorderType = 4
+MenuItemBorderSize = 10
+MenuItemProgressType = 2
+MenuItemProgressSize = 20
+
+# Display Replay
+ReplayBorderType = 4
+ReplayBorderSize = 20
+ReplayProgressType = 0
+ReplayProgressSize = 32
+
+# Display Tracks
+TrackItemBorderType = 4
+TrackItemBorderSize = 20
+
+# Display Volume
+VolumeBorderType = 4
+VolumeBorderSize = 20
+VolumeProgressType = 3
+VolumeProgressSize = 10
+
+# Scrollbar
+ScrollBarType = 0
+ScrollBarSize = 20
\ No newline at end of file
diff --git a/decors/50_round-alpha_sml.decor b/decors/50_round-alpha_sml.decor
new file mode 100644
index 0000000..396bad6
--- /dev/null
+++ b/decors/50_round-alpha_sml.decor
@@ -0,0 +1,73 @@
+Description = round alpha sml
+# BORDER TYPES
+# 0 = none
+# 1 = rect
+# 2 = round
+# 3 = invert round
+# 4 = rect + alpha blend
+# 5 = round + alpha blend
+# 6 = invert round + alpha blend
+
+# PROGRESS TYPES
+# 0 = small line + big line
+# 1 = big line
+# 2 = big line + outline
+# 3 = small line + big line + dot
+# 4 = big line + dot
+# 5 = big line + outline + dot
+# 6 = small line + dot
+# 7 = outline + dot
+# 8 = small line + big line + alpha blend
+# 9 = big line + alpha blend
+
+# TopBar
+TopBarBorderType = 5
+TopBarBorderSize = 5
+
+# Buttons
+ButtonBorderType = 5
+ButtonBorderSize = 5
+
+# Messages
+MessageBorderType = 5
+MessageBorderSize = 5
+
+# Display Channel
+ChannelBorderType = 5
+ChannelBorderSize = 5
+ChannelEPGBorderType = 5
+ChannelEPGBorderSize = 5
+ChannelProgressType = 0
+ChannelProgressSize = 10
+ChannelSignalProgressType = 2
+ChannelSignalProgressSize = 10
+
+# Display Menu
+MenuContentHeadBorderType = 5
+MenuContentHeadBorderSize = 5
+MenuContentBorderType = 5
+MenuContentBorderSize = 5
+MenuItemBorderType = 5
+MenuItemBorderSize = 5
+MenuItemProgressType = 2
+MenuItemProgressSize = 20
+
+# Display Replay
+ReplayBorderType = 5
+ReplayBorderSize = 5
+ReplayProgressType = 0
+ReplayProgressSize = 32
+
+# Display Tracks
+TrackItemBorderType = 5
+TrackItemBorderSize = 5
+
+# Display Volume
+VolumeBorderType = 5
+VolumeBorderSize = 5
+VolumeProgressType = 3
+VolumeProgressSize = 10
+
+# Scrollbar
+ScrollBarType = 3
+ScrollBarSize = 10
\ No newline at end of file
diff --git a/decors/51_round-alpha_mid.decor b/decors/51_round-alpha_mid.decor
new file mode 100644
index 0000000..73406ac
--- /dev/null
+++ b/decors/51_round-alpha_mid.decor
@@ -0,0 +1,73 @@
+Description = round alpha mid
+# BORDER TYPES
+# 0 = none
+# 1 = rect
+# 2 = round
+# 3 = invert round
+# 4 = rect + alpha blend
+# 5 = round + alpha blend
+# 6 = invert round + alpha blend
+
+# PROGRESS TYPES
+# 0 = small line + big line
+# 1 = big line
+# 2 = big line + outline
+# 3 = small line + big line + dot
+# 4 = big line + dot
+# 5 = big line + outline + dot
+# 6 = small line + dot
+# 7 = outline + dot
+# 8 = small line + big line + alpha blend
+# 9 = big line + alpha blend
+
+# TopBar
+TopBarBorderType = 5
+TopBarBorderSize = 10
+
+# Buttons
+ButtonBorderType = 5
+ButtonBorderSize = 10
+
+# Messages
+MessageBorderType = 5
+MessageBorderSize = 10
+
+# Display Channel
+ChannelBorderType = 5
+ChannelBorderSize = 10
+ChannelEPGBorderType = 5
+ChannelEPGBorderSize = 10
+ChannelProgressType = 0
+ChannelProgressSize = 10
+ChannelSignalProgressType = 2
+ChannelSignalProgressSize = 10
+
+# Display Menu
+MenuContentHeadBorderType = 5
+MenuContentHeadBorderSize = 10
+MenuContentBorderType = 5
+MenuContentBorderSize = 10
+MenuItemBorderType = 5
+MenuItemBorderSize = 10
+MenuItemProgressType = 2
+MenuItemProgressSize = 20
+
+# Display Replay
+ReplayBorderType = 5
+ReplayBorderSize = 10
+ReplayProgressType = 0
+ReplayProgressSize = 32
+
+# Display Tracks
+TrackItemBorderType = 5
+TrackItemBorderSize = 10
+
+# Display Volume
+VolumeBorderType = 5
+VolumeBorderSize = 10
+VolumeProgressType = 3
+VolumeProgressSize = 10
+
+# Scrollbar
+ScrollBarType = 3
+ScrollBarSize = 15
\ No newline at end of file
diff --git a/decors/52_round-alpha_big.decor b/decors/52_round-alpha_big.decor
new file mode 100644
index 0000000..7735159
--- /dev/null
+++ b/decors/52_round-alpha_big.decor
@@ -0,0 +1,73 @@
+Description = round alpha big
+# BORDER TYPES
+# 0 = none
+# 1 = rect
+# 2 = round
+# 3 = invert round
+# 4 = rect + alpha blend
+# 5 = round + alpha blend
+# 6 = invert round + alpha blend
+
+# PROGRESS TYPES
+# 0 = small line + big line
+# 1 = big line
+# 2 = big line + outline
+# 3 = small line + big line + dot
+# 4 = big line + dot
+# 5 = big line + outline + dot
+# 6 = small line + dot
+# 7 = outline + dot
+# 8 = small line + big line + alpha blend
+# 9 = big line + alpha blend
+
+# TopBar
+TopBarBorderType = 5
+TopBarBorderSize = 20
+
+# Buttons
+ButtonBorderType = 5
+ButtonBorderSize = 20
+
+# Messages
+MessageBorderType = 5
+MessageBorderSize = 20
+
+# Display Channel
+ChannelBorderType = 5
+ChannelBorderSize = 20
+ChannelEPGBorderType = 5
+ChannelEPGBorderSize = 20
+ChannelProgressType = 0
+ChannelProgressSize = 10
+ChannelSignalProgressType = 2
+ChannelSignalProgressSize = 10
+
+# Display Menu
+MenuContentHeadBorderType = 5
+MenuContentHeadBorderSize = 20
+MenuContentBorderType = 5
+MenuContentBorderSize = 20
+MenuItemBorderType = 5
+MenuItemBorderSize = 10
+MenuItemProgressType = 2
+MenuItemProgressSize = 20
+
+# Display Replay
+ReplayBorderType = 5
+ReplayBorderSize = 20
+ReplayProgressType = 0
+ReplayProgressSize = 32
+
+# Display Tracks
+TrackItemBorderType = 5
+TrackItemBorderSize = 20
+
+# Display Volume
+VolumeBorderType = 5
+VolumeBorderSize = 20
+VolumeProgressType = 3
+VolumeProgressSize = 10
+
+# Scrollbar
+ScrollBarType = 3
+ScrollBarSize = 20
\ No newline at end of file
diff --git a/decors/60_invert-round-alpha_sml.decor b/decors/60_invert-round-alpha_sml.decor
new file mode 100644
index 0000000..9eb7470
--- /dev/null
+++ b/decors/60_invert-round-alpha_sml.decor
@@ -0,0 +1,73 @@
+Description = invert round alpha sml
+# BORDER TYPES
+# 0 = none
+# 1 = rect
+# 2 = round
+# 3 = invert round
+# 4 = rect + alpha blend
+# 5 = round + alpha blend
+# 6 = invert round + alpha blend
+
+# PROGRESS TYPES
+# 0 = small line + big line
+# 1 = big line
+# 2 = big line + outline
+# 3 = small line + big line + dot
+# 4 = big line + dot
+# 5 = big line + outline + dot
+# 6 = small line + dot
+# 7 = outline + dot
+# 8 = small line + big line + alpha blend
+# 9 = big line + alpha blend
+
+# TopBar
+TopBarBorderType = 6
+TopBarBorderSize = 5
+
+# Buttons
+ButtonBorderType = 6
+ButtonBorderSize = 5
+
+# Messages
+MessageBorderType = 6
+MessageBorderSize = 5
+
+# Display Channel
+ChannelBorderType = 6
+ChannelBorderSize = 5
+ChannelEPGBorderType = 6
+ChannelEPGBorderSize = 5
+ChannelProgressType = 0
+ChannelProgressSize = 10
+ChannelSignalProgressType = 2
+ChannelSignalProgressSize = 10
+
+# Display Menu
+MenuContentHeadBorderType = 6
+MenuContentHeadBorderSize = 5
+MenuContentBorderType = 6
+MenuContentBorderSize = 5
+MenuItemBorderType = 6
+MenuItemBorderSize = 5
+MenuItemProgressType = 2
+MenuItemProgressSize = 20
+
+# Display Replay
+ReplayBorderType = 6
+ReplayBorderSize = 5
+ReplayProgressType = 0
+ReplayProgressSize = 32
+
+# Display Tracks
+TrackItemBorderType = 6
+TrackItemBorderSize = 5
+
+# Display Volume
+VolumeBorderType = 6
+VolumeBorderSize = 5
+VolumeProgressType = 3
+VolumeProgressSize = 10
+
+# Scrollbar
+ScrollBarType = 0
+ScrollBarSize = 10
\ No newline at end of file
diff --git a/decors/61_invert-round-alpha_mid.decor b/decors/61_invert-round-alpha_mid.decor
new file mode 100644
index 0000000..37fd729
--- /dev/null
+++ b/decors/61_invert-round-alpha_mid.decor
@@ -0,0 +1,73 @@
+Description = invert round alpha mid
+# BORDER TYPES
+# 0 = none
+# 1 = rect
+# 2 = round
+# 3 = invert round
+# 4 = rect + alpha blend
+# 5 = round + alpha blend
+# 6 = invert round + alpha blend
+
+# PROGRESS TYPES
+# 0 = small line + big line
+# 1 = big line
+# 2 = big line + outline
+# 3 = small line + big line + dot
+# 4 = big line + dot
+# 5 = big line + outline + dot
+# 6 = small line + dot
+# 7 = outline + dot
+# 8 = small line + big line + alpha blend
+# 9 = big line + alpha blend
+
+# TopBar
+TopBarBorderType = 6
+TopBarBorderSize = 10
+
+# Buttons
+ButtonBorderType = 6
+ButtonBorderSize = 10
+
+# Messages
+MessageBorderType = 6
+MessageBorderSize = 10
+
+# Display Channel
+ChannelBorderType = 6
+ChannelBorderSize = 10
+ChannelEPGBorderType = 6
+ChannelEPGBorderSize = 10
+ChannelProgressType = 0
+ChannelProgressSize = 10
+ChannelSignalProgressType = 2
+ChannelSignalProgressSize = 10
+
+# Display Menu
+MenuContentHeadBorderType = 6
+MenuContentHeadBorderSize = 10
+MenuContentBorderType = 6
+MenuContentBorderSize = 10
+MenuItemBorderType = 6
+MenuItemBorderSize = 10
+MenuItemProgressType = 2
+MenuItemProgressSize = 20
+
+# Display Replay
+ReplayBorderType = 6
+ReplayBorderSize = 10
+ReplayProgressType = 0
+ReplayProgressSize = 32
+
+# Display Tracks
+TrackItemBorderType = 6
+TrackItemBorderSize = 10
+
+# Display Volume
+VolumeBorderType = 6
+VolumeBorderSize = 10
+VolumeProgressType = 3
+VolumeProgressSize = 10
+
+# Scrollbar
+ScrollBarType = 0
+ScrollBarSize = 15
\ No newline at end of file
diff --git a/decors/62_invert-round-alpha_big.decor b/decors/62_invert-round-alpha_big.decor
new file mode 100644
index 0000000..ea71a59
--- /dev/null
+++ b/decors/62_invert-round-alpha_big.decor
@@ -0,0 +1,73 @@
+Description = invert round alpha big
+# BORDER TYPES
+# 0 = none
+# 1 = rect
+# 2 = round
+# 3 = invert round
+# 4 = rect + alpha blend
+# 5 = round + alpha blend
+# 6 = invert round + alpha blend
+
+# PROGRESS TYPES
+# 0 = small line + big line
+# 1 = big line
+# 2 = big line + outline
+# 3 = small line + big line + dot
+# 4 = big line + dot
+# 5 = big line + outline + dot
+# 6 = small line + dot
+# 7 = outline + dot
+# 8 = small line + big line + alpha blend
+# 9 = big line + alpha blend
+
+# TopBar
+TopBarBorderType = 6
+TopBarBorderSize = 20
+
+# Buttons
+ButtonBorderType = 6
+ButtonBorderSize = 20
+
+# Messages
+MessageBorderType = 6
+MessageBorderSize = 20
+
+# Display Channel
+ChannelBorderType = 6
+ChannelBorderSize = 20
+ChannelEPGBorderType = 6
+ChannelEPGBorderSize = 20
+ChannelProgressType = 0
+ChannelProgressSize = 10
+ChannelSignalProgressType = 2
+ChannelSignalProgressSize = 10
+
+# Display Menu
+MenuContentHeadBorderType = 6
+MenuContentHeadBorderSize = 20
+MenuContentBorderType = 6
+MenuContentBorderSize = 20
+MenuItemBorderType = 6
+MenuItemBorderSize = 10
+MenuItemProgressType = 2
+MenuItemProgressSize = 20
+
+# Display Replay
+ReplayBorderType = 6
+ReplayBorderSize = 20
+ReplayProgressType = 0
+ReplayProgressSize = 32
+
+# Display Tracks
+TrackItemBorderType = 6
+TrackItemBorderSize = 20
+
+# Display Volume
+VolumeBorderType = 6
+VolumeBorderSize = 20
+VolumeProgressType = 3
+VolumeProgressSize = 10
+
+# Scrollbar
+ScrollBarType = 0
+ScrollBarSize = 20
\ No newline at end of file
diff --git a/decors/70_MV_rect_sml.decor b/decors/70_MV_rect_sml.decor
new file mode 100644
index 0000000..5a37bb3
--- /dev/null
+++ b/decors/70_MV_rect_sml.decor
@@ -0,0 +1,73 @@
+Description = MV rect sml
+# BORDER TYPES
+# 0 = none
+# 1 = rect
+# 2 = round
+# 3 = invert round
+# 4 = rect + alpha blend
+# 5 = round + alpha blend
+# 6 = invert round + alpha blend
+
+# PROGRESS TYPES
+# 0 = small line + big line
+# 1 = big line
+# 2 = big line + outline
+# 3 = small line + big line + dot
+# 4 = big line + dot
+# 5 = big line + outline + dot
+# 6 = small line + dot
+# 7 = outline + dot
+# 8 = small line + big line + alpha blend
+# 9 = big line + alpha blend
+
+# TopBar
+TopBarBorderType = 1
+TopBarBorderSize = 2
+
+# Buttons
+ButtonBorderType = 0
+ButtonBorderSize = 2
+
+# Messages
+MessageBorderType = 0
+MessageBorderSize = 2
+
+# Display Channel
+ChannelBorderType = 1
+ChannelBorderSize = 5
+ChannelEPGBorderType = 1
+ChannelEPGBorderSize = 5
+ChannelProgressType = 0
+ChannelProgressSize = 10
+ChannelSignalProgressType = 2
+ChannelSignalProgressSize = 10
+
+# Display Menu
+MenuItemBorderType = 1
+MenuItemBorderSize = 2
+MenuContentHeadBorderType = 1
+MenuContentHeadBorderSize = 2
+MenuContentBorderType = 1
+MenuContentBorderSize = 5
+MenuItemProgressType = 2
+MenuItemProgressSize = 20
+
+# Display Replay
+ReplayBorderType = 1
+ReplayBorderSize = 10
+ReplayProgressType = 0
+ReplayProgressSize = 20
+
+# Display Tracks
+TrackItemBorderType = 1
+TrackItemBorderSize = 5
+
+# Display Volume
+VolumeBorderType = 1
+VolumeBorderSize = 15
+VolumeProgressType = 0
+VolumeProgressSize = 25
+
+# Scrollbar
+ScrollBarType = 0
+ScrollBarSize = 15
diff --git a/decors/99_none.decor b/decors/99_none.decor
new file mode 100644
index 0000000..99143ec
--- /dev/null
+++ b/decors/99_none.decor
@@ -0,0 +1,73 @@
+Description = no borders
+# BORDER TYPES
+# 0 = none
+# 1 = rect
+# 2 = round
+# 3 = invert round
+# 4 = rect + alpha blend
+# 5 = round + alpha blend
+# 6 = invert round + alpha blend
+
+# PROGRESS TYPES
+# 0 = small line + big line
+# 1 = big line
+# 2 = big line + outline
+# 3 = small line + big line + dot
+# 4 = big line + dot
+# 5 = big line + outline + dot
+# 6 = small line + dot
+# 7 = outline + dot
+# 8 = small line + big line + alpha blend
+# 9 = big line + alpha blend
+
+# TopBar
+TopBarBorderType = 0
+TopBarBorderSize = 0
+
+# Buttons
+ButtonBorderType = 0
+ButtonBorderSize = 0
+
+# Messages
+MessageBorderType = 0
+MessageBorderSize = 0
+
+# Display Channel
+ChannelBorderType = 0
+ChannelBorderSize = 0
+ChannelEPGBorderType = 0
+ChannelEPGBorderSize = 0
+ChannelProgressType = 0
+ChannelProgressSize = 10
+ChannelSignalProgressType = 2
+ChannelSignalProgressSize = 10
+
+# Display Menu
+MenuContentHeadBorderType = 0
+MenuContentHeadBorderSize = 0
+MenuContentBorderType = 0
+MenuContentBorderSize = 0
+MenuItemBorderType = 0
+MenuItemBorderSize = 0
+MenuItemProgressType = 2
+MenuItemProgressSize = 20
+
+# Display Replay
+ReplayBorderType = 0
+ReplayBorderSize = 0
+ReplayProgressType = 0
+ReplayProgressSize = 32
+
+# Display Tracks
+TrackItemBorderType = 0
+TrackItemBorderSize = 0
+
+# Display Volume
+VolumeBorderType = 0
+VolumeBorderSize = 0
+VolumeProgressType = 3
+VolumeProgressSize = 10
+
+# Scrollbar
+ScrollBarType = 0
+ScrollBarSize = 10
\ No newline at end of file
diff --git a/displaychannel.c b/displaychannel.c
new file mode 100644
index 0000000..ee4ce3e
--- /dev/null
+++ b/displaychannel.c
@@ -0,0 +1,724 @@
+#include "displaychannel.h"
+#include "flat.h"
+
+cFlatDisplayChannel::cFlatDisplayChannel(bool WithInfo) : m_Receiver(NULL) {
+ if (firstDisplay) {
+ firstDisplay = false;
+ doOutput = false;
+ return;
+ } else
+ doOutput = true;
+
+ present = NULL;
+ channelName = "";
+ chanInfoTopPixmap = NULL;
+ chanInfoBottomPixmap = NULL;
+ chanLogoPixmap = NULL;
+ chanLogoBGPixmap = NULL;
+ chanIconsPixmap = NULL;
+ chanEpgImagesPixmap = NULL;
+
+ isGroup = false;
+ isRecording = false,
+ isRadioChannel = false;
+
+ screenWidth = lastScreenWidth = -1;
+ LastSignalStrength = -1;
+ LastSignalQuality = -1;
+
+ CreateFullOsd();
+ if ( !osd )
+ return;
+ TopBarCreate();
+ MessageCreate();
+
+ channelWidth = osdWidth - Config.decorBorderChannelSize*2;
+ channelHeight = osdHeight - Config.decorBorderChannelSize*2;
+ // von unten noch oben
+ // 2*EPG + 2*EPGsml
+ heightBottom = (fontHeight*2) + (fontSmlHeight*2) + marginItem; // Top, Buttom, Between
+ heightImageLogo = heightBottom;
+ if( Config.SignalQualityShow )
+ heightBottom += max(fontSmlHeight, (Config.decorProgressSignalSize*2) + marginItem) + marginItem;
+ else if( Config.ChannelIconsShow )
+ heightBottom += fontSmlHeight + marginItem;
+
+ int heightTop = fontHeight;
+
+ int height = heightBottom;
+ chanInfoBottomPixmap = osd->CreatePixmap(1, cRect(Config.decorBorderChannelSize,
+ Config.decorBorderChannelSize+channelHeight - height, channelWidth, heightBottom));
+ chanInfoBottomPixmap->Fill( Theme.Color(clrChannelBg) );
+
+ chanIconsPixmap = osd->CreatePixmap(2, cRect(Config.decorBorderChannelSize,
+ Config.decorBorderChannelSize+channelHeight - height, channelWidth, heightBottom));
+ chanIconsPixmap->Fill( clrTransparent );
+
+ TVSLeft = 20 + Config.decorBorderChannelEPGSize;
+ TVSTop = topBarHeight + Config.decorBorderTopBarSize*2 + 20 + Config.decorBorderChannelEPGSize;
+ TVSWidth = osdWidth - 40 - Config.decorBorderChannelEPGSize*2;
+ TVSHeight = osdHeight - topBarHeight - heightBottom - 40 - Config.decorBorderChannelEPGSize*2;
+
+ chanEpgImagesPixmap = osd->CreatePixmap(2, cRect(TVSLeft, TVSTop, TVSWidth, TVSHeight));
+ chanEpgImagesPixmap->Fill( clrTransparent );
+
+ chanLogoBGPixmap = osd->CreatePixmap(2, cRect(Config.decorBorderChannelSize,
+ Config.decorBorderChannelSize+channelHeight - height, heightBottom*2, heightBottom*2));
+ chanLogoBGPixmap->Fill( clrTransparent );
+
+ chanLogoPixmap = osd->CreatePixmap(3, cRect(Config.decorBorderChannelSize,
+ Config.decorBorderChannelSize+channelHeight - height, heightBottom*2, heightBottom*2));
+ chanLogoPixmap->Fill( clrTransparent );
+
+ height += Config.decorProgressChannelSize + marginItem*2;
+ ProgressBarCreate(Config.decorBorderChannelSize, Config.decorBorderChannelSize+channelHeight - height + marginItem,
+ channelWidth, Config.decorProgressChannelSize, marginItem, 0,
+ Config.decorProgressChannelFg, Config.decorProgressChannelBarFg, Config.decorProgressChannelBg, Config.decorProgressChannelType, true);
+
+ ProgressBarDrawBgColor();
+
+ height += heightTop;
+ chanInfoTopPixmap = osd->CreatePixmap(1, cRect(Config.decorBorderChannelSize,
+ Config.decorBorderChannelSize+channelHeight - height, channelWidth, heightTop));
+ chanInfoTopPixmap->Fill( clrTransparent );
+
+ scrollers.SetOsd(osd);
+ scrollers.SetScrollStep( Config.ScrollerStep );
+ scrollers.SetScrollDelay( Config.ScrollerDelay );
+ scrollers.SetScrollType( Config.ScrollerType );
+
+ bitrateVideo = bitrateAudio = bitrateDolby = 0.0;
+ m_Receiver = NULL;
+ /*
+ if( Config.ChannelBitrateShow ) {
+ const cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
+ eTrackType track = cDevice::PrimaryDevice()->GetCurrentAudioTrack();
+ if( channel ) {
+ m_Receiver = new cFemonReceiver(channel, IS_AUDIO_TRACK(track) ? int(track - ttAudioFirst) : 0, IS_DOLBY_TRACK(track) ? int(track - ttDolbyFirst) : 0);
+ cDevice::ActualDevice()->AttachReceiver(m_Receiver);
+ }
+ }
+ */
+ if( Config.ChannelWeatherShow )
+ DrawWidgetWeather();
+
+ DecorBorderDraw(Config.decorBorderChannelSize, Config.decorBorderChannelSize+channelHeight - height,
+ channelWidth, heightTop + heightBottom + Config.decorProgressChannelSize+marginItem*2,
+ Config.decorBorderChannelSize, Config.decorBorderChannelType, Config.decorBorderChannelFg, Config.decorBorderChannelBg);
+}
+
+cFlatDisplayChannel::~cFlatDisplayChannel() {
+
+ if (m_Receiver != NULL ) {
+ m_Receiver->Deactivate();
+ delete m_Receiver;
+ }
+ if( !doOutput )
+ return;
+ if (osd) {
+ scrollers.Clear();
+
+ if( chanInfoTopPixmap )
+ osd->DestroyPixmap(chanInfoTopPixmap);
+ if( chanInfoBottomPixmap )
+ osd->DestroyPixmap(chanInfoBottomPixmap);
+ if( chanLogoPixmap )
+ osd->DestroyPixmap(chanLogoPixmap);
+ if( chanLogoBGPixmap )
+ osd->DestroyPixmap(chanLogoBGPixmap);
+ if( chanIconsPixmap )
+ osd->DestroyPixmap(chanIconsPixmap);
+ if( chanEpgImagesPixmap )
+ osd->DestroyPixmap(chanEpgImagesPixmap);
+ }
+}
+
+void cFlatDisplayChannel::SetChannel(const cChannel *Channel, int Number) {
+ if( !doOutput )
+ return;
+ cString channelNumber("");
+ isRecording = false;
+ chanIconsPixmap->Fill( clrTransparent );
+ lastScreenWidth = -1;
+
+ if (Channel) {
+ isRadioChannel = ((!Channel->Vpid())&&(Channel->Apid(0))) ? true : false;
+ isGroup = Channel->GroupSep();
+
+ channelName = Channel->Name();
+ if (!Channel->GroupSep())
+ channelNumber = cString::sprintf("%d%s", Channel->Number(), Number ? "-" : "");
+ else if (Number)
+ channelNumber = cString::sprintf("%d-", Number);
+
+ CurChannel = Channel;
+ } else
+ channelName = ChannelString(NULL, 0);
+
+ cString channelString = cString::sprintf("%s %s", *channelNumber, *channelName);
+
+ chanInfoTopPixmap->Fill(Theme.Color(clrChannelBg));
+ chanInfoTopPixmap->DrawText(cPoint(50, 0), channelString, Theme.Color(clrChannelFontTitle), Theme.Color(clrChannelBg), font);
+
+ chanLogoPixmap->Fill(clrTransparent);
+ chanLogoBGPixmap->Fill(clrTransparent);
+ int imageHeight = heightImageLogo - marginItem*2;
+ int imageBGHeight = imageHeight;
+ int imageBGWidth = imageHeight;
+ int imageLeft = marginItem*2;
+ int imageTop = marginItem;
+ cImage *imgBG = imgLoader.LoadIcon("logo_background", imageHeight*1.34, imageHeight);
+ if( imgBG ) {
+ imageBGHeight = imgBG->Height();
+ imageBGWidth = imgBG->Width();
+ chanLogoBGPixmap->DrawImage( cPoint(imageLeft, imageTop), *imgBG );
+ }
+
+ cImage *img = imgLoader.LoadLogo(*channelName, imageBGWidth - 4, imageBGHeight - 4);
+ if( img ) {
+ imageTop = marginItem + (imageBGHeight - img->Height()) / 2;
+ imageLeft = marginItem*2 + (imageBGWidth - img->Width()) / 2;
+ chanLogoPixmap->DrawImage( cPoint(imageLeft, imageTop), *img );
+ } else if( !isGroup ) { // draw default logo
+ if( isRadioChannel ) {
+ img = imgLoader.LoadIcon("radio", imageBGWidth - 10, imageBGHeight - 10);
+ if( img ) {
+ imageTop = marginItem + (imageHeight - img->Height()) / 2;
+ imageLeft = marginItem*2 + (imageBGWidth - img->Width()) / 2;
+ chanLogoPixmap->DrawImage( cPoint(imageLeft, imageTop), *img );
+ }
+ } else {
+ img = imgLoader.LoadIcon("tv", imageBGWidth - 10, imageBGHeight - 10);
+ if( img ) {
+ imageTop = marginItem + (imageHeight - img->Height()) / 2;
+ imageLeft = marginItem*2 + (imageBGWidth - img->Width()) / 2;
+ chanLogoPixmap->DrawImage( cPoint(imageLeft, imageTop), *img );
+ }
+ }
+ }
+}
+
+void cFlatDisplayChannel::ChannelIconsDraw(const cChannel *Channel, bool Resolution) {
+ if( !Resolution ) {
+ chanIconsPixmap->Fill( clrTransparent );
+ }
+
+ int width = fontSmlHeight;
+ int height = fontSmlHeight;
+ int top = heightBottom - height - marginItem;
+ int imageTop = 0;
+ cImage *img = NULL;
+
+ int left = channelWidth - width - marginItem*2;
+
+ if( Channel ) {
+ if (Channel->Ca()) {
+ img = imgLoader.LoadIcon("crypted", 999, height);
+ if( img ) {
+ imageTop = top + (height - img->Height())/2;
+ chanIconsPixmap->DrawImage(cPoint(left, imageTop), *img);
+ left -= marginItem*2;
+ }
+ } else {
+ img = imgLoader.LoadIcon("uncrypted", 999, height);
+ if( img ) {
+ imageTop = top + (height - img->Height())/2;
+ chanIconsPixmap->DrawImage(cPoint(left, imageTop), *img);
+ left -= marginItem*2;
+ }
+ }
+ }
+
+ if( Resolution && !isRadioChannel && screenWidth > 0 ) {
+ if( Config.ChannelResolutionAspectShow ) { // Show Aspect
+ cString asp = "unknown_asp"; // ???
+ if(Config.ChannelSimpleAspectFormat && screenWidth > 720) {
+ asp = "hd"; // No aspect for HD
+ } else {
+ if( screenAspect == 4.0/3.0 )
+ asp = "43";
+ else if( screenAspect == 16.0/9.0 )
+ asp = "169";
+ else if( screenAspect == 20.0/11.0 )
+ asp = "169w";
+ else if( screenAspect == 2.21 )
+ asp = "221";
+ }
+ img = imgLoader.LoadIcon(*asp, 999, height);
+ if( img ) {
+ imageTop = top + (height - img->Height())/2;
+ left -= img->Width();
+ chanIconsPixmap->DrawImage(cPoint(left, imageTop), *img);
+ left -= marginItem*2;
+ }
+ }
+
+ if( Config.ChannelResolutionAspectShow ) { // Show Resolution
+ cString res = "";
+
+ switch (screenWidth) {
+ case 1920: // 1920x1080 (HD1080 Full HDTV)
+ res = "1920x1080";
+ break;
+ case 1440: // 1440x1080 (HD1080 DV)
+ res = "1440x1080";
+ break;
+ case 1280: // 1280x720 (HD720)
+ res = "1280x720";
+ break;
+ case 960: // 960x720 (HD720 DV)
+ res = "960x720";
+ break;
+ case 704: // 704x576 (PAL)
+ res = "704x576";
+ break;
+ case 720: // 720x576 (PAL)
+ res = "720x576";
+ break;
+ case 544: // 544x576 (PAL)
+ res = "544x576";
+ break;
+ case 528: // 528x576 (PAL)
+ res = "528x576";
+ break;
+ case 480: // 480x576 (PAL SVCD)
+ res = "480x576";
+ break;
+ case 352: // 352x576 (PAL CVD)
+ res = "352x576";
+ break;
+ default:
+ res = "unknown_res"; // TODO: Add Log line of resolution
+ dsyslog("unkown resolution Width: %d Height: %d Aspect: %.2f\n", screenWidth, screenHeight, screenAspect);
+ break;
+ }
+
+ img = imgLoader.LoadIcon(*res, 999, height);
+ if( img ) {
+ imageTop = top + (height - img->Height())/2;
+ left -= img->Width();
+ chanIconsPixmap->DrawImage(cPoint(left, imageTop), *img);
+ left -= marginItem*2;
+ }
+ }
+ if( Config.ChannelFormatShow && !Config.ChannelSimpleAspectFormat) {
+ cString iconName(""); // Show Format
+ switch (screenWidth) {
+ case 1920:
+ case 1440:
+ case 1280:
+ iconName = "hd";
+ break;
+ case 720:
+ iconName = "sd";
+ break;
+ default:
+ iconName = "sd";
+ break;
+ }
+
+ img = imgLoader.LoadIcon(*iconName, 999, height);
+ if( img ) {
+ imageTop = top + (height - img->Height())/2;
+ left -= img->Width();
+ chanIconsPixmap->DrawImage(cPoint(left, imageTop), *img);
+ left -= marginItem*2;
+ }
+ }
+ }
+}
+
+void cFlatDisplayChannel::SetEvents(const cEvent *Present, const cEvent *Following) {
+ if( !doOutput )
+ return;
+
+ present = Present;
+ cString epgShort("");
+ cString epg("");
+
+ scrollers.Clear();
+
+ chanInfoBottomPixmap->Fill(Theme.Color(clrChannelBg));
+ chanIconsPixmap->Fill( clrTransparent );
+
+ bool isRec = false;
+ int RecWidth = fontSml->Width("REC");
+
+ int left = heightBottom * 1.34 + marginItem;
+
+ if( Present ) {
+ cString startTime = Present->GetTimeString();
+ cString endTime = Present->GetEndTimeString();
+
+ cString timeString = cString::sprintf("%s - %s", *startTime, *endTime);
+ int timeStringWidth = fontSml->Width(*timeString) + fontSml->Width(" ");
+
+ int epgWidth = font->Width(Present->Title()) + marginItem*2;
+ int epgShortWidth = fontSml->Width(Present->ShortText()) + marginItem*2;
+
+ if( Present->HasTimer() ) {
+ isRec = true;
+ epgWidth += marginItem + RecWidth;
+ }
+
+ int s = (int)(time(NULL) - Present->StartTime()) / 60;
+ int sleft = (Present->Duration() / 60) - s;
+
+ cString seen;
+ if( Config.ChannelTimeLeft == 0 )
+ seen = cString::sprintf("%d-/%d+ %d min", s, sleft, Present->Duration() / 60);
+ else if( Config.ChannelTimeLeft == 1 )
+ seen = cString::sprintf("%d- %d min", s, Present->Duration() / 60);
+ else if( Config.ChannelTimeLeft == 2 )
+ seen = cString::sprintf("%d+ %d min", sleft, Present->Duration() / 60);
+
+ int seenWidth = fontSml->Width(*seen) + fontSml->Width(" ");
+
+ epg = Present->Title();
+ epgShort = Present->ShortText();
+ int maxWidth = max(timeStringWidth, seenWidth);
+
+ chanInfoBottomPixmap->DrawText(cPoint(channelWidth - timeStringWidth - marginItem * 2, 0), *timeString,
+ Theme.Color(clrChannelFontEpg), Theme.Color(clrChannelBg), fontSml, timeStringWidth, 0, taRight);
+ chanInfoBottomPixmap->DrawText(cPoint(channelWidth - seenWidth - marginItem * 2, fontSmlHeight), *seen,
+ Theme.Color(clrChannelFontEpg), Theme.Color(clrChannelBg), fontSml, seenWidth, 0, taRight);
+
+ if( (epgWidth > channelWidth - left - maxWidth) && Config.ScrollerEnable ) {
+ scrollers.AddScroller(*epg, cRect(Config.decorBorderChannelSize + left, Config.decorBorderChannelSize+channelHeight - heightBottom, channelWidth - left - maxWidth, fontHeight), Theme.Color(clrChannelFontEpg), clrTransparent, font);
+ } else {
+ chanInfoBottomPixmap->DrawText(cPoint(left, 0), *epg, Theme.Color(clrChannelFontEpg), Theme.Color(clrChannelBg), font, channelWidth - left - maxWidth);
+ }
+
+ if( (epgShortWidth > channelWidth - left - maxWidth) && Config.ScrollerEnable ) {
+ scrollers.AddScroller(*epgShort, cRect(Config.decorBorderChannelSize + left, Config.decorBorderChannelSize+channelHeight - heightBottom + fontHeight, channelWidth - left - maxWidth, fontSmlHeight), Theme.Color(clrChannelFontEpg), clrTransparent, fontSml);
+ } else {
+ chanInfoBottomPixmap->DrawText(cPoint(left, fontHeight), *epgShort, Theme.Color(clrChannelFontEpg), Theme.Color(clrChannelBg), fontSml, channelWidth - left - maxWidth);
+ }
+
+ if( isRec ) {
+ chanInfoBottomPixmap->DrawText(cPoint(left + epgWidth + marginItem - RecWidth, 0), "REC",
+ Theme.Color(clrChannelRecordingPresentFg), Theme.Color(clrChannelRecordingPresentBg), fontSml);
+ }
+ }
+
+ if( Following ) {
+ isRec = false;
+ cString startTime = Following->GetTimeString();
+ cString endTime = Following->GetEndTimeString();
+
+ cString timeString = cString::sprintf("%s - %s", *startTime, *endTime);
+ int timeStringWidth = fontSml->Width(*timeString) + fontSml->Width(" ");
+
+ int epgWidth = font->Width(Following->Title()) + marginItem*2;
+ int epgShortWidth = fontSml->Width(Following->ShortText()) + marginItem*2;
+
+ if( Following->HasTimer() ) {
+ epgWidth += marginItem + RecWidth;
+ isRec = true;
+ }
+
+ cString dur = cString::sprintf("%d min", Following->Duration() / 60);
+ int durWidth = fontSml->Width(*dur) + fontSml->Width(" ");
+
+ int maxWidth = max(timeStringWidth, durWidth);
+
+ epg = Following->Title();
+ epgShort = Following->ShortText();
+
+ chanInfoBottomPixmap->DrawText(cPoint(channelWidth - timeStringWidth - marginItem * 2, fontHeight + fontSmlHeight), *timeString,
+ Theme.Color(clrChannelFontEpgFollow), Theme.Color(clrChannelBg), fontSml, timeStringWidth, 0, taRight);
+ chanInfoBottomPixmap->DrawText(cPoint(channelWidth - durWidth - marginItem * 2, fontHeight + fontSmlHeight*2), *dur,
+ Theme.Color(clrChannelFontEpgFollow), Theme.Color(clrChannelBg), fontSml, durWidth, 0, taRight);
+
+ if( (epgWidth > channelWidth - left - maxWidth) && Config.ScrollerEnable ) {
+ scrollers.AddScroller(*epg, cRect(Config.decorBorderChannelSize + left, Config.decorBorderChannelSize+channelHeight - heightBottom + fontHeight + fontSmlHeight, channelWidth - left - maxWidth, fontHeight), Theme.Color(clrChannelFontEpgFollow), clrTransparent, font);
+ } else {
+ chanInfoBottomPixmap->DrawText(cPoint(left, fontHeight + fontSmlHeight), *epg,
+ Theme.Color(clrChannelFontEpgFollow), Theme.Color(clrChannelBg), font, channelWidth - left - maxWidth);
+ }
+
+ if( (epgShortWidth > channelWidth - left - maxWidth) && Config.ScrollerEnable ) {
+ scrollers.AddScroller(*epgShort, cRect(Config.decorBorderChannelSize + left, Config.decorBorderChannelSize+channelHeight - heightBottom + fontHeight*2 + fontSmlHeight, channelWidth - left - maxWidth, fontSmlHeight), Theme.Color(clrChannelFontEpgFollow), clrTransparent, fontSml);
+ } else {
+ chanInfoBottomPixmap->DrawText(cPoint(left, fontHeight*2 + fontSmlHeight), *epgShort,
+ Theme.Color(clrChannelFontEpgFollow), Theme.Color(clrChannelBg), fontSml, channelWidth - left - maxWidth);
+ }
+
+ if( isRec ) {
+ chanInfoBottomPixmap->DrawText(cPoint(left + epgWidth + marginItem - RecWidth, fontHeight + fontSmlHeight), "REC",
+ Theme.Color(clrChannelRecordingFollowFg), Theme.Color(clrChannelRecordingFollowBg), fontSml);
+ }
+ }
+
+ if( Config.ChannelIconsShow && CurChannel ) {
+ ChannelIconsDraw(CurChannel, false);
+ }
+
+ std::string mediaPath;
+ int mediaWidth = 0;
+ int mediaHeight = 0;
+
+ // TVScraper
+ // first try scraper2vdr
+ static cPlugin *pScraper = cPluginManager::GetPlugin("scraper2vdr");
+ if( !pScraper ) // if it doesn't exit, try tvscraper
+ pScraper = cPluginManager::GetPlugin("tvscraper");
+ if( Config.TVScraperChanInfoShowPoster && pScraper ) {
+ ScraperGetPosterBanner call;
+ call.event = Present;
+ if (pScraper->Service("GetPosterBanner", &call)) {
+ if ((call.type == tSeries) && call.banner.path.size() > 0) {
+ mediaWidth = call.banner.width * Config.TVScraperChanInfoPosterSize*100;
+ mediaHeight = call.banner.height * Config.TVScraperChanInfoPosterSize*100;
+ mediaPath = call.banner.path;
+ } else if (call.type == tMovie && call.poster.path.size() > 0) {
+ mediaWidth = call.poster.width * 0.5 * Config.TVScraperChanInfoPosterSize*100;
+ mediaHeight = call.poster.height * 0.5 * Config.TVScraperChanInfoPosterSize*100;
+ mediaPath = call.poster.path;
+ }
+ }
+ }
+
+ chanEpgImagesPixmap->Fill(clrTransparent);
+ DecorBorderClearByFrom(BorderTVSPoster);
+ if( mediaPath.length() > 0 ) {
+ cImage *img = imgLoader.LoadFile(mediaPath.c_str(), mediaWidth, mediaHeight);
+ if( img ) {
+ chanEpgImagesPixmap->DrawImage(cPoint(0, 0), *img);
+
+ DecorBorderDraw(20 + Config.decorBorderChannelEPGSize, topBarHeight + Config.decorBorderTopBarSize*2 + 20 + Config.decorBorderChannelEPGSize, img->Width(), img->Height(),
+ Config.decorBorderChannelEPGSize, Config.decorBorderChannelEPGType, Config.decorBorderChannelEPGFg, Config.decorBorderChannelEPGBg, BorderTVSPoster);
+ }
+ }
+}
+
+void cFlatDisplayChannel::SetMessage(eMessageType Type, const char *Text) {
+ if( !doOutput )
+ return;
+
+ // Wenn es einen Text gibt, diesen Anzeigen ansonsten Message ausblenden
+ if( Text )
+ MessageSet(Type, Text);
+ else
+ MessageClear();
+}
+
+void cFlatDisplayChannel::SignalQualityDraw(void) {
+ int SignalStrength = cDevice::ActualDevice()->SignalStrength();
+ int SignalQuality = cDevice::ActualDevice()->SignalQuality();
+ int signalWidth = channelWidth / 2;
+
+ if( LastSignalStrength == SignalStrength && LastSignalQuality == SignalQuality )
+ return;
+ LastSignalStrength = SignalStrength;
+ LastSignalQuality = SignalQuality;
+
+ cFont *SignalFont = cFont::CreateFont(Setup.FontOsd, Config.decorProgressSignalSize);
+
+ int top = fontHeight*2 + fontSmlHeight*2 + marginItem;
+ top += max(fontSmlHeight, Config.decorProgressSignalSize) - (Config.decorProgressSignalSize*2) - marginItem;
+ int left = marginItem * 2;
+ int progressTop = fontHeight*2 + fontSmlHeight*2 + marginItem;
+ progressTop += max(fontSmlHeight, Config.decorProgressSignalSize) / 2 - Config.decorProgressSignalSize / 2;
+
+ progressTop = top;
+
+ chanInfoBottomPixmap->DrawText(cPoint(left, top), "STR",
+ Theme.Color(clrChannelSignalFont), Theme.Color(clrChannelBg), SignalFont);
+ int progressLeft = left + SignalFont->Width("STR") + SignalFont->Width(" ") + marginItem;
+ int progressWidth = signalWidth / 2 - progressLeft - marginItem;
+ ProgressBarDrawRaw(chanInfoBottomPixmap, chanInfoBottomPixmap, cRect(progressLeft, progressTop, progressWidth, Config.decorProgressSignalSize),
+ cRect(progressLeft, progressTop, progressWidth, Config.decorProgressSignalSize), SignalStrength, 100,
+ Config.decorProgressSignalFg, Config.decorProgressSignalBarFg, Config.decorProgressSignalBg, Config.decorProgressSignalType, false, Config.SignalQualityUseColors);
+
+ //left = signalWidth / 2 + marginItem;
+ top += Config.decorProgressSignalSize + marginItem;
+ progressTop = top;
+
+ chanInfoBottomPixmap->DrawText(cPoint(left, top), "SNR",
+ Theme.Color(clrChannelSignalFont), Theme.Color(clrChannelBg), SignalFont);
+ progressLeft = left + SignalFont->Width("STR") + SignalFont->Width(" ") + marginItem;
+ //progressWidth = signalWidth - progressLeft - marginItem;
+
+ ProgressBarDrawRaw(chanInfoBottomPixmap, chanInfoBottomPixmap, cRect(progressLeft, progressTop, progressWidth, Config.decorProgressSignalSize),
+ cRect(progressLeft, progressTop, progressWidth, Config.decorProgressSignalSize), SignalQuality, 100,
+ Config.decorProgressSignalFg, Config.decorProgressSignalBarFg, Config.decorProgressSignalBg, Config.decorProgressSignalType, false, Config.SignalQualityUseColors);
+
+ delete SignalFont;
+}
+
+void cFlatDisplayChannel::BitrateDraw(void) {
+ int top = fontHeight*2 + fontSmlHeight*2 + marginItem;
+ top += max(fontSmlHeight, Config.decorProgressSignalSize) - (Config.decorProgressSignalSize*2) - marginItem;
+ int left = marginItem * 2;
+ cFont *SignalFont = cFont::CreateFont(Setup.FontOsd, Config.decorProgressSignalSize);
+ cFont *BitrateFont = cFont::CreateFont(Setup.FontOsd, (Config.decorProgressSignalSize*2));
+
+ if( Config.SignalQualityShow ) {
+ int signalWidth = channelWidth / 2;
+ int progressLeft = left + SignalFont->Width("STR") + SignalFont->Width(" ") + marginItem;
+ int progressWidth = signalWidth / 2 - progressLeft - marginItem;
+
+ left = progressLeft + progressWidth + marginItem * 4;
+ }
+
+ cString bitrateText;
+ if( bitrateAudio > 0.0 || bitrateDolby == 0.0 )
+ bitrateText = cString::sprintf("Video: %.2f Mbit/s | Audio: %.2f kbit/s", bitrateVideo / 1000000.0, bitrateAudio / 1000.0 );
+ else
+ bitrateText = cString::sprintf("Video: %.2f Mbit/s | Dolby: %.2f kbit/s", bitrateVideo / 1000000.0, bitrateDolby / 1000.0 );
+
+ chanInfoBottomPixmap->DrawText(cPoint(left, top), bitrateText, Theme.Color(clrChannelSignalFont), Theme.Color(clrChannelBg), BitrateFont, BitrateFont->Width(bitrateText) * 2);
+
+ delete SignalFont;
+ delete BitrateFont;
+}
+
+// Indicates a channel switch on the given DVB device.
+// If ChannelNumber is 0, this is before the channel is being switched,
+// otherwise ChannelNumber is the number of the channel that has been switched to.
+// LiveView tells whether this channel switch is for live viewing.
+void cFlatDisplayChannel::ChannelSwitch(const cDevice * device, int channelNumber, bool liveView)
+{
+ if( liveView == false) // ChannelSwitch from EPG-Scan, streamdev or other?
+ return;
+ if( channelNumber == 0 ) { // before the channel is being switched -> remove receiver
+ if (m_Receiver) {
+ //dsyslog("ChannelSwitch: Receiver REMOVE");
+ m_Receiver->Deactivate();
+ DELETENULL(m_Receiver);
+ }
+ return;
+ }
+
+ // at this point we finally switch to a new channel on liveView
+ bitrateVideo = bitrateAudio = bitrateDolby = 0.0;
+ eTrackType track = cDevice::PrimaryDevice()->GetCurrentAudioTrack();
+ const cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
+
+ if( channel && Config.ChannelBitrateShow && doOutput ) {
+ if ( m_Receiver ) { // this should not be happen!!!
+ //dsyslog("ChannelSwitch: Receiver is still Active -> remove it!");
+ m_Receiver->Deactivate();
+ DELETENULL(m_Receiver);
+ }
+ //dsyslog("ChannelSwitch: Receiver ATTACH %d - %s", cDevice::PrimaryDevice()->DeviceNumber(), channel->Name());
+
+ m_Receiver = new cFemonReceiver(channel, IS_AUDIO_TRACK(track) ? int(track - ttAudioFirst) : 0, IS_DOLBY_TRACK(track) ? int(track - ttDolbyFirst) : 0);
+ cDevice::ActualDevice()->AttachReceiver(m_Receiver);
+ }
+}
+
+void cFlatDisplayChannel::SetAudioTrack(int Index, const char * const *Tracks)
+{
+ bitrateVideo = bitrateAudio = bitrateDolby = 0.0;
+ eTrackType track = cDevice::PrimaryDevice()->GetCurrentAudioTrack();
+ if( m_Receiver ) {
+ dsyslog("SetAudioTrack: Receiver remove");
+ m_Receiver->Deactivate();
+ DELETENULL(m_Receiver);
+ }
+
+ if( !Config.ChannelBitrateShow )
+ return;
+
+ const cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
+ if( channel && doOutput ) {
+ dsyslog("SetAudioTrack: Receiver attach - %s", channel->Name());
+ m_Receiver = new cFemonReceiver(channel, IS_AUDIO_TRACK(track) ? int(track - ttAudioFirst) : 0, IS_DOLBY_TRACK(track) ? int(track - ttDolbyFirst) : 0);
+ cDevice::ActualDevice()->AttachReceiver(m_Receiver);
+ }
+}
+
+void cFlatDisplayChannel::Flush(void) {
+ if( !doOutput )
+ return;
+
+ int Current = 0;
+ int Total = 0;
+ if( present ) {
+ time_t t = time(NULL);
+ if (t > present->StartTime())
+ Current = t - present->StartTime();
+ Total = present->Duration();
+ ProgressBarDraw(Current, Total);
+ }
+ if( Config.SignalQualityShow )
+ SignalQualityDraw();
+
+ if( Config.ChannelIconsShow ) {
+ cDevice::PrimaryDevice()->GetVideoSize(screenWidth, screenHeight, screenAspect);
+ if (screenWidth != lastScreenWidth) {
+ lastScreenWidth = screenWidth;
+ ChannelIconsDraw(CurChannel, true);
+ }
+ }
+
+ if( Config.ChannelBitrateShow && doOutput && !m_Receiver ) {
+ const cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
+ eTrackType track = cDevice::PrimaryDevice()->GetCurrentAudioTrack();
+ if( channel ) {
+ //dsyslog("ChannelSwitch: Receiver ATTACH %d - %s FLUSH", cDevice::PrimaryDevice()->DeviceNumber(), channel->Name());
+ m_Receiver = new cFemonReceiver(channel, IS_AUDIO_TRACK(track) ? int(track - ttAudioFirst) : 0, IS_DOLBY_TRACK(track) ? int(track - ttDolbyFirst) : 0);
+ cDevice::ActualDevice()->AttachReceiver(m_Receiver);
+ }
+ }
+
+ if( Config.ChannelBitrateShow && m_Receiver ) {
+ bitrateVideo = m_Receiver->VideoBitrate();
+ bitrateAudio = m_Receiver->AudioBitrate();
+ bitrateDolby = m_Receiver->AC3Bitrate();
+
+ BitrateDraw();
+ }
+
+ TopBarUpdate();
+ osd->Flush();
+}
+
+void cFlatDisplayChannel::PreLoadImages(void) {
+ int height = (fontHeight*2) + (fontSmlHeight*2) + marginItem - marginItem*2;
+ imgLoader.LoadIcon("logo_background", height, height);
+ int imageBGHeight, imageBGWidth;
+ imageBGHeight = imageBGWidth = height;
+
+ cImage *imgBG = imgLoader.LoadIcon("logo_background", height*1.34, height);
+ if( imgBG ) {
+ imageBGHeight = imgBG->Height();
+ imageBGWidth = imgBG->Width();
+ }
+ imgLoader.LoadIcon("radio", imageBGWidth - 10, imageBGHeight - 10);
+ imgLoader.LoadIcon("tv", imageBGWidth - 10, imageBGHeight - 10);
+
+ int index = 0;
+ height = ((fontHeight*2) + (fontSmlHeight*2) + marginItem) - marginItem*2;
+ cImage *img = NULL;
+ for(cChannel *Channel = Channels.First(); Channel && index < LOGO_PRE_CACHE; Channel = Channels.Next(Channel) )
+ {
+ img = imgLoader.LoadLogo(Channel->Name(), imageBGWidth - 4, imageBGHeight - 4);
+ if( img )
+ index++;
+ }
+
+ height = max(fontSmlHeight, Config.decorProgressSignalSize);
+ imgLoader.LoadIcon("crypted", 999, height);
+ imgLoader.LoadIcon("uncrypted", 999, height);
+ imgLoader.LoadIcon("unknown_asp", 999, height);
+ imgLoader.LoadIcon("43", 999, height);
+ imgLoader.LoadIcon("169", 999, height);
+ imgLoader.LoadIcon("169w", 999, height);
+ imgLoader.LoadIcon("221", 999, height);
+ imgLoader.LoadIcon("1920x1080", 999, height);
+ imgLoader.LoadIcon("1440x1080", 999, height);
+ imgLoader.LoadIcon("1280x720", 999, height);
+ imgLoader.LoadIcon("960x720", 999, height);
+ imgLoader.LoadIcon("704x576", 999, height);
+ imgLoader.LoadIcon("720x576", 999, height);
+ imgLoader.LoadIcon("544x576", 999, height);
+ imgLoader.LoadIcon("528x576", 999, height);
+ imgLoader.LoadIcon("480x576", 999, height);
+ imgLoader.LoadIcon("352x576", 999, height);
+ imgLoader.LoadIcon("unknown_res", 999, height);
+ imgLoader.LoadIcon("hd", 999, height);
+ imgLoader.LoadIcon("sd", 999, height);
+}
diff --git a/displaychannel.h b/displaychannel.h
new file mode 100644
index 0000000..a83b0e5
--- /dev/null
+++ b/displaychannel.h
@@ -0,0 +1,63 @@
+#pragma once
+
+#include <vdr/status.h>
+#include "baserender.h"
+#include "flat.h"
+#include "services/scraper2vdr.h"
+#include "femonreceiver.h"
+
+class cFlatDisplayChannel : public cFlatBaseRender, public cSkinDisplayChannel, public cStatus {
+ private:
+ bool doOutput;
+ const cEvent *present;
+
+ int channelWidth, channelHeight;
+
+ cString channelName;
+ const cChannel *CurChannel;
+
+ cPixmap *chanInfoTopPixmap;
+ cPixmap *chanInfoBottomPixmap;
+ cPixmap *chanLogoPixmap;
+ cPixmap *chanLogoBGPixmap;
+ cPixmap *chanIconsPixmap;
+ cPixmap *chanEpgImagesPixmap;
+
+ int screenWidth, lastScreenWidth;
+ int screenHeight;
+ double screenAspect;
+ int heightBottom, heightImageLogo;
+
+ int LastSignalStrength, LastSignalQuality;
+
+ // femon
+ cFemonReceiver *m_Receiver;
+ double bitrateVideo, bitrateAudio, bitrateDolby;
+
+ // TVScraper
+ int TVSLeft, TVSTop, TVSWidth, TVSHeight;
+
+ // TextScroller
+ cTextScrollers scrollers;
+
+ bool isRecording;
+ bool isRadioChannel;
+ bool isGroup;
+
+ void SignalQualityDraw(void);
+ void BitrateDraw(void);
+ void ChannelIconsDraw(const cChannel *Channel, bool Resolution);
+
+ public:
+ cFlatDisplayChannel(bool WithInfo);
+ virtual ~cFlatDisplayChannel();
+ virtual void SetChannel(const cChannel *Channel, int Number);
+ virtual void SetEvents(const cEvent *Present, const cEvent *Following);
+ virtual void SetMessage(eMessageType Type, const char *Text);
+ virtual void Flush(void);
+
+ void PreLoadImages(void);
+ protected:
+ virtual void ChannelSwitch(const cDevice *device, int channelNumber, bool liveView);
+ virtual void SetAudioTrack(int Index, const char * const *Tracks);
+};
diff --git a/displaymenu.c b/displaymenu.c
new file mode 100644
index 0000000..b034c41
--- /dev/null
+++ b/displaymenu.c
@@ -0,0 +1,4924 @@
+#include "displaymenu.h"
+#include "services/scraper2vdr.h"
+#include "services/epgsearch.h"
+#include <utility>
+#include <fstream>
+#include <iostream>
+
+#ifndef VDRLOGO
+ #define VDRLOGO "vdrlogo_default"
+#endif
+
+#include "flat.h"
+#include "locale"
+
+/* Possible values of the stream content descriptor according to ETSI EN 300 468 */
+enum stream_content
+{
+ sc_reserved = 0x00,
+ sc_video_MPEG2 = 0x01,
+ sc_audio_MP2 = 0x02, // MPEG 1 Layer 2 audio
+ sc_subtitle = 0x03,
+ sc_audio_AC3 = 0x04,
+ sc_video_H264_AVC = 0x05,
+ sc_audio_HEAAC = 0x06,
+};
+
+cFlatDisplayMenu::cFlatDisplayMenu(void) {
+ CreateFullOsd();
+ TopBarCreate();
+ ButtonsCreate();
+ MessageCreate();
+
+ VideoDiskUsageState = -1;
+
+ itemHeight = fontHeight + Config.MenuItemPadding + Config.decorBorderMenuItemSize*2;
+ itemChannelHeight = fontHeight + Config.MenuItemPadding + Config.decorBorderMenuItemSize*2;
+ itemTimerHeight = fontHeight + Config.MenuItemPadding + Config.decorBorderMenuItemSize*2;
+
+ scrollBarWidth = ScrollBarWidth() + marginItem;
+ scrollBarHeight = osdHeight - (topBarHeight + Config.decorBorderTopBarSize*2 + marginItem*3 + buttonsHeight + Config.decorBorderButtonSize*2);
+
+ scrollBarTop = topBarHeight + marginItem + Config.decorBorderTopBarSize*2;
+ isScrolling = false;
+ ShowEvent = false;
+ ShowRecording = false;
+ ShowText = false;
+
+ ItemEventLastChannelName = "";
+ RecFolder = "";
+ LastRecFolder = "";
+
+ menuItemLastHeight = 0;
+ MenuFullOsdIsDrawn = false;
+
+ menuWidth = osdWidth;
+ menuTop = topBarHeight + marginItem + Config.decorBorderTopBarSize*2 + Config.decorBorderMenuItemSize;
+ menuPixmap = osd->CreatePixmap(1, cRect(0, menuTop, menuWidth, scrollBarHeight ));
+ //dsyslog("skinflatplus: menuPixmap left: %d top: %d width: %d height: %d", 0, menuTop, menuWidth, scrollBarHeight );
+
+ menuIconsBGPixmap = osd->CreatePixmap(2, cRect(0, menuTop, menuWidth, scrollBarHeight ));
+ //dsyslog("skinflatplus: menuIconsBGPixmap left: %d top: %d width: %d height: %d", 0, menuTop, menuWidth, scrollBarHeight );
+ menuIconsPixmap = osd->CreatePixmap(3, cRect(0, menuTop, menuWidth, scrollBarHeight ));
+ //dsyslog("skinflatplus: menuIconsPixmap left: %d top: %d width: %d height: %d", 0, menuTop, menuWidth, scrollBarHeight );
+
+ chLeft = Config.decorBorderMenuContentHeadSize;
+ chTop = topBarHeight + marginItem + Config.decorBorderTopBarSize*2 + Config.decorBorderMenuContentHeadSize;
+ chWidth = menuWidth - Config.decorBorderMenuContentHeadSize*2;
+ chHeight = fontHeight + fontSmlHeight*2 + marginItem*2;
+ contentHeadPixmap = osd->CreatePixmap(1, cRect(chLeft, chTop, chWidth, chHeight));
+ //dsyslog("skinflatplus: contentHeadPixmap left: %d top: %d width: %d height: %d", chLeft, chTop, chWidth, chHeight );
+ contentHeadIconsPixmap = osd->CreatePixmap(2, cRect(chLeft, chTop, chWidth, chHeight));
+
+ scrollbarPixmap = osd->CreatePixmap(2, cRect(0, scrollBarTop, menuWidth, scrollBarHeight + buttonsHeight + Config.decorBorderButtonSize*2));
+ //dsyslog("skinflatplus: scrollbarPixmap left: %d top: %d width: %d height: %d", 0, scrollBarTop, menuWidth, scrollBarHeight + buttonsHeight + Config.decorBorderButtonSize*2 );
+
+ menuPixmap->Fill(clrTransparent);
+ menuIconsPixmap->Fill(clrTransparent);
+ menuIconsBGPixmap->Fill(clrTransparent);
+ scrollbarPixmap->Fill(clrTransparent);
+ contentHeadIconsPixmap->Fill(clrTransparent);
+
+ menuCategory = mcUndefined;
+
+ menuItemScroller.SetOsd(osd);
+ menuItemScroller.SetScrollStep( Config.ScrollerStep );
+ menuItemScroller.SetScrollDelay( Config.ScrollerDelay );
+ menuItemScroller.SetScrollType( Config.ScrollerType );
+
+}
+
+cFlatDisplayMenu::~cFlatDisplayMenu() {
+ menuItemScroller.Clear();
+
+ osd->DestroyPixmap(menuPixmap);
+ osd->DestroyPixmap(menuIconsPixmap);
+ osd->DestroyPixmap(menuIconsBGPixmap);
+ osd->DestroyPixmap(scrollbarPixmap);
+ osd->DestroyPixmap(contentHeadPixmap);
+ osd->DestroyPixmap(contentHeadIconsPixmap);
+}
+
+void cFlatDisplayMenu::SetMenuCategory(eMenuCategory MenuCategory) {
+ menuItemScroller.Clear();
+
+ ItemBorderClear();
+ isScrolling = false;
+ ShowRecording = ShowEvent = ShowText = false;
+
+ menuCategory = MenuCategory;
+
+ if( menuCategory == mcChannel ) {
+ if( Config.MenuChannelView == 0 || Config.MenuChannelView == 1 || Config.MenuChannelView == 2 )
+ itemChannelHeight = fontHeight + Config.MenuItemPadding + Config.decorBorderMenuItemSize*2;
+ else if( Config.MenuChannelView == 3 || Config.MenuChannelView == 4 )
+ itemChannelHeight = fontHeight + fontSmlHeight + marginItem + Config.decorProgressMenuItemSize + Config.MenuItemPadding + Config.decorBorderMenuItemSize*2;
+ } else if( menuCategory == mcTimer ) {
+ if( Config.MenuTimerView == 0 || Config.MenuTimerView == 1 )
+ itemTimerHeight = fontHeight + Config.MenuItemPadding + Config.decorBorderMenuItemSize*2;
+ else if( Config.MenuTimerView == 2 || Config.MenuTimerView == 3 )
+ itemTimerHeight = fontHeight + fontSmlHeight + marginItem + Config.MenuItemPadding + Config.decorBorderMenuItemSize*2;
+ } else if( menuCategory == mcSchedule || menuCategory == mcScheduleNow || menuCategory == mcScheduleNext ) {
+ if( Config.MenuEventView == 0 || Config.MenuEventView == 1 )
+ itemEventHeight = fontHeight + Config.MenuItemPadding + Config.decorBorderMenuItemSize*2;
+ else if( Config.MenuEventView == 2 || Config.MenuEventView == 3 )
+ itemEventHeight = fontHeight + fontSmlHeight + marginItem*2 + Config.MenuItemPadding + Config.decorBorderMenuItemSize*2 + Config.decorProgressMenuItemSize/2;
+ } else if( menuCategory == mcRecording ) {
+ if( Config.MenuRecordingView == 0 || Config.MenuRecordingView == 1 )
+ itemRecordingHeight = fontHeight + Config.MenuItemPadding + Config.decorBorderMenuItemSize*2;
+ else if( Config.MenuRecordingView == 2 || Config.MenuRecordingView == 3 )
+ itemRecordingHeight = fontHeight + fontSmlHeight + marginItem + Config.MenuItemPadding + Config.decorBorderMenuItemSize*2;
+ } else if( menuCategory == mcMain ) {
+ DrawMainMenuWidgets();
+ }
+}
+
+void cFlatDisplayMenu::SetScrollbar(int Total, int Offset) {
+ DrawScrollbar(Total, Offset, MaxItems(), 0, ItemsHeight(), Offset > 0, Offset + MaxItems() < Total);
+}
+
+void cFlatDisplayMenu::DrawScrollbar(int Total, int Offset, int Shown, int Top, int Height, bool CanScrollUp, bool CanScrollDown, bool isContent) {
+ //dsyslog("Total: %d Offset: %d Shown: %d Top: %d Height: %d", Total, Offset, Shown, Top, Height);
+
+ if( Total > 0 && Total > Shown ) {
+ if( isScrolling == false && ShowEvent == false && ShowRecording == false && ShowText == false ) {
+ isScrolling = true;
+ DecorBorderClearByFrom(BorderMenuItem);
+ ItemBorderDrawAllWithScrollbar();
+ ItemBorderClear();
+
+ menuItemScroller.UpdateViewPortWidth(scrollBarWidth);
+
+ if( isContent )
+ menuPixmap->DrawRectangle(cRect(menuItemWidth - scrollBarWidth + Config.decorBorderMenuContentSize, 0, scrollBarWidth + marginItem, scrollBarHeight), clrTransparent);
+ else
+ menuPixmap->DrawRectangle(cRect(menuItemWidth - scrollBarWidth + Config.decorBorderMenuItemSize, 0, scrollBarWidth + marginItem, scrollBarHeight), clrTransparent);
+ }
+ } else if( ShowEvent == false && ShowRecording == false && ShowText == false ) {
+ isScrolling = false;
+ }
+
+ if( isContent )
+ ScrollbarDraw(scrollbarPixmap, menuItemWidth - scrollBarWidth + Config.decorBorderMenuContentSize*2 + marginItem, Top, Height, Total, Offset, Shown, CanScrollUp, CanScrollDown);
+ else
+ ScrollbarDraw(scrollbarPixmap, menuItemWidth - scrollBarWidth + Config.decorBorderMenuItemSize*2 + marginItem, Top, Height, Total, Offset, Shown, CanScrollUp, CanScrollDown);
+
+}
+
+void cFlatDisplayMenu::Scroll(bool Up, bool Page) {
+ // Wird das Men� gescrollt oder Content?
+ if( ComplexContent.IsShown() && ComplexContent.IsScrollingActive() && ComplexContent.Scrollable() ) {
+ bool scrolled = ComplexContent.Scroll(Up, Page);
+ if( scrolled ) {
+ DrawScrollbar(ComplexContent.ScrollTotal(), ComplexContent.ScrollOffset(), ComplexContent.ScrollShown(), ComplexContent.Top() - scrollBarTop, ComplexContent.Height(), ComplexContent.ScrollOffset() > 0, ComplexContent.ScrollOffset() + ComplexContent.ScrollShown() < ComplexContent.ScrollTotal(), true);
+ }
+ } else {
+ cSkinDisplayMenu::Scroll(Up, Page);
+ }
+}
+
+int cFlatDisplayMenu::MaxItems(void) {
+ if( menuCategory == mcChannel )
+ return scrollBarHeight / itemChannelHeight;
+ else if( menuCategory == mcTimer )
+ return scrollBarHeight / itemTimerHeight;
+ else if( menuCategory == mcSchedule || menuCategory == mcScheduleNow || menuCategory == mcScheduleNext )
+ return scrollBarHeight / itemEventHeight;
+ else if( menuCategory == mcRecording )
+ return scrollBarHeight / itemRecordingHeight;
+
+ return scrollBarHeight / itemHeight;
+}
+
+int cFlatDisplayMenu::ItemsHeight(void) {
+ if( menuCategory == mcChannel )
+ return MaxItems() * itemChannelHeight - Config.MenuItemPadding;
+ else if( menuCategory == mcTimer )
+ return MaxItems() * itemTimerHeight - Config.MenuItemPadding;
+ else if( menuCategory == mcSchedule || menuCategory == mcScheduleNow || menuCategory == mcScheduleNext )
+ return MaxItems() * itemEventHeight - Config.MenuItemPadding;
+ else if( menuCategory == mcRecording )
+ return MaxItems() * itemRecordingHeight - Config.MenuItemPadding;
+
+ return MaxItems() * itemHeight - Config.MenuItemPadding;
+}
+
+void cFlatDisplayMenu::Clear(void) {
+ menuItemScroller.Clear();
+ menuPixmap->Fill(clrTransparent);
+ menuIconsPixmap->Fill(clrTransparent);
+ menuIconsBGPixmap->Fill(clrTransparent);
+ scrollbarPixmap->Fill(clrTransparent);
+ contentHeadPixmap->Fill(clrTransparent);
+ contentHeadIconsPixmap->Fill(clrTransparent);
+ DecorBorderClearByFrom(BorderMenuItem);
+ DecorBorderClearByFrom(BorderContent);
+ DecorBorderClearByFrom(BorderMMWidget);
+ DecorBorderClearAll();
+ isScrolling = false;
+
+ menuItemLastHeight = 0;
+ MenuFullOsdIsDrawn = false;
+
+ ComplexContent.Clear();
+
+ contentWidget.Clear();
+
+ ShowRecording = ShowEvent = ShowText = false;
+}
+
+void cFlatDisplayMenu::SetTitle(const char *Title) {
+ TopBarSetTitle(Title);
+ LastTitle = Title;
+
+ if( Config.TopBarMenuIconShow ) {
+ cString icon = "";
+ switch( menuCategory ) {
+ case mcMain:
+ TopBarSetTitle("");
+ icon = cString::sprintf("menuIcons/%s", VDRLOGO);
+ break;
+ case mcSchedule:
+ case mcScheduleNow:
+ case mcScheduleNext:
+ icon = "menuIcons/Schedule";
+ break;
+ case mcChannel:
+ icon = "menuIcons/Channels";
+ if( Config.MenuChannelShowCount ) {
+ int chanCount = 0;
+ for(cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) {
+ if( !Channel->GroupSep() )
+ chanCount++;
+ }
+ cString newTitle = cString::sprintf("%s (%d)", Title, chanCount);
+ TopBarSetTitle(*newTitle);
+ }
+ break;
+ case mcTimer:
+ icon = "menuIcons/Timers";
+ if( Config.MenuTimerShowCount ) {
+ int timerCount = 0, timerActiveCount = 0;
+ for(cTimer *Timer = Timers.First(); Timer; Timer = Timers.Next(Timer)) {
+ timerCount++;
+ if( Timer->HasFlags(tfActive) )
+ timerActiveCount++;
+ }
+ LastTimerCount = timerCount;
+ LastTimerActiveCount = timerActiveCount;
+ cString newTitle = cString::sprintf("%s (%d/%d)", Title, timerActiveCount, timerCount);
+ TopBarSetTitle(*newTitle);
+ }
+ break;
+ case mcRecording:
+ if( Config.MenuRecordingShowCount ) {
+ int recCount = 0, recNewCount = 0;
+ LastRecFolder = RecFolder;
+ if( RecFolder != "" && LastItemRecordingLevel > 0 ) {
+ for(cRecording *Rec = Recordings.First(); Rec; Rec = Recordings.Next(Rec)) {
+ std::string RecFolder2 = GetRecordingName(Rec, LastItemRecordingLevel-1, true);
+ if( RecFolder == RecFolder2 ) {
+ recCount++;
+ if( Rec->IsNew() )
+ recNewCount++;
+ }
+ }
+ } else {
+ for(cRecording *Rec = Recordings.First(); Rec; Rec = Recordings.Next(Rec)) {
+ recCount++;
+ if( Rec->IsNew() )
+ recNewCount++;
+ }
+ }
+ cString newTitle = cString::sprintf("%s (%d*/%d)", Title, recNewCount, recCount);
+ if( Config.ShortRecordingCount ) {
+ if( recNewCount == 0 ) // 0 neue Aufnahmen
+ newTitle = cString::sprintf("%s (%d)", Title, recCount);
+ else if( recNewCount == recCount ) //Nur neue Aufnahmen
+ newTitle = cString::sprintf("%s (%d*)", Title, recNewCount);
+ else // Anzeige (35*/56)
+ newTitle = cString::sprintf("%s (%d*/%d)", Title, recNewCount, recCount);
+ }
+ TopBarSetTitle(*newTitle);
+ }
+ if( RecordingsSortMode == rsmName )
+ TopBarSetMenuIconRight("menuIcons/RecsSortName");
+ else if( RecordingsSortMode == rsmTime )
+ TopBarSetMenuIconRight("menuIcons/RecsSortDate");
+ icon = "menuIcons/Recordings";
+ break;
+ case mcSetup:
+ icon = "menuIcons/Setup";
+ break;
+ case mcCommand:
+ icon = "menuIcons/Commands";
+ break;
+ case mcEvent:
+ icon = "extraIcons/Info";
+ break;
+ case mcRecordingInfo:
+ icon = "extraIcons/PlayInfo";
+ break;
+ default:
+ icon = "";
+ }
+ TopBarSetMenuIcon(icon);
+
+ if( (menuCategory == mcRecording || menuCategory == mcTimer) && Config.DiskUsageShow == 1 || Config.DiskUsageShow == 2 | Config.DiskUsageShow == 3) {
+ TopBarEnableDiskUsage();
+ }
+ }
+}
+
+void cFlatDisplayMenu::SetButtons(const char *Red, const char *Green, const char *Yellow, const char *Blue) {
+ ButtonsSet(Red, Green, Yellow, Blue);
+}
+
+void cFlatDisplayMenu::SetMessage(eMessageType Type, const char *Text) {
+ if (Text)
+ MessageSet(Type, Text);
+ else
+ MessageClear();
+}
+
+void cFlatDisplayMenu::SetItem(const char *Text, int Index, bool Current, bool Selectable) {
+ ShowEvent = false;
+ ShowRecording = false;
+ ShowText = false;
+
+ int y = Index * itemHeight;
+ menuItemWidth = menuWidth - Config.decorBorderMenuItemSize*2;
+
+ if( menuCategory == mcMain && Config.MainMenuWidgetsEnable )
+ menuItemWidth *= Config.MainMenuItemScale;
+
+ int AvailableTextWidth = menuItemWidth - scrollBarWidth;
+ if( isScrolling )
+ menuItemWidth -= scrollBarWidth;
+
+ tColor ColorFg, ColorBg, ColorExtraTextFg;
+ ColorExtraTextFg = Theme.Color(clrMenuItemExtraTextFont);
+ if (Current) {
+ ColorFg = Theme.Color(clrItemCurrentFont);
+ ColorBg = Theme.Color(clrItemCurrentBg);
+ ColorExtraTextFg = Theme.Color(clrMenuItemExtraTextCurrentFont);
+
+ iconTimerFull = imgLoader.LoadIcon("text_timer_full_cur", fontHeight, fontHeight);
+ iconTimerPartial = imgLoader.LoadIcon("text_timer_partial_cur", fontHeight, fontHeight);
+ iconArrowTurn = imgLoader.LoadIcon("text_arrowturn_cur", fontHeight, fontHeight);
+ iconRec = imgLoader.LoadIcon("text_rec_cur", fontHeight, fontHeight);
+ iconVps = imgLoader.LoadIcon("text_vps_cur", fontHeight, fontHeight);
+ iconNew = imgLoader.LoadIcon("text_new_cur", fontHeight, fontHeight);
+ }
+ else {
+ if( Selectable ) {
+ ColorFg = Theme.Color(clrItemSelableFont);
+ ColorBg = Theme.Color(clrItemSelableBg);
+
+ iconTimerFull = imgLoader.LoadIcon("text_timer_full_sel", fontHeight, fontHeight);
+ iconTimerPartial = imgLoader.LoadIcon("text_timer_partial_sel", fontHeight, fontHeight);
+ iconArrowTurn = imgLoader.LoadIcon("text_arrowturn_sel", fontHeight, fontHeight);
+ iconRec = imgLoader.LoadIcon("text_rec_sel", fontHeight, fontHeight);
+ iconVps = imgLoader.LoadIcon("text_vps_sel", fontHeight, fontHeight);
+ iconNew = imgLoader.LoadIcon("text_new_sel", fontHeight, fontHeight);
+ } else {
+ ColorFg = Theme.Color(clrItemFont);
+ ColorBg = Theme.Color(clrItemBg);
+
+ iconTimerFull = imgLoader.LoadIcon("text_timer_full", fontHeight, fontHeight);
+ iconTimerPartial = imgLoader.LoadIcon("text_timer_partial", fontHeight, fontHeight);
+ iconArrowTurn = imgLoader.LoadIcon("text_arrowturn", fontHeight, fontHeight);
+ iconRec = imgLoader.LoadIcon("text_rec", fontHeight, fontHeight);
+ iconVps = imgLoader.LoadIcon("text_vps", fontHeight, fontHeight);
+ iconNew = imgLoader.LoadIcon("text_new", fontHeight, fontHeight);
+ }
+ }
+
+ if( y + itemHeight > menuItemLastHeight )
+ menuItemLastHeight = y + itemHeight;
+
+ menuPixmap->DrawRectangle(cRect(Config.decorBorderMenuItemSize, y, menuItemWidth, fontHeight), ColorBg);
+ int lh = fontHeight;
+ int xOff = 0;
+ for (int i = 0; i < MaxTabs; i++) {
+ const char *s = GetTabbedText(Text, i);
+ if( s ) {
+ // from skinelchi
+ char buffer[9];
+ bool istimer = false;
+ bool isnewrecording = false;
+ bool hasEventtimer = false;
+ bool haspartEventtimer = false;
+ bool isRecording = false;
+ bool hasVPS = false;
+ bool isRunning = false;
+
+ int xt = Tab(i);
+
+ if( true ) {
+ // check if timer info symbols: " !#>"
+ if (i == 0 && strlen(s) == 1 && strchr(" !#>", s[0])) {
+ istimer = true; // update status
+ } else if ( (strlen(s) == 6 && s[5] == '*' && s[2] == ':' && isdigit(*s)
+ && isdigit(*(s + 1)) && isdigit(*(s + 3)) && isdigit(*(s + 4)))
+ || (strlen(s) == 5 && s[4] == '*' && s[1] == ':' && isdigit(*s)
+ && isdigit(*(s + 2)) && isdigit(*(s + 3)))
+ || (strlen(s) == 9 && s[8] == '*' && s[5] == '.' && s[2] == '.'
+ && isdigit(*s) && isdigit(*(s + 1)) && isdigit(*(s + 3))
+ && isdigit(*(s + 4)) && isdigit(*(s + 6)) && isdigit(*(s + 7)))) {
+ // check if new recording: "10:10*", "1:10*", "01.01.06*"
+
+ isnewrecording = true; // update status
+ strncpy(buffer, s, strlen(s)); // make a copy
+ buffer[strlen(s) - 1] = '\0'; // remove the '*' character
+ } else if ( (strlen(s) == 3) && ( i == 2 || i == 3 || i == 4) ) {
+ if (s[0] == 'R') isRecording = true;
+ if (s[0] == 'T') hasEventtimer = true;
+ if (s[0] == 't') haspartEventtimer = true;
+ if (s[1] == 'V') hasVPS = true;
+ if (s[2] == '*') isRunning = true;
+ } else if ( (strlen(s) == 4) && ( i == 3 ) ) { //epgsearch What's on now default
+ if (s[1] == 'R') isRecording = true;
+ if (s[1] == 'T') hasEventtimer = true;
+ if (s[1] == 't') haspartEventtimer = true;
+ if (s[2] == 'V') hasVPS = true;
+ if (s[3] == '*') isRunning = true;
+ }
+ }
+ xOff = Tab(i) + Config.decorBorderMenuItemSize;
+
+ if( istimer ) {
+ // timer menu
+ switch( s[0] ) {
+ case '!':
+ if( iconArrowTurn )
+ menuIconsPixmap->DrawImage( cPoint(xOff, y + (lh - iconArrowTurn->Height()) / 2), *iconArrowTurn );
+ break;
+ case '#':
+ if( iconRec )
+ menuIconsPixmap->DrawImage( cPoint(xOff, y + (lh - iconRec->Height()) / 2), *iconRec );
+ break;
+ case '>':
+ if( iconTimerFull )
+ menuIconsPixmap->DrawImage( cPoint(xOff, y + (lh - iconTimerFull->Height()) / 2), *iconTimerFull );
+ break;
+ case ' ':
+ default:
+ break;
+ }
+ } else if( isRecording || hasEventtimer || haspartEventtimer || hasVPS || isRunning ) {
+ // program schedule menu
+ if( isRecording && iconRec )
+ menuIconsPixmap->DrawImage( cPoint(xOff, y + (lh - iconRec->Height()) / 2), *iconRec );
+ else {
+ if( hasEventtimer && iconTimerFull )
+ menuIconsPixmap->DrawImage( cPoint(xOff, y + (lh - iconTimerFull->Height()) / 2), *iconTimerFull );
+ if( haspartEventtimer && iconTimerPartial )
+ menuIconsPixmap->DrawImage( cPoint(xOff, y + (lh - iconTimerPartial->Height()) / 2), *iconTimerPartial );
+ }
+ xOff += iconTimerFull->Width(); // clock is wider than rec
+
+ if( hasVPS && iconVps ) {
+ menuIconsPixmap->DrawImage( cPoint(xOff, y + (lh - iconVps->Height()) / 2), *iconVps );
+ xOff += iconVps->Width();
+ }
+
+ if( isRunning )
+ menuPixmap->DrawText(cPoint(xOff, y), "*", ColorFg, ColorBg, font, AvailableTextWidth - xOff);
+
+ } else if( isnewrecording ) {
+ // recordings menu
+ menuPixmap->DrawText(cPoint(xOff, y), buffer, ColorFg, ColorBg, font, AvailableTextWidth - xOff);
+
+ // draw symbol "new" centered
+ if( iconNew ) {
+ int gap = std::max(0, (Tab(i+1)-Tab(i)- font->Width(buffer) - iconNew->Width()) / 2);
+ menuIconsPixmap->DrawImage( cPoint(xOff + font->Width(buffer) + gap, y + (lh - iconNew->Height()) / 2), *iconNew );
+ }
+ } else if( CheckProgressBar( s ) ) {
+ int colWidth = Tab(i+1) - Tab(i);
+
+ tColor ColorFg = Config.decorProgressMenuItemFg;
+ tColor ColorBarFg = Config.decorProgressMenuItemBarFg;
+ tColor ColorBg = Config.decorProgressMenuItemBg;
+ if( Current ) {
+ ColorFg = Config.decorProgressMenuItemCurFg;
+ ColorBarFg = Config.decorProgressMenuItemCurBarFg;
+ ColorBg = Config.decorProgressMenuItemCurBg;
+ }
+ cRect rec = cRect(xt + Config.decorBorderMenuItemSize,
+ y + (itemHeight-Config.MenuItemPadding)/2 - Config.decorProgressMenuItemSize/2 - Config.decorBorderMenuItemSize,
+ colWidth, Config.decorProgressMenuItemSize);
+ cRect recBG = cRect(xt + Config.decorBorderMenuItemSize - marginItem, y,
+ colWidth + marginItem*2, fontHeight);
+
+ DrawProgressBarFromText(rec, recBG, s, ColorFg, ColorBarFg, ColorBg);
+ } else {
+ if( (menuCategory == mcMain || menuCategory == mcSetup) && Config.MenuItemIconsShow) {
+ cString cIcon = GetIconName( MainMenuText(s) );
+ cImageLoader imgLoader;
+ cImage *img = imgLoader.LoadIcon(*cIcon, fontHeight - marginItem*2, fontHeight - marginItem*2);
+ if( img ) {
+ menuIconsPixmap->DrawImage(cPoint(xt + Config.decorBorderMenuItemSize + marginItem, y + marginItem), *img);
+ } else {
+ img = imgLoader.LoadIcon("menuIcons/blank", fontHeight - marginItem*2, fontHeight - marginItem*2);
+ if( img ) {
+ menuIconsPixmap->DrawImage(cPoint(xt + Config.decorBorderMenuItemSize + marginItem, y + marginItem), *img);
+ }
+ }
+ menuPixmap->DrawText(cPoint(fontHeight + marginItem*2 + xt + Config.decorBorderMenuItemSize, y), s, ColorFg, ColorBg, font,
+ AvailableTextWidth - xt - marginItem*2 - fontHeight);
+ } else {
+ if( Config.MenuItemParseTilde ) {
+ std::string tilde = s;
+ size_t found = tilde.find(" ~ ");
+ size_t found2 = tilde.find("~");
+ if( found != string::npos ) {
+ std::string first = tilde.substr(0, found);
+ std::string second = tilde.substr(found +2, tilde.length() );
+
+ menuPixmap->DrawText(cPoint(xt + Config.decorBorderMenuItemSize, y), first.c_str(), ColorFg, ColorBg, font, menuItemWidth - xt - Config.decorBorderMenuItemSize);
+ int l = font->Width( first.c_str() );
+ menuPixmap->DrawText(cPoint(xt + Config.decorBorderMenuItemSize + l, y), second.c_str(), ColorExtraTextFg, ColorBg, font, menuItemWidth - xt - Config.decorBorderMenuItemSize - l);
+ } else if ( found2 != string::npos ) {
+ std::string first = tilde.substr(0, found2);
+ std::string second = tilde.substr(found2 +1, tilde.length() );
+
+ menuPixmap->DrawText(cPoint(xt + Config.decorBorderMenuItemSize, y), first.c_str(), ColorFg, ColorBg, font, menuItemWidth - xt - Config.decorBorderMenuItemSize);
+ int l = font->Width( first.c_str() );
+ l += font->Width("X");
+ menuPixmap->DrawText(cPoint(xt + Config.decorBorderMenuItemSize + l, y), second.c_str(), ColorExtraTextFg, ColorBg, font, menuItemWidth - xt - Config.decorBorderMenuItemSize -l);
+ } else
+ menuPixmap->DrawText(cPoint(xt + Config.decorBorderMenuItemSize, y), s, ColorFg, ColorBg, font, menuItemWidth - xt - Config.decorBorderMenuItemSize);
+ } else
+ menuPixmap->DrawText(cPoint(xt + Config.decorBorderMenuItemSize, y), s, ColorFg, ColorBg, font, menuItemWidth - xt - Config.decorBorderMenuItemSize);
+ }
+ }
+ }
+ if (!Tab(i + 1))
+ break;
+ }
+
+ sDecorBorder ib;
+ ib.Left = Config.decorBorderMenuItemSize;
+ ib.Top = topBarHeight + marginItem + Config.decorBorderTopBarSize*2 + Config.decorBorderMenuItemSize + y;
+
+ ib.Width = menuWidth - Config.decorBorderMenuItemSize*2;
+ if( isScrolling ) {
+ ib.Width -= scrollBarWidth;
+ }
+
+ ib.Width = menuItemWidth;
+
+ ib.Height = fontHeight;
+ ib.Size = Config.decorBorderMenuItemSize;
+ ib.Type = Config.decorBorderMenuItemType;
+
+ if( Current ) {
+ ib.ColorFg = Config.decorBorderMenuItemCurFg;
+ ib.ColorBg = Config.decorBorderMenuItemCurBg;
+ } else {
+ if( Selectable ) {
+ ib.ColorFg = Config.decorBorderMenuItemSelFg;
+ ib.ColorBg = Config.decorBorderMenuItemSelBg;
+ } else {
+ ib.ColorFg = Config.decorBorderMenuItemFg;
+ ib.ColorBg = Config.decorBorderMenuItemBg;
+ }
+ }
+
+ DecorBorderDraw(ib.Left, ib.Top, ib.Width, ib.Height,
+ ib.Size, ib.Type, ib.ColorFg, ib.ColorBg, BorderMenuItem);
+
+ if( !isScrolling ) {
+ ItemBorderInsertUnique(ib);
+ }
+
+ SetEditableWidth(menuWidth - Tab(1));
+}
+
+std::string cFlatDisplayMenu::items[16] = { "Schedule", "Channels", "Timers", "Recordings", "Setup", "Commands",
+ "OSD", "EPG", "DVB", "LNB", "CAM", "Recording", "Replay", "Miscellaneous", "Plugins", "Restart"};
+
+std::string cFlatDisplayMenu::MainMenuText(std::string Text) {
+ std::string text = skipspace(Text.c_str());
+ std::string menuEntry;
+ std::string menuNumber;
+ bool found = false;
+ bool doBreak = false;
+ size_t i = 0;
+ for (; i < text.length(); i++) {
+ char s = text.at(i);
+ if (i==0) {
+ //if text directly starts with nonnumeric, break
+ if (!(s >= '0' && s <= '9')) {
+ break;
+ }
+ }
+ if (found) {
+ if (!(s >= '0' && s <= '9')) {
+ doBreak = true;
+ }
+ }
+ if (s >= '0' && s <= '9') {
+ found = true;
+ }
+ if (doBreak)
+ break;
+ if (i>4)
+ break;
+ }
+ if (found) {
+ menuNumber = skipspace(text.substr(0,i).c_str());
+ menuEntry = skipspace(text.substr(i).c_str());
+ } else {
+ menuNumber = "";
+ menuEntry = text.c_str();
+ }
+ return menuEntry;
+}
+
+cString cFlatDisplayMenu::GetIconName(std::string element) {
+ //check for standard menu entries
+ for (int i=0; i<16; i++) {
+ std::string s = trVDR(items[i].c_str());
+ if (s == element) {
+ cString menuIcon = cString::sprintf("menuIcons/%s", items[i].c_str());
+ return menuIcon;
+ }
+ }
+ //check for special main menu entries "stop recording", "stop replay"
+ std::string stopRecording = skipspace(trVDR(" Stop recording "));
+ std::string stopReplay = skipspace(trVDR(" Stop replaying"));
+ try {
+ if (element.substr(0, stopRecording.size()) == stopRecording)
+ return "menuIcons/StopRecording";
+ if (element.substr(0, stopReplay.size()) == stopReplay)
+ return "menuIcons/StopReplay";
+ } catch (...) {}
+ //check for Plugins
+ for (int i = 0; ; i++) {
+ cPlugin *p = cPluginManager::GetPlugin(i);
+ if (p) {
+ const char *mainMenuEntry = p->MainMenuEntry();
+ if (mainMenuEntry) {
+ std::string plugMainEntry = mainMenuEntry;
+ try {
+ if (element.substr(0, plugMainEntry.size()) == plugMainEntry) {
+ return cString::sprintf("pluginIcons/%s", p->Name());
+ }
+ } catch (...) {}
+ }
+ } else
+ break;
+ }
+ return cString::sprintf("extraIcons/%s", element.c_str());
+}
+
+bool cFlatDisplayMenu::CheckProgressBar(const char *text) {
+ if (strlen(text) > 5
+ && text[0] == '['
+ && ((text[1] == '|')||(text[1] == ' '))
+ && ((text[2] == '|')||(text[2] == ' '))
+ && text[strlen(text) - 1] == ']')
+ return true;
+ return false;
+}
+
+void cFlatDisplayMenu::DrawProgressBarFromText(cRect rec, cRect recBg, const char *bar, tColor ColorFg, tColor ColorBarFg, tColor ColorBg) {
+ const char *p = bar + 1;
+ bool isProgressbar = true;
+ int total = 0;
+ int now = 0;
+ for (; *p != ']'; ++p) {
+ if (*p == ' ' || *p == '|') {
+ ++total;
+ if (*p == '|')
+ ++now;
+ } else {
+ isProgressbar = false;
+ break;
+ }
+ }
+ if (isProgressbar) {
+ double progress = (double)now / (double)total;
+ ProgressBarDrawRaw(menuPixmap, menuPixmap, rec, recBg, progress*total, total,
+ ColorFg, ColorBarFg, ColorBg, Config.decorProgressMenuItemType, true);
+ }
+}
+
+bool cFlatDisplayMenu::SetItemChannel(const cChannel *Channel, int Index, bool Current, bool Selectable, bool WithProvider) {
+ if( Config.MenuChannelView == 0 || !Channel )
+ return false;
+
+ cSchedulesLock schedulesLock;
+ const cSchedules *schedules = cSchedules::Schedules(schedulesLock);
+ const cEvent *Event = NULL;
+
+ bool DrawProgress = true;
+ cString buffer;
+ int y = Index * itemChannelHeight;
+
+ if( Current )
+ menuItemScroller.Clear();
+
+ int Height = fontHeight;
+ if( Config.MenuChannelView == 3 || Config.MenuChannelView == 4 )
+ Height = fontHeight + fontSmlHeight + marginItem + Config.decorProgressMenuItemSize;
+
+ menuItemWidth = menuWidth - Config.decorBorderMenuItemSize*2;
+ if( Config.MenuChannelView == 3 || Config.MenuChannelView == 4 )
+ menuItemWidth *= 0.5;
+
+ if( isScrolling )
+ menuItemWidth -= scrollBarWidth;
+
+ tColor ColorFg, ColorBg;
+ if (Current) {
+ ColorFg = Theme.Color(clrItemCurrentFont);
+ ColorBg = Theme.Color(clrItemCurrentBg);
+ }
+ else {
+ if( Selectable ) {
+ ColorFg = Theme.Color(clrItemSelableFont);
+ ColorBg = Theme.Color(clrItemSelableBg);
+ } else {
+ ColorFg = Theme.Color(clrItemFont);
+ ColorBg = Theme.Color(clrItemBg);
+ }
+ }
+
+ if( y + itemChannelHeight > menuItemLastHeight )
+ menuItemLastHeight = y + itemChannelHeight;
+
+ menuPixmap->DrawRectangle(cRect(Config.decorBorderMenuItemSize, y, menuItemWidth, Height), ColorBg);
+
+ int Left, Top, Width;
+ int LeftName;
+ Left = Config.decorBorderMenuItemSize + marginItem;
+ Top = y;
+
+ if( Channel->GroupSep() )
+ DrawProgress = false;
+ float progress = 0.0;
+ cString EventTitle = "";
+
+ cString ws = cString::sprintf("%d", Channels.MaxNumber());
+ int w = font->Width(ws);
+ if( !Channel->GroupSep() )
+ buffer = cString::sprintf("%d", Channel->Number());
+ else
+ buffer = "";
+ Width = font->Width(buffer);
+ if( Width < w )
+ Width = w;
+ menuPixmap->DrawText(cPoint(Left, Top), buffer, ColorFg, ColorBg, font, Width, fontHeight, taRight);
+ Left += Width + marginItem;
+
+ int imageHeight = fontHeight;
+ int imageLeft = Left;
+ int imageTop = Top;
+ int imageBGHeight = imageHeight;
+ int imageBGWidth = imageHeight*1.34;
+
+ if( !Channel->GroupSep() ) {
+ cImage *imgBG = imgLoader.LoadIcon("logo_background", imageHeight*1.34, imageHeight);
+ if( imgBG ) {
+ imageBGHeight = imgBG->Height();
+ imageBGWidth = imgBG->Width();
+ imageTop = Top + (fontHeight - imgBG->Height()) / 2;
+ menuIconsBGPixmap->DrawImage( cPoint(imageLeft, imageTop), *imgBG );
+ }
+ }
+ cImage *img = imgLoader.LoadLogo(Channel->Name(), imageBGWidth - 4, imageBGHeight - 4);
+ if( img ) {
+ imageTop = Top + (imageBGHeight - img->Height()) / 2;
+ imageLeft = Left + (imageBGWidth - img->Width()) / 2;
+
+ menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), *img );
+ Left += imageBGWidth + marginItem * 2;
+ } else {
+ bool isRadioChannel = ((!Channel->Vpid())&&(Channel->Apid(0))) ? true : false;
+
+ if( isRadioChannel ) {
+ img = imgLoader.LoadIcon("radio", imageBGWidth - 10, imageBGHeight - 10);
+ if( img ) {
+ imageTop = Top + (imageBGHeight - img->Height()) / 2;
+ imageLeft = Left + (imageBGWidth - img->Width()) / 2;
+ menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), *img );
+ Left += imageBGWidth + marginItem * 2;
+ }
+ } else if( Channel->GroupSep() ) {
+ img = imgLoader.LoadIcon("changroup", imageBGWidth - 10, imageBGHeight - 10);
+ if( img ) {
+ imageTop = Top + (imageBGHeight - img->Height()) / 2;
+ imageLeft = Left + (imageBGWidth - img->Width()) / 2;
+ menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), *img );
+ Left += imageBGWidth + marginItem * 2;
+ }
+ } else {
+ img = imgLoader.LoadIcon("tv", imageBGWidth - 10, imageBGHeight - 10);
+ if( img ) {
+ imageTop = Top + (imageBGHeight - img->Height()) / 2;
+ imageLeft = Left + (imageBGWidth - img->Width()) / 2;
+ menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), *img );
+ Left += imageBGWidth + marginItem * 2;
+ }
+ }
+ }
+
+ LeftName = Left;
+
+ // event from channel
+ const cSchedule *Schedule = schedules->GetSchedule( Channel->GetChannelID() );
+ if( Schedule ) {
+ Event = Schedule->GetPresentEvent();
+ if( Event ) {
+ // calculate progress bar
+ progress = (int)roundf( (float)(time(NULL) - Event->StartTime()) / (float) (Event->Duration()) * 100.0);
+ if(progress < 0)
+ progress = 0.;
+ else if(progress > 100)
+ progress = 100;
+
+ EventTitle = Event->Title();
+ }
+ }
+
+ if( WithProvider )
+ buffer = cString::sprintf("%s - %s", Channel->Provider(), Channel->Name());
+ else
+ buffer = cString::sprintf("%s", Channel->Name());
+
+ if( Config.MenuChannelView == 1 ) {
+ Width = menuItemWidth - LeftName;
+ if( Channel->GroupSep() ) {
+ int lineTop = Top + (fontHeight - 3) / 2;
+ menuPixmap->DrawRectangle(cRect( Left, lineTop, menuItemWidth - Left, 3), ColorFg);
+ cString groupname = cString::sprintf(" %s ", *buffer);
+ menuPixmap->DrawText(cPoint(Left + (menuItemWidth / 10 * 2), Top), groupname, ColorFg, ColorBg, font, 0, 0, taCenter);
+ } else {
+ if( Current && font->Width(buffer) > (Width) && Config.ScrollerEnable ) {
+ menuItemScroller.AddScroller(buffer, cRect(LeftName, Top + menuTop, Width, fontHeight), ColorFg, clrTransparent, font);
+ } else {
+ menuPixmap->DrawText(cPoint(LeftName, Top), buffer, ColorFg, ColorBg, font, Width);
+ }
+ }
+ } else {
+ Width = menuItemWidth / 10*2;
+ if( isScrolling )
+ Width = (menuItemWidth + scrollBarWidth) / 10*2;
+
+ if( Config.MenuChannelView == 3 || Config.MenuChannelView == 4 )
+ Width = menuItemWidth - LeftName;
+
+ if( Channel->GroupSep() ) {
+ int lineTop = Top + (fontHeight - 3) / 2;
+ menuPixmap->DrawRectangle(cRect( Left, lineTop, menuItemWidth - Left, 3), ColorFg);
+ cString groupname = cString::sprintf(" %s ", *buffer);
+ menuPixmap->DrawText(cPoint(Left + (menuItemWidth / 10 * 2), Top), groupname, ColorFg, ColorBg, font, 0, 0, taCenter);
+ } else {
+ if( Current && font->Width(buffer) > (Width) && Config.ScrollerEnable ) {
+ menuItemScroller.AddScroller(buffer, cRect(LeftName, Top + menuTop, Width, fontHeight), ColorFg, clrTransparent, font);
+ } else {
+ menuPixmap->DrawText(cPoint(LeftName, Top), buffer, ColorFg, ColorBg, font, Width);
+ }
+
+ Left += Width + marginItem;
+
+ if( DrawProgress ) {
+ int PBTop = y + (itemChannelHeight-Config.MenuItemPadding)/2 - Config.decorProgressMenuItemSize/2 - Config.decorBorderMenuItemSize;
+ int PBLeft = Left;
+ int PBWidth = menuItemWidth/10;
+ if( Config.MenuChannelView == 3 || Config.MenuChannelView == 4 ) {
+ PBTop = Top + fontHeight + fontSmlHeight;
+ PBLeft = Left - Width - marginItem;
+ PBWidth = menuItemWidth - LeftName - marginItem*2 - Config.decorBorderMenuItemSize - scrollBarWidth;
+
+ if( isScrolling )
+ PBWidth += scrollBarWidth;
+ }
+
+ Width = menuItemWidth/10;
+ if( isScrolling )
+ Width = (menuItemWidth + scrollBarWidth) / 10;
+ if( Current )
+ ProgressBarDrawRaw(menuPixmap, menuPixmap, cRect( PBLeft, PBTop, PBWidth, Config.decorProgressMenuItemSize),
+ cRect( PBLeft, PBTop, PBWidth, Config.decorProgressMenuItemSize), progress, 100,
+ Config.decorProgressMenuItemCurFg, Config.decorProgressMenuItemCurBarFg, Config.decorProgressMenuItemCurBg, Config.decorProgressMenuItemType, false);
+ else
+ ProgressBarDrawRaw(menuPixmap, menuPixmap, cRect( PBLeft, PBTop, PBWidth, Config.decorProgressMenuItemSize),
+ cRect( PBLeft, PBTop, PBWidth, Config.decorProgressMenuItemSize), progress, 100,
+ Config.decorProgressMenuItemFg, Config.decorProgressMenuItemBarFg, Config.decorProgressMenuItemBg, Config.decorProgressMenuItemType, false);
+ Left += Width + marginItem;
+ }
+
+ if( Config.MenuChannelView == 3 || Config.MenuChannelView == 4 ) {
+ Left = LeftName;
+ Top += fontHeight;
+
+ if( Current && fontSml->Width(EventTitle) > (menuItemWidth - Left - marginItem) && Config.ScrollerEnable ) {
+ menuItemScroller.AddScroller(EventTitle, cRect(Left, Top + menuTop, menuItemWidth - Left - marginItem, fontSmlHeight), ColorFg, clrTransparent, fontSml);
+ } else {
+ menuPixmap->DrawText(cPoint(Left, Top), EventTitle, ColorFg, ColorBg, fontSml, menuItemWidth - Left - marginItem );
+ }
+ } else {
+ if( Current && font->Width(EventTitle) > (menuItemWidth - Left - marginItem) && Config.ScrollerEnable ) {
+ menuItemScroller.AddScroller(EventTitle, cRect(Left, Top + menuTop, menuItemWidth - Left - marginItem, fontHeight), ColorFg, clrTransparent, font);
+ } else {
+ menuPixmap->DrawText(cPoint(Left, Top), EventTitle, ColorFg, ColorBg, font, menuItemWidth - Left - marginItem );
+ }
+ }
+ }
+ }
+
+ sDecorBorder ib;
+ ib.Left = Config.decorBorderMenuItemSize;
+ ib.Top = topBarHeight + marginItem + Config.decorBorderTopBarSize*2 + Config.decorBorderMenuItemSize + y;
+
+ ib.Width = menuItemWidth - Config.decorBorderMenuItemSize*2;
+
+ if( isScrolling ) {
+ ib.Width -= scrollBarWidth;
+ }
+
+ ib.Width = menuItemWidth;
+
+ ib.Height = Height;
+ ib.Size = Config.decorBorderMenuItemSize;
+ ib.Type = Config.decorBorderMenuItemType;
+
+ if( Current ) {
+ ib.ColorFg = Config.decorBorderMenuItemCurFg;
+ ib.ColorBg = Config.decorBorderMenuItemCurBg;
+ } else {
+ if( Selectable ) {
+ ib.ColorFg = Config.decorBorderMenuItemSelFg;
+ ib.ColorBg = Config.decorBorderMenuItemSelBg;
+ } else {
+ ib.ColorFg = Config.decorBorderMenuItemFg;
+ ib.ColorBg = Config.decorBorderMenuItemBg;
+ }
+ }
+
+ DecorBorderDraw(ib.Left, ib.Top, ib.Width, ib.Height,
+ ib.Size, ib.Type, ib.ColorFg, ib.ColorBg, BorderMenuItem);
+
+ if( !isScrolling ) {
+ ItemBorderInsertUnique(ib);
+ }
+
+ if( Config.MenuChannelView == 4 && Current ) {
+ DrawItemExtraEvent(Event, "");
+ }
+
+ return true;
+}
+
+void cFlatDisplayMenu::DrawItemExtraEvent(const cEvent *Event, cString EmptyText) {
+ cLeft = menuItemWidth + Config.decorBorderMenuItemSize*2 + Config.decorBorderMenuContentSize + marginItem;
+ if( isScrolling )
+ cLeft += scrollBarWidth;
+ cTop = topBarHeight + marginItem + Config.decorBorderTopBarSize*2 + Config.decorBorderMenuContentSize;
+ cWidth = menuWidth - cLeft - Config.decorBorderMenuContentSize;
+ cHeight = osdHeight - (topBarHeight + Config.decorBorderTopBarSize*2 +
+ buttonsHeight + Config.decorBorderButtonSize*2 + marginItem*3 + Config.decorBorderMenuContentSize*2);
+
+ bool isEmpty = false;
+ // Description
+ ostringstream text;
+ if( Event ) {
+ if( !isempty(Event->Description()) ) {
+ text << Event->Description();
+ }
+
+ if( Config.EpgAdditionalInfoShow ) {
+ text << endl;
+ // Genre
+ bool firstContent = true;
+ for (int i = 0; Event->Contents(i); i++) {
+ if (!isempty(Event->ContentToString(Event->Contents(i)))) { // skip empty (user defined) content
+ if (!firstContent)
+ text << ", ";
+ else
+ text << endl << tr("Genre") << ": ";
+ text << Event->ContentToString(Event->Contents(i));
+ firstContent = false;
+ }
+ }
+ // FSK
+ if( Event->ParentalRating() ) {
+ text << endl << tr("FSK") << ": ";
+ text << *Event->GetParentalRatingString();
+ }
+ const cComponents *Components = Event->Components();
+ if (Components) {
+ ostringstream audio;
+ bool firstAudio = true;
+ const char *audio_type = NULL;
+ ostringstream subtitle;
+ bool firstSubtitle = true;
+ for (int i = 0; i < Components->NumComponents(); i++) {
+ const tComponent *p = Components->Component(i);
+ switch (p->stream) {
+ case sc_video_MPEG2:
+ if (p->description)
+ text << endl << tr("Video") << ": " << p->description << " (MPEG2)";
+ else
+ text << endl << tr("Video") << ": MPEG2";
+ break;
+ case sc_video_H264_AVC:
+ if (p->description)
+ text << endl << tr("Video") << ": " << p->description << " (H.264)";
+ else
+ text << endl << tr("Video") << ": H.264";
+ break;
+
+ case sc_audio_MP2:
+ case sc_audio_AC3:
+ case sc_audio_HEAAC:
+ if (firstAudio)
+ firstAudio = false;
+ else
+ audio << ", ";
+ switch (p->stream) {
+ case sc_audio_MP2:
+ // workaround for wrongfully used stream type X 02 05 for AC3
+ if (p->type == 5)
+ audio_type = "AC3";
+ else
+ audio_type = "MP2";
+ break;
+ case sc_audio_AC3:
+ audio_type = "AC3"; break;
+ case sc_audio_HEAAC:
+ audio_type = "HEAAC"; break;
+ }
+ if (p->description)
+ audio << p->description << " (" << audio_type << ", " << p->language << ")";
+ else
+ audio << p->language << " (" << audio_type << ")";
+ break;
+ case sc_subtitle:
+ if (firstSubtitle)
+ firstSubtitle = false;
+ else
+ subtitle << ", ";
+ if (p->description)
+ subtitle << p->description << " (" << p->language << ")";
+ else
+ subtitle << p->language;
+ break;
+ }
+ }
+ if (audio.str().length() > 0)
+ text << endl << tr("Audio") << ": "<< audio.str();
+ if (subtitle.str().length() > 0)
+ text << endl << tr("Subtitle") << ": "<< subtitle.str();
+ }
+ }
+ } else {
+ text << *EmptyText;
+ isEmpty = true;
+ }
+
+ ComplexContent.Clear();
+ ComplexContent.SetScrollSize(fontSmlHeight);
+ ComplexContent.SetScrollingActive(false);
+ ComplexContent.SetOsd(osd);
+ ComplexContent.SetPosition(cRect(cLeft, cTop, cWidth, cHeight));
+ ComplexContent.SetBGColor(Theme.Color(clrMenuEventBg));
+
+ if( isEmpty ) {
+ cImage *img = imgLoader.LoadIcon("timerInactiveBig", 256, 256);
+ if( img ) {
+ ComplexContent.AddImage(img, cRect(marginItem, marginItem, img->Width(), img->Height()) );
+ ComplexContent.AddText(text.str().c_str(), true, cRect(marginItem, marginItem + img->Height(), cWidth - marginItem*2, cHeight - marginItem*2),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml);
+ }
+ } else {
+ std::string mediaPath;
+ int mediaWidth = 0;
+ int mediaHeight = 0;
+ int mediaType = 0;
+
+ // first try scraper2vdr
+ static cPlugin *pScraper = cPluginManager::GetPlugin("scraper2vdr");
+ if( !pScraper ) // if it doesn't exit, try tvscraper
+ pScraper = cPluginManager::GetPlugin("tvscraper");
+
+ if( Config.TVScraperEPGInfoShowPoster && pScraper ) {
+ ScraperGetPosterBanner call;
+ call.event = Event;
+ if (pScraper->Service("GetPosterBanner", &call)) {
+ if ((call.type == tSeries) && call.banner.path.size() > 0) {
+ mediaWidth = cWidth - marginItem*2;
+ mediaHeight = 999;
+ mediaPath = call.banner.path;
+ mediaType = 1;
+ } else if (call.type == tMovie && call.poster.path.size() > 0) {
+ mediaWidth = cWidth/2 - marginItem*3;
+ mediaHeight = 999;
+ mediaPath = call.poster.path;
+ mediaType = 2;
+ }
+ }
+ }
+
+ if( mediaPath.length() > 0 ) {
+ cImage *img = imgLoader.LoadFile(mediaPath.c_str(), mediaWidth, mediaHeight);
+ if( img && mediaType == 2 ) {
+ ComplexContent.AddImageWithFloatedText(img, CIP_Right, text.str().c_str(), cRect(marginItem, marginItem, cWidth - marginItem*2, cHeight - marginItem*2),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml);
+ } else if( img && mediaType == 1 ) {
+ ComplexContent.AddImage(img, cRect(marginItem, marginItem, img->Width(), img->Height()) );
+ ComplexContent.AddText(text.str().c_str(), true, cRect(marginItem, marginItem + img->Height(), cWidth - marginItem*2, cHeight - marginItem*2),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml);
+ } else {
+ ComplexContent.AddText(text.str().c_str(), true, cRect(marginItem, marginItem, cWidth - marginItem*2, cHeight - marginItem*2),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml);
+ }
+ } else {
+ ComplexContent.AddText(text.str().c_str(), true, cRect(marginItem, marginItem, cWidth - marginItem*2, cHeight - marginItem*2),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml);
+ }
+ }
+ ComplexContent.CreatePixmaps(Config.MenuContentFullSize);
+
+ ComplexContent.Draw();
+
+ DecorBorderClearByFrom(BorderContent);
+ if( Config.MenuContentFullSize )
+ DecorBorderDraw(cLeft, cTop, cWidth, ComplexContent.ContentHeight(true), Config.decorBorderMenuContentSize, Config.decorBorderMenuContentType,
+ Config.decorBorderMenuContentFg, Config.decorBorderMenuContentBg, BorderContent);
+ else
+ DecorBorderDraw(cLeft, cTop, cWidth, ComplexContent.ContentHeight(false), Config.decorBorderMenuContentSize, Config.decorBorderMenuContentType,
+ Config.decorBorderMenuContentFg, Config.decorBorderMenuContentBg, BorderContent);
+}
+
+bool cFlatDisplayMenu::SetItemTimer(const cTimer *Timer, int Index, bool Current, bool Selectable) {
+ if( Config.MenuTimerView == 0 || !Timer )
+ return false;
+ const cChannel *Channel = Timer->Channel();
+ const cEvent *Event = Timer->Event();
+
+ cString buffer;
+ int y = Index * itemTimerHeight;
+
+ if( Current )
+ menuItemScroller.Clear();
+
+ int Height = fontHeight;
+ if( Config.MenuTimerView == 2 || Config.MenuTimerView == 3 )
+ Height = fontHeight + fontSmlHeight + marginItem;
+
+ menuItemWidth = menuWidth - Config.decorBorderMenuItemSize*2;
+ if( Config.MenuTimerView == 2 || Config.MenuTimerView == 3 )
+ menuItemWidth *= 0.5;
+
+ if( isScrolling )
+ menuItemWidth -= scrollBarWidth;
+
+ tColor ColorFg, ColorBg, ColorExtraTextFg;
+ ColorExtraTextFg = Theme.Color(clrMenuItemExtraTextFont);
+ if (Current) {
+ ColorFg = Theme.Color(clrItemCurrentFont);
+ ColorBg = Theme.Color(clrItemCurrentBg);
+ ColorExtraTextFg = Theme.Color(clrMenuItemExtraTextCurrentFont);
+ }
+ else {
+ if( Selectable ) {
+ ColorFg = Theme.Color(clrItemSelableFont);
+ ColorBg = Theme.Color(clrItemSelableBg);
+ } else {
+ ColorFg = Theme.Color(clrItemFont);
+ ColorBg = Theme.Color(clrItemBg);
+ }
+ }
+
+ if( y + itemTimerHeight > menuItemLastHeight )
+ menuItemLastHeight = y + itemTimerHeight;
+
+ menuPixmap->DrawRectangle(cRect(Config.decorBorderMenuItemSize, y, menuItemWidth, Height), ColorBg);
+ cImage *img = NULL;
+ int Left, Top;
+ Left = Config.decorBorderMenuItemSize + marginItem;
+ Top = y;
+
+ int imageHeight = fontHeight;
+ int imageLeft = Left;
+ int imageTop = Top;
+
+ cString TimerIconName("");
+ if (!(Timer->HasFlags(tfActive))) {
+ TimerIconName = "timerInactive";
+ ColorFg = Theme.Color( clrMenuTimerItemDisabledFont );
+ } else if (Timer->Recording()) {
+ TimerIconName = "timerRecording";
+ ColorFg = Theme.Color( clrMenuTimerItemRecordingFont );
+ } else
+ TimerIconName = "timerActive";
+
+ img = imgLoader.LoadIcon(TimerIconName, imageHeight, imageHeight);
+ if( img ) {
+ imageTop = Top + (fontHeight - img->Height()) / 2;
+ menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), *img );
+ Left += imageHeight + marginItem * 2;
+ }
+
+ cString ws = cString::sprintf("%d", Channels.MaxNumber());
+ int w = font->Width(ws);
+ buffer = cString::sprintf("%d", Channel->Number());
+ int Width = font->Width(buffer);
+ if( Width < w )
+ Width = w;
+ menuPixmap->DrawText(cPoint(Left, Top), buffer, ColorFg, ColorBg, font, Width, fontHeight, taRight);
+ Left += Width + marginItem;
+
+ imageLeft = Left;
+
+ int imageBGHeight = imageHeight;
+ int imageBGWidth = imageHeight*1.34;
+
+ cImage *imgBG = imgLoader.LoadIcon("logo_background", imageBGWidth, imageBGHeight);
+ if( imgBG ) {
+ imageBGHeight = imgBG->Height();
+ imageBGWidth = imgBG->Width();
+ imageTop = Top + (fontHeight - imgBG->Height()) / 2;
+ menuIconsBGPixmap->DrawImage( cPoint(imageLeft, imageTop), *imgBG );
+ }
+
+ img = imgLoader.LoadLogo(Channel->Name(), imageBGWidth - 4, imageBGHeight - 4);
+ if( img ) {
+ imageTop = Top + (imageBGHeight - img->Height()) / 2;
+ imageLeft = Left + (imageBGWidth - img->Width()) / 2;
+ menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), *img );
+ } else {
+ bool isRadioChannel = ((!Channel->Vpid())&&(Channel->Apid(0))) ? true : false;
+
+ if( isRadioChannel ) {
+ img = imgLoader.LoadIcon("radio", imageBGWidth - 10, imageBGHeight - 10);
+ if( img ) {
+ imageTop = Top + (imageBGHeight - img->Height()) / 2;
+ imageLeft = Left + (imageBGWidth - img->Width()) / 2;
+ menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), *img );
+ }
+ } else if( Channel->GroupSep() ) {
+ img = imgLoader.LoadIcon("changroup", imageBGWidth - 10, imageBGHeight - 10);
+ if( img ) {
+ imageTop = Top + (imageBGHeight - img->Height()) / 2;
+ imageLeft = Left + (imageBGWidth - img->Width()) / 2;
+ menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), *img );
+ }
+ } else {
+ img = imgLoader.LoadIcon("tv", imageBGWidth - 10, imageBGHeight - 10);
+ if( img ) {
+ imageTop = Top + (imageBGHeight - img->Height()) / 2;
+ imageLeft = Left + (imageBGWidth - img->Width()) / 2;
+ menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), *img );
+ }
+ }
+ }
+ Left += imageBGWidth + marginItem * 2;
+
+ cString day, name("");
+ if (Timer->WeekDays())
+ day = Timer->PrintDay(0, Timer->WeekDays(), false);
+ else if (Timer->Day() - time(NULL) < 28 * SECSINDAY) {
+ day = itoa(Timer->GetMDay(Timer->Day()));
+ name = WeekDayName(Timer->Day());
+ } else {
+ struct tm tm_r;
+ time_t Day = Timer->Day();
+ localtime_r(&Day, &tm_r);
+ char buffer[16];
+ strftime(buffer, sizeof(buffer), "%Y%m%d", &tm_r);
+ day = buffer;
+ }
+ const char *File = Setup.FoldersInTimerMenu ? NULL : strrchr(Timer->File(), FOLDERDELIMCHAR);
+ if (File && strcmp(File + 1, TIMERMACRO_TITLE) && strcmp(File + 1, TIMERMACRO_EPISODE))
+ File++;
+ else
+ File = Timer->File();
+
+ if( Config.MenuTimerView == 1 ) {
+ buffer = cString::sprintf("%s%s%s.", *name, *name && **name ? " " : "", *day);
+ menuPixmap->DrawText(cPoint(Left, Top), buffer, ColorFg, ColorBg, font, menuItemWidth - Left - marginItem);
+ Left += font->Width("XXX 99. ");
+ buffer = cString::sprintf("%02d:%02d - %02d:%02d",Timer->Start() / 100, Timer->Start() % 100, Timer->Stop() / 100, Timer->Stop() % 100);
+ menuPixmap->DrawText(cPoint(Left, Top), buffer, ColorFg, ColorBg, font, menuItemWidth - Left - marginItem);
+ Left += font->Width("99:99 - 99:99 ");
+
+ if( Current && font->Width(File) > (menuItemWidth - Left - marginItem) && Config.ScrollerEnable ) {
+ menuItemScroller.AddScroller(File, cRect(Left, Top + menuTop, menuItemWidth - Left - marginItem, fontHeight), ColorFg, clrTransparent, font, ColorExtraTextFg);
+ } else {
+ if( Config.MenuItemParseTilde ) {
+ std::string tilde = File;
+ size_t found = tilde.find(" ~ ");
+ size_t found2 = tilde.find("~");
+ if( found != string::npos ) {
+ std::string first = tilde.substr(0, found);
+ std::string second = tilde.substr(found +2, tilde.length() );
+
+ menuPixmap->DrawText(cPoint(Left, Top), first.c_str(), ColorFg, ColorBg, font, menuItemWidth - Left - marginItem);
+ int l = font->Width( first.c_str() );
+ menuPixmap->DrawText(cPoint(Left + l, Top), second.c_str(), ColorExtraTextFg, ColorBg, font, menuItemWidth - Left - l - marginItem);
+ } else if ( found2 != string::npos ) {
+ std::string first = tilde.substr(0, found2);
+ std::string second = tilde.substr(found2 +1, tilde.length() );
+
+ menuPixmap->DrawText(cPoint(Left, Top), first.c_str(), ColorFg, ColorBg, font, menuItemWidth - Left - marginItem);
+ int l = font->Width( first.c_str() );
+ l += font->Width("X");
+ menuPixmap->DrawText(cPoint(Left + l, Top), second.c_str(), ColorExtraTextFg, ColorBg, font, menuItemWidth - Left - l - marginItem);
+ } else
+ menuPixmap->DrawText(cPoint(Left, Top), File, ColorFg, ColorBg, font, menuItemWidth - Left - marginItem);
+ } else {
+ menuPixmap->DrawText(cPoint(Left, Top), File, ColorFg, ColorBg, font, menuItemWidth - Left - marginItem);
+ }
+ }
+ } else if( Config.MenuTimerView == 2 || Config.MenuTimerView == 3 ) {
+ buffer = cString::sprintf("%s%s%s. %02d:%02d - %02d:%02d",
+ *name, *name && **name ? " " : "", *day,
+ Timer->Start() / 100, Timer->Start() % 100,
+ Timer->Stop() / 100, Timer->Stop() % 100);
+ menuPixmap->DrawText(cPoint(Left, Top), buffer, ColorFg, ColorBg, font, menuItemWidth - Left - marginItem);
+
+ if( Current && fontSml->Width(File) > (menuItemWidth - Left - marginItem) && Config.ScrollerEnable ) {
+ menuItemScroller.AddScroller(File, cRect(Left, Top + fontHeight + menuTop, menuItemWidth - Left - marginItem - scrollBarWidth, fontSmlHeight), ColorFg, clrTransparent, fontSml, ColorExtraTextFg);
+ } else {
+ if( Config.MenuItemParseTilde ) {
+ std::string tilde = File;
+ size_t found = tilde.find(" ~ ");
+ size_t found2 = tilde.find("~");
+ if( found != string::npos ) {
+ std::string first = tilde.substr(0, found);
+ std::string second = tilde.substr(found +2, tilde.length() );
+
+ menuPixmap->DrawText(cPoint(Left, Top + fontHeight), first.c_str(), ColorFg, ColorBg, fontSml, menuItemWidth - Left - marginItem);
+ int l = fontSml->Width( first.c_str() );
+ menuPixmap->DrawText(cPoint(Left + l, Top + fontHeight), second.c_str(), ColorExtraTextFg, ColorBg, fontSml, menuItemWidth - Left - l - marginItem);
+ } else if ( found2 != string::npos ) {
+ std::string first = tilde.substr(0, found2);
+ std::string second = tilde.substr(found2 +1, tilde.length() );
+
+ menuPixmap->DrawText(cPoint(Left, Top + fontHeight), first.c_str(), ColorFg, ColorBg, fontSml, menuItemWidth - Left - marginItem);
+ int l = fontSml->Width( first.c_str() );
+ l += fontSml->Width("X");
+ menuPixmap->DrawText(cPoint(Left + l, Top + fontHeight), second.c_str(), ColorExtraTextFg, ColorBg, fontSml, menuItemWidth - Left - l - marginItem);
+ } else
+ menuPixmap->DrawText(cPoint(Left, Top + fontHeight), File, ColorFg, ColorBg, fontSml, menuItemWidth - Left - marginItem);
+ } else {
+ menuPixmap->DrawText(cPoint(Left, Top + fontHeight), File, ColorFg, ColorBg, fontSml, menuItemWidth - Left - marginItem);
+ }
+ }
+ }
+
+ sDecorBorder ib;
+ ib.Left = Config.decorBorderMenuItemSize;
+ ib.Top = topBarHeight + marginItem + Config.decorBorderTopBarSize*2 + Config.decorBorderMenuItemSize + y;
+
+ ib.Width = menuItemWidth - Config.decorBorderMenuItemSize*2;
+
+ if( isScrolling ) {
+ ib.Width -= scrollBarWidth;
+ }
+
+ ib.Width = menuItemWidth;
+
+ ib.Height = Height;
+ ib.Size = Config.decorBorderMenuItemSize;
+ ib.Type = Config.decorBorderMenuItemType;
+
+ if( Current ) {
+ ib.ColorFg = Config.decorBorderMenuItemCurFg;
+ ib.ColorBg = Config.decorBorderMenuItemCurBg;
+ } else {
+ if( Selectable ) {
+ ib.ColorFg = Config.decorBorderMenuItemSelFg;
+ ib.ColorBg = Config.decorBorderMenuItemSelBg;
+ } else {
+ ib.ColorFg = Config.decorBorderMenuItemFg;
+ ib.ColorBg = Config.decorBorderMenuItemBg;
+ }
+ }
+
+ DecorBorderDraw(ib.Left, ib.Top, ib.Width, ib.Height,
+ ib.Size, ib.Type, ib.ColorFg, ib.ColorBg, BorderMenuItem);
+
+ if( !isScrolling ) {
+ ItemBorderInsertUnique(ib);
+ }
+
+ if( Config.MenuTimerView == 3 && Current ) {
+ DrawItemExtraEvent(Event, tr("timer not enabled"));
+ }
+
+ return true;
+}
+
+bool cFlatDisplayMenu::SetItemEvent(const cEvent *Event, int Index, bool Current, bool Selectable, const cChannel *Channel, bool WithDate, eTimerMatch TimerMatch) {
+ if( Config.MenuEventView == 0 )
+ return false;
+
+ cImage *img = NULL;
+ cString buffer;
+ int y = Index * itemEventHeight;
+
+ if( Current )
+ menuItemScroller.Clear();
+
+ int Height = fontHeight;
+ if( Config.MenuEventView == 2 || Config.MenuEventView == 3 )
+ Height = fontHeight + fontSmlHeight + marginItem*2 + Config.decorProgressMenuItemSize/2;
+
+ menuItemWidth = menuWidth - Config.decorBorderMenuItemSize*2;
+ if( Config.MenuEventView == 2 || Config.MenuEventView == 3 )
+ menuItemWidth *= 0.6;
+
+ if( isScrolling )
+ menuItemWidth -= scrollBarWidth;
+
+ tColor ColorFg, ColorBg, ColorExtraTextFg;
+ ColorExtraTextFg = Theme.Color(clrMenuItemExtraTextFont);
+ if (Current) {
+ ColorFg = Theme.Color(clrItemCurrentFont);
+ ColorBg = Theme.Color(clrItemCurrentBg);
+ ColorExtraTextFg = Theme.Color(clrMenuItemExtraTextCurrentFont);
+ }
+ else {
+ if( Selectable ) {
+ ColorFg = Theme.Color(clrItemSelableFont);
+ ColorBg = Theme.Color(clrItemSelableBg);
+ } else {
+ ColorFg = Theme.Color(clrItemFont);
+ ColorBg = Theme.Color(clrItemBg);
+ }
+ }
+
+ if( y + itemEventHeight > menuItemLastHeight )
+ menuItemLastHeight = y + itemEventHeight;
+
+ menuPixmap->DrawRectangle(cRect(Config.decorBorderMenuItemSize, y, menuItemWidth, Height), ColorBg);
+
+ int Left = 0, Top = 0, LeftSecond = 0;
+ LeftSecond = Left = Config.decorBorderMenuItemSize + marginItem;
+ Top = y;
+ int imageTop = Top;
+ int w = 0;
+
+ if( !Channel ) {
+ TopBarSetMenuLogo( ItemEventLastChannelName );
+ }
+
+ if( Channel ) {
+ ItemEventLastChannelName = Channel->Name();
+ cString ws = cString::sprintf("%d", Channels.MaxNumber());
+ w = font->Width(ws);
+ if( !Channel->GroupSep() ) {
+ buffer = cString::sprintf("%d", Channel->Number());
+ int Width = font->Width(buffer);
+ if( Width < w )
+ Width = w;
+ menuPixmap->DrawText(cPoint(Left, Top), buffer, ColorFg, ColorBg, font, Width, fontHeight, taRight);
+ }
+ Left += w + marginItem;
+
+ int imageLeft = Left;
+ int imageBGHeight = fontHeight;
+ int imageBGWidth = fontHeight*1.34;
+ cImage *imgBG = imgLoader.LoadIcon("logo_background", imageBGWidth, imageBGHeight);
+ if( imgBG && !Channel->GroupSep() ) {
+ imageBGHeight = imgBG->Height();
+ imageBGWidth = imgBG->Width();
+ imageTop = Top + (fontHeight - imgBG->Height()) / 2;
+ menuIconsBGPixmap->DrawImage( cPoint(imageLeft, imageTop), *imgBG );
+ }
+ img = imgLoader.LoadLogo(Channel->Name(), imageBGWidth - 4, imageBGHeight - 4);
+ if( img ) {
+ imageTop = Top + (imageBGHeight - img->Height()) / 2;
+ imageLeft = Left + (imageBGWidth - img->Width()) / 2;
+ menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), *img );
+ } else {
+ bool isRadioChannel = ((!Channel->Vpid())&&(Channel->Apid(0))) ? true : false;
+
+ if( isRadioChannel ) {
+ img = imgLoader.LoadIcon("radio", imageBGWidth - 10, imageBGHeight - 10);
+ if( img ) {
+ imageTop = Top + (imageBGHeight - img->Height()) / 2;
+ imageLeft = Left + (imageBGWidth - img->Width()) / 2;
+ menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), *img );
+ }
+ } else if( Channel->GroupSep() ) {
+ img = imgLoader.LoadIcon("changroup", imageBGWidth - 10, imageBGHeight - 10);
+ if( img ) {
+ imageTop = Top + (imageBGHeight - img->Height()) / 2;
+ imageLeft = Left + (imageBGWidth - img->Width()) / 2;
+ menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), *img );
+ }
+ } else {
+ img = imgLoader.LoadIcon("tv", imageBGWidth - 10, imageBGHeight - 10);
+ if( img ) {
+ imageTop = Top + (imageBGHeight - img->Height()) / 2;
+ imageLeft = Left + (imageBGWidth - img->Width()) / 2;
+ menuIconsPixmap->DrawImage( cPoint(imageLeft, imageTop), *img );
+ }
+ }
+ }
+ Left += imageBGWidth + marginItem * 2;
+ LeftSecond = Left;
+
+ cString channame;
+
+ w = menuItemWidth / 10 * 2;
+ if( !isScrolling )
+ w = (menuItemWidth - scrollBarWidth)/ 10 * 2;
+
+ if( Config.MenuEventView == 2 || Config.MenuEventView == 3 ) {
+ channame = Channel->Name();
+ w = font->Width(channame);
+ } else
+ channame = Channel->ShortName(true);
+
+ if( Channel->GroupSep() ) {
+ int lineTop = Top + (fontHeight - 3) / 2;
+ menuPixmap->DrawRectangle(cRect( Left, lineTop, menuItemWidth - Left, 3), ColorFg);
+ Left += w / 2;
+ cString groupname = cString::sprintf(" %s ", *channame);
+ menuPixmap->DrawText(cPoint(Left, Top), groupname, ColorFg, ColorBg, font, 0, 0, taCenter);
+ } else
+ menuPixmap->DrawText(cPoint(Left, Top), channame, ColorFg, ColorBg, font, w);
+
+ Left += w + marginItem * 2;
+
+ if( Event ) {
+ int PBWidth = menuItemWidth / 20;
+
+ if( !isScrolling )
+ PBWidth = (menuItemWidth - scrollBarWidth) / 20;
+ time_t now = time(NULL);
+
+ if( (now >= (Event->StartTime() - 2*60) ) ) {
+ int total = Event->EndTime() - Event->StartTime();
+ if( total >= 0 ) {
+ // calculate progress bar
+ double progress = (int)roundf( (float)(time(NULL) - Event->StartTime()) / (float) (Event->Duration()) * 100.0);
+ if(progress < 0)
+ progress = 0.;
+ else if(progress > 100)
+ progress = 100;
+ int PBTop = y + (itemEventHeight - Config.MenuItemPadding)/2 - Config.decorProgressMenuItemSize/2 - Config.decorBorderMenuItemSize;
+ int PBLeft = Left;
+ int PBHeight = Config.decorProgressMenuItemSize;
+
+
+ if( (Config.MenuEventView == 2 || Config.MenuEventView == 3) ) {
+ PBTop = y + fontHeight + fontSmlHeight + marginItem;
+ PBWidth = menuItemWidth - LeftSecond - scrollBarWidth - marginItem * 2;
+ if( isScrolling )
+ PBWidth += scrollBarWidth;
+
+ PBLeft = LeftSecond;
+ PBHeight = Config.decorProgressMenuItemSize / 2;
+ }
+
+ if( Current )
+ ProgressBarDrawRaw(menuPixmap, menuPixmap, cRect( PBLeft, PBTop, PBWidth, PBHeight),
+ cRect( PBLeft, PBTop, PBWidth, PBHeight), progress, 100,
+ Config.decorProgressMenuItemCurFg, Config.decorProgressMenuItemCurBarFg, Config.decorProgressMenuItemCurBg, Config.decorProgressMenuItemType, false);
+ else
+ ProgressBarDrawRaw(menuPixmap, menuPixmap, cRect( PBLeft, PBTop, PBWidth, PBHeight),
+ cRect( PBLeft, PBTop, PBWidth, PBHeight), progress, 100,
+ Config.decorProgressMenuItemFg, Config.decorProgressMenuItemBarFg, Config.decorProgressMenuItemBg, Config.decorProgressMenuItemType, false);
+ }
+ }
+ Left += PBWidth + marginItem*2;
+ }
+ }
+
+ if( WithDate && Event && Selectable ) {
+ if( (Config.MenuEventView == 2 || Config.MenuEventView == 3) && Channel )
+ w = fontSml->Width("XXX 99. ") + marginItem;
+ else
+ w = font->Width("XXX 99. ") + marginItem;
+
+ struct tm tm_r;
+ time_t Day = Event->StartTime();
+ localtime_r(&Day, &tm_r);
+ char buf[8];
+ strftime(buf, sizeof(buf), "%2d", &tm_r);
+
+ cString DateString = cString::sprintf("%s %s. ", *WeekDayName( (time_t)Event->StartTime()), buf );
+ if( (Config.MenuEventView == 2 || Config.MenuEventView == 3) && Channel ) {
+ menuPixmap->DrawText(cPoint(LeftSecond, Top + fontHeight), DateString, ColorFg, ColorBg, fontSml, w);
+ LeftSecond += w + marginItem;
+ } else
+ menuPixmap->DrawText(cPoint(Left, Top), DateString, ColorFg, ColorBg, font, w, fontHeight, taRight);
+
+ Left += w + marginItem;
+ }
+
+ int imageHeight = fontHeight;
+ if( (Config.MenuEventView == 2 || Config.MenuEventView == 3) && Channel && Event && Selectable ) {
+ Top += fontHeight;
+ Left = LeftSecond;
+ imageHeight = fontSmlHeight;
+ menuPixmap->DrawText(cPoint(Left, Top), Event->GetTimeString(), ColorFg, ColorBg, fontSml);
+ Left += fontSml->Width( Event->GetTimeString() ) + marginItem;
+ } else if( (Config.MenuEventView == 2 || Config.MenuEventView == 3) && Event && Selectable ){
+ imageHeight = fontHeight;
+ menuPixmap->DrawText(cPoint(Left, Top), Event->GetTimeString(), ColorFg, ColorBg, font);
+ Left += font->Width( Event->GetTimeString() ) + marginItem;
+ } else if( Event && Selectable ){
+ menuPixmap->DrawText(cPoint(Left, Top), Event->GetTimeString(), ColorFg, ColorBg, font);
+ Left += font->Width( Event->GetTimeString() ) + marginItem;
+ }
+
+ if( TimerMatch == tmFull ) {
+ img = NULL;
+ if( Current )
+ img = imgLoader.LoadIcon("timer_full_cur", imageHeight, imageHeight);
+ if( img == NULL )
+ img = imgLoader.LoadIcon("timer_full", imageHeight, imageHeight);
+
+ if( img ) {
+ imageTop = Top;
+ menuIconsPixmap->DrawImage( cPoint(Left, imageTop), *img );
+ }
+ } else if( TimerMatch == tmPartial ) {
+ img = NULL;
+ if( Current )
+ img = imgLoader.LoadIcon("timer_partial_cur", imageHeight, imageHeight);
+ if( img == NULL )
+ img = imgLoader.LoadIcon("timer_partial", imageHeight, imageHeight);
+
+ if( img ) {
+ imageTop = Top;
+ menuIconsPixmap->DrawImage( cPoint(Left, imageTop), *img );
+ }
+ }
+ Left += imageHeight + marginItem;
+ if( Event && Selectable ) {
+ if( Event->Vps() && (Event->Vps() - Event->StartTime()) ) {
+ img = NULL;
+ if( Current )
+ img = imgLoader.LoadIcon("vps_cur", imageHeight, imageHeight);
+ if( img == NULL )
+ img = imgLoader.LoadIcon("vps", imageHeight, imageHeight);
+
+ if( img ) {
+ imageTop = Top;
+ menuIconsPixmap->DrawImage( cPoint(Left, imageTop), *img );
+ }
+ }
+ Left += imageHeight + marginItem;
+
+ if( (Config.MenuEventView == 2 || Config.MenuEventView == 3) && Channel ) {
+ if( Current ) {
+ if( Event->ShortText() ) {
+ cString t = cString::sprintf("%s~%s", Event->Title(), Event->ShortText() );
+ if( fontSml->Width(t) > (menuItemWidth - Left - marginItem) && Config.ScrollerEnable ) {
+ menuItemScroller.AddScroller(*t, cRect(Left, Top + menuTop, menuItemWidth - Left - marginItem, fontSmlHeight), ColorFg, clrTransparent, fontSml, ColorExtraTextFg);
+ } else {
+ menuPixmap->DrawText(cPoint(Left, Top), Event->Title(), ColorFg, ColorBg, fontSml, menuItemWidth - Left - marginItem);
+ Left += fontSml->Width( Event->Title() ) + fontSml->Width("~");
+ cString ShortText = cString::sprintf("%s", Event->ShortText());
+ menuPixmap->DrawText(cPoint(Left, Top), ShortText, ColorExtraTextFg, ColorBg, fontSml, menuItemWidth - Left - marginItem);
+ }
+ } else {
+ if( fontSml->Width(Event->Title()) > (menuItemWidth - Left - marginItem) && Config.ScrollerEnable ) {
+ menuItemScroller.AddScroller(Event->Title(), cRect(Left, Top + menuTop, menuItemWidth - Left - marginItem, fontSmlHeight), ColorFg, clrTransparent, fontSml, ColorExtraTextFg);
+ } else {
+ menuPixmap->DrawText(cPoint(Left, Top), Event->Title(), ColorFg, ColorBg, fontSml, menuItemWidth - Left - marginItem);
+ }
+ }
+ } else {
+ menuPixmap->DrawText(cPoint(Left, Top), Event->Title(), ColorFg, ColorBg, fontSml, menuItemWidth - Left - marginItem);
+ if( Event->ShortText() ) {
+ Left += fontSml->Width( Event->Title() ) + font->Width("~");
+ cString ShortText = cString::sprintf("%s", Event->ShortText());
+ menuPixmap->DrawText(cPoint(Left, Top), ShortText, ColorExtraTextFg, ColorBg, fontSml, menuItemWidth - Left - marginItem);
+ }
+ }
+ } else if( (Config.MenuEventView == 2 || Config.MenuEventView == 3) ) {
+ if( Current && font->Width(Event->Title()) > (menuItemWidth - Left - marginItem) && Config.ScrollerEnable ) {
+ menuItemScroller.AddScroller(Event->Title(), cRect(Left, Top + menuTop, menuItemWidth - Left - marginItem, fontHeight), ColorFg, clrTransparent, font);
+ } else {
+ menuPixmap->DrawText(cPoint(Left, Top), Event->Title(), ColorFg, ColorBg, font, menuItemWidth - Left - marginItem);
+ }
+ if( Event->ShortText() ) {
+ Top += fontHeight;
+ if( Current && fontSml->Width(Event->ShortText()) > (menuItemWidth - Left - marginItem) && Config.ScrollerEnable ) {
+ menuItemScroller.AddScroller(Event->ShortText(), cRect(Left, Top + menuTop, menuItemWidth - Left - marginItem, fontHeight), ColorExtraTextFg, clrTransparent, fontSml);
+ } else {
+ menuPixmap->DrawText(cPoint(Left, Top), Event->ShortText(), ColorExtraTextFg, ColorBg, fontSml, menuItemWidth - Left - marginItem);
+ }
+ }
+ } else {
+ if( Current ) {
+ if( Event->ShortText() ) {
+ cString t = cString::sprintf("%s~%s", Event->Title(), Event->ShortText() );
+ if( font->Width(t) > (menuItemWidth - Left - marginItem) && Config.ScrollerEnable ) {
+ menuItemScroller.AddScroller(*t, cRect(Left, Top + menuTop, menuItemWidth - Left - marginItem, fontHeight), ColorFg, clrTransparent, font, ColorExtraTextFg);
+ } else {
+ menuPixmap->DrawText(cPoint(Left, Top), Event->Title(), ColorFg, ColorBg, font, menuItemWidth - Left - marginItem);
+ Left += font->Width(Event->Title()) + font->Width("~");
+ cString ShortText = cString::sprintf("%s", Event->ShortText());
+ menuPixmap->DrawText(cPoint(Left, Top), ShortText, ColorExtraTextFg, ColorBg, font, menuItemWidth - Left - marginItem);
+ }
+ } else {
+ if( font->Width(Event->Title()) > (menuItemWidth - Left - marginItem) && Config.ScrollerEnable ) {
+ menuItemScroller.AddScroller(Event->Title(), cRect(Left, Top + menuTop, menuItemWidth - Left - marginItem, fontHeight), ColorFg, clrTransparent, font, ColorExtraTextFg);
+ } else {
+ menuPixmap->DrawText(cPoint(Left, Top), Event->Title(), ColorFg, ColorBg, font, menuItemWidth - Left - marginItem);
+ }
+ }
+ } else {
+ menuPixmap->DrawText(cPoint(Left, Top), Event->Title(), ColorFg, ColorBg, font, menuItemWidth - Left - marginItem);
+ if( Event->ShortText() ) {
+ Left += font->Width(Event->Title()) + font->Width("~");
+ cString ShortText = cString::sprintf("%s", Event->ShortText());
+ menuPixmap->DrawText(cPoint(Left, Top), ShortText, ColorExtraTextFg, ColorBg, font, menuItemWidth - Left - marginItem);
+ }
+ }
+ }
+ } else if( Event ) {
+ try {
+ // extract date from Separator
+ std::string sep = Event->Title();
+ if( sep.size() > 12 ) {
+ std::size_t found = sep.find(" -");
+ if( found >= 10 ) {
+ std::string date = sep.substr(found - 10, 10);
+ int lineTop = Top + (fontHeight - 3) / 2;
+ menuPixmap->DrawRectangle(cRect( 0, lineTop, menuItemWidth, 3), ColorFg);
+ cString datespace = cString::sprintf(" %s ", date.c_str());
+ menuPixmap->DrawText(cPoint(LeftSecond + menuWidth / 10 * 2, Top), datespace, ColorFg, ColorBg, font, 0, 0, taCenter);
+ } else
+ menuPixmap->DrawText(cPoint(Left, Top), Event->Title(), ColorFg, ColorBg, font, menuItemWidth - Left - marginItem);
+ } else
+ menuPixmap->DrawText(cPoint(Left, Top), Event->Title(), ColorFg, ColorBg, font, menuItemWidth - Left - marginItem);
+ }
+ catch( ... ) {
+ menuPixmap->DrawText(cPoint(Left, Top), Event->Title(), ColorFg, ColorBg, font, menuItemWidth - Left - marginItem);
+ }
+ }
+
+ sDecorBorder ib;
+ ib.Left = Config.decorBorderMenuItemSize;
+ ib.Top = topBarHeight + marginItem + Config.decorBorderTopBarSize*2 + Config.decorBorderMenuItemSize + y;
+
+ ib.Width = menuItemWidth - Config.decorBorderMenuItemSize*2;
+
+ if( isScrolling ) {
+ ib.Width -= scrollBarWidth;
+ }
+
+ ib.Width = menuItemWidth;
+
+ ib.Height = Height;
+ ib.Size = Config.decorBorderMenuItemSize;
+ ib.Type = Config.decorBorderMenuItemType;
+
+ if( Current ) {
+ ib.ColorFg = Config.decorBorderMenuItemCurFg;
+ ib.ColorBg = Config.decorBorderMenuItemCurBg;
+ } else {
+ if( Selectable ) {
+ ib.ColorFg = Config.decorBorderMenuItemSelFg;
+ ib.ColorBg = Config.decorBorderMenuItemSelBg;
+ } else {
+ ib.ColorFg = Config.decorBorderMenuItemFg;
+ ib.ColorBg = Config.decorBorderMenuItemBg;
+ }
+ }
+
+ DecorBorderDraw(ib.Left, ib.Top, ib.Width, ib.Height,
+ ib.Size, ib.Type, ib.ColorFg, ib.ColorBg, BorderMenuItem);
+
+ if( !isScrolling ) {
+ ItemBorderInsertUnique(ib);
+ }
+
+ if( Config.MenuEventView == 3 && Current ) {
+ DrawItemExtraEvent(Event, "");
+ }
+
+ return true;
+}
+
+bool cFlatDisplayMenu::SetItemRecording(const cRecording *Recording, int Index, bool Current, bool Selectable, int Level, int Total, int New) {
+ if( Config.MenuRecordingView == 0 )
+ return false;
+
+ cString buffer;
+ cString RecName = GetRecordingName(Recording, Level, Total == 0);
+
+ if( Level > 0 ) {
+ RecFolder = GetRecordingName(Recording, Level-1, true);
+ } else {
+ RecFolder = "";
+ }
+ LastItemRecordingLevel = Level;
+
+ if( LastRecFolder != RecFolder ) {
+ int recCount = 0, recNewCount = 0;
+ LastRecFolder = RecFolder;
+ if( RecFolder != "" && LastItemRecordingLevel > 0 ) {
+ for(cRecording *Rec = Recordings.First(); Rec; Rec = Recordings.Next(Rec)) {
+ std::string RecFolder2 = GetRecordingName(Rec, LastItemRecordingLevel-1, true);
+ if( RecFolder == RecFolder2 ) {
+ recCount++;
+ if( Rec->IsNew() )
+ recNewCount++;
+ }
+ }
+ } else {
+ for(cRecording *Rec = Recordings.First(); Rec; Rec = Recordings.Next(Rec)) {
+ recCount++;
+ if( Rec->IsNew() )
+ recNewCount++;
+ }
+ }
+ cString newTitle = cString::sprintf("%s (%d*/%d)", *LastTitle, recNewCount, recCount);
+ TopBarSetTitleWithoutClear(*newTitle);
+ }
+
+ if( Current )
+ menuItemScroller.Clear();
+
+ int y = Index * itemRecordingHeight;
+
+ int Height = fontHeight;
+ if( Config.MenuRecordingView == 2 || Config.MenuRecordingView == 3 )
+ Height = fontHeight + fontSmlHeight + marginItem;
+
+ menuItemWidth = menuWidth - Config.decorBorderMenuItemSize*2;
+ if( Config.MenuRecordingView == 2 || Config.MenuRecordingView == 3 )
+ menuItemWidth *= 0.5;
+
+ if( isScrolling )
+ menuItemWidth -= scrollBarWidth;
+
+ tColor ColorFg, ColorBg, ColorExtraTextFg;
+ ColorExtraTextFg = Theme.Color(clrMenuItemExtraTextFont);
+ if (Current) {
+ ColorFg = Theme.Color(clrItemCurrentFont);
+ ColorBg = Theme.Color(clrItemCurrentBg);
+ ColorExtraTextFg = Theme.Color(clrMenuItemExtraTextCurrentFont);
+ }
+ else {
+ if( Selectable ) {
+ ColorFg = Theme.Color(clrItemSelableFont);
+ ColorBg = Theme.Color(clrItemSelableBg);
+ } else {
+ ColorFg = Theme.Color(clrItemFont);
+ ColorBg = Theme.Color(clrItemBg);
+ }
+ }
+
+ if( y + itemRecordingHeight > menuItemLastHeight )
+ menuItemLastHeight = y + itemRecordingHeight;
+
+ menuPixmap->DrawRectangle(cRect(Config.decorBorderMenuItemSize, y, menuItemWidth, Height), ColorBg);
+ cImage *img = NULL;
+ cImage *imgRecNew = NULL;
+ if( Current )
+ imgRecNew = imgLoader.LoadIcon("recording_new_cur", fontHeight, fontHeight);
+ if( imgRecNew == NULL )
+ imgRecNew = imgLoader.LoadIcon("recording_new", fontHeight, fontHeight);
+
+ cImage *imgRecNewSml = NULL;
+ if( Current )
+ imgRecNewSml = imgLoader.LoadIcon("recording_new_cur", fontSmlHeight, fontSmlHeight);
+ if( imgRecNewSml == NULL )
+ imgRecNewSml = imgLoader.LoadIcon("recording_new", fontSmlHeight, fontSmlHeight);
+
+ cImage *imgRecCut = NULL;
+ if( Current )
+ imgRecCut = imgLoader.LoadIcon("recording_cutted_cur", fontHeight, fontHeight);
+ if( imgRecCut == NULL )
+ imgRecCut = imgLoader.LoadIcon("recording_cutted", fontHeight, fontHeight);
+
+ int Left, Top;
+ Left = Config.decorBorderMenuItemSize + marginItem;
+ Top = y;
+
+ if( Config.MenuRecordingView == 1 ) {
+ int LeftWidth = Left + fontHeight + imgRecNew->Width() + imgRecCut->Width() +
+ marginItem * 3 + font->Width("99.99.99 99:99 99:99 ");
+
+ if( Total == 0 ) {
+ img = imgLoader.LoadIcon("recording", fontHeight, fontHeight);
+ if( img ) {
+ menuIconsPixmap->DrawImage( cPoint(Left, Top), *img );
+ Left += fontHeight + marginItem;
+ }
+
+ //int Minutes = max(0, (Recording->LengthInSeconds() + 30) / 60);
+ int Minutes = (Recording->LengthInSeconds() + 30) / 60;
+ cString Length = cString::sprintf("%02d:%02d", Minutes / 60, Minutes % 60);
+ buffer = cString::sprintf("%s %s %s ", *ShortDateString(Recording->Start()), *TimeString(Recording->Start()), *Length);
+
+ menuPixmap->DrawText(cPoint(Left, Top), buffer, ColorFg, ColorBg, font, menuItemWidth - Left - marginItem);
+
+ Left += font->Width( buffer );
+ if( Recording->IsNew() ) {
+ if( imgRecNew ) {
+ menuIconsPixmap->DrawImage( cPoint(Left, Top), *imgRecNew );
+ }
+ }
+ Left += imgRecNew->Width() + marginItem;
+ if (Recording->IsEdited()) {
+ if( imgRecCut ) {
+ menuIconsPixmap->DrawImage( cPoint(Left, Top), *imgRecCut );
+ }
+ }
+ Left += imgRecCut->Width() + marginItem;
+
+ if( Current && font->Width(RecName) > (menuItemWidth - Left - marginItem) && Config.ScrollerEnable ) {
+ menuItemScroller.AddScroller(RecName, cRect(Left, Top + menuTop, menuItemWidth - Left - marginItem, fontHeight), ColorFg, clrTransparent, font);
+ } else {
+ menuPixmap->DrawText(cPoint(Left, Top), RecName, ColorFg, ColorBg, font, menuItemWidth - Left - marginItem);
+ }
+ } else if( Total > 0 ) {
+ img = imgLoader.LoadIcon("folder", fontHeight, fontHeight);
+ if( img ) {
+ menuIconsPixmap->DrawImage( cPoint(Left, Top), *img );
+ Left += img->Width() + marginItem;
+ }
+
+ buffer = cString::sprintf("%d ", Total);
+ menuPixmap->DrawText(cPoint(Left, Top), buffer, ColorFg, ColorBg, font, font->Width(" 999"), fontHeight, taLeft);
+ Left += font->Width(" 999 ");
+
+ if( imgRecNew )
+ menuIconsPixmap->DrawImage( cPoint(Left, Top), *imgRecNew );
+ Left += imgRecNew->Width() + marginItem;
+ buffer = cString::sprintf("%d", New);
+ menuPixmap->DrawText(cPoint(Left, Top), buffer, ColorFg, ColorBg, font, menuItemWidth - Left - marginItem);
+ Left += font->Width(" 999 ");
+ if( Config.MenuItemRecordingShowFolderDate != 0 ) {
+ buffer = cString::sprintf(" (%s)", *ShortDateString(GetLastRecTimeFromFolder(Recording, Level)));
+ menuPixmap->DrawText(cPoint(Left, Top), buffer, ColorExtraTextFg, ColorBg, font, menuItemWidth - Left - marginItem);
+ }
+
+ if( Current && font->Width(RecName) > (menuItemWidth - LeftWidth - marginItem) && Config.ScrollerEnable ) {
+ menuItemScroller.AddScroller(RecName, cRect(LeftWidth, Top + menuTop, menuItemWidth - LeftWidth - marginItem, fontHeight), ColorFg, clrTransparent, font);
+ } else {
+ menuPixmap->DrawText(cPoint(LeftWidth, Top), RecName, ColorFg, ColorBg, font, menuItemWidth - LeftWidth - marginItem);
+ }
+ LeftWidth += font->Width(RecName) + marginItem*2;
+ } else if( Total == -1 ) {
+ img = imgLoader.LoadIcon("folder", fontHeight, fontHeight);
+ if( img ) {
+ menuIconsPixmap->DrawImage( cPoint(Left, Top), *img );
+ Left += img->Width() + marginItem;
+ }
+
+ if( Current && font->Width(Recording->FileName()) > (menuItemWidth - Left - marginItem) && Config.ScrollerEnable ) {
+ menuItemScroller.AddScroller(Recording->FileName(), cRect(Left, Top + menuTop, menuItemWidth - Left - marginItem, fontHeight), ColorFg, clrTransparent, font);
+ } else {
+ menuPixmap->DrawText(cPoint(Left, Top), Recording->FileName(), ColorFg, ColorBg, font, menuItemWidth - Left - marginItem);
+ }
+ }
+ } else {
+ if( Total == 0 ) {
+ img = imgLoader.LoadIcon("recording", fontHeight, fontHeight);
+ if( img ) {
+ menuIconsPixmap->DrawImage( cPoint(Left, Top), *img );
+ Left += fontHeight + marginItem;
+ }
+ int ImagesWidth = imgRecNew->Width() + imgRecCut->Width() + marginItem*2 + scrollBarWidth;
+ if( isScrolling )
+ ImagesWidth -= scrollBarWidth;
+
+ if( Current && font->Width(RecName) > (menuItemWidth - Left - marginItem - ImagesWidth) && Config.ScrollerEnable ) {
+ menuItemScroller.AddScroller(RecName, cRect(Left, Top + menuTop, menuItemWidth - Left - marginItem - ImagesWidth, fontHeight), ColorFg, clrTransparent, font);
+ } else {
+ menuPixmap->DrawText(cPoint(Left, Top), RecName, ColorFg, ColorBg, font, menuItemWidth - Left - marginItem - ImagesWidth);
+ }
+
+ Top += fontHeight;
+
+ int Minutes = (Recording->LengthInSeconds() + 30) / 60;
+ cString Length = cString::sprintf("%02d:%02d", Minutes / 60, Minutes % 60);
+ buffer = cString::sprintf("%s %s %s ", *ShortDateString(Recording->Start()), *TimeString(Recording->Start()), *Length);
+
+ menuPixmap->DrawText(cPoint(Left, Top), buffer, ColorFg, ColorBg, fontSml, menuItemWidth - Left - marginItem);
+
+ Top -= fontHeight;
+ Left = menuItemWidth - ImagesWidth;
+ if( Recording->IsNew() ) {
+ if( imgRecNew ) {
+ menuIconsPixmap->DrawImage( cPoint(Left, Top), *imgRecNew );
+ }
+ }
+ Left += imgRecNew->Width() + marginItem;
+ if (Recording->IsEdited()) {
+ if( imgRecCut ) {
+ menuIconsPixmap->DrawImage( cPoint(Left, Top), *imgRecCut );
+ }
+ }
+ Left += imgRecCut->Width() + marginItem;
+
+ } else if( Total > 0 ) {
+ img = imgLoader.LoadIcon("folder", fontHeight, fontHeight);
+ if( img ) {
+ menuIconsPixmap->DrawImage( cPoint(Left, Top), *img );
+ Left += img->Width() + marginItem;
+ }
+
+ if( Current && font->Width(RecName) > (menuItemWidth - Left - marginItem) && Config.ScrollerEnable ) {
+ menuItemScroller.AddScroller(RecName, cRect(Left, Top + menuTop, menuItemWidth - Left - marginItem, fontHeight), ColorFg, clrTransparent, font);
+ } else {
+ menuPixmap->DrawText(cPoint(Left, Top), RecName, ColorFg, ColorBg, font, menuItemWidth - Left - marginItem);
+ }
+
+ Top += fontHeight;
+ buffer = cString::sprintf(" %d", Total);
+ menuPixmap->DrawText(cPoint(Left, Top), buffer, ColorFg, ColorBg, fontSml, fontSml->Width(" 999"), fontSmlHeight, taRight);
+ Left += fontSml->Width(" 999 ");
+
+ if( imgRecNewSml )
+ menuIconsPixmap->DrawImage( cPoint(Left, Top), *imgRecNewSml );
+ Left += imgRecNewSml->Width() + marginItem;
+ buffer = cString::sprintf("%d", New);
+ menuPixmap->DrawText(cPoint(Left, Top), buffer, ColorFg, ColorBg, fontSml, menuItemWidth - Left - marginItem);
+ Left += fontSml->Width(" 999 ");
+
+ if( Config.MenuItemRecordingShowFolderDate != 0 ) {
+ buffer = cString::sprintf(" (%s)", *ShortDateString(GetLastRecTimeFromFolder(Recording, Level)));
+ menuPixmap->DrawText(cPoint(Left, Top), buffer, ColorExtraTextFg, ColorBg, fontSml, menuItemWidth - Left - marginItem);
+ }
+ } else if( Total == -1 ) {
+ img = imgLoader.LoadIcon("folder", fontHeight, fontHeight);
+ if( img ) {
+ menuIconsPixmap->DrawImage( cPoint(Left, Top), *img );
+ Left += img->Width() + marginItem;
+ }
+ if( Current && font->Width(Recording->FileName()) > (menuItemWidth - Left - marginItem) && Config.ScrollerEnable ) {
+ menuItemScroller.AddScroller(Recording->FileName(), cRect(Left, Top + menuTop, menuItemWidth - Left - marginItem, fontHeight), ColorFg, clrTransparent, font);
+ } else {
+ menuPixmap->DrawText(cPoint(Left, Top), Recording->FileName(), ColorFg, ColorBg, font, menuItemWidth - Left - marginItem);
+ }
+ }
+ }
+
+ sDecorBorder ib;
+ ib.Left = Config.decorBorderMenuItemSize;
+ ib.Top = topBarHeight + marginItem + Config.decorBorderTopBarSize*2 + Config.decorBorderMenuItemSize + y;
+
+ ib.Width = menuItemWidth - Config.decorBorderMenuItemSize*2;
+
+ if( isScrolling ) {
+ ib.Width -= scrollBarWidth;
+ }
+
+ ib.Width = menuItemWidth;
+
+ ib.Height = Height;
+ ib.Size = Config.decorBorderMenuItemSize;
+ ib.Type = Config.decorBorderMenuItemType;
+
+ if( Current ) {
+ ib.ColorFg = Config.decorBorderMenuItemCurFg;
+ ib.ColorBg = Config.decorBorderMenuItemCurBg;
+ } else {
+ if( Selectable ) {
+ ib.ColorFg = Config.decorBorderMenuItemSelFg;
+ ib.ColorBg = Config.decorBorderMenuItemSelBg;
+ } else {
+ ib.ColorFg = Config.decorBorderMenuItemFg;
+ ib.ColorBg = Config.decorBorderMenuItemBg;
+ }
+ }
+
+ DecorBorderDraw(ib.Left, ib.Top, ib.Width, ib.Height,
+ ib.Size, ib.Type, ib.ColorFg, ib.ColorBg, BorderMenuItem);
+
+ if( !isScrolling ) {
+ ItemBorderInsertUnique(ib);
+ }
+
+ if( Config.MenuRecordingView == 3 && Current ) {
+ DrawItemExtraRecording(Recording, tr("no recording info"));
+ }
+
+ return true;
+}
+
+void cFlatDisplayMenu::SetEvent(const cEvent *Event) {
+ if( !Event )
+ return;
+
+ #ifdef DEBUGEPGTIME
+ uint32_t tick0 = GetMsTicks();
+ #endif
+
+ ShowEvent = true;
+ ShowRecording = false;
+ ShowText = false;
+ ItemBorderClear();
+
+ cLeft = Config.decorBorderMenuContentSize;
+ cTop = chTop + marginItem*3 + fontHeight + fontSmlHeight*2 +
+ Config.decorBorderMenuContentSize + Config.decorBorderMenuContentHeadSize;
+ cWidth = menuWidth - Config.decorBorderMenuContentSize*2;
+ cHeight = osdHeight - (topBarHeight + Config.decorBorderTopBarSize*2 +
+ buttonsHeight + Config.decorBorderButtonSize*2 + marginItem*3 +
+ chHeight + Config.decorBorderMenuContentHeadSize*2 + Config.decorBorderMenuContentSize*2);
+
+ if( !ButtonsDrawn() )
+ cHeight += buttonsHeight + Config.decorBorderButtonSize*2;
+
+ menuItemWidth = cWidth;
+
+ contentHeadPixmap->Fill(clrTransparent);
+ contentHeadPixmap->DrawRectangle(cRect(0, 0, menuWidth, fontHeight + fontSmlHeight*2 + marginItem*2), Theme.Color(clrScrollbarBg));
+ contentHeadIconsPixmap->Fill(clrTransparent);
+
+ cString date = Event->GetDateString();
+ cString startTime = Event->GetTimeString();
+ cString endTime = Event->GetEndTimeString();
+
+ cString timeString = cString::sprintf("%s %s - %s", *date, *startTime, *endTime);
+
+ cString title = Event->Title();
+ cString shortText = Event->ShortText();
+
+ contentHeadPixmap->DrawText(cPoint(marginItem, marginItem), timeString, Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, menuWidth - marginItem*2);
+ contentHeadPixmap->DrawText(cPoint(marginItem, marginItem + fontSmlHeight), title, Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font, menuWidth - marginItem*2);
+ contentHeadPixmap->DrawText(cPoint(marginItem, marginItem + fontSmlHeight + fontHeight), shortText, Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, menuWidth - marginItem*2);
+
+ DecorBorderDraw(chLeft, chTop, chWidth, chHeight, Config.decorBorderMenuContentHeadSize, Config.decorBorderMenuContentHeadType,
+ Config.decorBorderMenuContentHeadFg, Config.decorBorderMenuContentHeadBg);
+
+ // Description
+ ostringstream text, textAdditional;
+ std::string Fsk;
+ std::list<std::string> GenreIcons;
+
+ if( !isempty(Event->Description()) ) {
+ text << Event->Description();
+ }
+
+ if( Config.EpgAdditionalInfoShow ) {
+ text << endl;
+ // Genre
+ bool firstContent = true;
+ for (int i = 0; Event->Contents(i); i++) {
+ if (!isempty(Event->ContentToString(Event->Contents(i)))) { // skip empty (user defined) content
+ if (!firstContent) {
+ text << ", ";
+ } else {
+ text << endl << tr("Genre") << ": ";
+ }
+ text << Event->ContentToString(Event->Contents(i));
+ firstContent = false;
+ GenreIcons.push_back(GetGenreIcon(Event->Contents(i)));
+ }
+ }
+ // FSK
+ if( Event->ParentalRating() ) {
+ text << endl << tr("FSK") << ": ";
+ text << *Event->GetParentalRatingString();
+ Fsk = *Event->GetParentalRatingString();
+ }
+ const cComponents *Components = Event->Components();
+ if (Components) {
+ ostringstream audio;
+ bool firstAudio = true;
+ const char *audio_type = NULL;
+ ostringstream subtitle;
+ bool firstSubtitle = true;
+ for (int i = 0; i < Components->NumComponents(); i++) {
+ const tComponent *p = Components->Component(i);
+ switch (p->stream) {
+ case sc_video_MPEG2:
+ if (p->description)
+ textAdditional << tr("Video") << ": " << p->description << " (MPEG2)";
+ else
+ textAdditional << tr("Video") << ": MPEG2";
+ break;
+ case sc_video_H264_AVC:
+ if (p->description)
+ textAdditional << tr("Video") << ": " << p->description << " (H.264)";
+ else
+ textAdditional << tr("Video") << ": H.264";
+ break;
+
+ case sc_audio_MP2:
+ case sc_audio_AC3:
+ case sc_audio_HEAAC:
+ if (firstAudio)
+ firstAudio = false;
+ else
+ audio << ", ";
+ switch (p->stream) {
+ case sc_audio_MP2:
+ // workaround for wrongfully used stream type X 02 05 for AC3
+ if (p->type == 5)
+ audio_type = "AC3";
+ else
+ audio_type = "MP2";
+ break;
+ case sc_audio_AC3:
+ audio_type = "AC3"; break;
+ case sc_audio_HEAAC:
+ audio_type = "HEAAC"; break;
+ }
+ if (p->description)
+ audio << p->description << " (" << audio_type << ", " << p->language << ")";
+ else
+ audio << p->language << " (" << audio_type << ")";
+ break;
+ case sc_subtitle:
+ if (firstSubtitle)
+ firstSubtitle = false;
+ else
+ subtitle << ", ";
+ if (p->description)
+ subtitle << p->description << " (" << p->language << ")";
+ else
+ subtitle << p->language;
+ break;
+ }
+ }
+ if (audio.str().length() > 0) {
+ if( textAdditional.str().length() > 0 )
+ textAdditional << endl;
+ textAdditional << tr("Audio") << ": "<< audio.str();
+ } if (subtitle.str().length() > 0) {
+ if( textAdditional.str().length() > 0 )
+ textAdditional << endl;
+ textAdditional << endl << tr("Subtitle") << ": "<< subtitle.str();
+ }
+ }
+ }
+
+ int headIconTop = chHeight - fontHeight - marginItem;
+ int headIconLeft = chWidth - fontHeight - marginItem;
+
+ if( Fsk.length() > 0 ) {
+ cString iconName = cString::sprintf("EPGInfo/FSK/%s", Fsk.c_str());
+ cImage *img = imgLoader.LoadIcon(*iconName, fontHeight, fontHeight);
+ if( img ) {
+ contentHeadIconsPixmap->DrawImage(cPoint(headIconLeft, headIconTop), *img);
+ headIconLeft -= fontHeight + marginItem;
+ } else {
+ isyslog("skinflatplus: FSK icon not found: %s", *iconName);
+ img = imgLoader.LoadIcon("EPGInfo/FSK/unknown", fontHeight, fontHeight);
+ if( img ) {
+ contentHeadIconsPixmap->DrawImage(cPoint(headIconLeft, headIconTop), *img);
+ headIconLeft -= fontHeight + marginItem;
+ }
+ }
+ }
+ while( !GenreIcons.empty() ) {
+ GenreIcons.sort();
+ GenreIcons.unique();
+ cString iconName = cString::sprintf("EPGInfo/Genre/%s", GenreIcons.back().c_str());
+ cImage *img = imgLoader.LoadIcon(*iconName, fontHeight, fontHeight);
+ bool isUnknownDrawn = false;
+ if( img ) {
+ contentHeadIconsPixmap->DrawImage(cPoint(headIconLeft, headIconTop), *img);
+ headIconLeft -= fontHeight + marginItem;
+ } else {
+ isyslog("skinflatplus: Genre icon not found: %s", *iconName);
+ if( !isUnknownDrawn ) {
+ img = imgLoader.LoadIcon("EPGInfo/Genre/unknown", fontHeight, fontHeight);
+ if( img ) {
+ contentHeadIconsPixmap->DrawImage(cPoint(headIconLeft, headIconTop), *img);
+ headIconLeft -= fontHeight + marginItem;
+ isUnknownDrawn = true;
+ }
+ }
+ }
+ GenreIcons.pop_back();
+ }
+
+ #ifdef DEBUGEPGTIME
+ uint32_t tick1 = GetMsTicks();
+ dsyslog("SetEvent info-text time: %d ms", tick1 - tick0);
+ #endif
+
+ std::ostringstream sstrReruns;
+ if( Config.EpgRerunsShow ) {
+ // lent from nopacity
+ cPlugin *epgSearchPlugin = cPluginManager::GetPlugin("epgsearch");
+ if (epgSearchPlugin && !isempty(Event->Title())) {
+ Epgsearch_searchresults_v1_0 data;
+ std::string strQuery = Event->Title();
+ data.useSubTitle = false;
+
+ data.query = (char *)strQuery.c_str();
+ data.mode = 0;
+ data.channelNr = 0;
+ data.useTitle = true;
+ data.useDescription = false;
+
+ if (epgSearchPlugin->Service("Epgsearch-searchresults-v1.0", &data)) {
+ cList<Epgsearch_searchresults_v1_0::cServiceSearchResult>* list = data.pResultList;
+ if (list && (list->Count() > 1)) {
+ int i = 0;
+ for (Epgsearch_searchresults_v1_0::cServiceSearchResult *r = list->First(); r && i < 5; r = list->Next(r)) {
+ if ((Event->ChannelID() == r->event->ChannelID()) && (Event->StartTime() == r->event->StartTime()))
+ continue;
+ i++;
+ sstrReruns << *DayDateTime(r->event->StartTime());
+ cChannel *channel = Channels.GetByChannelID(r->event->ChannelID(), true, true);
+ if (channel) {
+ sstrReruns << ", " << channel->Number() << " -";
+ sstrReruns << " " << channel->ShortName(true);
+ }
+ sstrReruns << ": " << r->event->Title();
+ //if (!isempty(r->event->ShortText()))
+ // sstrReruns << "~" << r->event->ShortText();
+ sstrReruns << std::endl;
+ }
+ delete list;
+ }
+ }
+ }
+ }
+ #ifdef DEBUGEPGTIME
+ uint32_t tick2 = GetMsTicks();
+ dsyslog("SetEvent reruns time: %d ms", tick2 - tick1);
+ #endif
+
+ bool Scrollable = false;
+ bool FirstRun = true;
+
+ do {
+ if( Scrollable ) {
+ FirstRun = false;
+ cWidth -= scrollBarWidth;
+ }
+
+ ComplexContent.Clear();
+ ComplexContent.SetOsd(osd);
+ ComplexContent.SetPosition(cRect(cLeft, cTop, cWidth, cHeight));
+ ComplexContent.SetBGColor(Theme.Color(clrMenuRecBg));
+ ComplexContent.SetScrollSize(fontHeight);
+ ComplexContent.SetScrollingActive(true);
+
+ int ContentTop = marginItem;
+
+ ostringstream series_info, movie_info;
+
+ std::vector<std::string> actors_path;
+ std::vector<std::string> actors_name;
+ std::vector<std::string> actors_role;
+
+ std::string mediaPath;
+ int mediaWidth = 0;
+ int mediaHeight = 0;
+
+ #ifdef DEBUGEPGTIME
+ uint32_t tick3 = GetMsTicks();
+ #endif
+
+ // first try scraper2vdr
+ static cPlugin *pScraper = cPluginManager::GetPlugin("scraper2vdr");
+ if( !pScraper ) // if it doesn't exit, try tvscraper
+ pScraper = cPluginManager::GetPlugin("tvscraper");
+ if( (Config.TVScraperEPGInfoShowPoster || Config.TVScraperEPGInfoShowActors) && pScraper ) {
+ ScraperGetEventType call;
+ call.event = Event;
+ int seriesId = 0;
+ int episodeId = 0;
+ int movieId = 0;
+
+ if (pScraper->Service("GetEventType", &call)) {
+ seriesId = call.seriesId;
+ episodeId = call.episodeId;
+ movieId = call.movieId;
+ }
+ if( seriesId > 0 ) {
+ cSeries series;
+ series.seriesId = seriesId;
+ series.episodeId = episodeId;
+ if (pScraper->Service("GetSeries", &series)) {
+ if( series.banners.size() > 0 )
+ mediaPath = series.banners[0].path;
+ mediaWidth = cWidth/2 - marginItem*2;
+ mediaHeight = cHeight - marginItem*2 - fontHeight - 6;
+ if( Config.TVScraperEPGInfoShowActors ) {
+ for( unsigned int i = 0; i < series.actors.size(); i++ ) {
+ if( imgLoader.FileExits(series.actors[i].actorThumb.path) ) {
+ actors_path.push_back(series.actors[i].actorThumb.path);
+ actors_name.push_back(series.actors[i].name);
+ actors_role.push_back(series.actors[i].role);
+ }
+ }
+ }
+ if( series.name.length() > 0 )
+ series_info << tr("name: ") << series.name << endl;
+ if( series.firstAired.length() > 0 )
+ series_info << tr("first aired: ") << series.firstAired << endl;
+ if( series.network.length() > 0 )
+ series_info << tr("network: ") << series.network << endl;
+ if( series.genre.length() > 0 )
+ series_info << tr("genre: ") << series.genre << endl;
+ if( series.rating > 0 )
+ series_info << tr("rating: ") << series.rating << endl;
+ if( series.status.length() > 0 )
+ series_info << tr("status: ") << series.status << endl;
+ if( series.episode.season > 0 )
+ series_info << tr("season number: ") << series.episode.season << endl;
+ if( series.episode.number > 0 )
+ series_info << tr("episode number: ") << series.episode.number << endl;
+ }
+ } else if (movieId > 0) {
+ cMovie movie;
+ movie.movieId = movieId;
+ if (pScraper->Service("GetMovie", &movie)) {
+ mediaPath = movie.poster.path;
+ mediaWidth = cWidth/2 - marginItem*3;
+ mediaHeight = cHeight - marginItem*2 - fontHeight - 6;
+ if( Config.TVScraperEPGInfoShowActors ) {
+ for( unsigned int i = 0; i < movie.actors.size(); i++ ) {
+ if( imgLoader.FileExits(movie.actors[i].actorThumb.path) ) {
+ actors_path.push_back(movie.actors[i].actorThumb.path);
+ actors_name.push_back(movie.actors[i].name);
+ actors_role.push_back(movie.actors[i].role);
+ }
+ }
+ }
+ if( movie.title.length() > 0 )
+ movie_info << tr("title: ") << movie.title << endl;
+ if( movie.originalTitle.length() > 0 )
+ movie_info << tr("original title: ") << movie.originalTitle << endl;
+ if( movie.collectionName.length() > 0 )
+ movie_info << tr("collection name: ") << movie.collectionName << endl;
+ if( movie.genres.length() > 0 )
+ movie_info << tr("genre: ") << movie.genres << endl;
+ if( movie.releaseDate.length() > 0 )
+ movie_info << tr("release date: ") << movie.releaseDate << endl;
+ if( movie.popularity > 0 )
+ movie_info << tr("popularity: ") << movie.popularity << endl;
+ if( movie.voteAverage > 0 )
+ movie_info << tr("vote average: ") << movie.voteAverage << endl;
+ }
+ }
+ }
+
+ #ifdef DEBUGEPGTIME
+ uint32_t tick4 = GetMsTicks();
+ dsyslog("SetEvent tvscraper time: %d ms", tick4 - tick3);
+ #endif
+
+ if( mediaPath.length() > 0 ) {
+ cImage *img = imgLoader.LoadFile(mediaPath.c_str(), mediaWidth, mediaHeight);
+ if( img ) {
+ ComplexContent.AddText(tr("Description"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font);
+ ContentTop += fontHeight;
+ ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuEventTitleLine));
+ ContentTop += 6;
+ ComplexContent.AddImageWithFloatedText(img, CIP_Right, text.str().c_str(), cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), font);
+ } else if( text.str().length() > 0 ) {
+ ComplexContent.AddText(tr("Description"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font);
+ ContentTop += fontHeight;
+ ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuEventTitleLine));
+ ContentTop += 6;
+ ComplexContent.AddText(text.str().c_str(), true, cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), font);
+ }
+ } else if( text.str().length() > 0 ) {
+ ComplexContent.AddText(tr("Description"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font);
+ ContentTop += fontHeight;
+ ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuEventTitleLine));
+ ContentTop += 6;
+ ComplexContent.AddText(text.str().c_str(), true, cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), font);
+ }
+
+ if( movie_info.str().length() > 0 ) {
+ ContentTop = ComplexContent.BottomContent() + fontHeight;
+ ComplexContent.AddText(tr("Movie information"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font);
+ ContentTop += fontHeight;
+ ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuEventTitleLine));
+ ContentTop += 6;
+ ComplexContent.AddText(movie_info.str().c_str(), true, cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), font);
+ }
+
+ if( series_info.str().length() > 0 ) {
+ ContentTop = ComplexContent.BottomContent() + fontHeight;
+ ComplexContent.AddText(tr("Series information"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font);
+ ContentTop += fontHeight;
+ ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuEventTitleLine));
+ ContentTop += 6;
+ ComplexContent.AddText(series_info.str().c_str(), true, cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), font);
+ }
+ #ifdef DEBUGEPGTIME
+ uint32_t tick5 = GetMsTicks();
+ dsyslog("SetEvent epg-text time: %d ms", tick5 - tick4);
+ #endif
+
+ if( Config.TVScraperEPGInfoShowActors && actors_path.size() > 0 ) {
+ ContentTop = ComplexContent.BottomContent() + fontHeight;
+ ComplexContent.AddText(tr("Actors"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font);
+ ContentTop += fontHeight;
+ ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuEventTitleLine));
+ ContentTop += 6;
+
+ int actorsPerLine = 6;
+ int numActors = actors_path.size();
+ int actorWidth = cWidth / actorsPerLine - marginItem*4;
+ int picsPerLine = (cWidth - marginItem*2) / actorWidth;
+ int picLines = numActors / picsPerLine;
+ if( numActors%picsPerLine != 0 )
+ picLines++;
+ int actorMargin = ((cWidth - marginItem*2) - actorWidth*actorsPerLine) / (actorsPerLine-1);
+ int x = marginItem;
+ int y = ContentTop;
+ int actor = 0;
+ for (int row = 0; row < picLines; row++) {
+ for (int col = 0; col < picsPerLine; col++) {
+ if (actor == numActors)
+ break;
+ std::string path = actors_path[actor];
+ cImage *img = imgLoader.LoadFile(path.c_str(), actorWidth, 999);
+ if( img ) {
+ ComplexContent.AddImage(img, cRect(x, y, 0, 0));
+ std::string name = actors_name[actor];
+ std::stringstream sstrRole;
+ if( actors_role[actor].length() > 0 )
+ sstrRole << "\"" << actors_role[actor] << "\"";
+ std::string role = sstrRole.str();
+ ComplexContent.AddText(name.c_str(), false, cRect(x, y + img->Height() + marginItem, actorWidth, 0), Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, actorWidth, fontSmlHeight, taCenter);
+ ComplexContent.AddText(role.c_str(), false, cRect(x, y + img->Height() + marginItem + fontSmlHeight, actorWidth, 0), Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, actorWidth, fontSmlHeight, taCenter);
+ }
+ x += actorWidth + actorMargin;
+ actor++;
+ }
+ x = marginItem;
+ y = ComplexContent.BottomContent() + fontHeight;
+ }
+ }
+ #ifdef DEBUGEPGTIME
+ uint32_t tick6 = GetMsTicks();
+ dsyslog("SetEvent actor time: %d ms", tick6 - tick5);
+ #endif
+
+ if( sstrReruns.str().length() > 0 ) {
+ ContentTop = ComplexContent.BottomContent() + fontHeight;
+ ComplexContent.AddText(tr("Reruns"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font);
+ ContentTop += fontHeight;
+ ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuEventTitleLine));
+ ContentTop += 6;
+ ComplexContent.AddText(sstrReruns.str().c_str(), true, cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), font);
+ }
+
+ if( textAdditional.str().length() > 0 ) {
+ ContentTop = ComplexContent.BottomContent() + fontHeight;
+ ComplexContent.AddText(tr("Video information"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font);
+ ContentTop += fontHeight;
+ ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuEventTitleLine));
+ ContentTop += 6;
+ ComplexContent.AddText(textAdditional.str().c_str(), true, cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), font);
+ }
+ Scrollable = ComplexContent.Scrollable(cHeight - marginItem*2);
+ } while( Scrollable && FirstRun );
+
+ if( Config.MenuContentFullSize || Scrollable ) {
+ ComplexContent.CreatePixmaps(true);
+ } else
+ ComplexContent.CreatePixmaps(false);
+
+ ComplexContent.Draw();
+
+ if( Scrollable )
+ DrawScrollbar(ComplexContent.ScrollTotal(), ComplexContent.ScrollOffset(), ComplexContent.ScrollShown(), ComplexContent.Top() - scrollBarTop, ComplexContent.Height(), ComplexContent.ScrollOffset() > 0, ComplexContent.ScrollOffset() + ComplexContent.ScrollShown() < ComplexContent.ScrollTotal(), true);
+
+ if( Config.MenuContentFullSize || Scrollable )
+ DecorBorderDraw(cLeft, cTop, cWidth, ComplexContent.ContentHeight(true), Config.decorBorderMenuContentSize, Config.decorBorderMenuContentType,
+ Config.decorBorderMenuContentFg, Config.decorBorderMenuContentBg);
+ else
+ DecorBorderDraw(cLeft, cTop, cWidth, ComplexContent.ContentHeight(false), Config.decorBorderMenuContentSize, Config.decorBorderMenuContentType,
+ Config.decorBorderMenuContentFg, Config.decorBorderMenuContentBg);
+
+ #ifdef DEBUGEPGTIME
+ uint32_t tick7 = GetMsTicks();
+ dsyslog("SetEvent total time: %d ms", tick7 - tick0);
+ //dsyslog("SetEvent time: %d", tick7);
+ #endif
+}
+
+void cFlatDisplayMenu::DrawItemExtraRecording(const cRecording *Recording, cString EmptyText) {
+ cLeft = menuItemWidth + Config.decorBorderMenuItemSize*2 + Config.decorBorderMenuContentSize + marginItem;
+ if( isScrolling )
+ cLeft += scrollBarWidth;
+ cTop = topBarHeight + marginItem + Config.decorBorderTopBarSize*2 + Config.decorBorderMenuContentSize;
+ cWidth = menuWidth - cLeft - Config.decorBorderMenuContentSize;
+ cHeight = osdHeight - (topBarHeight + Config.decorBorderTopBarSize*2 +
+ buttonsHeight + Config.decorBorderButtonSize*2 + marginItem*3 + Config.decorBorderMenuContentSize*2);
+
+ ostringstream text;
+ if( Recording ) {
+ const cRecordingInfo *recInfo = Recording->Info();
+ text.imbue(std::locale(""));
+
+ if (!isempty(recInfo->Description()))
+ text << recInfo->Description() << endl << endl;
+
+ // lent from skinelchi
+ if( Config.RecordingAdditionalInfoShow ) {
+ cChannel *channel = Channels.GetByChannelID(((cRecordingInfo *)recInfo)->ChannelID());
+ if (channel)
+ text << trVDR("Channel") << ": " << channel->Number() << " - " << channel->Name() << endl;
+
+ const cEvent *Event = recInfo->GetEvent();
+ if( Event ) {
+ // Genre
+ bool firstContent = true;
+ for (int i = 0; Event->Contents(i); i++) {
+ if (!isempty(Event->ContentToString(Event->Contents(i)))) { // skip empty (user defined) content
+ if (!firstContent)
+ text << ", ";
+ else
+ text << tr("Genre") << ": ";
+ text << Event->ContentToString(Event->Contents(i));
+ firstContent = false;
+ }
+ }
+ if( Event->Contents(0) )
+ text << endl;
+ // FSK
+ if( Event->ParentalRating() ) {
+ text << tr("FSK") << ": ";
+ text << *Event->GetParentalRatingString() << endl;
+ }
+ }
+
+ cMarks marks;
+ bool hasMarks = marks.Load(Recording->FileName(), Recording->FramesPerSecond(), Recording->IsPesRecording()) && marks.Count();
+ cIndexFile *index = new cIndexFile(Recording->FileName(), false, Recording->IsPesRecording());
+
+ int lastIndex = 0;
+
+ int cuttedLength = 0;
+ long cutinframe = 0;
+ unsigned long long recsize = 0;
+ unsigned long long recsizecutted = 0;
+ unsigned long long cutinoffset = 0;
+ unsigned long long filesize[100000];
+ filesize[0] = 0;
+
+ int i = 0;
+ int imax = 999;
+ struct stat filebuf;
+ cString filename;
+ int rc = 0;
+
+ do {
+ if (Recording->IsPesRecording())
+ filename = cString::sprintf("%s/%03d.vdr", Recording->FileName(), ++i);
+ else {
+ filename = cString::sprintf("%s/%05d.ts", Recording->FileName(), ++i);
+ imax = 99999;
+ }
+ rc=stat(filename, &filebuf);
+ if (rc == 0)
+ filesize[i] = filesize[i-1] + filebuf.st_size;
+ else {
+ if (ENOENT != errno) {
+ esyslog ("skinflatplus: error determining file size of \"%s\" %d (%s)", (const char *)filename, errno, strerror(errno));
+ recsize = 0;
+ }
+ }
+ } while( i <= imax && !rc );
+ recsize = filesize[i-1];
+
+ if (hasMarks && index) {
+ uint16_t FileNumber;
+ off_t FileOffset;
+
+ bool cutin = true;
+ cMark *mark = marks.First();
+ while (mark) {
+ long position = mark->Position();
+ index->Get(position, &FileNumber, &FileOffset);
+ if (cutin) {
+ cutinframe = position;
+ cutin = false;
+ cutinoffset = filesize[FileNumber-1] + FileOffset;
+ } else {
+ cuttedLength += position - cutinframe;
+ cutin = true;
+ recsizecutted += filesize[FileNumber-1] + FileOffset - cutinoffset;
+ }
+ cMark *nextmark = marks.Next(mark);
+ mark = nextmark;
+ }
+ if( !cutin ) {
+ cuttedLength += index->Last() - cutinframe;
+ index->Get(index->Last() - 1, &FileNumber, &FileOffset);
+ recsizecutted += filesize[FileNumber-1] + FileOffset - cutinoffset;
+ }
+ }
+ if (index) {
+ lastIndex = index->Last();
+ text << tr("Length") << ": " << *IndexToHMSF(lastIndex, false, Recording->FramesPerSecond());
+ if (hasMarks)
+ text << " (" << tr("cutted") << ": " << *IndexToHMSF(cuttedLength, false, Recording->FramesPerSecond()) << ")";
+ text << endl;
+ }
+ delete index;
+
+ if (recsize > MEGABYTE(1023))
+ text << tr("Size") << ": " << fixed << setprecision(2) << (float)recsize / MEGABYTE(1024) << " GB";
+ else
+ text << tr("Size") << ": " << recsize / MEGABYTE(1) << " MB";
+ if( hasMarks )
+ if (recsize > MEGABYTE(1023))
+ text << " (" << tr("cutted") << ": " << fixed << setprecision(2) << (float)recsizecutted/MEGABYTE(1024) << " GB)";
+ else
+ text << " (" << tr("cutted") << ": " << recsizecutted/MEGABYTE(1) << " MB)";
+
+ text << endl << trVDR("Priority") << ": " << Recording->Priority() << ", " << trVDR("Lifetime") << ": " << Recording->Lifetime() << endl;
+
+ if( lastIndex ) {
+ text << tr("format") << ": " << (Recording->IsPesRecording() ? "PES" : "TS") << ", " << tr("bit rate") << ": ~ " << fixed << setprecision (2) << (float)recsize/lastIndex*Recording->FramesPerSecond()*8/MEGABYTE(1) << " MBit/s (Video + Audio)";
+ }
+ const cComponents *Components = recInfo->Components();
+ if( Components ) {
+ ostringstream audio;
+ bool firstAudio = true;
+ const char *audio_type = NULL;
+ ostringstream subtitle;
+ bool firstSubtitle = true;
+ for (int i = 0; i < Components->NumComponents(); i++) {
+ const tComponent *p = Components->Component(i);
+
+ switch (p->stream) {
+ case sc_video_MPEG2:
+ text << endl << tr("Video") << ": " << p->description << " (MPEG2)";
+ break;
+ case sc_video_H264_AVC:
+ text << endl << tr("Video") << ": " << p->description << " (H.264)";
+ break;
+ case sc_audio_MP2:
+ case sc_audio_AC3:
+ case sc_audio_HEAAC:
+ if (firstAudio)
+ firstAudio = false;
+ else
+ audio << ", ";
+ switch (p->stream) {
+ case sc_audio_MP2:
+ // workaround for wrongfully used stream type X 02 05 for AC3
+ if (p->type == 5)
+ audio_type = "AC3";
+ else
+ audio_type = "MP2";
+ break;
+ case sc_audio_AC3:
+ audio_type = "AC3"; break;
+ case sc_audio_HEAAC:
+ audio_type = "HEAAC"; break;
+ }
+ if (p->description)
+ audio << p->description << " (" << audio_type << ", " << p->language << ")";
+ else
+ audio << p->language << " (" << audio_type << ")";
+ break;
+ case sc_subtitle:
+ if (firstSubtitle)
+ firstSubtitle = false;
+ else
+ subtitle << ", ";
+ if (p->description)
+ subtitle << p->description << " (" << p->language << ")";
+ else
+ subtitle << p->language;
+ break;
+ }
+ }
+ if (audio.str().length() > 0)
+ text << endl << tr("Audio") << ": "<< audio.str();
+ if (subtitle.str().length() > 0)
+ text << endl << tr("Subtitle") << ": "<< subtitle.str();
+ }
+ if (recInfo->Aux()) {
+ string str_epgsearch = xml_substring(recInfo->Aux(), "<epgsearch>", "</epgsearch>");
+ string channel, searchtimer, pattern;
+
+ if (!str_epgsearch.empty()) {
+ channel = xml_substring(str_epgsearch, "<channel>", "</channel>");
+ searchtimer = xml_substring(str_epgsearch, "<searchtimer>", "</searchtimer>");
+ if (searchtimer.empty())
+ searchtimer = xml_substring(str_epgsearch, "<Search timer>", "</Search timer>");
+ }
+
+ string str_vdradmin = xml_substring(recInfo->Aux(), "<vdradmin-am>", "</vdradmin-am>");
+ if (!str_vdradmin.empty()) {
+ pattern = xml_substring(str_vdradmin, "<pattern>", "</pattern>");
+ }
+
+ if ((!channel.empty() && !searchtimer.empty()) || !pattern.empty()) {
+ text << endl << endl << tr("additional information") << ":" << endl;
+ if (!channel.empty() && !searchtimer.empty()) {
+ text << "EPGsearch: " << tr("channel") << ": " << channel << ", " << tr("search pattern") << ": " << searchtimer;
+ }
+ if (!pattern.empty()) {
+ text << "VDRadmin-AM: " << tr("search pattern") << ": " << pattern;
+ }
+ }
+ }
+ }
+ } else
+ text << *EmptyText;
+
+ ComplexContent.Clear();
+ ComplexContent.SetScrollSize(fontSmlHeight);
+ ComplexContent.SetScrollingActive(false);
+ ComplexContent.SetOsd(osd);
+ ComplexContent.SetPosition(cRect(cLeft, cTop, cWidth, cHeight));
+ ComplexContent.SetBGColor(Theme.Color(clrMenuRecBg));
+
+ std::string mediaPath;
+ int mediaWidth = 0;
+ int mediaHeight = 0;
+ int mediaType = 0;
+
+ // first try scraper2vdr
+ static cPlugin *pScraper = cPluginManager::GetPlugin("scraper2vdr");
+ if( !pScraper ) // if it doesn't exit, try tvscraper
+ pScraper = cPluginManager::GetPlugin("tvscraper");
+ if( Config.TVScraperRecInfoShowPoster && pScraper ) {
+ ScraperGetEventType call;
+ call.recording = Recording;
+ int seriesId = 0;
+ int episodeId = 0;
+ int movieId = 0;
+
+ if (pScraper->Service("GetEventType", &call)) {
+ seriesId = call.seriesId;
+ episodeId = call.episodeId;
+ movieId = call.movieId;
+ }
+ if( seriesId > 0 ) {
+ cSeries series;
+ series.seriesId = seriesId;
+ series.episodeId = episodeId;
+ if (pScraper->Service("GetSeries", &series)) {
+ if( series.banners.size() > 0 )
+ mediaPath = series.banners[0].path;
+ mediaWidth = cWidth - marginItem*2;
+ mediaHeight = 999;
+ mediaType = 1;
+ }
+ } else if (movieId > 0) {
+ cMovie movie;
+ movie.movieId = movieId;
+ if (pScraper->Service("GetMovie", &movie)) {
+ mediaPath = movie.poster.path;
+ mediaWidth = cWidth/2 - marginItem*3;
+ mediaHeight = 999;
+ mediaType = 2;
+ }
+ }
+ }
+
+ cString recPath = cString::sprintf("%s", Recording->FileName());
+ cString recImage;
+ if( imgLoader.SearchRecordingPoster(recPath, recImage) ) {
+ mediaWidth = cWidth/2 - marginItem*3;
+ mediaHeight = 999;
+ mediaType = 2;
+ mediaPath = recImage;
+ }
+
+ if( mediaPath.length() > 0 ) {
+ cImage *img = imgLoader.LoadFile(mediaPath.c_str(), mediaWidth, mediaHeight);
+ if( img && mediaType == 2 ) {
+ ComplexContent.AddImageWithFloatedText(img, CIP_Right, text.str().c_str(), cRect(marginItem, marginItem, cWidth - marginItem*2, cHeight - marginItem*2),
+ Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), fontSml);
+ } else if( img && mediaType == 1 ) {
+ ComplexContent.AddImage(img, cRect(marginItem, marginItem, img->Width(), img->Height()) );
+ ComplexContent.AddText(text.str().c_str(), true, cRect(marginItem, marginItem + img->Height(), cWidth - marginItem*2, cHeight - marginItem*2),
+ Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), fontSml);
+ } else {
+ ComplexContent.AddText(text.str().c_str(), true, cRect(marginItem, marginItem, cWidth - marginItem*2, cHeight - marginItem*2),
+ Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), fontSml);
+ }
+ } else {
+ ComplexContent.AddText(text.str().c_str(), true, cRect(marginItem, marginItem, cWidth - marginItem*2, cHeight - marginItem*2),
+ Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), fontSml);
+ }
+
+ ComplexContent.CreatePixmaps(Config.MenuContentFullSize);
+ ComplexContent.Draw();
+
+ DecorBorderClearByFrom(BorderContent);
+ if( Config.MenuContentFullSize )
+ DecorBorderDraw(cLeft, cTop, cWidth, ComplexContent.ContentHeight(true), Config.decorBorderMenuContentSize, Config.decorBorderMenuContentType,
+ Config.decorBorderMenuContentFg, Config.decorBorderMenuContentBg, BorderContent);
+ else
+ DecorBorderDraw(cLeft, cTop, cWidth, ComplexContent.ContentHeight(false), Config.decorBorderMenuContentSize, Config.decorBorderMenuContentType,
+ Config.decorBorderMenuContentFg, Config.decorBorderMenuContentBg, BorderContent);
+}
+
+void cFlatDisplayMenu::SetRecording(const cRecording *Recording) {
+ if( !Recording )
+ return;
+
+ #ifdef DEBUGEPGTIME
+ uint32_t tick0 = GetMsTicks();
+ #endif
+
+ ShowEvent = false;
+ ShowRecording = true;
+ ShowText = false;
+ ItemBorderClear();
+
+ const cRecordingInfo *recInfo = Recording->Info();
+
+ chLeft = Config.decorBorderMenuContentHeadSize;
+ chTop = topBarHeight + marginItem + Config.decorBorderTopBarSize*2 + Config.decorBorderMenuContentHeadSize;
+ chWidth = menuWidth - Config.decorBorderMenuContentHeadSize*2;
+ chHeight = fontHeight + fontSmlHeight*2 + marginItem*2;
+ contentHeadPixmap = osd->CreatePixmap(1, cRect(chLeft, chTop, chWidth, chHeight));
+ //dsyslog("skinflatplus: contentHeadPixmap left: %d top: %d width: %d height: %d", chLeft, chTop, chWidth, chHeight );
+
+ contentHeadIconsPixmap->Fill(clrTransparent);
+
+ cLeft = Config.decorBorderMenuContentSize;
+ cTop = chTop + marginItem*3 + fontHeight + fontSmlHeight*2 +
+ Config.decorBorderMenuContentSize + Config.decorBorderMenuContentHeadSize;
+ cWidth = menuWidth - Config.decorBorderMenuContentSize*2;
+ cHeight = osdHeight - (topBarHeight + Config.decorBorderTopBarSize*2 +
+ buttonsHeight + Config.decorBorderButtonSize*2 + marginItem*3 +
+ chHeight + Config.decorBorderMenuContentHeadSize*2 + Config.decorBorderMenuContentSize*2);
+
+ if( !ButtonsDrawn() )
+ cHeight += buttonsHeight + Config.decorBorderButtonSize*2;
+
+ menuItemWidth = cWidth;
+
+ ostringstream text, textAdditional, recAdditional;
+ text.imbue(std::locale(""));
+ textAdditional.imbue(std::locale(""));
+ recAdditional.imbue(std::locale(""));
+
+ std::string Fsk;
+ std::list<std::string> GenreIcons;
+
+ if (!isempty(recInfo->Description()))
+ text << recInfo->Description() << endl << endl;
+
+ // lent from skinelchi
+ if( Config.RecordingAdditionalInfoShow ) {
+ cChannel *channel = Channels.GetByChannelID(((cRecordingInfo *)recInfo)->ChannelID());
+ if (channel)
+ recAdditional << trVDR("Channel") << ": " << channel->Number() << " - " << channel->Name() << endl;
+
+ const cEvent *Event = recInfo->GetEvent();
+ if( Event ) {
+ // Genre
+ bool firstContent = true;
+ for (int i = 0; Event->Contents(i); i++) {
+ if (!isempty(Event->ContentToString(Event->Contents(i)))) { // skip empty (user defined) content
+ if (!firstContent) {
+ text << ", ";
+ } else {
+ text << tr("Genre") << ": ";
+ }
+ text << Event->ContentToString(Event->Contents(i));
+ firstContent = false;
+ GenreIcons.push_back(GetGenreIcon(Event->Contents(i)));
+ }
+ }
+ if( Event->Contents(0) )
+ text << endl;
+ // FSK
+ if( Event->ParentalRating() ) {
+ text << tr("FSK") << ": ";
+ text << *Event->GetParentalRatingString() << endl;
+ Fsk = *Event->GetParentalRatingString();
+ }
+ }
+ cMarks marks;
+ bool hasMarks = marks.Load(Recording->FileName(), Recording->FramesPerSecond(), Recording->IsPesRecording()) && marks.Count();
+ cIndexFile *index = new cIndexFile(Recording->FileName(), false, Recording->IsPesRecording());
+
+ int lastIndex = 0;
+
+ int cuttedLength = 0;
+ long cutinframe = 0;
+ unsigned long long recsize = 0;
+ unsigned long long recsizecutted = 0;
+ unsigned long long cutinoffset = 0;
+ unsigned long long filesize[100000];
+ filesize[0] = 0;
+
+ int i = 0;
+ int imax = 999;
+ struct stat filebuf;
+ cString filename;
+ int rc = 0;
+
+ do {
+ if (Recording->IsPesRecording())
+ filename = cString::sprintf("%s/%03d.vdr", Recording->FileName(), ++i);
+ else {
+ filename = cString::sprintf("%s/%05d.ts", Recording->FileName(), ++i);
+ imax = 99999;
+ }
+ rc=stat(filename, &filebuf);
+ if (rc == 0)
+ filesize[i] = filesize[i-1] + filebuf.st_size;
+ else {
+ if (ENOENT != errno) {
+ esyslog ("skinflatplus: error determining file size of \"%s\" %d (%s)", (const char *)filename, errno, strerror(errno));
+ recsize = 0;
+ }
+ }
+ } while( i <= imax && !rc );
+ recsize = filesize[i-1];
+
+ if (hasMarks && index) {
+ uint16_t FileNumber;
+ off_t FileOffset;
+
+ bool cutin = true;
+ cMark *mark = marks.First();
+ while (mark) {
+ long position = mark->Position();
+ index->Get(position, &FileNumber, &FileOffset);
+ if (cutin) {
+ cutinframe = position;
+ cutin = false;
+ cutinoffset = filesize[FileNumber-1] + FileOffset;
+ } else {
+ cuttedLength += position - cutinframe;
+ cutin = true;
+ recsizecutted += filesize[FileNumber-1] + FileOffset - cutinoffset;
+ }
+ cMark *nextmark = marks.Next(mark);
+ mark = nextmark;
+ }
+ if( !cutin ) {
+ cuttedLength += index->Last() - cutinframe;
+ index->Get(index->Last() - 1, &FileNumber, &FileOffset);
+ recsizecutted += filesize[FileNumber-1] + FileOffset - cutinoffset;
+ }
+ }
+ if (index) {
+ lastIndex = index->Last();
+ recAdditional << tr("Length") << ": " << *IndexToHMSF(lastIndex, false, Recording->FramesPerSecond());
+ if (hasMarks)
+ recAdditional << " (" << tr("cutted") << ": " << *IndexToHMSF(cuttedLength, false, Recording->FramesPerSecond()) << ")";
+ recAdditional << endl;
+ }
+ delete index;
+
+ if (recsize > MEGABYTE(1023))
+ recAdditional << tr("Size") << ": " << fixed << setprecision(2) << (float)recsize / MEGABYTE(1024) << " GB";
+ else
+ recAdditional << tr("Size") << ": " << recsize / MEGABYTE(1) << " MB";
+ if( hasMarks )
+ if (recsize > MEGABYTE(1023))
+ recAdditional << " (" << tr("cutted") << ": " << fixed << setprecision(2) << (float)recsizecutted/MEGABYTE(1024) << " GB)";
+ else
+ recAdditional << " (" << tr("cutted") << ": " << recsizecutted/MEGABYTE(1) << " MB)";
+
+ recAdditional << endl << trVDR("Priority") << ": " << Recording->Priority() << ", " << trVDR("Lifetime") << ": " << Recording->Lifetime() << endl;
+
+ if( lastIndex ) {
+ recAdditional << tr("format") << ": " << (Recording->IsPesRecording() ? "PES" : "TS") << ", " << tr("bit rate") << ": ~ " << fixed << setprecision (2) << (float)recsize/lastIndex*Recording->FramesPerSecond()*8/MEGABYTE(1) << " MBit/s (Video + Audio)";
+ }
+ const cComponents *Components = recInfo->Components();
+ if( Components ) {
+ ostringstream audio;
+ bool firstAudio = true;
+ const char *audio_type = NULL;
+ ostringstream subtitle;
+ bool firstSubtitle = true;
+ for (int i = 0; i < Components->NumComponents(); i++) {
+ const tComponent *p = Components->Component(i);
+
+ switch (p->stream) {
+ case sc_video_MPEG2:
+ textAdditional << tr("Video") << ": " << p->description << " (MPEG2)";
+ break;
+ case sc_video_H264_AVC:
+ textAdditional << tr("Video") << ": " << p->description << " (H.264)";
+ break;
+ case sc_audio_MP2:
+ case sc_audio_AC3:
+ case sc_audio_HEAAC:
+ if (firstAudio)
+ firstAudio = false;
+ else
+ audio << ", ";
+ switch (p->stream) {
+ case sc_audio_MP2:
+ // workaround for wrongfully used stream type X 02 05 for AC3
+ if (p->type == 5)
+ audio_type = "AC3";
+ else
+ audio_type = "MP2";
+ break;
+ case sc_audio_AC3:
+ audio_type = "AC3"; break;
+ case sc_audio_HEAAC:
+ audio_type = "HEAAC"; break;
+ }
+ if (p->description)
+ audio << p->description << " (" << audio_type << ", " << p->language << ")";
+ else
+ audio << p->language << " (" << audio_type << ")";
+ break;
+ case sc_subtitle:
+ if (firstSubtitle)
+ firstSubtitle = false;
+ else
+ subtitle << ", ";
+ if (p->description)
+ subtitle << p->description << " (" << p->language << ")";
+ else
+ subtitle << p->language;
+ break;
+ }
+ }
+ if (audio.str().length() > 0) {
+ if( textAdditional.str().length() > 0 )
+ textAdditional << endl;
+ textAdditional << tr("Audio") << ": "<< audio.str();
+ } if (subtitle.str().length() > 0) {
+ if( textAdditional.str().length() > 0 )
+ textAdditional << endl;
+ textAdditional << tr("Subtitle") << ": "<< subtitle.str();
+ }
+ }
+ if (recInfo->Aux()) {
+ string str_epgsearch = xml_substring(recInfo->Aux(), "<epgsearch>", "</epgsearch>");
+ string channel, searchtimer, pattern;
+
+ if (!str_epgsearch.empty()) {
+ channel = xml_substring(str_epgsearch, "<channel>", "</channel>");
+ searchtimer = xml_substring(str_epgsearch, "<searchtimer>", "</searchtimer>");
+ if (searchtimer.empty())
+ searchtimer = xml_substring(str_epgsearch, "<Search timer>", "</Search timer>");
+ }
+
+ string str_vdradmin = xml_substring(recInfo->Aux(), "<vdradmin-am>", "</vdradmin-am>");
+ if (!str_vdradmin.empty()) {
+ pattern = xml_substring(str_vdradmin, "<pattern>", "</pattern>");
+ }
+
+ if ((!channel.empty() && !searchtimer.empty()) || !pattern.empty()) {
+ recAdditional << endl;
+ if (!channel.empty() && !searchtimer.empty()) {
+ recAdditional << "EPGsearch: " << tr("channel") << ": " << channel << ", " << tr("search pattern") << ": " << searchtimer;
+ }
+ if (!pattern.empty()) {
+ recAdditional << "VDRadmin-AM: " << tr("search pattern") << ": " << pattern;
+ }
+ }
+ }
+ }
+
+ int headIconTop = chHeight - fontHeight - marginItem;
+ int headIconLeft = chWidth - fontHeight - marginItem;
+ if( Fsk.length() > 0 ) {
+ cString iconName = cString::sprintf("EPGInfo/FSK/%s", Fsk.c_str());
+ cImage *img = imgLoader.LoadIcon(*iconName, fontHeight, fontHeight);
+ if( img ) {
+ contentHeadIconsPixmap->DrawImage(cPoint(headIconLeft, headIconTop), *img);
+ headIconLeft -= fontHeight + marginItem;
+ } else {
+ isyslog("skinflatplus: FSK icon not found: %s", *iconName);
+ img = imgLoader.LoadIcon("EPGInfo/FSK/unknown", fontHeight, fontHeight);
+ if( img ) {
+ contentHeadIconsPixmap->DrawImage(cPoint(headIconLeft, headIconTop), *img);
+ headIconLeft -= fontHeight + marginItem;
+ }
+ }
+ }
+ while( !GenreIcons.empty() ) {
+ GenreIcons.sort();
+ GenreIcons.unique();
+ cString iconName = cString::sprintf("EPGInfo/Genre/%s", GenreIcons.back().c_str());
+ cImage *img = imgLoader.LoadIcon(*iconName, fontHeight, fontHeight);
+ bool isUnknownDrawn = false;
+ if( img ) {
+ contentHeadIconsPixmap->DrawImage(cPoint(headIconLeft, headIconTop), *img);
+ headIconLeft -= fontHeight + marginItem;
+ } else {
+ isyslog("skinflatplus: Genre icon not found: %s", *iconName);
+ if( !isUnknownDrawn ) {
+ img = imgLoader.LoadIcon("EPGInfo/Genre/unknown", fontHeight, fontHeight);
+ if( img ) {
+ contentHeadIconsPixmap->DrawImage(cPoint(headIconLeft, headIconTop), *img);
+ headIconLeft -= fontHeight + marginItem;
+ isUnknownDrawn = true;
+ }
+ }
+ }
+ GenreIcons.pop_back();
+ }
+
+ #ifdef DEBUGEPGTIME
+ uint32_t tick1 = GetMsTicks();
+ dsyslog("SetRecording info-text time: %d ms", tick1 - tick0);
+ #endif
+
+ bool Scrollable = false;
+ bool FirstRun = true;
+
+ do {
+ if( Scrollable ) {
+ FirstRun = false;
+ cWidth -= scrollBarWidth;
+ }
+
+ ComplexContent.Clear();
+ ComplexContent.SetOsd(osd);
+ ComplexContent.SetPosition(cRect(cLeft, cTop, cWidth, cHeight));
+ ComplexContent.SetBGColor(Theme.Color(clrMenuRecBg));
+ ComplexContent.SetScrollSize(fontHeight);
+ ComplexContent.SetScrollingActive(true);
+
+ int ContentTop = marginItem;
+
+ ostringstream series_info, movie_info;
+
+ std::vector<std::string> actors_path;
+ std::vector<std::string> actors_name;
+ std::vector<std::string> actors_role;
+
+ std::string mediaPath;
+ int mediaWidth = 0;
+ int mediaHeight = 0;
+
+ #ifdef DEBUGEPGTIME
+ uint32_t tick2 = GetMsTicks();
+ #endif
+
+ // first try scraper2vdr
+ static cPlugin *pScraper = cPluginManager::GetPlugin("scraper2vdr");
+ if( !pScraper ) // if it doesn't exit, try tvscraper
+ pScraper = cPluginManager::GetPlugin("tvscraper");
+ if( (Config.TVScraperRecInfoShowPoster || Config.TVScraperRecInfoShowActors) && pScraper ) {
+ ScraperGetEventType call;
+ call.recording = Recording;
+ int seriesId = 0;
+ int episodeId = 0;
+ int movieId = 0;
+
+ if (pScraper->Service("GetEventType", &call)) {
+ seriesId = call.seriesId;
+ episodeId = call.episodeId;
+ movieId = call.movieId;
+ }
+ if( seriesId > 0 ) {
+ cSeries series;
+ series.seriesId = seriesId;
+ series.episodeId = episodeId;
+ if (pScraper->Service("GetSeries", &series)) {
+ if( series.banners.size() > 0 )
+ mediaPath = series.banners[0].path;
+ mediaWidth = cWidth/2 - marginItem*2;
+ mediaHeight = cHeight - marginItem*2 - fontHeight - 6;
+ if( Config.TVScraperRecInfoShowActors ) {
+ for( unsigned int i = 0; i < series.actors.size(); i++ ) {
+ if( imgLoader.FileExits( series.actors[i].actorThumb.path ) ) {
+ actors_path.push_back(series.actors[i].actorThumb.path);
+ actors_name.push_back(series.actors[i].name);
+ actors_role.push_back(series.actors[i].role);
+ }
+ }
+ }
+ if( series.name.length() > 0 )
+ series_info << tr("name: ") << series.name << endl;
+ if( series.firstAired.length() > 0 )
+ series_info << tr("first aired: ") << series.firstAired << endl;
+ if( series.network.length() > 0 )
+ series_info << tr("network: ") << series.network << endl;
+ if( series.genre.length() > 0 )
+ series_info << tr("genre: ") << series.genre << endl;
+ if( series.rating > 0 )
+ series_info << tr("rating: ") << series.rating << endl;
+ if( series.status.length() > 0 )
+ series_info << tr("status: ") << series.status << endl;
+ if( series.episode.season > 0 )
+ series_info << tr("season number: ") << series.episode.season << endl;
+ if( series.episode.number > 0 )
+ series_info << tr("episode number: ") << series.episode.number << endl;
+ }
+ } else if (movieId > 0) {
+ cMovie movie;
+ movie.movieId = movieId;
+ if (pScraper->Service("GetMovie", &movie)) {
+ mediaPath = movie.poster.path;
+ mediaWidth = cWidth/2 - marginItem*3;
+ mediaHeight = cHeight - marginItem*2 - fontHeight - 6;
+ if( Config.TVScraperRecInfoShowActors ) {
+ for( unsigned int i = 0; i < movie.actors.size(); i++ ) {
+ if( imgLoader.FileExits( movie.actors[i].actorThumb.path ) ) {
+ actors_path.push_back(movie.actors[i].actorThumb.path);
+ actors_name.push_back(movie.actors[i].name);
+ actors_role.push_back(movie.actors[i].role);
+ }
+ }
+ }
+ if( movie.title.length() > 0 )
+ movie_info << tr("title: ") << movie.title << endl;
+ if( movie.originalTitle.length() > 0 )
+ movie_info << tr("original title: ") << movie.originalTitle << endl;
+ if( movie.collectionName.length() > 0 )
+ movie_info << tr("collection name: ") << movie.collectionName << endl;
+ if( movie.genres.length() > 0 )
+ movie_info << tr("genre: ") << movie.genres << endl;
+ if( movie.releaseDate.length() > 0 )
+ movie_info << tr("release date: ") << movie.releaseDate << endl;
+ if( movie.popularity > 0 )
+ movie_info << tr("popularity: ") << movie.popularity << endl;
+ if( movie.voteAverage > 0 )
+ movie_info << tr("vote average: ") << movie.voteAverage << endl;
+ }
+ }
+ }
+
+ #ifdef DEBUGEPGTIME
+ uint32_t tick3 = GetMsTicks();
+ dsyslog("SetRecording tvscraper time: %d ms", tick3 - tick2);
+ #endif
+
+ cString recPath = cString::sprintf("%s", Recording->FileName());
+ cString recImage;
+ if( imgLoader.SearchRecordingPoster(recPath, recImage) ) {
+ mediaWidth = cWidth/2 - marginItem*2;
+ mediaHeight = cHeight - marginItem*2 - fontHeight - 6;
+ mediaPath = recImage;
+ }
+ if( mediaPath.length() > 0 ) {
+ cImage *img = imgLoader.LoadFile(mediaPath.c_str(), mediaWidth, mediaHeight);
+ if( img ) {
+ ComplexContent.AddText(tr("Description"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuRecFontTitle), Theme.Color(clrMenuRecBg), font);
+ ContentTop += fontHeight;
+ ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuRecTitleLine));
+ ContentTop += 6;
+ ComplexContent.AddImageWithFloatedText(img, CIP_Right, text.str().c_str(), cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2),
+ Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), font);
+ } else if( text.str().length() > 0 ) {
+ ComplexContent.AddText(tr("Description"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuRecFontTitle), Theme.Color(clrMenuRecBg), font);
+ ContentTop += fontHeight;
+ ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuRecTitleLine));
+ ContentTop += 6;
+ ComplexContent.AddText(text.str().c_str(), true, cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2),
+ Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), font);
+ }
+ } else if( text.str().length() > 0 ) {
+ ComplexContent.AddText(tr("Description"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuRecFontTitle), Theme.Color(clrMenuRecBg), font);
+ ContentTop += fontHeight;
+ ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuRecTitleLine));
+ ContentTop += 6;
+ ComplexContent.AddText(text.str().c_str(), true, cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2),
+ Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), font);
+ }
+
+ if( movie_info.str().length() > 0 ) {
+ ContentTop = ComplexContent.BottomContent() + fontHeight;
+ ComplexContent.AddText(tr("Movie information"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuRecFontTitle), Theme.Color(clrMenuRecBg), font);
+ ContentTop += fontHeight;
+ ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuRecTitleLine));
+ ContentTop += 6;
+ ComplexContent.AddText(movie_info.str().c_str(), true, cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2),
+ Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), font);
+ }
+
+ if( series_info.str().length() > 0 ) {
+ ContentTop = ComplexContent.BottomContent() + fontHeight;
+ ComplexContent.AddText(tr("Series information"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuRecFontTitle), Theme.Color(clrMenuRecBg), font);
+ ContentTop += fontHeight;
+ ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuRecTitleLine));
+ ContentTop += 6;
+ ComplexContent.AddText(series_info.str().c_str(), true, cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2),
+ Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), font);
+ }
+ #ifdef DEBUGEPGTIME
+ uint32_t tick4 = GetMsTicks();
+ dsyslog("SetRecording epg-text time: %d ms", tick4 - tick3);
+ #endif
+
+ if( Config.TVScraperRecInfoShowActors && actors_path.size() > 0 ) {
+ ContentTop = ComplexContent.BottomContent() + fontHeight;
+ ComplexContent.AddText(tr("Actors"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuRecFontTitle), Theme.Color(clrMenuRecBg), font);
+ ContentTop += fontHeight;
+ ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuRecTitleLine));
+ ContentTop += 6;
+
+ int actorsPerLine = 6;
+ int numActors = actors_path.size();
+ int actorWidth = cWidth / actorsPerLine - marginItem*4;
+ int picsPerLine = (cWidth - marginItem*2) / actorWidth;
+ int picLines = numActors / picsPerLine;
+ if( numActors%picsPerLine != 0 )
+ picLines++;
+ int actorMargin = ((cWidth - marginItem*2) - actorWidth*actorsPerLine) / (actorsPerLine-1);
+ int x = marginItem;
+ int y = ContentTop;
+ int actor = 0;
+ for (int row = 0; row < picLines; row++) {
+ for (int col = 0; col < picsPerLine; col++) {
+ if (actor == numActors)
+ break;
+ std::string path = actors_path[actor];
+ cImage *img = imgLoader.LoadFile(path.c_str(), actorWidth, 999);
+ if( img ) {
+ ComplexContent.AddImage(img, cRect(x, y, 0, 0));
+ std::string name = actors_name[actor];
+ std::stringstream sstrRole;
+ sstrRole << "\"" << actors_role[actor] << "\"";
+ std::string role = sstrRole.str();
+ ComplexContent.AddText(name.c_str(), false, cRect(x, y + img->Height() + marginItem, actorWidth, 0), Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), fontSml, actorWidth, fontSmlHeight, taCenter);
+ ComplexContent.AddText(role.c_str(), false, cRect(x, y + img->Height() + marginItem + fontSmlHeight, actorWidth, 0), Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), fontSml, actorWidth, fontSmlHeight, taCenter);
+ }
+ x += actorWidth + actorMargin;
+ actor++;
+ }
+ x = marginItem;
+ y = ComplexContent.BottomContent() + fontHeight;
+ }
+ }
+ #ifdef DEBUGEPGTIME
+ uint32_t tick5 = GetMsTicks();
+ dsyslog("SetRecording actor time: %d ms", tick5 - tick4);
+ #endif
+
+ if( recAdditional.str().length() > 0 ) {
+ ContentTop = ComplexContent.BottomContent() + fontHeight;
+ ComplexContent.AddText(tr("Recording information"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuRecFontTitle), Theme.Color(clrMenuRecBg), font);
+ ContentTop += fontHeight;
+ ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuRecTitleLine));
+ ContentTop += 6;
+ ComplexContent.AddText(recAdditional.str().c_str(), true, cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2),
+ Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), font);
+ }
+
+ if( textAdditional.str().length() > 0 ) {
+ ContentTop = ComplexContent.BottomContent() + fontHeight;
+ ComplexContent.AddText(tr("Video information"), false, cRect(marginItem*10, ContentTop, 0, 0), Theme.Color(clrMenuRecFontTitle), Theme.Color(clrMenuRecBg), font);
+ ContentTop += fontHeight;
+ ComplexContent.AddRect(cRect(0, ContentTop, cWidth, 3), Theme.Color(clrMenuRecTitleLine));
+ ContentTop += 6;
+ ComplexContent.AddText(textAdditional.str().c_str(), true, cRect(marginItem, ContentTop, cWidth - marginItem*2, cHeight - marginItem*2),
+ Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), font);
+ }
+
+ Scrollable = ComplexContent.Scrollable(cHeight - marginItem*2);
+ } while( Scrollable && FirstRun );
+
+ if( Config.MenuContentFullSize || Scrollable ) {
+ ComplexContent.CreatePixmaps(true);
+ } else
+ ComplexContent.CreatePixmaps(false);
+
+ ComplexContent.Draw();
+
+ contentHeadPixmap->Fill(clrTransparent);
+ contentHeadPixmap->DrawRectangle(cRect(0, 0, menuWidth, fontHeight + fontSmlHeight*2 + marginItem*2), Theme.Color(clrScrollbarBg));
+
+ cString timeString = cString::sprintf("%s %s %s", *DateString(Recording->Start()), *TimeString(Recording->Start()), recInfo->ChannelName() ? recInfo->ChannelName() : "");
+
+ cString title = recInfo->Title();
+ if( isempty(title) )
+ title = Recording->Name();
+ cString shortText = recInfo->ShortText();
+
+ contentHeadPixmap->DrawText(cPoint(marginItem, marginItem), timeString, Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), fontSml, menuWidth - marginItem*2);
+ contentHeadPixmap->DrawText(cPoint(marginItem, marginItem + fontSmlHeight), title, Theme.Color(clrMenuRecFontTitle), Theme.Color(clrMenuRecBg), font, menuWidth - marginItem*2);
+ contentHeadPixmap->DrawText(cPoint(marginItem, marginItem + fontSmlHeight + fontHeight), shortText, Theme.Color(clrMenuRecFontInfo), Theme.Color(clrMenuRecBg), fontSml, menuWidth - marginItem*2);
+
+ DecorBorderDraw(chLeft, chTop, chWidth, chHeight, Config.decorBorderMenuContentHeadSize, Config.decorBorderMenuContentHeadType,
+ Config.decorBorderMenuContentHeadFg, Config.decorBorderMenuContentHeadBg, BorderSetRecording, false);
+
+ if( Scrollable )
+ DrawScrollbar(ComplexContent.ScrollTotal(), ComplexContent.ScrollOffset(), ComplexContent.ScrollShown(), ComplexContent.Top() - scrollBarTop, ComplexContent.Height(), ComplexContent.ScrollOffset() > 0, ComplexContent.ScrollOffset() + ComplexContent.ScrollShown() < ComplexContent.ScrollTotal(), true);
+
+ RecordingBorder.Left = cLeft;
+ RecordingBorder.Top = cTop;
+ RecordingBorder.Width = cWidth;
+ RecordingBorder.Height = ComplexContent.Height();
+ RecordingBorder.Size = Config.decorBorderMenuContentSize;
+ RecordingBorder.Type = Config.decorBorderMenuContentType;
+ RecordingBorder.ColorFg = Config.decorBorderMenuContentFg;
+ RecordingBorder.ColorBg = Config.decorBorderMenuContentBg;
+ RecordingBorder.From = BorderMenuRecord;
+
+ if( Config.MenuContentFullSize || Scrollable )
+ DecorBorderDraw(RecordingBorder.Left, RecordingBorder.Top, RecordingBorder.Width, ComplexContent.ContentHeight(true),
+ RecordingBorder.Size, RecordingBorder.Type,
+ RecordingBorder.ColorFg, RecordingBorder.ColorBg, RecordingBorder.From, false);
+ else
+ DecorBorderDraw(RecordingBorder.Left, RecordingBorder.Top, RecordingBorder.Width, ComplexContent.ContentHeight(false),
+ RecordingBorder.Size, RecordingBorder.Type,
+ RecordingBorder.ColorFg, RecordingBorder.ColorBg, RecordingBorder.From, false);
+
+ #ifdef DEBUGEPGTIME
+ uint32_t tick6 = GetMsTicks();
+ dsyslog("SetRecording total time: %d ms", tick6 - tick0);
+ #endif
+}
+
+void cFlatDisplayMenu::SetText(const char *Text, bool FixedFont) {
+ if( !Text )
+ return;
+
+ ShowEvent = false;
+ ShowRecording = false;
+ ShowText = true;
+ ItemBorderClear();
+
+ contentHeadPixmap->Fill(clrTransparent);
+
+ int Left = Config.decorBorderMenuContentSize;
+ int Top = topBarHeight + marginItem + Config.decorBorderTopBarSize*2 + Config.decorBorderMenuContentSize;
+ int Width = menuWidth - Config.decorBorderMenuContentSize*2;
+ int Height = osdHeight - (topBarHeight + Config.decorBorderTopBarSize*2 +
+ buttonsHeight + Config.decorBorderButtonSize*2 + Config.decorBorderMenuContentSize*2 + marginItem);
+
+ if( !ButtonsDrawn() )
+ Height += buttonsHeight + Config.decorBorderButtonSize*2;
+
+ ComplexContent.Clear();
+
+ menuItemWidth = Width;
+ bool Scrollable = false;
+ if( FixedFont ) {
+ ComplexContent.AddText(Text, true, cRect(marginItem, marginItem, Width - marginItem*2, Height - marginItem*2),
+ Theme.Color(clrMenuTextFixedFont), Theme.Color(clrMenuTextBg), fontFixed);
+ ComplexContent.SetScrollSize(fontFixedHeight);
+ } else {
+ ComplexContent.AddText(Text, true, cRect(marginItem, marginItem, Width - marginItem*2, Height - marginItem*2),
+ Theme.Color(clrMenuTextFixedFont), Theme.Color(clrMenuTextBg), font);
+ ComplexContent.SetScrollSize(fontHeight);
+ }
+
+ Scrollable = ComplexContent.Scrollable(Height - marginItem*2);
+ if( Scrollable ) {
+ Width -= scrollBarWidth;
+ ComplexContent.Clear();
+ if( FixedFont ) {
+ ComplexContent.AddText(Text, true, cRect(marginItem, marginItem, Width - marginItem*2, Height - marginItem*2),
+ Theme.Color(clrMenuTextFixedFont), Theme.Color(clrMenuTextBg), fontFixed);
+ ComplexContent.SetScrollSize(fontFixedHeight);
+ } else {
+ ComplexContent.AddText(Text, true, cRect(marginItem, marginItem, Width - marginItem*2, Height - marginItem*2),
+ Theme.Color(clrMenuTextFixedFont), Theme.Color(clrMenuTextBg), font);
+ ComplexContent.SetScrollSize(fontHeight);
+ }
+ }
+
+ ComplexContent.SetOsd(osd);
+ ComplexContent.SetPosition(cRect(Left, Top, Width, Height));
+ ComplexContent.SetBGColor(Theme.Color(clrMenuTextBg));
+ ComplexContent.SetScrollingActive(true);
+
+ if( Config.MenuContentFullSize || Scrollable ) {
+ ComplexContent.CreatePixmaps(true);
+ } else
+ ComplexContent.CreatePixmaps(false);
+
+ ComplexContent.Draw();
+
+ if( Scrollable )
+ DrawScrollbar(ComplexContent.ScrollTotal(), ComplexContent.ScrollOffset(), ComplexContent.ScrollShown(), ComplexContent.Top() - scrollBarTop, ComplexContent.Height(), ComplexContent.ScrollOffset() > 0, ComplexContent.ScrollOffset() + ComplexContent.ScrollShown() < ComplexContent.ScrollTotal(), true);
+
+ if( Config.MenuContentFullSize || Scrollable )
+ DecorBorderDraw(Left, Top, Width, ComplexContent.ContentHeight(true), Config.decorBorderMenuContentSize, Config.decorBorderMenuContentType,
+ Config.decorBorderMenuContentFg, Config.decorBorderMenuContentBg);
+ else
+ DecorBorderDraw(Left, Top, Width, ComplexContent.ContentHeight(false), Config.decorBorderMenuContentSize, Config.decorBorderMenuContentType,
+ Config.decorBorderMenuContentFg, Config.decorBorderMenuContentBg);
+}
+
+int cFlatDisplayMenu::GetTextAreaWidth(void) const {
+ return menuWidth - (marginItem*2);
+}
+
+const cFont *cFlatDisplayMenu::GetTextAreaFont(bool FixedFont) const {
+ const cFont *rfont = FixedFont ? fontFixed : font;
+ return rfont;
+}
+
+void cFlatDisplayMenu::Flush(void) {
+ TopBarUpdate();
+
+ if( Config.MenuFullOsd && !MenuFullOsdIsDrawn ) {
+ menuPixmap->DrawRectangle(cRect(0, menuItemLastHeight - Config.decorBorderMenuItemSize, menuItemWidth + Config.decorBorderMenuItemSize*2, menuPixmap->ViewPort().Height() - menuItemLastHeight + marginItem), Theme.Color(clrItemSelableBg));
+ //menuPixmap->DrawRectangle(cRect(0, menuPixmap->ViewPort().Height() - 5, menuItemWidth + Config.decorBorderMenuItemSize*2, 5), Theme.Color(clrItemSelableBg));
+ MenuFullOsdIsDrawn = true;
+ }
+
+ if( Config.MenuTimerShowCount && menuCategory == mcTimer ) {
+ int timerCount = 0, timerActiveCount = 0;
+ for(cTimer *Timer = Timers.First(); Timer; Timer = Timers.Next(Timer)) {
+ timerCount++;
+ if( Timer->HasFlags(tfActive) )
+ timerActiveCount++;
+ }
+ if( LastTimerCount != timerCount || LastTimerActiveCount != timerActiveCount ) {
+ LastTimerCount = timerCount;
+ LastTimerActiveCount = timerActiveCount;
+ cString newTitle = cString::sprintf("%s (%d/%d)", *LastTitle, timerActiveCount, timerCount);
+ TopBarSetTitleWithoutClear(*newTitle);
+ }
+ }
+
+ osd->Flush();
+}
+
+void cFlatDisplayMenu::ItemBorderInsertUnique(sDecorBorder ib) {
+ std::list<sDecorBorder>::iterator it;
+ for( it = ItemsBorder.begin(); it != ItemsBorder.end(); it++ ) {
+ if( (*it).Left == ib.Left && (*it).Top == ib.Top ) {
+ (*it).Left = ib.Left;
+ (*it).Top = ib.Top;
+ (*it).Width = ib.Width;
+ (*it).Height = ib.Height;
+ (*it).Size = ib.Size;
+ (*it).Type = ib.Type;
+ (*it).ColorFg = ib.ColorFg;
+ (*it).ColorBg = ib.ColorBg;
+ (*it).From = ib.From;
+ return;
+ }
+ }
+
+ ItemsBorder.push_back(ib);
+}
+
+void cFlatDisplayMenu::ItemBorderDrawAllWithScrollbar(void) {
+ std::list<sDecorBorder>::iterator it;
+ for( it = ItemsBorder.begin(); it != ItemsBorder.end(); it++ ) {
+ DecorBorderDraw((*it).Left, (*it).Top, (*it).Width - scrollBarWidth, (*it).Height, (*it).Size, (*it).Type,
+ (*it).ColorFg, (*it).ColorBg, BorderMenuItem);
+ }
+}
+
+void cFlatDisplayMenu::ItemBorderDrawAllWithoutScrollbar(void) {
+ std::list<sDecorBorder>::iterator it;
+ for( it = ItemsBorder.begin(); it != ItemsBorder.end(); it++ ) {
+ DecorBorderDraw((*it).Left, (*it).Top, (*it).Width + scrollBarWidth, (*it).Height, (*it).Size, (*it).Type,
+ (*it).ColorFg, (*it).ColorBg, BorderMenuItem);
+ }
+}
+
+void cFlatDisplayMenu::ItemBorderClear(void) {
+ ItemsBorder.clear();
+}
+
+time_t cFlatDisplayMenu::GetLastRecTimeFromFolder(const cRecording *Recording, int Level) {
+ std::string RecFolder = GetRecordingName(Recording, Level, true);
+ time_t RecStart = Recording->Start();
+
+ for(cRecording *rec = Recordings.First(); rec; rec = Recordings.Next(rec)) {
+ std::string RecFolder2 = GetRecordingName(rec, Level, true);
+ if( RecFolder == RecFolder2 ) { // recordings must be in the same folder
+ time_t RecStart2 = rec->Start();
+ if( Config.MenuItemRecordingShowFolderDate == 1) { // newest
+ if( RecStart2 > RecStart )
+ RecStart = RecStart2;
+ } else if( Config.MenuItemRecordingShowFolderDate == 2 ) // oldest
+ if( RecStart2 < RecStart )
+ RecStart = RecStart2;
+ }
+ }
+
+ return RecStart;
+}
+
+// returns the string between start and end or an empty string if not found
+string cFlatDisplayMenu::xml_substring(string source, const char* str_start, const char* str_end) {
+ size_t start = source.find(str_start);
+ size_t end = source.find(str_end);
+
+ if (string::npos != start && string::npos != end) {
+ return (source.substr(start + strlen(str_start), end - start - strlen(str_start)));
+ }
+
+ return string();
+}
+
+const char * cFlatDisplayMenu::GetRecordingName(const cRecording *Recording, int Level, bool isFolder) {
+ if( !Recording )
+ return "";
+ std::string recNamePart;
+ std::string recName = Recording->Name();
+ try {
+ std::vector<std::string> tokens;
+ std::istringstream f(recName.c_str());
+ std::string s;
+ while (std::getline(f, s, FOLDERDELIMCHAR)) {
+ tokens.push_back(s);
+ }
+ recNamePart = tokens.at(Level);
+ } catch (...) {
+ recNamePart = recName.c_str();
+ }
+
+ if( Config.MenuItemRecordingClearPercent && isFolder ) {
+ if( recNamePart[0] == '%' ) {
+ recNamePart.erase(0, 1);
+ }
+ }
+ return recNamePart.c_str();
+}
+
+const char* cFlatDisplayMenu::GetGenreIcon(uchar genre) {
+ switch (genre & 0xF0) {
+ case ecgMovieDrama:
+ switch (genre & 0x0F) {
+ case 0x00: return "Movie_Drama";
+ case 0x01: return "Detective_Thriller";
+ case 0x02: return "Adventure_Western_War";
+ case 0x03: return "Science Fiction_Fantasy_Horror";
+ case 0x04: return "Comedy";
+ case 0x05: return "Soap_Melodrama_Folkloric";
+ case 0x06: return "Romance";
+ case 0x07: return "Serious_Classical_Religious_Historical Movie_Drama";
+ case 0x08: return "Adult Movie_Drama";
+ default: return "Movie_Drama";
+ }
+ break;
+ case ecgNewsCurrentAffairs:
+ switch (genre & 0x0F) {
+ case 0x00: return "News_Current Affairs";
+ case 0x01: return "News_Weather Report";
+ case 0x02: return "News Magazine";
+ case 0x03: return "Documentary";
+ case 0x04: return "Discussion_Inverview_Debate";
+ default: return "News_Current Affairs";
+ }
+ break;
+ case ecgShow:
+ switch (genre & 0x0F) {
+ case 0x00: return "Show_Game Show";
+ case 0x01: return "Game Show_Quiz_Contest";
+ case 0x02: return "Variety Show";
+ case 0x03: return "Talk Show";
+ default: return "Show_Game Show";
+ }
+ break;
+ case ecgSports:
+ switch (genre & 0x0F) {
+ case 0x00: return "Sports";
+ case 0x01: return "Special Event";
+ case 0x02: return "Sport Magazine";
+ case 0x03: return "Football_Soccer";
+ case 0x04: return "Tennis_Squash";
+ case 0x05: return "Team Sports";
+ case 0x06: return "Athletics";
+ case 0x07: return "Motor Sport";
+ case 0x08: return "Water Sport";
+ case 0x09: return "Winter Sports";
+ case 0x0A: return "Equestrian";
+ case 0x0B: return "Martial Sports";
+ default: return "Sports";
+ }
+ break;
+ case ecgChildrenYouth:
+ switch (genre & 0x0F) {
+ case 0x00: return "Childrens_Youth Programme";
+ case 0x01: return "Pre-school Childrens Programme";
+ case 0x02: return "Entertainment Programme for 6 to 14";
+ case 0x03: return "Entertainment Programme for 10 to 16";
+ case 0x04: return "Informational_Educational_School Programme";
+ case 0x05: return "Cartoons_Puppets";
+ default: return "Childrens_Youth Programme";
+ }
+ break;
+ case ecgMusicBalletDance:
+ switch (genre & 0x0F) {
+ case 0x00: return "Music_Ballet_Dance";
+ case 0x01: return "Rock_Pop";
+ case 0x02: return "Serious_Classical Music";
+ case 0x03: return "Folk_Tradional Music";
+ case 0x04: return "Jazz";
+ case 0x05: return "Musical_Opera";
+ case 0x06: return "Ballet";
+ default: return "Music_Ballet_Dance";
+ }
+ break;
+ case ecgArtsCulture:
+ switch (genre & 0x0F) {
+ case 0x00: return "Arts_Culture";
+ case 0x01: return "Performing Arts";
+ case 0x02: return "Fine Arts";
+ case 0x03: return "Religion";
+ case 0x04: return "Popular Culture_Traditional Arts";
+ case 0x05: return "Literature";
+ case 0x06: return "Film_Cinema";
+ case 0x07: return "Experimental Film_Video";
+ case 0x08: return "Broadcasting_Press";
+ case 0x09: return "New Media";
+ case 0x0A: return "Arts_Culture Magazine";
+ case 0x0B: return "Fashion";
+ default: return "Arts_Culture";
+ }
+ break;
+ case ecgSocialPoliticalEconomics:
+ switch (genre & 0x0F) {
+ case 0x00: return "Social_Political_Economics";
+ case 0x01: return "Magazine_Report_Documentary";
+ case 0x02: return "Economics_Social Advisory";
+ case 0x03: return "Remarkable People";
+ default: return "Social_Political_Economics";
+ }
+ break;
+ case ecgEducationalScience:
+ switch (genre & 0x0F) {
+ case 0x00: return "Education_Science_Factual";
+ case 0x01: return "Nature_Animals_Environment";
+ case 0x02: return "Technology_Natural Sciences";
+ case 0x03: return "Medicine_Physiology_Psychology";
+ case 0x04: return "Foreign Countries_Expeditions";
+ case 0x05: return "Social_Spiritual Sciences";
+ case 0x06: return "Further Education";
+ case 0x07: return "Languages";
+ default: return "Education_Science_Factual";
+ }
+ break;
+ case ecgLeisureHobbies:
+ switch (genre & 0x0F) {
+ case 0x00: return "Leisure_Hobbies";
+ case 0x01: return "Tourism_Travel";
+ case 0x02: return "Handicraft";
+ case 0x03: return "Motoring";
+ case 0x04: return "Fitness_Health";
+ case 0x05: return "Cooking";
+ case 0x06: return "Advertisement_Shopping";
+ case 0x07: return "Gardening";
+ default: return "Leisure_Hobbies";
+ }
+ break;
+ case ecgSpecial:
+ switch (genre & 0x0F) {
+ case 0x00: return "Original Language";
+ case 0x01: return "Black & White";
+ case 0x02: return "Unpublished";
+ case 0x03: return "Live Broadcast";
+ default: return "Original Language";
+ }
+ break;
+ default: isyslog("skinflatplus: Genre not found: %x", genre);
+ }
+ return "";
+}
+
+void cFlatDisplayMenu::DrawMainMenuWidgets(void) {
+ int wLeft = osdWidth * Config.MainMenuItemScale + marginItem + Config.decorBorderMenuContentSize;
+ int wTop = topBarHeight + marginItem + Config.decorBorderTopBarSize*2 + Config.decorBorderMenuContentSize;
+
+ int wWidth = osdWidth - wLeft - Config.decorBorderMenuContentSize;
+ int wHeight = menuPixmap->ViewPort().Height() - marginItem*2;
+ int ContentTop = 0;
+
+ contentWidget.Clear();
+ contentWidget.SetOsd(osd);
+ contentWidget.SetPosition(cRect(wLeft, wTop, wWidth, wHeight));
+ contentWidget.SetBGColor(Theme.Color(clrMenuRecBg));
+ contentWidget.SetScrollingActive(false);
+
+ std::vector<std::pair<int, std::string> > widgets;
+
+ if( Config.MainMenuWidgetDVBDevicesShow )
+ widgets.push_back(std::make_pair(Config.MainMenuWidgetDVBDevicesPosition, "dvb_devices"));
+ if( Config.MainMenuWidgetActiveTimerShow )
+ widgets.push_back(std::make_pair(Config.MainMenuWidgetActiveTimerPosition, "active_timer"));
+ if( Config.MainMenuWidgetLastRecShow )
+ widgets.push_back(std::make_pair(Config.MainMenuWidgetDVBDevicesPosition, "last_recordings"));
+ if( Config.MainMenuWidgetSystemInfoShow )
+ widgets.push_back(std::make_pair(Config.MainMenuWidgetSystemInfoPosition, "system_information"));
+ if( Config.MainMenuWidgetSystemUpdatesShow )
+ widgets.push_back(std::make_pair(Config.MainMenuWidgetSystemUpdatesPosition, "system_updates"));
+ if( Config.MainMenuWidgetTemperaturesShow )
+ widgets.push_back(std::make_pair(Config.MainMenuWidgetTemperaturesPosition, "temperatures"));
+ if( Config.MainMenuWidgetTimerConflictsShow )
+ widgets.push_back(std::make_pair(Config.MainMenuWidgetTimerConflictsPosition, "timer_conflicts"));
+ if( Config.MainMenuWidgetCommandShow )
+ widgets.push_back(std::make_pair(Config.MainMenuWidgetCommandPosition, "custom_command"));
+ if( Config.MainMenuWidgetWeatherShow )
+ widgets.push_back(std::make_pair(Config.MainMenuWidgetWeatherPosition, "weather"));
+
+ std::sort(widgets.begin(), widgets.end(), pairCompareIntString);
+
+ while( !widgets.empty() ) {
+ std::pair<int, std::string> pairWidget = widgets.back();
+ widgets.pop_back();
+ std::string widget = pairWidget.second;
+
+ if( widget.compare("dvb_devices") == 0 ) {
+ int addHeight = DrawMainMenuWidgetDVBDevices(wLeft, wWidth, ContentTop);
+ if( addHeight > 0 )
+ ContentTop = addHeight + marginItem;
+ } else if( widget.compare("active_timer") == 0 ) {
+ int addHeight = DrawMainMenuWidgetActiveTimers(wLeft, wWidth, ContentTop);
+ if( addHeight > 0 )
+ ContentTop = addHeight + marginItem;
+ } else if( widget.compare("last_recordings") == 0 ) {
+ int addHeight = DrawMainMenuWidgetLastRecordings(wLeft, wWidth, ContentTop);
+ if( addHeight > 0 )
+ ContentTop = addHeight + marginItem;
+ } else if( widget.compare("system_information") == 0 ) {
+ int addHeight = DrawMainMenuWidgetSystemInformation(wLeft, wWidth, ContentTop);
+ if( addHeight > 0 )
+ ContentTop = addHeight + marginItem;
+ } else if( widget.compare("system_updates") == 0 ) {
+ int addHeight = DrawMainMenuWidgetSystemUpdates(wLeft, wWidth, ContentTop);
+ if( addHeight > 0 )
+ ContentTop = addHeight + marginItem;
+ } else if( widget.compare("temperatures") == 0 ) {
+ int addHeight = DrawMainMenuWidgetTemperaturs(wLeft, wWidth, ContentTop);
+ if( addHeight > 0 )
+ ContentTop = addHeight + marginItem;
+ } else if( widget.compare("timer_conflicts") == 0 ) {
+ int addHeight = DrawMainMenuWidgetTimerConflicts(wLeft, wWidth, ContentTop);
+ if( addHeight > 0 )
+ ContentTop = addHeight + marginItem;
+ } else if( widget.compare("custom_command") == 0 ) {
+ int addHeight = DrawMainMenuWidgetCommand(wLeft, wWidth, ContentTop);
+ if( addHeight > 0 )
+ ContentTop = addHeight + marginItem;
+ } else if( widget.compare("weather") == 0 ) {
+ int addHeight = DrawMainMenuWidgetWeather(wLeft, wWidth, ContentTop);
+ if( addHeight > 0 )
+ ContentTop = addHeight + marginItem;
+ }
+
+ }
+
+ contentWidget.CreatePixmaps(false);
+ contentWidget.Draw();
+
+ DecorBorderDraw(wLeft, wTop, wWidth, contentWidget.ContentHeight(false), Config.decorBorderMenuContentSize, Config.decorBorderMenuContentType,
+ Config.decorBorderMenuContentFg, Config.decorBorderMenuContentBg, BorderMMWidget);
+}
+
+int cFlatDisplayMenu::DrawMainMenuWidgetDVBDevices(int wLeft, int wWidth, int ContentTop) {
+ int numDevices = cDevice::NumDevices();
+
+ if( ContentTop + fontHeight + 6 + fontSmlHeight > menuPixmap->ViewPort().Height() )
+ return -1;
+
+ cImage *img = imgLoader.LoadIcon("widgets/dvb_devices", fontHeight, fontHeight - marginItem*2);
+ if( img ) {
+ contentWidget.AddImage(img, cRect(marginItem, ContentTop + marginItem, fontHeight, fontHeight));
+ }
+ contentWidget.AddText(tr("DVB Devices"), false, cRect(marginItem*2 + fontHeight, ContentTop, 0, 0), Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font);
+ ContentTop += fontHeight;
+ contentWidget.AddRect(cRect(0, ContentTop, wWidth, 3), Theme.Color(clrMenuEventTitleLine));
+ ContentTop += 6;
+
+ // check device which currently displays live tv
+ int deviceLiveTV = -1;
+ cDevice *primaryDevice = cDevice::PrimaryDevice();
+ if (primaryDevice) {
+ if (!primaryDevice->Replaying() || primaryDevice->Transferring())
+ deviceLiveTV = cDevice::ActualDevice()->DeviceNumber();
+ else
+ deviceLiveTV = primaryDevice->DeviceNumber();
+ }
+
+ // check currently recording devices
+ bool *recDevices = new bool[numDevices];
+ for( int i=0; i < numDevices; i++ )
+ recDevices[i] = false;
+ for (cTimer *timer = Timers.First(); timer; timer = Timers.Next(timer)) {
+ if (!timer->Recording()) {
+ continue;
+ }
+ if (cRecordControl *RecordControl = cRecordControls::GetRecordControl(timer)) {
+ const cDevice *recDevice = RecordControl->Device();
+ if (recDevice) {
+ recDevices[recDevice->DeviceNumber()] = true;
+ }
+ }
+ }
+ int actualNumDevices = 0;
+ for (int i = 0; i < numDevices; i++) {
+ if( ContentTop + marginItem > menuPixmap->ViewPort().Height() )
+ continue;
+ const cDevice *device = cDevice::GetDevice(i);
+ if (!device || !device->NumProvidedSystems()) {
+ continue;
+ }
+ actualNumDevices++;
+ std::stringstream strDevice;
+
+ cString channelName;
+
+ const cChannel *channel = device->GetCurrentlyTunedTransponder();
+ if( i == deviceLiveTV ) {
+ strDevice << tr("LiveTV") << " (";
+ cString chanName;
+ if (channel && channel->Number() > 0) {
+ chanName = channel->Name();
+ } else {
+ chanName = tr("Unknown");
+ }
+ strDevice << *chanName;
+ strDevice << ")";
+ }
+ else if( recDevices[i] ) {
+ strDevice << tr("recording") << " (";
+ cString chanName;
+ if (channel && channel->Number() > 0) {
+ chanName = channel->Name();
+ } else {
+ chanName = tr("Unknown");
+ }
+ strDevice << *chanName;
+ strDevice << ")";
+ } else {
+ if( channel ) {
+ cString chanName = channel->Name();
+ if( !strcmp(*chanName, "") )
+ strDevice << tr("not used");
+ else {
+ if( Config.MainMenuWidgetDVBDevicesDiscardUnknown )
+ continue;
+ strDevice << tr("Unknown") << " (" << *chanName << ")";
+ }
+ } else {
+ if( Config.MainMenuWidgetDVBDevicesDiscardNotUsed )
+ continue;
+ strDevice << tr("not used");
+ }
+ }
+ channelName = strDevice.str().c_str();
+ cString str = cString::sprintf("%d", i);
+ int left = marginItem;
+ if( numDevices <= 9 ) {
+ contentWidget.AddText(*str, false, cRect(left, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml);
+
+ left += fontSml->Width("XX");
+ } else {
+ contentWidget.AddText(*str, false, cRect(left, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, fontSml->Width("XX"), fontSmlHeight, taRight);
+
+ left += fontSml->Width("XXX");
+ }
+ str = *(device->DeviceType());
+ contentWidget.AddText(*str, false, cRect(left, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, fontSml->Width("XXXXXXX"), fontSmlHeight, taLeft);
+
+ left += fontSml->Width("XXXXXXXX");
+ str = *channelName;
+ contentWidget.AddText(*str, false, cRect(left, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml);
+
+ ContentTop += fontSmlHeight;
+ }
+
+ delete[] recDevices;
+
+ return contentWidget.ContentHeight(false);
+}
+
+int cFlatDisplayMenu::DrawMainMenuWidgetActiveTimers(int wLeft, int wWidth, int ContentTop) {
+ if( ContentTop + fontHeight + 6 + fontSmlHeight > menuPixmap->ViewPort().Height() )
+ return -1;
+
+ cImage *img = imgLoader.LoadIcon("widgets/active_timers", fontHeight, fontHeight - marginItem*2);
+ if( img ) {
+ contentWidget.AddImage(img, cRect(marginItem, ContentTop + marginItem, fontHeight, fontHeight));
+ }
+ contentWidget.AddText(tr("Active Timer"), false, cRect(marginItem*2 + fontHeight, ContentTop, 0, 0), Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font);
+ ContentTop += fontHeight;
+ contentWidget.AddRect(cRect(0, ContentTop, wWidth, 3), Theme.Color(clrMenuEventTitleLine));
+ ContentTop += 6;
+
+ // look for timers
+ time_t t;
+ time(&t);
+ int index = 0, numRec = 0;
+ for(cTimer *ti = Timers.First(); ti && index < Config.MainMenuWidgetActiveTimerMaxCount; ti = Timers.Next(ti), index++) {
+ if( ti->Matches(t) && ti->HasFlags(tfActive) ) {
+ numRec++;
+ }
+ }
+ if( numRec == 0 && Config.MainMenuWidgetActiveTimerHideEmpty )
+ return 0;
+ else if( numRec == 0 ) {
+ contentWidget.AddText(tr("no active timer"), false, cRect(marginItem, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ } else {
+ index = 0;
+ for(cTimer *ti = Timers.First(); ti && index < Config.MainMenuWidgetActiveTimerMaxCount; ti = Timers.Next(ti), index++) {
+ if( ti->Matches(t) && ti->HasFlags(tfActive) ) {
+ if( ContentTop + marginItem > menuPixmap->ViewPort().Height() )
+ continue;
+
+ const cChannel *Channel = ti->Channel();
+ //const cEvent *Event = Timer->Event();
+ std::stringstream strTimer;
+ strTimer << index+1 << ": ";
+ if( Channel )
+ strTimer << Channel->Name() << " - ";
+ else
+ strTimer << tr("Unknown") << " - ";
+ strTimer << ti->File();
+
+ contentWidget.AddText(strTimer.str().c_str(), false, cRect(marginItem, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+
+ ContentTop += fontSmlHeight;
+ }
+ }
+ }
+
+ return contentWidget.ContentHeight(false);
+}
+
+int cFlatDisplayMenu::DrawMainMenuWidgetLastRecordings(int wLeft, int wWidth, int ContentTop) {
+ if( ContentTop + fontHeight + 6 + fontSmlHeight > menuPixmap->ViewPort().Height() )
+ return -1;
+
+ cImage *img = imgLoader.LoadIcon("widgets/last_recordings", fontHeight, fontHeight - marginItem*2);
+ if( img ) {
+ contentWidget.AddImage(img, cRect(marginItem, ContentTop + marginItem, fontHeight, fontHeight));
+ }
+ contentWidget.AddText(tr("Last Recordings"), false, cRect(marginItem*2 + fontHeight, ContentTop, 0, 0), Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font);
+ ContentTop += fontHeight;
+ contentWidget.AddRect(cRect(0, ContentTop, wWidth, 3), Theme.Color(clrMenuEventTitleLine));
+ ContentTop += 6;
+
+ std::vector<std::pair<time_t, std::string> > Recs;
+ for(cRecording *rec = Recordings.First(); rec; rec = Recordings.Next(rec)) {
+ time_t RecStart = rec->Start();
+
+ int Minutes = (rec->LengthInSeconds() + 30) / 60;
+ cString Length = cString::sprintf("%02d:%02d", Minutes / 60, Minutes % 60);
+ cString DateTime = cString::sprintf("%s %s %s", *ShortDateString(rec->Start()), *TimeString(rec->Start()), *Length);
+
+ std::string strRec = *(cString::sprintf("%s - %s", *DateTime, rec->Name()));
+ Recs.push_back(std::make_pair(RecStart, strRec));
+ }
+ // Sort by RecStart
+ std::sort(Recs.begin(), Recs.end(), pairCompareTimeStringDesc);
+ int index = 0;
+ while( !Recs.empty() && index < Config.MainMenuWidgetLastRecMaxCount ) {
+ if( ContentTop + marginItem > menuPixmap->ViewPort().Height() )
+ continue;
+
+ std::pair<time_t, std::string> pairRec = Recs.back();
+ Recs.pop_back();
+ std::string Rec = pairRec.second;
+
+ std::stringstream strRec;
+ strRec << Rec;
+
+ contentWidget.AddText(strRec.str().c_str(), false, cRect(marginItem, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ ContentTop += fontSmlHeight;
+ index++;
+ }
+ return contentWidget.ContentHeight(false);
+}
+
+int cFlatDisplayMenu::DrawMainMenuWidgetTimerConflicts(int wLeft, int wWidth, int ContentTop) {
+ if( ContentTop + fontHeight + 6 + fontSmlHeight > menuPixmap->ViewPort().Height() )
+ return -1;
+
+ cImage *img = imgLoader.LoadIcon("widgets/timer_conflicts", fontHeight, fontHeight - marginItem*2);
+ if( img ) {
+ contentWidget.AddImage(img, cRect(marginItem, ContentTop + marginItem, fontHeight, fontHeight));
+ }
+ contentWidget.AddText(tr("Timer Conflicts"), false, cRect(marginItem*2 + fontHeight, ContentTop, 0, 0), Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font);
+ ContentTop += fontHeight;
+ contentWidget.AddRect(cRect(0, ContentTop, wWidth, 3), Theme.Color(clrMenuEventTitleLine));
+ ContentTop += 6;
+
+ int numConflicts = 0;
+ cPlugin *p = cPluginManager::GetPlugin("epgsearch");
+ if (p) {
+ Epgsearch_lastconflictinfo_v1_0 *serviceData = new Epgsearch_lastconflictinfo_v1_0;
+ if (serviceData) {
+ serviceData->nextConflict = 0;
+ serviceData->relevantConflicts = 0;
+ serviceData->totalConflicts = 0;
+ p->Service("Epgsearch-lastconflictinfo-v1.0", serviceData);
+ if (serviceData->relevantConflicts > 0) {
+ numConflicts = serviceData->relevantConflicts;
+ }
+ delete serviceData;
+ }
+ }
+ if( numConflicts == 0 && Config.MainMenuWidgetTimerConflictsHideEmpty ) {
+ return 0;
+ } else if( numConflicts == 0 ) {
+ contentWidget.AddText(tr("no timer conflicts"), false, cRect(marginItem, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ } else {
+ cString str = cString::sprintf("%s: %d", tr("timer conflicts"), numConflicts);
+ contentWidget.AddText(*str, false, cRect(marginItem, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ }
+
+ return contentWidget.ContentHeight(false);
+}
+
+int cFlatDisplayMenu::DrawMainMenuWidgetSystemInformation(int wLeft, int wWidth, int ContentTop) {
+ if( ContentTop + fontHeight + 6 + fontSmlHeight > menuPixmap->ViewPort().Height() )
+ return -1;
+
+ cImage *img = imgLoader.LoadIcon("widgets/system_information", fontHeight, fontHeight - marginItem*2);
+ if( img ) {
+ contentWidget.AddImage(img, cRect(marginItem, ContentTop + marginItem, fontHeight, fontHeight));
+ }
+ contentWidget.AddText(tr("System Information"), false, cRect(marginItem*2 + fontHeight, ContentTop, 0, 0), Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font);
+ ContentTop += fontHeight;
+ contentWidget.AddRect(cRect(0, ContentTop, wWidth, 3), Theme.Color(clrMenuEventTitleLine));
+ ContentTop += 6;
+
+ cString execFile = cString::sprintf("\"%s/system_information/system_information\"", WIDGETFOLDER);
+ int r = system(*execFile);
+ r += 0; // prevent Warning for unused variable
+
+ cString configsPath = cString::sprintf("%s/system_information/", WIDGETOUTPUTPATH);
+
+ std::vector<std::string> files;
+
+ cReadDir d(configsPath);
+ struct dirent *e;
+ while ((e = d.Next()) != NULL) {
+ std::string fname = e->d_name;
+ std::size_t found = fname.find("_");
+ if( found != std::string::npos ) {
+ std::string num = fname.substr(0, found);
+ if( atoi( num.c_str() ) > 0 ) {
+ files.push_back(e->d_name);
+ }
+ }
+ }
+ int Column = 1;
+ int ContentLeft = marginItem;
+ std::sort(files.begin(), files.end(), stringCompare);
+ if( files.size() == 0 ) {
+ cString str = cString::sprintf("%s - %s", tr("no information available please check the script"), *execFile);
+ contentWidget.AddText(*str, false, cRect(marginItem, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ } else {
+ for(unsigned i = 0; i < files.size(); i++) {
+ // check for height
+ if( ContentTop + marginItem > menuPixmap->ViewPort().Height() )
+ break;
+ std::string fname = files[i];
+ std::size_t found = fname.find("_");
+ if( found != std::string::npos ) {
+ std::string num = fname.substr(0, found);
+ if( atoi( num.c_str() ) > 0 ) {
+ std::string item = fname.substr(found + 1, fname.length() - found);
+ cString itemFilename = cString::sprintf("%s/system_information/%s", WIDGETOUTPUTPATH, fname.c_str() );
+ std::ifstream file(*itemFilename, std::ifstream::in);
+ if( file.is_open() ) {
+ std::string item_content;
+ std::getline(file, item_content);
+
+ if( !strcmp(item.c_str(), "sys_version") ) {
+ if( Column == 2 ) {
+ Column = 1;
+ ContentTop += fontSmlHeight;
+ ContentLeft = marginItem;
+ }
+ cString str = cString::sprintf("%s: %s", tr("System Version"), item_content.c_str());
+ contentWidget.AddText(*str, false, cRect(marginItem, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ ContentTop += fontSmlHeight;
+ } else if( ! item.compare("kernel_version") ) {
+ if( Column == 2 ) {
+ Column = 1;
+ ContentTop += fontSmlHeight;
+ ContentLeft = marginItem;
+ }
+ cString str = cString::sprintf("%s: %s", tr("Kernel Version"), item_content.c_str());
+ contentWidget.AddText(*str, false, cRect(marginItem, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ ContentTop += fontSmlHeight;
+ } else if( ! item.compare("uptime") ) {
+ cString str = cString::sprintf("%s: %s", tr("Uptime"), item_content.c_str());
+ contentWidget.AddText(*str, false, cRect(ContentLeft, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ if( Column == 1 ) {
+ Column = 2;
+ ContentLeft = wWidth / 2;
+ } else {
+ Column = 1;
+ ContentLeft = marginItem;
+ ContentTop += fontSmlHeight;
+ }
+ } else if( ! item.compare("load") ) {
+ cString str = cString::sprintf("%s: %s", tr("Load"), item_content.c_str());
+ contentWidget.AddText(*str, false, cRect(ContentLeft, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ if( Column == 1 ) {
+ Column = 2;
+ ContentLeft = wWidth / 2;
+ } else {
+ Column = 1;
+ ContentLeft = marginItem;
+ ContentTop += fontSmlHeight;
+ }
+ } else if( ! item.compare("processes") ) {
+ cString str = cString::sprintf("%s: %s", tr("Processes"), item_content.c_str());
+ contentWidget.AddText(*str, false, cRect(ContentLeft, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ if( Column == 1 ) {
+ Column = 2;
+ ContentLeft = wWidth / 2;
+ } else {
+ Column = 1;
+ ContentLeft = marginItem;
+ ContentTop += fontSmlHeight;
+ }
+ } else if( ! item.compare("mem_usage") ) {
+ cString str = cString::sprintf("%s: %s", tr("Memory Usage"), item_content.c_str());
+ contentWidget.AddText(*str, false, cRect(ContentLeft, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ if( Column == 1 ) {
+ Column = 2;
+ ContentLeft = wWidth / 2;
+ } else {
+ Column = 1;
+ ContentLeft = marginItem;
+ ContentTop += fontSmlHeight;
+ }
+ } else if( ! item.compare("swap_usage") ) {
+ cString str = cString::sprintf("%s: %s", tr("Swap Usage"), item_content.c_str());
+ contentWidget.AddText(*str, false, cRect(ContentLeft, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ if( Column == 1 ) {
+ Column = 2;
+ ContentLeft = wWidth / 2;
+ } else {
+ Column = 1;
+ ContentLeft = marginItem;
+ ContentTop += fontSmlHeight;
+ }
+ } else if( ! item.compare("root_usage") ) {
+ cString str = cString::sprintf("%s: %s", tr("Root Usage"), item_content.c_str());
+ contentWidget.AddText(*str, false, cRect(ContentLeft, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ if( Column == 1 ) {
+ Column = 2;
+ ContentLeft = wWidth / 2;
+ } else {
+ Column = 1;
+ ContentLeft = marginItem;
+ ContentTop += fontSmlHeight;
+ }
+ } else if( ! item.compare("video_usage") ) {
+ cString str = cString::sprintf("%s: %s", tr("Video Usage"), item_content.c_str());
+ contentWidget.AddText(*str, false, cRect(ContentLeft, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ if( Column == 1 ) {
+ Column = 2;
+ ContentLeft = wWidth / 2;
+ } else {
+ Column = 1;
+ ContentLeft = marginItem;
+ ContentTop += fontSmlHeight;
+ }
+ } else if( ! item.compare("vdr_cpu_usage") ) {
+ cString str = cString::sprintf("%s: %s", tr("VDR CPU Usage"), item_content.c_str());
+ contentWidget.AddText(*str, false, cRect(ContentLeft, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ if( Column == 1 ) {
+ Column = 2;
+ ContentLeft = wWidth / 2;
+ } else {
+ Column = 1;
+ ContentLeft = marginItem;
+ ContentTop += fontSmlHeight;
+ }
+ } else if( ! item.compare("vdr_mem_usage") ) {
+ cString str = cString::sprintf("%s: %s", tr("VDR MEM Usage"), item_content.c_str());
+ contentWidget.AddText(*str, false, cRect(ContentLeft, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ if( Column == 1 ) {
+ Column = 2;
+ ContentLeft = wWidth / 2;
+ } else {
+ Column = 1;
+ ContentLeft = marginItem;
+ ContentTop += fontSmlHeight;
+ }
+ } else if( ! item.compare("cpu") ) {
+ cString str = cString::sprintf("%s: %s", tr("Temp CPU"), item_content.c_str());
+ contentWidget.AddText(*str, false, cRect(ContentLeft, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ if( Column == 1 ) {
+ Column = 2;
+ ContentLeft = wWidth / 2;
+ } else {
+ Column = 1;
+ ContentLeft = marginItem;
+ ContentTop += fontSmlHeight;
+ }
+ } else if( ! item.compare("gpu") ) {
+ cString str = cString::sprintf("%s: %s", tr("Temp GPU"), item_content.c_str());
+ contentWidget.AddText(*str, false, cRect(ContentLeft, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ if( Column == 1 ) {
+ Column = 2;
+ ContentLeft = wWidth / 2;
+ } else {
+ Column = 1;
+ ContentLeft = marginItem;
+ ContentTop += fontSmlHeight;
+ }
+ } else if( ! item.compare("pccase") ) {
+ cString str = cString::sprintf("%s: %s", tr("Temp PC-Case"), item_content.c_str());
+ contentWidget.AddText(*str, false, cRect(ContentLeft, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ if( Column == 1 ) {
+ Column = 2;
+ ContentLeft = wWidth / 2;
+ } else {
+ Column = 1;
+ ContentLeft = marginItem;
+ ContentTop += fontSmlHeight;
+ }
+ } else if( ! item.compare("motherboard") ) {
+ cString str = cString::sprintf("%s: %s", tr("Temp MB"), item_content.c_str());
+ contentWidget.AddText(*str, false, cRect(ContentLeft, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ if( Column == 1 ) {
+ Column = 2;
+ ContentLeft = wWidth / 2;
+ } else {
+ Column = 1;
+ ContentLeft = marginItem;
+ ContentTop += fontSmlHeight;
+ }
+ } else if( ! item.compare("updates") ) {
+ cString str = cString::sprintf("%s: %s", tr("Updates"), item_content.c_str());
+ contentWidget.AddText(*str, false, cRect(ContentLeft, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ if( Column == 1 ) {
+ Column = 2;
+ ContentLeft = wWidth / 2;
+ } else {
+ Column = 1;
+ ContentLeft = marginItem;
+ ContentTop += fontSmlHeight;
+ }
+ } else if( ! item.compare("security_updates") ) {
+ cString str = cString::sprintf("%s: %s", tr("Security Updates"), item_content.c_str());
+ contentWidget.AddText(*str, false, cRect(ContentLeft, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ if( Column == 1 ) {
+ Column = 2;
+ ContentLeft = wWidth / 2;
+ } else {
+ Column = 1;
+ ContentLeft = marginItem;
+ ContentTop += fontSmlHeight;
+ }
+ }
+ file.close();
+ }
+ }
+ }
+ }
+ }
+
+ return contentWidget.ContentHeight(false);
+}
+
+int cFlatDisplayMenu::DrawMainMenuWidgetSystemUpdates(int wLeft, int wWidth, int ContentTop) {
+ if( ContentTop + fontHeight + 6 + fontSmlHeight > menuPixmap->ViewPort().Height() )
+ return -1;
+
+ cImage *img = imgLoader.LoadIcon("widgets/system_updates", fontHeight, fontHeight - marginItem*2);
+ if( img ) {
+ contentWidget.AddImage(img, cRect(marginItem, ContentTop + marginItem, fontHeight, fontHeight));
+ }
+ contentWidget.AddText(tr("System Updates"), false, cRect(marginItem*2 + fontHeight, ContentTop, 0, 0), Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font);
+ ContentTop += fontHeight;
+ contentWidget.AddRect(cRect(0, ContentTop, wWidth, 3), Theme.Color(clrMenuEventTitleLine));
+ ContentTop += 6;
+
+ int updates = 0, securityUpdates = 0;
+ cString itemFilename = cString::sprintf("%s/system_updatestatus/updates", WIDGETOUTPUTPATH );
+ std::ifstream file(*itemFilename, std::ifstream::in);
+ if( file.is_open() ) {
+ std::string cont;
+ std::getline(file, cont);
+ updates = atoi(cont.c_str());
+ file.close();
+ } else {
+ updates = -1;
+ }
+
+ itemFilename = cString::sprintf("%s/system_updatestatus/security_updates", WIDGETOUTPUTPATH );
+ std::ifstream file2(*itemFilename, std::ifstream::in);
+ if( file2.is_open() ) {
+ std::string cont;
+ std::getline(file2, cont);
+ securityUpdates = atoi(cont.c_str());
+ file2.close();
+ } else {
+ securityUpdates = -1;
+ }
+
+ if(updates == -1 || securityUpdates == -1) {
+ contentWidget.AddText(tr("Updatestatus not available please check the widget"), false, cRect(marginItem, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ } else if( updates == 0 && securityUpdates == 0 && Config.MainMenuWidgetSystemUpdatesHideIfZero ) {
+ return 0;
+ } else {
+ cString str = cString::sprintf("%s: %d", tr("Updates"), updates);
+ contentWidget.AddText(*str, false, cRect(marginItem, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ str = cString::sprintf("%s: %d", tr("Security Updates"), securityUpdates);
+ contentWidget.AddText(*str, false, cRect(wWidth/2 + marginItem, ContentTop, wWidth/2 - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ }
+
+ return contentWidget.ContentHeight(false);
+}
+
+int cFlatDisplayMenu::DrawMainMenuWidgetTemperaturs(int wLeft, int wWidth, int ContentTop) {
+ if( ContentTop + fontHeight + 6 + fontSmlHeight > menuPixmap->ViewPort().Height() )
+ return -1;
+
+ cImage *img = imgLoader.LoadIcon("widgets/temperatures", fontHeight, fontHeight - marginItem*2);
+ if( img ) {
+ contentWidget.AddImage(img, cRect(marginItem, ContentTop + marginItem, fontHeight, fontHeight));
+ }
+ contentWidget.AddText(tr("Temperatures"), false, cRect(marginItem*2 + fontHeight, ContentTop, 0, 0), Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font);
+ ContentTop += fontHeight;
+ contentWidget.AddRect(cRect(0, ContentTop, wWidth, 3), Theme.Color(clrMenuEventTitleLine));
+ ContentTop += 6;
+
+ cString execFile = cString::sprintf("cd \"%s/temperatures\"; \"%s/temperatures/temperatures\"", WIDGETFOLDER, WIDGETFOLDER);
+ int r = system(*execFile);
+ r += 0; // prevent Warning for unused variable
+
+ int countTemps = 0;
+
+ std::string tempCPU, tempCase, tempMB, tempGPU;
+ cString itemFilename = cString::sprintf("%s/temperatures/cpu", WIDGETOUTPUTPATH );
+ std::ifstream file(*itemFilename, std::ifstream::in);
+ if( file.is_open() ) {
+ std::getline(file, tempCPU);
+ file.close();
+ countTemps++;
+ } else {
+ tempCPU = "-1";
+ }
+
+ itemFilename = cString::sprintf("%s/temperatures/pccase", WIDGETOUTPUTPATH );
+ std::ifstream file2(*itemFilename, std::ifstream::in);
+ if( file2.is_open() ) {
+ std::string cont;
+ std::getline(file2, tempCase);
+ file2.close();
+ countTemps++;
+ } else {
+ tempCase = "-1";
+ }
+
+ itemFilename = cString::sprintf("%s/temperatures/motherboard", WIDGETOUTPUTPATH );
+ std::ifstream file3(*itemFilename, std::ifstream::in);
+ if( file3.is_open() ) {
+ std::string cont;
+ std::getline(file3, tempMB);
+ file3.close();
+ countTemps++;
+ } else {
+ tempMB = "-1";
+ }
+ itemFilename = cString::sprintf("%s/temperatures/gpu", WIDGETOUTPUTPATH );
+ std::ifstream file4(*itemFilename, std::ifstream::in);
+ if( file4.is_open() ) {
+ std::string cont;
+ std::getline(file4, tempGPU);
+ file4.close();
+ countTemps++;
+ } else {
+ tempGPU = "-1";
+ }
+
+ if( !strcmp(tempCPU.c_str(), "-1") && !strcmp(tempCase.c_str(), "-1") && !strcmp(tempMB.c_str(), "-1") && !strcmp(tempGPU.c_str(), "-1") ) {
+ contentWidget.AddText(tr("Temperatures not available please check the widget"), false, cRect(marginItem, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ } else {
+ int Left = marginItem;
+ int addLeft = wWidth / (countTemps);
+ if( strcmp(tempCPU.c_str(), "-1") ) {
+ cString str = cString::sprintf("%s: %s", tr("CPU"), tempCPU.c_str());
+ contentWidget.AddText(*str, false, cRect(Left, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ Left += addLeft;
+ }
+ if( strcmp(tempCase.c_str(), "-1") ) {
+ cString str = cString::sprintf("%s: %s", tr("PC-Case"), tempCase.c_str());
+ contentWidget.AddText(*str, false, cRect(Left, ContentTop, wWidth/3 - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ Left += addLeft;
+ }
+ if( strcmp(tempMB.c_str(), "-1") ) {
+ cString str = cString::sprintf("%s: %s", tr("MB"), tempMB.c_str());
+ contentWidget.AddText(*str, false, cRect(Left, ContentTop, wWidth/3*2 - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ Left += addLeft;
+ }
+ if( strcmp(tempGPU.c_str(), "-1") ) {
+ cString str = cString::sprintf("%s: %s", tr("GPU"), tempGPU.c_str());
+ contentWidget.AddText(*str, false, cRect(Left, ContentTop, wWidth/3*2 - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ }
+ }
+
+ return contentWidget.ContentHeight(false);
+}
+
+int cFlatDisplayMenu::DrawMainMenuWidgetCommand(int wLeft, int wWidth, int ContentTop) {
+ if( ContentTop + fontHeight + 6 + fontSmlHeight > menuPixmap->ViewPort().Height() )
+ return -1;
+
+ cString execFile = cString::sprintf("\"%s/command_output/command\"", WIDGETFOLDER);
+ int r = system(*execFile);
+ r += 0; // prevent Warning for unused variable
+
+ std::string Title;
+ cString itemFilename = cString::sprintf("%s/command_output/title", WIDGETOUTPUTPATH );
+ std::ifstream file(*itemFilename, std::ifstream::in);
+ if( file.is_open() ) {
+ std::getline(file, Title);
+ file.close();
+ } else {
+ Title = tr("no title available");
+ }
+
+ cImage *img = imgLoader.LoadIcon("widgets/command_output", fontHeight, fontHeight - marginItem*2);
+ if( img ) {
+ contentWidget.AddImage(img, cRect(marginItem, ContentTop + marginItem, fontHeight, fontHeight));
+ }
+ contentWidget.AddText(Title.c_str(), false, cRect(marginItem*2 + fontHeight, ContentTop, 0, 0), Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font);
+ ContentTop += fontHeight;
+ contentWidget.AddRect(cRect(0, ContentTop, wWidth, 3), Theme.Color(clrMenuEventTitleLine));
+ ContentTop += 6;
+
+ std::string Output;
+ itemFilename = cString::sprintf("%s/command_output/output", WIDGETOUTPUTPATH );
+ std::ifstream file2(*itemFilename, std::ifstream::in);
+ if( file2.is_open() ) {
+ for (; std::getline(file2, Output); ) {
+ if( ContentTop + marginItem > menuPixmap->ViewPort().Height() )
+ break;
+ contentWidget.AddText(Output.c_str(), false, cRect(marginItem, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ ContentTop += fontSmlHeight;
+ }
+ file2.close();
+ } else {
+ contentWidget.AddText(tr("no output available"), false, cRect(marginItem, ContentTop, wWidth - marginItem*2, fontSmlHeight),
+ Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontSml, wWidth - marginItem*2);
+ }
+
+ return contentWidget.ContentHeight(false);
+}
+
+int cFlatDisplayMenu::DrawMainMenuWidgetWeather(int wLeft, int wWidth, int ContentTop) {
+ if( ContentTop + fontHeight + 6 + fontSmlHeight > menuPixmap->ViewPort().Height() )
+ return -1;
+
+ cFont *fontTempSml = cFont::CreateFont(Setup.FontOsd, Setup.FontOsdSize/2.0 );
+
+ std::string Location;
+ cString locationFilename = cString::sprintf("%s/weather/weather.location", WIDGETOUTPUTPATH );
+ std::ifstream file(*locationFilename, std::ifstream::in);
+ if( file.is_open() ) {
+ std::getline(file, Location);
+ file.close();
+ } else {
+ Location = tr("Unknown");
+ }
+
+ std::string tempToday = "";
+ cString filename;
+ filename = cString::sprintf("%s/weather/weather.0.temp", WIDGETOUTPUTPATH );
+ file.open(*filename, std::ifstream::in);
+ if( file.is_open() ) {
+ std::getline(file, tempToday);
+ file.close();
+ }
+
+ cString Title = cString::sprintf("%s - %s %s", tr("Weather"), Location.c_str(), tempToday.c_str() );
+
+ cImage *img = imgLoader.LoadIcon("widgets/weather", fontHeight, fontHeight - marginItem*2);
+ if( img ) {
+ contentWidget.AddImage(img, cRect(marginItem, ContentTop + marginItem, fontHeight, fontHeight));
+ }
+ contentWidget.AddText(*Title, false, cRect(marginItem*2 + fontHeight, ContentTop, 0, 0), Theme.Color(clrMenuEventFontTitle), Theme.Color(clrMenuEventBg), font);
+ ContentTop += fontHeight;
+ contentWidget.AddRect(cRect(0, ContentTop, wWidth, 3), Theme.Color(clrMenuEventTitleLine));
+ ContentTop += 6;
+
+ int left = marginItem;
+ for( int index = 0; index < Config.MainMenuWidgetWeatherDays; index++ ) {
+ std::string icon;
+ cString iconFilename = cString::sprintf("%s/weather/weather.%d.icon", WIDGETOUTPUTPATH, index );
+ std::ifstream file(*iconFilename, std::ifstream::in);
+ if( file.is_open() ) {
+ std::getline(file, icon);
+ file.close();
+ } else
+ continue;
+
+ std::string summary;
+ cString summaryFilename = cString::sprintf("%s/weather/weather.%d.summary", WIDGETOUTPUTPATH, index );
+ std::ifstream file2(*summaryFilename, std::ifstream::in);
+ if( file2.is_open() ) {
+ std::getline(file2, summary);
+ file2.close();
+ } else
+ continue;
+
+ std::string tempMax;
+ cString tempMaxFilename = cString::sprintf("%s/weather/weather.%d.tempMax", WIDGETOUTPUTPATH, index );
+ std::ifstream file3(*tempMaxFilename, std::ifstream::in);
+ if( file3.is_open() ) {
+ std::getline(file3, tempMax);
+ file3.close();
+ } else
+ continue;
+
+ std::string tempMin;
+ cString tempMinFilename = cString::sprintf("%s/weather/weather.%d.tempMin", WIDGETOUTPUTPATH, index );
+ std::ifstream file4(*tempMinFilename, std::ifstream::in);
+ if( file4.is_open() ) {
+ std::getline(file4, tempMin);
+ file4.close();
+ } else
+ continue;
+
+ std::string prec;
+ double p = 0.0;
+ cString precString = "0%";
+ cString precFilename = cString::sprintf("%s/weather/weather.%d.precipitation", WIDGETOUTPUTPATH, index );
+ std::ifstream file5(*precFilename, std::ifstream::in);
+ if( file5.is_open() ) {
+ std::getline(file5, prec);
+ std::replace( prec.begin(), prec.end(), '.', ',');
+ file5.close();
+ p = atof(prec.c_str()) * 100.0;
+ p = roundUp(p, 10);
+ precString = cString::sprintf("%.0f%%", p);
+ } else
+ continue;
+
+ std::string precType;
+ cString precTypeFilename = cString::sprintf("%s/weather/weather.%d.precipitationType", WIDGETOUTPUTPATH, index );
+ std::ifstream file6(*precTypeFilename, std::ifstream::in);
+ if( file6.is_open() ) {
+ std::getline(file6, precType);
+ file6.close();
+ } else
+ continue;
+
+ cString weekDayName = "";
+ time_t t;
+ time(&t);
+ struct tm* tm = localtime(&t);
+ tm->tm_mday += index;
+ time_t t2 = mktime(tm);
+ weekDayName = WeekDayName(t2);
+
+ if( Config.MainMenuWidgetWeatherType == 0 ) { // short
+ if( left + fontHeight*2 + fontTempSml->Width("XXXXX") + fontTempSml->Width("XXXX") + marginItem*6 > wWidth )
+ break;
+ if( index > 0 ) {
+ contentWidget.AddText("|", false, cRect(left, ContentTop, 0, 0), Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), font);
+ left += font->Width("|") + marginItem*2;
+ }
+
+ cString weatherIcon = cString::sprintf("widgets/%s", icon.c_str());
+ cImage *img = imgLoader.LoadIcon(*weatherIcon, fontHeight, fontHeight - marginItem*2);
+ if( img ) {
+ contentWidget.AddImage(img, cRect(left, ContentTop + marginItem, fontHeight, fontHeight));
+ left += fontHeight + marginItem;
+ }
+ int wtemp = myMax(fontTempSml->Width(tempMax.c_str()), fontTempSml->Width(tempMin.c_str()) );
+ contentWidget.AddText(tempMax.c_str(), false, cRect(left, ContentTop, 0, 0), Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontTempSml, wtemp, fontTempSml->Height(), taRight);
+ contentWidget.AddText(tempMin.c_str(), false, cRect(left, ContentTop + fontTempSml->Height(), 0, 0), Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontTempSml, wtemp, fontTempSml->Height(), taRight);
+
+ left += wtemp + marginItem;
+
+ img = imgLoader.LoadIcon("widgets/umbrella", fontHeight, fontHeight - marginItem*2);
+ if( img ) {
+ contentWidget.AddImage(img, cRect(left, ContentTop + marginItem, fontHeight, fontHeight));
+ left += fontHeight - marginItem;
+ }
+ contentWidget.AddText(*precString, false, cRect(left, ContentTop + (fontHeight/2 - fontTempSml->Height()/2), 0, 0), Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontTempSml);
+ left += fontTempSml->Width(*precString) + marginItem*2;
+ } else { // long
+ if( ContentTop + marginItem > menuPixmap->ViewPort().Height() )
+ break;
+
+ left = marginItem;
+
+ cString dayname = cString::sprintf("%s ", *weekDayName);
+ contentWidget.AddText(*dayname, false, cRect(left, ContentTop, wWidth - marginItem*2, fontHeight), Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), font, wWidth - marginItem*2);
+ left += font->Width("XXXX") + marginItem;
+
+ cString weatherIcon = cString::sprintf("widgets/%s", icon.c_str());
+ cImage *img = imgLoader.LoadIcon(*weatherIcon, fontHeight, fontHeight - marginItem*2);
+ if( img ) {
+ contentWidget.AddImage(img, cRect(left, ContentTop + marginItem, fontHeight, fontHeight));
+ left += fontHeight + marginItem;
+ }
+ contentWidget.AddText(tempMax.c_str(), false, cRect(left, ContentTop, 0, 0), Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontTempSml, fontTempSml->Width("XXXXX"), fontTempSml->Height(), taRight);
+ contentWidget.AddText(tempMin.c_str(), false, cRect(left, ContentTop + fontTempSml->Height(), 0, 0), Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontTempSml, fontTempSml->Width("XXXXX"), fontTempSml->Height(), taRight);
+
+ left += fontTempSml->Width("XXXXXX") + marginItem;
+
+ img = imgLoader.LoadIcon("widgets/umbrella", fontHeight, fontHeight - marginItem*2);
+ if( img ) {
+ contentWidget.AddImage(img, cRect(left, ContentTop + marginItem, fontHeight, fontHeight));
+ left += fontHeight - marginItem;
+ }
+ contentWidget.AddText(*precString, false, cRect(left, ContentTop + (fontHeight/2 - fontTempSml->Height()/2), 0, 0), Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontTempSml, fontTempSml->Width("XXXX"), fontTempSml->Height(), taRight);
+ left += fontTempSml->Width("XXXXX") + marginItem;
+
+ contentWidget.AddText(summary.c_str(), false, cRect(left, ContentTop + (fontHeight/2 - fontTempSml->Height()/2), wWidth - left, fontHeight), Theme.Color(clrMenuEventFontInfo), Theme.Color(clrMenuEventBg), fontTempSml, wWidth - left);
+
+ ContentTop += fontHeight;
+ }
+
+ }
+ return contentWidget.ContentHeight(false);
+}
+
+void cFlatDisplayMenu::PreLoadImages(void) {
+ // menu icons
+ cString Path = cString::sprintf("%s%s/menuIcons", *Config.iconPath, Setup.OSDTheme);
+ cReadDir d(Path);
+ struct dirent *e;
+ while ((e = d.Next()) != NULL) {
+ cString FileName = cString::sprintf("menuIcons/%s", GetFilenameWithoutext(e->d_name));
+ imgLoader.LoadIcon(*FileName, fontHeight - marginItem*2, fontHeight - marginItem*2);
+ }
+
+ imgLoader.LoadIcon("menuIcons/blank", fontHeight - marginItem*2, fontHeight - marginItem*2);
+
+ int imageHeight = fontHeight;
+ int imageBGHeight = imageHeight;
+ int imageBGWidth = imageHeight*1.34;
+ cImage *imgBG = imgLoader.LoadIcon("logo_background", imageBGWidth, imageBGHeight);
+ if( imgBG ) {
+ imageBGHeight = imgBG->Height();
+ imageBGWidth = imgBG->Width();
+ }
+
+ imgLoader.LoadIcon("radio", imageBGWidth - 10, imageBGHeight - 10);
+ imgLoader.LoadIcon("changroup", imageBGWidth - 10, imageBGHeight - 10);
+ imgLoader.LoadIcon("tv", imageBGWidth - 10, imageBGHeight - 10);
+ imgLoader.LoadIcon("timerInactive", imageHeight, imageHeight);
+ imgLoader.LoadIcon("timerRecording", imageHeight, imageHeight);
+ imgLoader.LoadIcon("timerActive", imageHeight, imageHeight);
+
+ int index = 0;
+ cImage *img = NULL;
+ for(cChannel *Channel = Channels.First(); Channel && index < LOGO_PRE_CACHE; Channel = Channels.Next(Channel))
+ {
+ img = imgLoader.LoadLogo(Channel->Name(), imageBGWidth - 4, imageBGHeight - 4);
+ if( img )
+ index++;
+ }
+
+ imgLoader.LoadIcon("radio", 999, topBarHeight - marginItem*2);
+ imgLoader.LoadIcon("changroup", 999, topBarHeight - marginItem*2);
+ imgLoader.LoadIcon("tv", 999, topBarHeight - marginItem*2);
+
+ imgLoader.LoadIcon("timer_full", imageHeight, imageHeight);
+ imgLoader.LoadIcon("timer_full_cur", imageHeight, imageHeight);
+ imgLoader.LoadIcon("timer_partial", imageHeight, imageHeight);
+ imgLoader.LoadIcon("vps", imageHeight, imageHeight);
+ imgLoader.LoadIcon("vps_cur", imageHeight, imageHeight);
+
+ imgLoader.LoadIcon("recording_new", fontHeight, fontHeight);
+ imgLoader.LoadIcon("recording_new", fontSmlHeight, fontSmlHeight);
+ imgLoader.LoadIcon("recording_cutted", fontHeight, fontHeight);
+ imgLoader.LoadIcon("recording_new_cur", fontHeight, fontHeight);
+ imgLoader.LoadIcon("recording_new_cur", fontSmlHeight, fontSmlHeight);
+ imgLoader.LoadIcon("recording_cutted_cur", fontHeight, fontHeight);
+ imgLoader.LoadIcon("recording", fontHeight, fontHeight);
+ imgLoader.LoadIcon("folder", fontHeight, fontHeight);
+}
diff --git a/displaymenu.h b/displaymenu.h
new file mode 100644
index 0000000..ef0257c
--- /dev/null
+++ b/displaymenu.h
@@ -0,0 +1,134 @@
+#pragma once
+
+#include "baserender.h"
+#include "complexcontent.h"
+#include <vdr/menu.h>
+#include <vdr/tools.h>
+#include <list>
+#include <ctype.h>
+#include <iostream>
+#include <sstream>
+#include <iomanip>
+using namespace std;
+
+class cFlatDisplayMenu : public cFlatBaseRender, public cSkinDisplayMenu {
+ private:
+ cPixmap *menuPixmap;
+ cPixmap *menuIconsPixmap;
+ cPixmap *menuIconsBGPixmap;
+
+ int menuTop, menuWidth;
+ int menuItemWidth;
+ int menuItemLastHeight;
+ bool MenuFullOsdIsDrawn;
+
+ eMenuCategory menuCategory;
+ int VideoDiskUsageState;
+
+ int LastTimerCount, LastTimerActiveCount;
+ cString LastTitle;
+
+ int chLeft, chTop, chWidth, chHeight;
+ cPixmap *contentHeadPixmap;
+ cPixmap *contentHeadIconsPixmap;
+
+ int cLeft, cTop, cWidth, cHeight;
+
+ cPixmap *scrollbarPixmap;
+ int scrollBarTop, scrollBarWidth, scrollBarHeight;
+
+ int itemHeight, itemChannelHeight, itemTimerHeight, itemEventHeight, itemRecordingHeight;
+
+ std::list<sDecorBorder> ItemsBorder;
+ sDecorBorder EventBorder, RecordingBorder, TextBorder;
+
+ bool isScrolling;
+ bool ShowEvent, ShowRecording, ShowText;
+
+ cComplexContent ComplexContent;
+
+ // Content for Widgets
+ cComplexContent contentWidget;
+
+ // TextScroller
+ cTextScrollers menuItemScroller;
+
+ cString ItemEventLastChannelName;
+
+ std::string RecFolder, LastRecFolder;
+ int LastItemRecordingLevel;
+
+ // Icons
+ cImage *iconTimerFull;
+ cImage *iconTimerPartial;
+ cImage *iconArrowTurn;
+ cImage *iconRec;
+ cImage *iconVps;
+ cImage *iconNew;
+ // Icons
+
+ void ItemBorderInsertUnique(sDecorBorder ib);
+ void ItemBorderDrawAllWithScrollbar(void);
+ void ItemBorderDrawAllWithoutScrollbar(void);
+ void ItemBorderClear(void);
+
+ static std::string items[16];
+ std::string MainMenuText(std::string Text);
+ cString GetIconName(std::string element);
+
+ const char * GetRecordingName(const cRecording *Recording, int Level, bool isFolder);
+ string xml_substring(string source, const char* str_start, const char* str_end);
+
+ const char* GetGenreIcon(uchar genre);
+
+ time_t GetLastRecTimeFromFolder(const cRecording *Recording, int Level);
+
+ void DrawScrollbar(int Total, int Offset, int Shown, int Top, int Height, bool CanScrollUp, bool CanScrollDown, bool isContent = false);
+ int ItemsHeight(void);
+ bool CheckProgressBar(const char *text);
+ void DrawProgressBarFromText(cRect rec, cRect recBg, const char *bar, tColor ColorFg, tColor ColorBarFg, tColor ColorBg);
+
+ static cBitmap bmCNew, bmCRec, bmCArrowTurn, bmCHD, bmCVPS;
+ void DrawItemExtraEvent(const cEvent *Event, cString EmptyText);
+ void DrawItemExtraRecording(const cRecording *Recording, cString EmptyText);
+ void DrawMainMenuWidgets(void);
+ int DrawMainMenuWidgetDVBDevices(int wLeft, int wWidth, int ContentTop);
+ int DrawMainMenuWidgetActiveTimers(int wLeft, int wWidth, int ContentTop);
+ int DrawMainMenuWidgetLastRecordings(int wLeft, int wWidth, int ContentTop);
+ int DrawMainMenuWidgetTimerConflicts(int wLeft, int wWidth, int ContentTop);
+ int DrawMainMenuWidgetSystemInformation(int wLeft, int wWidth, int ContentTop);
+ int DrawMainMenuWidgetSystemUpdates(int wLeft, int wWidth, int ContentTop);
+ int DrawMainMenuWidgetTemperaturs(int wLeft, int wWidth, int ContentTop);
+ int DrawMainMenuWidgetCommand(int wLeft, int wWidth, int ContentTop);
+ int DrawMainMenuWidgetWeather(int wLeft, int wWidth, int ContentTop);
+
+ public:
+ cFlatDisplayMenu(void);
+ virtual ~cFlatDisplayMenu();
+ virtual void Scroll(bool Up, bool Page);
+ virtual int MaxItems(void);
+ virtual void Clear(void);
+
+ virtual void SetMenuCategory(eMenuCategory MenuCategory);
+ //virtual void SetTabs(int Tab1, int Tab2 = 0, int Tab3 = 0, int Tab4 = 0, int Tab5 = 0);
+
+ virtual void SetTitle(const char *Title);
+ virtual void SetButtons(const char *Red, const char *Green = NULL, const char *Yellow = NULL, const char *Blue = NULL);
+ virtual void SetMessage(eMessageType Type, const char *Text);
+ virtual void SetItem(const char *Text, int Index, bool Current, bool Selectable);
+
+ virtual bool SetItemEvent(const cEvent *Event, int Index, bool Current, bool Selectable, const cChannel *Channel, bool WithDate, eTimerMatch TimerMatch);
+ virtual bool SetItemTimer(const cTimer *Timer, int Index, bool Current, bool Selectable);
+ virtual bool SetItemChannel(const cChannel *Channel, int Index, bool Current, bool Selectable, bool WithProvider);
+ virtual bool SetItemRecording(const cRecording *Recording, int Index, bool Current, bool Selectable, int Level, int Total, int New);
+
+ virtual void SetScrollbar(int Total, int Offset);
+ virtual void SetEvent(const cEvent *Event);
+ virtual void SetRecording(const cRecording *Recording);
+ virtual void SetText(const char *Text, bool FixedFont);
+ virtual int GetTextAreaWidth(void) const;
+ virtual const cFont *GetTextAreaFont(bool FixedFont) const;
+ virtual void Flush(void);
+
+ void PreLoadImages(void);
+};
diff --git a/displaymessage.c b/displaymessage.c
new file mode 100644
index 0000000..ec23f23
--- /dev/null
+++ b/displaymessage.c
@@ -0,0 +1,22 @@
+#include "displaymessage.h"
+
+cFlatDisplayMessage::cFlatDisplayMessage(void) {
+ CreateFullOsd();
+ TopBarCreate();
+ MessageCreate();
+}
+
+cFlatDisplayMessage::~cFlatDisplayMessage() {
+}
+
+void cFlatDisplayMessage::SetMessage(eMessageType Type, const char *Text) {
+ if (Text)
+ MessageSet(Type, Text);
+ else
+ MessageClear();
+}
+
+void cFlatDisplayMessage::Flush(void) {
+ TopBarUpdate();
+ osd->Flush();
+}
diff --git a/displaymessage.h b/displaymessage.h
new file mode 100644
index 0000000..2b1145a
--- /dev/null
+++ b/displaymessage.h
@@ -0,0 +1,12 @@
+#pragma once
+
+#include "baserender.h"
+
+class cFlatDisplayMessage : public cFlatBaseRender, public cSkinDisplayMessage {
+ private:
+ public:
+ cFlatDisplayMessage(void);
+ virtual ~cFlatDisplayMessage();
+ virtual void SetMessage(eMessageType Type, const char *Text);
+ virtual void Flush(void);
+};
diff --git a/displayreplay.c b/displayreplay.c
new file mode 100644
index 0000000..479afe6
--- /dev/null
+++ b/displayreplay.c
@@ -0,0 +1,625 @@
+#include "displayreplay.h"
+#include "flat.h"
+
+cFlatDisplayReplay::cFlatDisplayReplay(bool ModeOnly) {
+ labelHeight = fontHeight + fontSmlHeight;
+ current = "";
+ total = "";
+
+ modeOnly = ModeOnly;
+ dimmActive = false;
+
+ ProgressShown = false;
+ CreateFullOsd();
+ TopBarCreate();
+ MessageCreate();
+
+ screenWidth = lastScreenWidth = -1;
+
+ int TVSLeft = 20 + Config.decorBorderChannelEPGSize;
+ int TVSTop = topBarHeight + Config.decorBorderTopBarSize*2 + 20 + Config.decorBorderChannelEPGSize;
+ int TVSWidth = osdWidth - 40 - Config.decorBorderChannelEPGSize*2;
+ int TVSHeight = osdHeight - topBarHeight - labelHeight - 40 - Config.decorBorderChannelEPGSize*2;
+
+ chanEpgImagesPixmap = osd->CreatePixmap(2, cRect(TVSLeft, TVSTop, TVSWidth, TVSHeight));
+ chanEpgImagesPixmap->Fill( clrTransparent );
+
+ labelPixmap = osd->CreatePixmap(1, cRect(Config.decorBorderReplaySize, osdHeight - labelHeight - Config.decorBorderReplaySize,
+ osdWidth - Config.decorBorderReplaySize*2, labelHeight));
+ iconsPixmap = osd->CreatePixmap(2, cRect(Config.decorBorderReplaySize, osdHeight - labelHeight - Config.decorBorderReplaySize,
+ osdWidth - Config.decorBorderReplaySize*2, labelHeight));
+
+ ProgressBarCreate(Config.decorBorderReplaySize, osdHeight - labelHeight - Config.decorProgressReplaySize - Config.decorBorderReplaySize - marginItem,
+ osdWidth - Config.decorBorderReplaySize*2, Config.decorProgressReplaySize, marginItem, 0,
+ Config.decorProgressReplayFg, Config.decorProgressReplayBarFg, Config.decorProgressReplayBg, Config.decorProgressReplayType);
+
+ labelJump = osd->CreatePixmap(1, cRect(Config.decorBorderReplaySize,
+ osdHeight - labelHeight - Config.decorProgressReplaySize*2 - marginItem*3 - fontHeight - Config.decorBorderReplaySize*2,
+ osdWidth - Config.decorBorderReplaySize*2, fontHeight));
+
+ dimmPixmap = osd->CreatePixmap(MAXPIXMAPLAYERS-1, cRect(0, 0, osdWidth, osdHeight));
+
+ labelPixmap->Fill(Theme.Color(clrReplayBg));
+ labelJump->Fill(clrTransparent);
+ iconsPixmap->Fill(clrTransparent);
+ dimmPixmap->Fill(clrTransparent);
+
+ fontSecs = cFont::CreateFont(Setup.FontOsd, Setup.FontOsdSize * Config.TimeSecsScale * 100.0);
+
+ if( Config.PlaybackWeatherShow )
+ DrawWidgetWeather();
+}
+
+cFlatDisplayReplay::~cFlatDisplayReplay() {
+ if( fontSecs != NULL )
+ delete fontSecs;
+
+ if( labelPixmap )
+ osd->DestroyPixmap(labelPixmap);
+ if( labelJump )
+ osd->DestroyPixmap(labelJump);
+ if( iconsPixmap )
+ osd->DestroyPixmap(iconsPixmap);
+ if( chanEpgImagesPixmap )
+ osd->DestroyPixmap(chanEpgImagesPixmap);
+ if( dimmPixmap )
+ osd->DestroyPixmap(dimmPixmap);
+}
+
+void cFlatDisplayReplay::SetRecording(const cRecording *Recording) {
+ if( modeOnly )
+ return;
+ const cRecordingInfo *recInfo = Recording->Info();
+ recording = Recording;
+
+ SetTitle( recInfo->Title() );
+ cString info = "";
+ if (recInfo->ShortText())
+ info = cString::sprintf("%s - %s %s", recInfo->ShortText(), *ShortDateString(Recording->Start()), *TimeString(Recording->Start()));
+ else
+ info = cString::sprintf("%s %s", *ShortDateString(Recording->Start()), *TimeString(Recording->Start()));
+
+ labelPixmap->DrawText(cPoint(marginItem, fontHeight), info, Theme.Color(clrReplayFont), Theme.Color(clrReplayBg), fontSml, osdWidth - Config.decorBorderReplaySize*2);
+}
+
+void cFlatDisplayReplay::SetTitle(const char *Title) {
+ TopBarSetTitle(Title);
+ TopBarSetMenuIcon("extraIcons/Playing");
+}
+
+void cFlatDisplayReplay::Action(void) {
+ time_t curTime;
+ while( Running() ) {
+ time(&curTime);
+ if( (curTime - dimmStartTime) > Config.RecordingDimmOnPauseDelay ) {
+ dimmActive = true;
+ for(int alpha = 0; (alpha <= Config.RecordingDimmOnPauseOpaque) && Running(); alpha+=2) {
+ dimmPixmap->Fill(ArgbToColor(alpha, 0, 0, 0));
+ Flush();
+ }
+ Cancel(-1);
+ return;
+ }
+ cCondWait::SleepMs(100);
+ }
+}
+
+void cFlatDisplayReplay::SetMode(bool Play, bool Forward, int Speed) {
+ int left = 0;
+ if( Play == false && Config.RecordingDimmOnPause ) {
+ time(&dimmStartTime);
+ Start();
+ } else if( Play == true && Config.RecordingDimmOnPause ) {
+ Cancel(-1);
+ while( Active() )
+ cCondWait::SleepMs(10);
+ if( dimmActive ) {
+ dimmPixmap->Fill(clrTransparent);
+ Flush();
+ }
+ }
+ if( Setup.ShowReplayMode ) {
+ left = osdWidth - Config.decorBorderReplaySize*2 - (fontHeight * 4 + marginItem * 3);
+ left /= 2;
+
+ if( modeOnly )
+ labelPixmap->Fill(clrTransparent);
+
+ iconsPixmap->Fill(clrTransparent);
+ labelPixmap->DrawRectangle(cRect( left - font->Width("33") - marginItem, 0, fontHeight*4 + marginItem*6 + font->Width("33")*2, fontHeight), Theme.Color(clrReplayBg) );
+
+ cString rewind, pause, play, forward;
+ cString speed;
+
+ if( Speed == -1 ) {
+ if( Play ) {
+ rewind = "rewind";
+ pause = "pause";
+ play = "play_sel";
+ forward = "forward";
+ } else {
+ rewind = "rewind";
+ pause = "pause_sel";
+ play = "play";
+ forward = "forward";
+ }
+ } else {
+ speed = cString::sprintf("%d", Speed);
+ if( Forward ) {
+ rewind = "rewind";
+ pause = "pause";
+ play = "play";
+ forward = "forward_sel";
+ labelPixmap->DrawText(cPoint(left + fontHeight*4 + marginItem*4, 0), speed, Theme.Color(clrReplayFontSpeed), Theme.Color(clrReplayBg), font);
+ } else {
+ rewind = "rewind_sel";
+ pause = "pause";
+ play = "play";
+ forward = "forward";
+ labelPixmap->DrawText(cPoint(left - font->Width(speed) - marginItem, 0), speed, Theme.Color(clrReplayFontSpeed), Theme.Color(clrReplayBg), font);
+ }
+ }
+ cImage *img = imgLoader.LoadIcon(*rewind, fontHeight, fontHeight);
+ if( img )
+ iconsPixmap->DrawImage( cPoint(left, 0), *img );
+
+ img = imgLoader.LoadIcon(*pause, fontHeight, fontHeight);
+ if( img )
+ iconsPixmap->DrawImage( cPoint(left + fontHeight + marginItem, 0), *img );
+
+ img = imgLoader.LoadIcon(*play, fontHeight, fontHeight);
+ if( img )
+ iconsPixmap->DrawImage( cPoint(left + fontHeight*2 + marginItem*2, 0), *img );
+
+ img = imgLoader.LoadIcon(*forward, fontHeight, fontHeight);
+ if( img )
+ iconsPixmap->DrawImage( cPoint(left + fontHeight*3 + marginItem*3, 0), *img );
+
+ }
+
+ if( ProgressShown ) {
+ DecorBorderDraw(Config.decorBorderReplaySize, osdHeight - labelHeight - Config.decorProgressReplaySize - Config.decorBorderReplaySize - marginItem,
+ osdWidth - Config.decorBorderReplaySize*2, labelHeight + Config.decorProgressReplaySize + marginItem,
+ Config.decorBorderReplaySize, Config.decorBorderReplayType, Config.decorBorderReplayFg, Config.decorBorderReplayBg);
+ } else {
+ if( modeOnly ) {
+ DecorBorderDraw(left - font->Width("33") - marginItem + Config.decorBorderReplaySize, osdHeight - labelHeight - Config.decorBorderReplaySize,
+ fontHeight*4 + marginItem*6 + font->Width("33")*2, fontHeight,
+ Config.decorBorderReplaySize, Config.decorBorderReplayType, Config.decorBorderReplayFg, Config.decorBorderReplayBg);
+ } else {
+ DecorBorderDraw(Config.decorBorderReplaySize, osdHeight - labelHeight - Config.decorBorderReplaySize,
+ osdWidth - Config.decorBorderReplaySize*2, labelHeight,
+ Config.decorBorderReplaySize, Config.decorBorderReplayType, Config.decorBorderReplayFg, Config.decorBorderReplayBg);
+ }
+ }
+
+ ResolutionAspectDraw();
+}
+
+void cFlatDisplayReplay::SetProgress(int Current, int Total) {
+ if( modeOnly )
+ return;
+ ProgressShown = true;
+ ProgressBarDrawMarks(Current, Total, marks, Theme.Color(clrReplayMarkFg), Theme.Color(clrReplayMarkCurrentFg));
+}
+
+void cFlatDisplayReplay::SetCurrent(const char *Current) {
+ if( modeOnly )
+ return;
+ current = Current;
+ UpdateInfo();
+}
+
+void cFlatDisplayReplay::SetTotal(const char *Total) {
+ if( modeOnly )
+ return;
+ total = Total;
+ UpdateInfo();
+}
+
+void cFlatDisplayReplay::UpdateInfo(void) {
+ if( modeOnly )
+ return;
+ cString cutted;
+ bool iscutted = false;
+
+ int fontAscender = GetFontAscender(Setup.FontOsd, Setup.FontOsdSize);
+ int fontSecsAscender = GetFontAscender(Setup.FontOsd, Setup.FontOsdSize * Config.TimeSecsScale * 100.0);
+ int topSecs = fontAscender - fontSecsAscender;
+
+ if( Config.TimeSecsScale == 1.0 )
+ labelPixmap->DrawText(cPoint(marginItem, 0), current, Theme.Color(clrReplayFont), Theme.Color(clrReplayBg), font, font->Width(current), fontHeight);
+ else {
+ std::string cur = *current;
+ size_t found = cur.find_last_of(':');
+ if( found != std::string::npos ) {
+ std::string hm = cur.substr(0, found);
+ std::string secs = cur.substr(found, cur.length() - found);
+
+ labelPixmap->DrawText(cPoint(marginItem, 0), hm.c_str(), Theme.Color(clrReplayFont), Theme.Color(clrReplayBg), font, font->Width(hm.c_str()), fontHeight);
+ labelPixmap->DrawText(cPoint(marginItem + font->Width(hm.c_str()), topSecs), secs.c_str(), Theme.Color(clrReplayFont), Theme.Color(clrReplayBg), fontSecs, fontSecs->Width(secs.c_str()), fontSecs->Height());
+ } else {
+ labelPixmap->DrawText(cPoint(marginItem, 0), current, Theme.Color(clrReplayFont), Theme.Color(clrReplayBg), font, font->Width(current), fontHeight);
+ }
+ }
+
+ if( recording ) {
+ cMarks marks;
+ bool hasMarks = marks.Load(recording->FileName(), recording->FramesPerSecond(), recording->IsPesRecording()) && marks.Count();
+ cIndexFile *index = new cIndexFile(recording->FileName(), false, recording->IsPesRecording());
+ int cuttedLength = 0;
+ long cutinframe = 0;
+ unsigned long long recsizecutted = 0;
+ unsigned long long cutinoffset = 0;
+ unsigned long long filesize[100000];
+ filesize[0] = 0;
+
+ int i = 0;
+ int imax = 999;
+ struct stat filebuf;
+ cString filename;
+ int rc = 0;
+
+ do {
+ if (recording->IsPesRecording())
+ filename = cString::sprintf("%s/%03d.vdr", recording->FileName(), ++i);
+ else {
+ filename = cString::sprintf("%s/%05d.ts", recording->FileName(), ++i);
+ imax = 99999;
+ }
+ rc=stat(filename, &filebuf);
+ if (rc == 0)
+ filesize[i] = filesize[i-1] + filebuf.st_size;
+ else {
+ if (ENOENT != errno) {
+ esyslog ("skinflatplus: error determining file size of \"%s\" %d (%s)", (const char *)filename, errno, strerror(errno));
+ }
+ }
+ } while( i <= imax && !rc );
+
+ if (hasMarks && index) {
+ uint16_t FileNumber;
+ off_t FileOffset;
+
+ bool cutin = true;
+ cMark *mark = marks.First();
+ while (mark) {
+ long position = mark->Position();
+ index->Get(position, &FileNumber, &FileOffset);
+ if (cutin) {
+ cutinframe = position;
+ cutin = false;
+ cutinoffset = filesize[FileNumber-1] + FileOffset;
+ } else {
+ cuttedLength += position - cutinframe;
+ cutin = true;
+ recsizecutted += filesize[FileNumber-1] + FileOffset - cutinoffset;
+ }
+ cMark *nextmark = marks.Next(mark);
+ mark = nextmark;
+ }
+ if( !cutin ) {
+ cuttedLength += index->Last() - cutinframe;
+ index->Get(index->Last() - 1, &FileNumber, &FileOffset);
+ recsizecutted += filesize[FileNumber-1] + FileOffset - cutinoffset;
+ }
+ }
+ if (index) {
+ if (hasMarks) {
+ cutted = IndexToHMSF(cuttedLength, false, recording->FramesPerSecond());
+ iscutted = true;
+ }
+ }
+ delete index;
+
+ std::string mediaPath;
+ int mediaWidth = 0;
+ int mediaHeight = 0;
+ // TVScraper
+ // first try scraper2vdr
+ static cPlugin *pScraper = cPluginManager::GetPlugin("scraper2vdr");
+ if( !pScraper ) // if it doesn't exit, try tvscraper
+ pScraper = cPluginManager::GetPlugin("tvscraper");
+ if( Config.TVScraperReplayInfoShowPoster && pScraper ) {
+ ScraperGetEventType call;
+ call.recording = recording;
+ int seriesId = 0;
+ int episodeId = 0;
+ int movieId = 0;
+
+ if (pScraper->Service("GetEventType", &call)) {
+ seriesId = call.seriesId;
+ episodeId = call.episodeId;
+ movieId = call.movieId;
+ }
+ if( seriesId > 0 ) {
+ cSeries series;
+ series.seriesId = seriesId;
+ series.episodeId = episodeId;
+ if (pScraper->Service("GetSeries", &series)) {
+ if( series.banners.size() > 0 )
+ mediaPath = series.banners[0].path;
+ mediaWidth = series.banners[0].width * Config.TVScraperReplayInfoPosterSize*100;
+ mediaHeight = series.banners[0].height * Config.TVScraperReplayInfoPosterSize*100;
+ }
+ } else if (movieId > 0) {
+ cMovie movie;
+ movie.movieId = movieId;
+ if (pScraper->Service("GetMovie", &movie)) {
+ mediaPath = movie.poster.path;
+ mediaWidth = movie.poster.width * 0.5 * Config.TVScraperReplayInfoPosterSize*100;
+ mediaHeight = movie.poster.height * 0.5 * Config.TVScraperReplayInfoPosterSize*100;
+ }
+ }
+ }
+
+ chanEpgImagesPixmap->Fill(clrTransparent);
+ DecorBorderClearByFrom(BorderTVSPoster);
+ if( mediaPath.length() > 0 ) {
+ cImage *img = imgLoader.LoadFile(mediaPath.c_str(), mediaWidth, mediaHeight);
+ if( img ) {
+ chanEpgImagesPixmap->DrawImage(cPoint(0, 0), *img);
+
+ DecorBorderDraw(20 + Config.decorBorderChannelEPGSize, topBarHeight + Config.decorBorderTopBarSize*2 + 20 + Config.decorBorderChannelEPGSize, img->Width(), img->Height(),
+ Config.decorBorderChannelEPGSize, Config.decorBorderChannelEPGType, Config.decorBorderChannelEPGFg, Config.decorBorderChannelEPGBg, BorderTVSPoster);
+ }
+ }
+
+ }
+
+ if( iscutted ) {
+ cImage *imgRecCut = imgLoader.LoadIcon("recording_cutted_extra", fontHeight, fontHeight);
+ int imgWidth = 0;
+ if( imgRecCut )
+ imgWidth = imgRecCut->Width();
+
+ int right = osdWidth - Config.decorBorderReplaySize*2 - font->Width(total) - marginItem - imgWidth - font->Width(" ") - font->Width(cutted);
+ if( Config.TimeSecsScale < 1.0 ) {
+ std::string tot = *total;
+ size_t found = tot.find_last_of(':');
+ if( found != std::string::npos ) {
+ std::string hm = tot.substr(0, found);
+ std::string secs = tot.substr(found, tot.length() - found);
+
+ std::string cutt = *cutted;
+ size_t found2 = cutt.find_last_of(':');
+ if( found2 != std::string::npos ) {
+ std::string hm2 = cutt.substr(0, found);
+ std::string secs2 = cutt.substr(found, cutt.length() - found);
+
+ right = osdWidth - Config.decorBorderReplaySize*2 - font->Width(hm.c_str()) - fontSecs->Width(secs.c_str()) - marginItem - imgWidth - font->Width(" ") - font->Width(hm2.c_str()) - fontSecs->Width(secs2.c_str());
+ } else
+ right = osdWidth - Config.decorBorderReplaySize*2 - font->Width(hm.c_str()) - fontSecs->Width(secs.c_str()) - marginItem - imgWidth - font->Width(" ") - font->Width(cutted);
+
+ labelPixmap->DrawText(cPoint(right - marginItem, 0), hm.c_str(), Theme.Color(clrReplayFont), Theme.Color(clrReplayBg), font, font->Width(hm.c_str()), fontHeight);
+ labelPixmap->DrawText(cPoint(right - marginItem + font->Width(hm.c_str()), topSecs), secs.c_str(), Theme.Color(clrReplayFont), Theme.Color(clrReplayBg), fontSecs, fontSecs->Width(secs.c_str()), fontSecs->Height());
+ right += font->Width(hm.c_str()) + fontSecs->Width(secs.c_str());
+ right += font->Width(" ");
+ } else {
+ labelPixmap->DrawText(cPoint(right - marginItem, 0), total, Theme.Color(clrReplayFont), Theme.Color(clrReplayBg), font, font->Width(total), fontHeight);
+ right += font->Width(total);
+ right += font->Width(" ");
+ }
+ } else {
+ labelPixmap->DrawText(cPoint(right - marginItem, 0), total, Theme.Color(clrReplayFont), Theme.Color(clrReplayBg), font, font->Width(total), fontHeight);
+ right += font->Width(total);
+ right += font->Width(" ");
+ }
+
+ if( imgRecCut ) {
+ iconsPixmap->DrawImage( cPoint(right, 0), *imgRecCut );
+ right += imgRecCut->Width() + marginItem*2;
+ }
+
+ if( Config.TimeSecsScale < 1.0 ) {
+ std::string cutt = *cutted;
+ size_t found = cutt.find_last_of(':');
+ if( found != std::string::npos ) {
+ std::string hm = cutt.substr(0, found);
+ std::string secs = cutt.substr(found, cutt.length() - found);
+
+ labelPixmap->DrawText(cPoint(right - marginItem, 0), hm.c_str(), Theme.Color(clrMenuItemExtraTextFont), Theme.Color(clrReplayBg), font, font->Width(hm.c_str()), fontHeight);
+ labelPixmap->DrawText(cPoint(right - marginItem + font->Width(hm.c_str()), topSecs), secs.c_str(), Theme.Color(clrMenuItemExtraTextFont), Theme.Color(clrReplayBg), fontSecs, fontSecs->Width(secs.c_str()), fontSecs->Height());
+ } else {
+ labelPixmap->DrawText(cPoint(right - marginItem, 0), cutted, Theme.Color(clrMenuItemExtraTextFont), Theme.Color(clrReplayBg), font, font->Width(cutted), fontHeight);
+ }
+ } else {
+ labelPixmap->DrawText(cPoint(right - marginItem, 0), cutted, Theme.Color(clrMenuItemExtraTextFont), Theme.Color(clrReplayBg), font, font->Width(cutted), fontHeight);
+ }
+ } else {
+ int right = osdWidth - Config.decorBorderReplaySize*2 - font->Width(total);
+ if( Config.TimeSecsScale < 1.0 ) {
+ std::string tot = *total;
+ size_t found = tot.find_last_of(':');
+ if( found != std::string::npos ) {
+ std::string hm = tot.substr(0, found);
+ std::string secs = tot.substr(found, tot.length() - found);
+
+ right = osdWidth - Config.decorBorderReplaySize*2 - font->Width(hm.c_str()) - fontSecs->Width(secs.c_str());
+ labelPixmap->DrawText(cPoint(right - marginItem, 0), hm.c_str(), Theme.Color(clrReplayFont), Theme.Color(clrReplayBg), font, font->Width(hm.c_str()), fontHeight);
+ labelPixmap->DrawText(cPoint(right - marginItem + font->Width(hm.c_str()), topSecs), secs.c_str(), Theme.Color(clrReplayFont), Theme.Color(clrReplayBg), fontSecs, fontSecs->Width(secs.c_str()), fontSecs->Height());
+ } else {
+ labelPixmap->DrawText(cPoint(right - marginItem, 0), total, Theme.Color(clrReplayFont), Theme.Color(clrReplayBg), font, font->Width(total), fontHeight);
+ }
+ } else {
+ labelPixmap->DrawText(cPoint(right - marginItem, 0), total, Theme.Color(clrReplayFont), Theme.Color(clrReplayBg), font, font->Width(total), fontHeight);
+ }
+ }
+}
+
+void cFlatDisplayReplay::SetJump(const char *Jump) {
+ DecorBorderClearByFrom(BorderRecordJump);
+
+ if( !Jump )
+ {
+ labelJump->Fill(clrTransparent);
+ return;
+ }
+ int left = osdWidth - Config.decorBorderReplaySize*2 - font->Width(Jump);
+ left /= 2;
+
+ labelJump->DrawText(cPoint(left, 0), Jump, Theme.Color(clrReplayFont), Theme.Color(clrReplayBg), font, font->Width(Jump), fontHeight, taCenter);
+
+ DecorBorderDraw(left + Config.decorBorderReplaySize,
+ osdHeight - labelHeight - Config.decorProgressReplaySize*2 - marginItem*3 - fontHeight - Config.decorBorderReplaySize*2,
+ font->Width(Jump), fontHeight,
+ Config.decorBorderReplaySize, Config.decorBorderReplayType, Config.decorBorderReplayFg, Config.decorBorderReplayBg, BorderRecordJump);
+}
+
+void cFlatDisplayReplay::ResolutionAspectDraw(void) {
+ if( modeOnly )
+ return;
+ int left = osdWidth - Config.decorBorderReplaySize*2;
+ int imageTop = 0;
+ cImage *img = NULL;
+
+ if( screenWidth > 0 ) {
+ if( Config.RecordingResolutionAspectShow ) { // Show Aspect
+ cString asp = "unknown_asp"; // ???
+ if(Config.RecordingSimpleAspectFormat && screenWidth > 720) {
+ asp = "hd"; // No aspect for HD
+ } else {
+ if( screenAspect == 4.0/3.0 )
+ asp = "43";
+ else if( screenAspect == 16.0/9.0 )
+ asp = "169";
+ else if( screenAspect == 20.0/11.0 )
+ asp = "169w";
+ else if( screenAspect == 2.21 )
+ asp = "221";
+ }
+ img = imgLoader.LoadIcon(*asp, 999, fontSmlHeight);
+ if( img ) {
+ imageTop = fontHeight + (fontSmlHeight - img->Height())/2;
+ left -= img->Width();
+ iconsPixmap->DrawImage(cPoint(left, imageTop), *img);
+ left -= marginItem*2;
+ }
+ }
+
+ if( Config.RecordingResolutionAspectShow ) { // Show Resolution
+ cString res = "";
+ switch (screenWidth) {
+ case 1920: // 1920x1080 (HD1080 Full HDTV)
+ res = "1920x1080";
+ break;
+ case 1440: // 1440x1080 (HD1080 DV)
+ res = "1440x1080";
+ break;
+ case 1280: // 1280x720 (HD720)
+ res = "1280x720";
+ break;
+ case 960: // 960x720 (HD720 DV)
+ res = "960x720";
+ break;
+ case 704: // 704x576 (PAL)
+ res = "704x576";
+ break;
+ case 720: // 720x576 (PAL)
+ res = "720x576";
+ break;
+ case 544: // 544x576 (PAL)
+ res = "544x576";
+ break;
+ case 528: // 528x576 (PAL)
+ res = "528x576";
+ break;
+ case 480: // 480x576 (PAL SVCD)
+ res = "480x576";
+ break;
+ case 352: // 352x576 (PAL CVD)
+ res = "352x576";
+ break;
+ default:
+ res = "unknown_res"; // TODO: Log resolution
+ dsyslog("unkown resolution Width: %d Height: %d Aspect: %.2f\n", screenWidth, screenHeight, screenAspect);
+ break;
+ }
+
+ //printf("Width: %d Height: %d Aspect: %.2f\n", screenWidth, screenHeight, screenAspect);
+
+ img = imgLoader.LoadIcon(*res, 999, fontSmlHeight);
+ if (img) {
+ imageTop = fontHeight + (fontSmlHeight - img->Height())/2;
+ left -= img->Width();
+ iconsPixmap->DrawImage(cPoint(left, imageTop), *img);
+ left -= marginItem*2;
+ }
+ }
+ if( Config.RecordingFormatShow && !Config.RecordingSimpleAspectFormat) {
+ cString iconName(""); // Show Format
+ switch (screenWidth) {
+ case 1920:
+ case 1440:
+ case 1280:
+ iconName = "hd";
+ break;
+ case 720:
+ iconName = "sd";
+ break;
+ default:
+ iconName = "sd";
+ break;
+ }
+
+ img = imgLoader.LoadIcon(*iconName, 999, fontSmlHeight);
+ if( img ) {
+ imageTop = fontHeight + (fontSmlHeight - img->Height())/2;
+ left -= img->Width();
+ iconsPixmap->DrawImage(cPoint(left, imageTop), *img);
+ left -= marginItem*2 ;
+ }
+ }
+ }
+}
+
+void cFlatDisplayReplay::SetMessage(eMessageType Type, const char *Text) {
+ if (Text)
+ MessageSet(Type, Text);
+ else
+ MessageClear();
+}
+
+void cFlatDisplayReplay::Flush(void) {
+ TopBarUpdate();
+
+ if( Config.RecordingResolutionAspectShow ) {
+ cDevice::PrimaryDevice()->GetVideoSize(screenWidth, screenHeight, screenAspect);
+ if (screenWidth != lastScreenWidth) {
+ lastScreenWidth = screenWidth;
+ ResolutionAspectDraw();
+ }
+ }
+
+ osd->Flush();
+}
+
+void cFlatDisplayReplay::PreLoadImages(void) {
+ imgLoader.LoadIcon("rewind", fontHeight, fontHeight);
+ imgLoader.LoadIcon("pause", fontHeight, fontHeight);
+ imgLoader.LoadIcon("play_sel", fontHeight, fontHeight);
+ imgLoader.LoadIcon("forward", fontHeight, fontHeight);
+ imgLoader.LoadIcon("pause_sel", fontHeight, fontHeight);
+ imgLoader.LoadIcon("forward_sel", fontHeight, fontHeight);
+ imgLoader.LoadIcon("rewind_sel", fontHeight, fontHeight);
+ imgLoader.LoadIcon("pause_sel", fontHeight, fontHeight);
+ imgLoader.LoadIcon("recording_cutted_extra", fontHeight, fontHeight);
+
+ imgLoader.LoadIcon("43", 999, fontSmlHeight);
+ imgLoader.LoadIcon("169", 999, fontSmlHeight);
+ imgLoader.LoadIcon("169w", 999, fontSmlHeight);
+ imgLoader.LoadIcon("221", 999, fontSmlHeight);
+ imgLoader.LoadIcon("1920x1080", 999, fontSmlHeight);
+ imgLoader.LoadIcon("1440x1080", 999, fontSmlHeight);
+ imgLoader.LoadIcon("1280x720", 999, fontSmlHeight);
+ imgLoader.LoadIcon("960x720", 999, fontSmlHeight);
+ imgLoader.LoadIcon("704x576", 999, fontSmlHeight);
+ imgLoader.LoadIcon("720x576", 999, fontSmlHeight);
+ imgLoader.LoadIcon("544x576", 999, fontSmlHeight);
+ imgLoader.LoadIcon("528x576", 999, fontSmlHeight);
+ imgLoader.LoadIcon("480x576", 999, fontSmlHeight);
+ imgLoader.LoadIcon("352x576", 999, fontSmlHeight);
+ imgLoader.LoadIcon("unknown_res", 999, fontSmlHeight);
+ imgLoader.LoadIcon("hd", 999, fontSmlHeight);
+ imgLoader.LoadIcon("sd", 999, fontSmlHeight);
+}
diff --git a/displayreplay.h b/displayreplay.h
new file mode 100644
index 0000000..1cdd1eb
--- /dev/null
+++ b/displayreplay.h
@@ -0,0 +1,48 @@
+#pragma once
+
+#include "baserender.h"
+#include "services/scraper2vdr.h"
+
+class cFlatDisplayReplay : public cFlatBaseRender, public cSkinDisplayReplay, public cThread {
+ private:
+ cString current, total;
+
+ int labelHeight;
+ cPixmap *labelPixmap;
+ cPixmap *labelJump;
+ cPixmap *iconsPixmap;
+ cPixmap *chanEpgImagesPixmap;
+ cPixmap *dimmPixmap;
+
+ cFont *fontSecs;
+ const cRecording *recording;
+
+ int screenWidth, lastScreenWidth;
+ int screenHeight;
+ double screenAspect;
+
+ // dimm on pause
+ bool dimmActive;
+ time_t dimmStartTime;
+
+ bool ProgressShown;
+ bool modeOnly;
+ void UpdateInfo(void);
+ void ResolutionAspectDraw(void);
+
+ virtual void Action(void);
+ public:
+ cFlatDisplayReplay(bool ModeOnly);
+ virtual ~cFlatDisplayReplay();
+ virtual void SetRecording(const cRecording *Recording);
+ virtual void SetTitle(const char *Title);
+ virtual void SetMode(bool Play, bool Forward, int Speed);
+ virtual void SetProgress(int Current, int Total);
+ virtual void SetCurrent(const char *Current);
+ virtual void SetTotal(const char *Total);
+ virtual void SetJump(const char *Jump);
+ virtual void SetMessage(eMessageType Type, const char *Text);
+ virtual void Flush(void);
+
+ void PreLoadImages(void);
+};
diff --git a/displaytracks.c b/displaytracks.c
new file mode 100644
index 0000000..655ef14
--- /dev/null
+++ b/displaytracks.c
@@ -0,0 +1,115 @@
+#include "displaytracks.h"
+#include "flat.h"
+
+cFlatDisplayTracks::cFlatDisplayTracks(const char *Title, int NumTracks, const char * const *Tracks) {
+
+ CreateFullOsd();
+ TopBarCreate();
+
+ img_ac3 = imgLoader.LoadIcon("tracks_ac3", 999, fontHeight);
+ img_stereo = imgLoader.LoadIcon("tracks_stereo", 999, fontHeight);
+
+ ac3Width = stereoWidth = 0;
+ if( img_ac3 )
+ ac3Width = img_ac3->Width();
+ if( img_stereo )
+ stereoWidth = img_stereo->Width();
+
+ int imgWidthMax = max(ac3Width, stereoWidth);
+ itemHeight = fontHeight + Config.MenuItemPadding + Config.decorBorderTrackSize*2;
+ currentIndex = -1;
+ maxItemWidth = font->Width(Title) + marginItem*2;
+ for (int i = 0; i < NumTracks; i++)
+ maxItemWidth = max(maxItemWidth, font->Width(Tracks[i]) + marginItem*2);
+
+ int headerWidth = font->Width(tr("Audio Tracks")) + font->Width(" ") + imgWidthMax;
+ maxItemWidth = max(maxItemWidth, headerWidth);
+
+ itemsHeight = (NumTracks+1) * itemHeight;
+ int left = osdWidth - maxItemWidth;
+ left /= 2;
+ TopBarSetTitle(Title);
+
+ tracksPixmap = osd->CreatePixmap(1, cRect(left, osdHeight - itemsHeight - marginItem, maxItemWidth, itemsHeight));
+ tracksPixmap->Fill(clrTransparent);
+
+ tracksLogoPixmap = osd->CreatePixmap(1, cRect(left, osdHeight - itemsHeight - marginItem, maxItemWidth, itemsHeight));
+ tracksLogoPixmap->Fill(clrTransparent);
+
+ SetItem(tr("Audio Tracks"), -1, false);
+
+ for (int i = 0; i < NumTracks; i++)
+ SetItem(Tracks[i], i, false);
+}
+
+cFlatDisplayTracks::~cFlatDisplayTracks() {
+ osd->DestroyPixmap(tracksPixmap);
+ osd->DestroyPixmap(tracksLogoPixmap);
+}
+
+void cFlatDisplayTracks::SetItem(const char *Text, int Index, bool Current) {
+ int y = (Index+1) * itemHeight;
+ tColor ColorFg, ColorBg;
+ if (Current) {
+ ColorFg = Theme.Color(clrTrackItemCurrentFont);
+ ColorBg = Theme.Color(clrTrackItemCurrentBg);
+ currentIndex = Index;
+ }
+ else {
+ if( Index >= 0 ) {
+ ColorFg = Theme.Color(clrTrackItemSelableFont);
+ ColorBg = Theme.Color(clrTrackItemSelableBg);
+ } else {
+ ColorFg = Theme.Color(clrTrackItemFont);
+ ColorBg = Theme.Color(clrTrackItemBg);
+ }
+ }
+
+ if( Index == -1 )
+ tracksPixmap->DrawText(cPoint(0, y), Text, ColorFg, ColorBg, font, maxItemWidth, itemHeight - Config.MenuItemPadding - Config.decorBorderTrackSize*2, taLeft);
+ else
+ tracksPixmap->DrawText(cPoint(0, y), Text, ColorFg, ColorBg, font, maxItemWidth, itemHeight - Config.MenuItemPadding - Config.decorBorderTrackSize*2, taCenter);
+
+ int left = osdWidth - maxItemWidth;
+ left /= 2;
+
+ int top = osdHeight - itemsHeight - marginItem + y;
+
+ if( Current )
+ DecorBorderDraw(left, top, maxItemWidth, fontHeight,
+ Config.decorBorderTrackSize, Config.decorBorderTrackType, Config.decorBorderTrackCurFg, Config.decorBorderTrackCurBg);
+ else if( Index >= 0 )
+ DecorBorderDraw(left, top, maxItemWidth, fontHeight,
+ Config.decorBorderTrackSize, Config.decorBorderTrackType, Config.decorBorderTrackSelFg, Config.decorBorderTrackSelBg);
+ else
+ DecorBorderDraw(left, top, maxItemWidth, fontHeight,
+ Config.decorBorderTrackSize, Config.decorBorderTrackType, Config.decorBorderTrackFg, Config.decorBorderTrackBg);
+
+}
+
+void cFlatDisplayTracks::SetTrack(int Index, const char * const *Tracks) {
+ if (currentIndex >= 0)
+ SetItem(Tracks[currentIndex], currentIndex, false);
+ SetItem(Tracks[Index], Index, true);
+}
+
+void cFlatDisplayTracks::SetAudioChannel(int AudioChannel) {
+ // from vdr 0=stereo, 1=left, 2=right, -1=don't display the audio channel indicator.
+ // from skinnopacity -1 ac3, else stero
+ tracksLogoPixmap->Fill(clrTransparent);
+ if( AudioChannel == -1 && img_ac3 ) {
+ int IconLeft = maxItemWidth - img_ac3->Width() - marginItem;
+ int IconTop = (fontHeight - img_ac3->Height()) / 2;
+ tracksLogoPixmap->DrawImage( cPoint(IconLeft, IconTop), *img_ac3 );
+ } else if( img_stereo ){
+ int IconLeft = maxItemWidth - img_stereo->Width() - marginItem;
+ int IconTop = (fontHeight - img_stereo->Height()) / 2;
+ tracksLogoPixmap->DrawImage( cPoint(IconLeft, IconTop), *img_stereo );
+ }
+ return;
+}
+
+void cFlatDisplayTracks::Flush(void) {
+ TopBarUpdate();
+ osd->Flush();
+}
diff --git a/displaytracks.h b/displaytracks.h
new file mode 100644
index 0000000..a194158
--- /dev/null
+++ b/displaytracks.h
@@ -0,0 +1,25 @@
+#pragma once
+
+#include "baserender.h"
+
+class cFlatDisplayTracks : public cFlatBaseRender, public cSkinDisplayTracks {
+ private:
+ cPixmap *tracksPixmap;
+ cPixmap *tracksLogoPixmap;
+
+ cImage *img_ac3;
+ cImage *img_stereo;
+ int ac3Width, stereoWidth;
+
+ int itemHeight, itemsHeight;
+ int maxItemWidth;
+ int currentIndex;
+
+ void SetItem(const char *Text, int Index, bool Current);
+ public:
+ cFlatDisplayTracks(const char *Title, int NumTracks, const char * const *Tracks);
+ virtual ~cFlatDisplayTracks();
+ virtual void SetTrack(int Index, const char * const *Tracks);
+ virtual void SetAudioChannel(int AudioChannel);
+ virtual void Flush(void);
+};
diff --git a/displayvolume.c b/displayvolume.c
new file mode 100644
index 0000000..1db4329
--- /dev/null
+++ b/displayvolume.c
@@ -0,0 +1,76 @@
+#include "displayvolume.h"
+#include "flat.h"
+
+cFlatDisplayVolume::cFlatDisplayVolume(void) {
+ muted = false;
+
+ labelHeight = fontHeight + marginItem*2;
+
+ CreateFullOsd();
+ TopBarCreate();
+ int width = osdWidth / 4 * 3;
+
+ int top = osdHeight - 50 - Config.decorProgressVolumeSize - labelHeight - marginItem - Config.decorBorderVolumeSize*2;
+ int left = osdWidth - width - Config.decorBorderVolumeSize;
+ left /= 2;
+
+ labelPixmap = osd->CreatePixmap(1, cRect(0, top, osdWidth, labelHeight));
+ muteLogoPixmap = osd->CreatePixmap(2, cRect(0, top, osdWidth, labelHeight));
+
+ ProgressBarCreate(left, osdHeight - 50 - Config.decorProgressVolumeSize, width, Config.decorProgressVolumeSize, marginItem, marginItem,
+ Config.decorProgressVolumeFg, Config.decorProgressVolumeBarFg, Config.decorProgressVolumeBg, Config.decorProgressVolumeType, true);
+}
+
+cFlatDisplayVolume::~cFlatDisplayVolume() {
+ osd->DestroyPixmap(labelPixmap);
+ osd->DestroyPixmap(muteLogoPixmap);
+}
+
+void cFlatDisplayVolume::SetVolume(int Current, int Total, bool Mute) {
+ labelPixmap->Fill(clrTransparent);
+ muteLogoPixmap->Fill(clrTransparent);
+
+ cString label = cString::sprintf("%s: %d", tr("Volume"), Current);
+ cString maxLabel = cString::sprintf("%s: %d", tr("Volume"), 555);
+ int maxlabelWidth = font->Width(maxLabel) + marginItem;
+ int left = osdWidth / 2 - maxlabelWidth / 2;
+
+ int DecorTop = osdHeight - 50 - Config.decorProgressVolumeSize - labelHeight - Config.decorBorderVolumeSize*2;
+
+ labelPixmap->DrawRectangle(cRect(left - marginItem, marginItem, marginItem, fontHeight), Theme.Color(clrVolumeBg));
+
+ DecorBorderClear(left - marginItem, DecorTop, maxlabelWidth + marginItem*4 + fontHeight, fontHeight, Config.decorBorderVolumeSize);
+ DecorBorderClear(left - marginItem, DecorTop, maxlabelWidth + marginItem, fontHeight, Config.decorBorderVolumeSize);
+
+ if (Mute) {
+ labelPixmap->DrawText(cPoint(left, marginItem), *label, Theme.Color(clrVolumeFont), Theme.Color(clrVolumeBg),
+ font, maxlabelWidth + marginItem + labelHeight, fontHeight, taLeft);
+ cImage *img = imgLoader.LoadIcon("mute", fontHeight, fontHeight);
+ if( img ) {
+ muteLogoPixmap->DrawImage( cPoint(left + maxlabelWidth + marginItem, marginItem), *img );
+ }
+ DecorBorderDraw(left - marginItem, DecorTop, maxlabelWidth + marginItem*4 + fontHeight, fontHeight,
+ Config.decorBorderVolumeSize, Config.decorBorderVolumeType, Config.decorBorderVolumeFg, Config.decorBorderVolumeBg);
+ } else {
+ labelPixmap->DrawText(cPoint(left, marginItem), *label, Theme.Color(clrVolumeFont), Theme.Color(clrVolumeBg),
+ font, maxlabelWidth, fontHeight, taLeft);
+ DecorBorderDraw(left - marginItem, DecorTop, maxlabelWidth + marginItem, fontHeight,
+ Config.decorBorderVolumeSize, Config.decorBorderVolumeType, Config.decorBorderVolumeFg, Config.decorBorderVolumeBg);
+ }
+
+ ProgressBarDraw(Current, Total);
+
+ int width = (osdWidth / 4 * 3);
+ left = osdWidth - width - Config.decorBorderVolumeSize;
+ left /= 2;
+ DecorBorderDraw(left - marginItem, osdHeight - 50 - Config.decorProgressVolumeSize - marginItem, width + marginItem*2, Config.decorProgressVolumeSize + marginItem*2, Config.decorBorderVolumeSize, Config.decorBorderVolumeType, Theme.Color(clrTopBarBg), Theme.Color(clrTopBarBg));
+}
+
+void cFlatDisplayVolume::Flush(void) {
+ TopBarUpdate();
+ osd->Flush();
+}
+
+void cFlatDisplayVolume::PreLoadImages(void) {
+ imgLoader.LoadIcon("mute", fontHeight, fontHeight);
+}
diff --git a/displayvolume.h b/displayvolume.h
new file mode 100644
index 0000000..5ccbefc
--- /dev/null
+++ b/displayvolume.h
@@ -0,0 +1,21 @@
+#pragma once
+
+#include "baserender.h"
+
+class cFlatDisplayVolume : public cFlatBaseRender, public cSkinDisplayVolume {
+ private:
+ bool muted;
+
+ cPixmap *labelPixmap;
+ cPixmap *muteLogoPixmap;
+
+ int labelHeight;
+ public:
+ cFlatDisplayVolume(void);
+ virtual ~cFlatDisplayVolume();
+ virtual void SetVolume(int Current, int Total, bool Mute);
+ //virtual void SetAudioChannel(int AudioChannel);
+ virtual void Flush(void);
+
+ void PreLoadImages(void);
+};
diff --git a/femonreceiver.c b/femonreceiver.c
new file mode 100644
index 0000000..dc1b7d2
--- /dev/null
+++ b/femonreceiver.c
@@ -0,0 +1,189 @@
+/*
+ * Frontend Status Monitor plugin for the Video Disk Recorder
+ *
+ * See the README file for copyright information and how to reach the author.
+ *
+ */
+
+#include <unistd.h>
+#include "femonreceiver.h"
+
+cFemonReceiver::cFemonReceiver(const cChannel *Channel, int ATrack, int DTrack)
+ : cReceiver(Channel, MINPRIORITY+5),
+ cThread("flatPlus receiver"),
+ m_Mutex(),
+ m_Sleep(),
+ m_Active(false),
+ m_VideoBuffer(KILOBYTE(512), TS_SIZE, false, "Femon video"),
+ m_VideoType(Channel ? Channel->Vtype(): 0),
+ m_VideoPid(Channel ? Channel->Vpid() : 0),
+ m_VideoPacketCount(0),
+ m_AudioBuffer(KILOBYTE(256), TS_SIZE, false, "Femon audio"),
+ m_AudioPid(Channel ? Channel->Apid(ATrack) : 0),
+ m_AudioPacketCount(0),
+ m_AC3Buffer(KILOBYTE(256), TS_SIZE, false, "Femon AC3"),
+ m_AC3Pid(Channel ? Channel->Dpid(DTrack) : 0),
+ m_AC3PacketCount(0)
+{
+ SetPids(NULL);
+ AddPid(m_VideoPid);
+ AddPid(m_AudioPid);
+ AddPid(m_AC3Pid);
+
+ m_VideoBuffer.SetTimeouts(0, 100);
+ m_AudioBuffer.SetTimeouts(0, 100);
+ m_AC3Buffer.SetTimeouts(0, 100);
+
+ m_VideoBitrate = 0.0;
+ m_AudioBitrate = 0.0;
+ m_AC3Bitrate = 0.0;
+}
+
+cFemonReceiver::~cFemonReceiver(void)
+{
+ Deactivate();
+}
+
+void cFemonReceiver::Deactivate(void)
+{
+ Detach();
+ if (m_Active) {
+ m_Active = false;
+ m_Sleep.Signal();
+ if (Running())
+ Cancel(3);
+ }
+}
+
+void cFemonReceiver::Activate(bool On)
+{
+ if (On)
+ Start();
+ else
+ Deactivate();
+}
+
+void cFemonReceiver::Receive(uchar *Data, int Length)
+{
+ // TS packet length: TS_SIZE
+ if (Running() && (*Data == TS_SYNC_BYTE) && (Length == TS_SIZE)) {
+ int len, pid = TsPid(Data);
+ if (pid == m_VideoPid) {
+ ++m_VideoPacketCount;
+ len = m_VideoBuffer.Put(Data, Length);
+ if (len != Length) {
+ m_VideoBuffer.ReportOverflow(Length - len);
+ m_VideoBuffer.Clear();
+ }
+ }
+ else if (pid == m_AudioPid) {
+ ++m_AudioPacketCount;
+ len = m_AudioBuffer.Put(Data, Length);
+ if (len != Length) {
+ m_AudioBuffer.ReportOverflow(Length - len);
+ m_AudioBuffer.Clear();
+ }
+ }
+ else if (pid == m_AC3Pid) {
+ ++m_AC3PacketCount;
+ len = m_AC3Buffer.Put(Data, Length);
+ if (len != Length) {
+ m_AC3Buffer.ReportOverflow(Length - len);
+ m_AC3Buffer.Clear();
+ }
+ }
+ }
+}
+
+void cFemonReceiver::Action(void)
+{
+ cTimeMs calcPeriod(0);
+ m_Active = true;
+
+ while (Running() && m_Active) {
+ uint8_t *Data;
+ double timeout;
+ int Length;
+ bool processed = false;
+
+ // process available video data
+ while ((Data = m_VideoBuffer.Get(Length))) {
+ if (!m_Active || (Length < TS_SIZE))
+ break;
+ Length = TS_SIZE;
+ if (*Data != TS_SYNC_BYTE) {
+ for (int i = 1; i < Length; ++i) {
+ if (Data[i] == TS_SYNC_BYTE) {
+ Length = i;
+ break;
+ }
+ }
+ m_VideoBuffer.Del(Length);
+ continue;
+ }
+ processed = true;
+ if (TsPayloadStart(Data)) {
+ m_VideoAssembler.Reset();
+ }
+ m_VideoAssembler.PutTs(Data, Length);
+ m_VideoBuffer.Del(Length);
+ }
+
+ // process available audio data
+ while ((Data = m_AudioBuffer.Get(Length))) {
+ if (!m_Active || (Length < TS_SIZE))
+ break;
+ Length = TS_SIZE;
+ if (*Data != TS_SYNC_BYTE) {
+ for (int i = 1; i < Length; ++i) {
+ if (Data[i] == TS_SYNC_BYTE) {
+ Length = i;
+ break;
+ }
+ }
+ m_AudioBuffer.Del(Length);
+ continue;
+ }
+ processed = true;
+ m_AudioAssembler.PutTs(Data, Length);
+ m_AudioBuffer.Del(Length);
+ }
+
+ // process available dolby data
+ while ((Data = m_AC3Buffer.Get(Length))) {
+ if (!m_Active || (Length < TS_SIZE))
+ break;
+ Length = TS_SIZE;
+ if (*Data != TS_SYNC_BYTE) {
+ for (int i = 1; i < Length; ++i) {
+ if (Data[i] == TS_SYNC_BYTE) {
+ Length = i;
+ break;
+ }
+ }
+ m_AC3Buffer.Del(Length);
+ continue;
+ }
+ processed = true;
+ m_AC3Assembler.PutTs(Data, Length);
+ m_AC3Buffer.Del(Length);
+ }
+
+ // calculate bitrates
+ timeout = double(calcPeriod.Elapsed());
+ if (m_Active && (timeout >= (100.0 * Config.ChannelBitrateShowCalcInterval ))) {
+ // TS packet 188 bytes - 4 byte header; MPEG standard defines 1Mbit = 1000000bit
+ // PES headers should be compensated!
+ m_VideoBitrate = (1000.0 * 8.0 * 184.0 * m_VideoPacketCount) / timeout;
+ m_VideoPacketCount = 0;
+ m_AudioBitrate = (1000.0 * 8.0 * 184.0 * m_AudioPacketCount) / timeout;
+ m_AudioPacketCount = 0;
+ m_AC3Bitrate = (1000.0 * 8.0 * 184.0 * m_AC3PacketCount) / timeout;
+ m_AC3PacketCount = 0;
+ calcPeriod.Set(0);
+ }
+
+ if (!processed)
+ m_Sleep.Wait(10); // to avoid busy loop and reduce cpu load
+ }
+}
diff --git a/femonreceiver.h b/femonreceiver.h
new file mode 100644
index 0000000..4d768ef
--- /dev/null
+++ b/femonreceiver.h
@@ -0,0 +1,62 @@
+/*
+ * Frontend Status Monitor plugin for the Video Disk Recorder
+ *
+ * See the README file for copyright information and how to reach the author.
+ *
+ */
+
+#ifndef __FEMONRECEIVER_H
+#define __FEMONRECEIVER_H
+
+#include <vdr/thread.h>
+#include <vdr/receiver.h>
+#include "baserender.h"
+
+class cFemonReceiver : public cFlatBaseRender, public cReceiver, public cThread {
+ private:
+ cMutex m_Mutex;
+ cCondWait m_Sleep;
+ bool m_Active;
+
+
+ cRingBufferLinear m_VideoBuffer;
+ cTsToPes m_VideoAssembler;
+ int m_VideoType;
+ int m_VideoPid;
+ int m_VideoPacketCount;
+ double m_VideoBitrate;
+
+ cRingBufferLinear m_AudioBuffer;
+ cTsToPes m_AudioAssembler;
+ int m_AudioPid;
+ int m_AudioPacketCount;
+ double m_AudioBitrate;
+ bool m_AudioValid;
+
+ cRingBufferLinear m_AC3Buffer;
+ cTsToPes m_AC3Assembler;
+ int m_AC3Pid;
+ int m_AC3PacketCount;
+ double m_AC3Bitrate;
+ bool m_AC3Valid;
+
+ protected:
+ virtual void Activate(bool On);
+ virtual void Receive(uchar *Data, int Length);
+ virtual void Action(void);
+
+ public:
+ cFemonReceiver(const cChannel* Channel, int ATrack, int DTrack);
+ virtual ~cFemonReceiver();
+ void Deactivate(void);
+
+ double VideoBitrate(void) { cMutexLock MutexLock(&m_Mutex);
+ return m_VideoBitrate; }; // bit/s
+ double AudioBitrate(void) { cMutexLock MutexLock(&m_Mutex);
+ return m_AudioBitrate; }; // bit/s
+ double AC3Bitrate(void) { cMutexLock MutexLock(&m_Mutex);
+ return m_AC3Bitrate; }; // bit/s
+};
+
+#endif //__FEMONRECEIVER_H
+
diff --git a/flat.c b/flat.c
new file mode 100644
index 0000000..72172f1
--- /dev/null
+++ b/flat.c
@@ -0,0 +1,84 @@
+#include <vdr/osd.h>
+#include <vdr/menu.h>
+
+#include "flat.h"
+
+#include "displaychannel.h"
+#include "displaymenu.h"
+#include "displaymessage.h"
+#include "displayreplay.h"
+#include "displaytracks.h"
+#include "displayvolume.h"
+
+class cFlatConfig Config;
+class cImageCache imgCache;
+
+cTheme Theme;
+static bool menuActive = false;
+bool firstDisplay = true;
+
+cFlat::cFlat(void) : cSkin("flatPlus", &::Theme) {
+ displayMenu = NULL;
+}
+
+const char *cFlat::Description(void) {
+ return "flatPlus";
+}
+
+cSkinDisplayChannel *cFlat::DisplayChannel(bool WithInfo) {
+ return new cFlatDisplayChannel(WithInfo);
+}
+
+cSkinDisplayMenu *cFlat::DisplayMenu(void) {
+ cFlatDisplayMenu *menu = new cFlatDisplayMenu;
+ displayMenu = menu;
+ menuActive = true;
+ return menu;
+}
+
+cSkinDisplayReplay *cFlat::DisplayReplay(bool ModeOnly) {
+ return new cFlatDisplayReplay(ModeOnly);
+}
+
+cSkinDisplayVolume *cFlat::DisplayVolume(void) {
+ return new cFlatDisplayVolume;
+}
+
+cSkinDisplayTracks *cFlat::DisplayTracks(const char *Title, int NumTracks, const char * const *Tracks) {
+ return new cFlatDisplayTracks(Title, NumTracks, Tracks);
+}
+
+cSkinDisplayMessage *cFlat::DisplayMessage(void) {
+ return new cFlatDisplayMessage;
+}
+
+
+char * substr(char * string, int start, int end)
+{
+ char * p = &string[start];
+ char * buf = (char*) malloc(strlen(p) + 1);
+ char * ptr = buf;
+ if(!buf) return NULL;
+
+ while(*p != '\0' && start < end) {
+ *ptr ++ = *p++;
+ start ++;
+ }
+ *ptr++ = '\0';
+
+ return buf;
+}
+
+char *GetFilenameWithoutext(char * fullfilename)
+{
+ int i, size;
+ i = size = 0;
+
+ while(fullfilename[i] != '\0') {
+ if(fullfilename[i] == '.') {
+ size = i;
+ }
+ i++;
+ }
+ return substr(fullfilename, 0, size);
+}
diff --git a/flat.h b/flat.h
new file mode 100644
index 0000000..27fbd25
--- /dev/null
+++ b/flat.h
@@ -0,0 +1,223 @@
+#pragma once
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <unistd.h>
+#include <stdint.h>
+#include <string.h>
+
+#include <vdr/skins.h>
+#include <vdr/videodir.h>
+
+#include "config.h"
+#include "imagecache.h"
+
+extern class cFlatConfig Config;
+extern class cImageCache imgCache;
+extern bool firstDisplay;
+
+class cFlatDisplayMenu;
+extern cTheme Theme;
+
+// BUTTONS
+#define CLR_BUTTONRED 0xFFBB0000
+#define CLR_BUTTONGREEN 0xFF00BB00
+#define CLR_BUTTONYELLOW 0xFFBBBB00
+#define CLR_BUTTONBLUE 0xFF0000BB
+
+// MESSAGES
+#define CLR_MESSAGESTATUS 0xFF0000FF
+#define CLR_MESSAGEINFO 0xFF009900
+#define CLR_MESSAGEWARNING 0xFFBBBB00
+#define CLR_MESSAGEERROR 0xFFBB0000
+
+// TopBar
+THEME_CLR(Theme, clrTopBarBg, 0xF0202020);
+THEME_CLR(Theme, clrTopBarFont, 0xFFEEEEEE);
+THEME_CLR(Theme, clrTopBarTimeFont, 0xFFEEEEEE);
+THEME_CLR(Theme, clrTopBarDateFont, 0xFF909090);
+THEME_CLR(Theme, clrTopBarBorderFg, 0xF0202020);
+THEME_CLR(Theme, clrTopBarBorderBg, 0xF0202020);
+
+THEME_CLR(Theme, clrTopBarRecordingActiveFg, 0xFF880000);
+THEME_CLR(Theme, clrTopBarRecordingActiveBg, 0xF0202020);
+
+THEME_CLR(Theme, clrTopBarConflictLowFg, 0xFFBBBB00);
+THEME_CLR(Theme, clrTopBarConflictLowBg, 0xF0202020);
+THEME_CLR(Theme, clrTopBarConflictHighFg, 0xFF880000);
+THEME_CLR(Theme, clrTopBarConflictHighBg, 0xF0202020);
+
+// Buttons
+THEME_CLR(Theme, clrButtonBg, 0xF0202020);
+THEME_CLR(Theme, clrButtonFont, 0xFFEEEEEE);
+THEME_CLR(Theme, clrButtonRed, CLR_BUTTONRED);
+THEME_CLR(Theme, clrButtonGreen, CLR_BUTTONGREEN);
+THEME_CLR(Theme, clrButtonYellow, CLR_BUTTONYELLOW);
+THEME_CLR(Theme, clrButtonBlue, CLR_BUTTONBLUE);
+
+THEME_CLR(Theme, clrButtonBorderFg, 0xF0202020);
+THEME_CLR(Theme, clrButtonBorderBg, 0xF0202020);
+
+// Messages
+THEME_CLR(Theme, clrMessageBg, 0xF0202020);
+THEME_CLR(Theme, clrMessageFont, 0xFFEEEEEE);
+
+THEME_CLR(Theme, clrMessageStatus, CLR_MESSAGESTATUS);
+THEME_CLR(Theme, clrMessageInfo, CLR_MESSAGEINFO);
+THEME_CLR(Theme, clrMessageWarning, CLR_MESSAGEWARNING);
+THEME_CLR(Theme, clrMessageError, CLR_MESSAGEERROR);
+
+THEME_CLR(Theme, clrMessageBorderFg, 0xF0202020);
+THEME_CLR(Theme, clrMessageBorderBg, 0xF0202020);
+
+// Channel
+THEME_CLR(Theme, clrChannelBg, 0xF0202020);
+THEME_CLR(Theme, clrChannelFontTitle, 0xFF03A9F4);
+THEME_CLR(Theme, clrChannelFontEpg, 0xFFEEEEEE);
+THEME_CLR(Theme, clrChannelFontEpgFollow, 0xFF909090);
+THEME_CLR(Theme, clrChannelProgressFg, 0xFF03A9F4);
+THEME_CLR(Theme, clrChannelProgressBarFg, 0xFF03A9F4);
+THEME_CLR(Theme, clrChannelProgressBg, 0xF0202020);
+
+THEME_CLR(Theme, clrChannelBorderFg, 0xF003A9F4);
+THEME_CLR(Theme, clrChannelBorderBg, 0xF003A9F4);
+
+THEME_CLR(Theme, clrChannelEPGBorderFg, 0xF003A9F4);
+THEME_CLR(Theme, clrChannelEPGBorderBg, 0xF003A9F4);
+
+THEME_CLR(Theme, clrChannelSignalFont, 0xFF909090);
+THEME_CLR(Theme, clrChannelSignalProgressFg, 0xFF909090);
+THEME_CLR(Theme, clrChannelSignalProgressBarFg, 0xFF909090);
+THEME_CLR(Theme, clrChannelSignalProgressBg, 0xF0202020);
+
+THEME_CLR(Theme, clrChannelRecordingPresentFg, 0xFFAA0000);
+THEME_CLR(Theme, clrChannelRecordingPresentBg, 0xF0202020);
+THEME_CLR(Theme, clrChannelRecordingFollowFg, 0xFF909090);
+THEME_CLR(Theme, clrChannelRecordingFollowBg, 0xF0202020);
+
+// Menu
+THEME_CLR(Theme, clrItemBg, 0xF0909090);
+THEME_CLR(Theme, clrItemFont, 0xFFEEEEEE);
+THEME_CLR(Theme, clrItemCurrentBg, 0xF003A9F4);
+THEME_CLR(Theme, clrItemCurrentFont, 0xFFEEEEEE);
+THEME_CLR(Theme, clrItemSelableBg, 0xF0202020);
+THEME_CLR(Theme, clrItemSelableFont, 0xFFEEEEEE);
+THEME_CLR(Theme, clrScrollbarFg, 0xFF03A9F4);
+THEME_CLR(Theme, clrScrollbarBarFg, 0xFF03A9F4);
+THEME_CLR(Theme, clrScrollbarBg, 0xF0202020);
+// Menu Event
+THEME_CLR(Theme, clrMenuEventBg, 0xF0202020);
+THEME_CLR(Theme, clrMenuEventFontTitle, 0xFF03A9F4);
+THEME_CLR(Theme, clrMenuEventTitleLine, 0xFF03A9F4);
+THEME_CLR(Theme, clrMenuEventFontInfo, 0xFFEEEEEE);
+// Menu Recording
+THEME_CLR(Theme, clrMenuRecBg, 0xF0202020);
+THEME_CLR(Theme, clrMenuRecFontTitle, 0xFF03A9F4);
+THEME_CLR(Theme, clrMenuRecTitleLine, 0xFF03A9F4);
+THEME_CLR(Theme, clrMenuRecFontInfo, 0xFFEEEEEE);
+// Menu Text (Multiline)
+THEME_CLR(Theme, clrMenuTextBg, 0xF0202020);
+THEME_CLR(Theme, clrMenuTextFont, 0xFFEEEEEE);
+THEME_CLR(Theme, clrMenuTextFixedFont, 0xFFEEEEEE);
+
+THEME_CLR(Theme, clrMenuContentHeadBorderFg, 0xF003A9F4);
+THEME_CLR(Theme, clrMenuContentHeadBorderBg, 0xF003A9F4);
+
+THEME_CLR(Theme, clrMenuContentBorderFg, 0xF003A9F4);
+THEME_CLR(Theme, clrMenuContentBorderBg, 0xF003A9F4);
+
+// Menu Items
+THEME_CLR(Theme, clrMenuItemProgressFg, 0xFFEEEEEE);
+THEME_CLR(Theme, clrMenuItemProgressBarFg, 0xFFEEEEEE);
+THEME_CLR(Theme, clrMenuItemProgressBg, 0xF0202020);
+THEME_CLR(Theme, clrMenuItemCurProgressFg, 0xFFEEEEEE);
+THEME_CLR(Theme, clrMenuItemCurProgressBarFg, 0xFFEEEEEE);
+THEME_CLR(Theme, clrMenuItemCurProgressBg, 0xF003A9F4);
+
+THEME_CLR(Theme, clrMenuItemBorderFg, 0xF0909090);
+THEME_CLR(Theme, clrMenuItemBorderBg, 0xF0909090);
+THEME_CLR(Theme, clrMenuItemSelableBorderFg, 0xF0202020);
+THEME_CLR(Theme, clrMenuItemSelableBorderBg, 0xF0202020);
+THEME_CLR(Theme, clrMenuItemCurrentBorderFg, 0xF003A9F4);
+THEME_CLR(Theme, clrMenuItemCurrentBorderBg, 0xF003A9F4);
+
+// Menu Timer Item
+THEME_CLR(Theme, clrMenuTimerItemDisabledFont, 0xFF909090);
+THEME_CLR(Theme, clrMenuTimerItemRecordingFont, 0xFFEEEEEE);
+
+// For Tilde, Timer Extra, Program Short Text
+THEME_CLR(Theme, clrMenuItemExtraTextFont, 0xFF909090);
+THEME_CLR(Theme, clrMenuItemExtraTextCurrentFont, 0xFF909090);
+
+// Replay
+THEME_CLR(Theme, clrReplayBg, 0xF0202020);
+THEME_CLR(Theme, clrReplayFont, 0xFFEEEEEE);
+THEME_CLR(Theme, clrReplayFontSpeed, 0xFF03A9F4);
+THEME_CLR(Theme, clrReplayProgressFg, 0xFFEEEEEE);
+THEME_CLR(Theme, clrReplayProgressBarFg, 0xFFEEEEEE);
+THEME_CLR(Theme, clrReplayProgressBarCurFg, 0xFF03A9F4);
+THEME_CLR(Theme, clrReplayProgressBg, 0xF0202020);
+THEME_CLR(Theme, clrReplayMarkFg, 0xFFEEEEEE);
+THEME_CLR(Theme, clrReplayMarkCurrentFg, 0xFF03A9F4);
+
+THEME_CLR(Theme, clrReplayBorderFg, 0xF0202020);
+THEME_CLR(Theme, clrReplayBorderBg, 0xF0202020);
+
+// Tracks
+THEME_CLR(Theme, clrTrackItemBg, 0xF0909090);
+THEME_CLR(Theme, clrTrackItemFont, 0xFFEEEEEE);
+THEME_CLR(Theme, clrTrackItemSelableBg, 0xF0202020);
+THEME_CLR(Theme, clrTrackItemSelableFont, 0xFFEEEEEE);
+THEME_CLR(Theme, clrTrackItemCurrentBg, 0xF003A9F4);
+THEME_CLR(Theme, clrTrackItemCurrentFont, 0xFFEEEEEE);
+
+THEME_CLR(Theme, clrTrackItemBorderFg, 0xF0909090);
+THEME_CLR(Theme, clrTrackItemBorderBg, 0xF0909090);
+THEME_CLR(Theme, clrTrackItemSelableBorderFg, 0xF0202020);
+THEME_CLR(Theme, clrTrackItemSelableBorderBg, 0xF0202020);
+THEME_CLR(Theme, clrTrackItemCurrentBorderFg, 0xF003A9F4);
+THEME_CLR(Theme, clrTrackItemCurrentBorderBg, 0xF003A9F4);
+
+// Volume
+THEME_CLR(Theme, clrVolumeBg, 0xF0202020);
+THEME_CLR(Theme, clrVolumeFont, 0xFFEEEEEE);
+THEME_CLR(Theme, clrVolumeProgressFg, 0xFF03A9F4);
+THEME_CLR(Theme, clrVolumeProgressBarFg, 0xFF03A9F4);
+THEME_CLR(Theme, clrVolumeProgressBg, 0xF0202020);
+
+THEME_CLR(Theme, clrVolumeBorderFg, 0xF0202020);
+THEME_CLR(Theme, clrVolumeBorderBg, 0xF0202020);
+
+class cFlat : public cSkin {
+ private:
+ cFlatDisplayMenu *displayMenu;
+ public:
+ cFlat(void);
+ virtual const char *Description(void);
+ virtual cSkinDisplayChannel *DisplayChannel(bool WithInfo);
+ virtual cSkinDisplayMenu *DisplayMenu(void);
+ virtual cSkinDisplayReplay *DisplayReplay(bool ModeOnly);
+ virtual cSkinDisplayVolume *DisplayVolume(void);
+ virtual cSkinDisplayTracks *DisplayTracks(const char *Title, int NumTracks, const char * const *Tracks);
+ virtual cSkinDisplayMessage *DisplayMessage(void);
+};
+
+char * substr(char * string, int start, int end);
+char *GetFilenameWithoutext(char * fullfilename);
+
+static inline uint32_t GetMsTicks(void)
+{
+#ifdef CLOCK_MONOTONIC
+ struct timespec tspec;
+
+ clock_gettime(CLOCK_MONOTONIC, &tspec);
+ return (tspec.tv_sec * 1000) + (tspec.tv_nsec / (1000 * 1000));
+#else
+ struct timeval tval;
+
+ if (gettimeofday(&tval, NULL) < 0)
+ eturn 0;
+ return (tval.tv_sec * 1000) + (tval.tv_usec / 1000);
+#endif
+}
diff --git a/fnu_anthra_themes.HISTORY b/fnu_anthra_themes.HISTORY
new file mode 100644
index 0000000..d79cd56
--- /dev/null
+++ b/fnu_anthra_themes.HISTORY
@@ -0,0 +1,9 @@
+flat anthra style themes for skin-flatplus by fnu
+
+HISTORY
+ 12.04.2014 first version
+ 25.04.2014 polishing themes, add green accent
+ 10.08.2014 add missing colors, polishing themes
+ add cutis, ivory & lilac accent
+
+(C) 2014 Frank Neumann <fnu at yavdr.org>
diff --git a/fnu_anthra_themes.INFO b/fnu_anthra_themes.INFO
new file mode 100644
index 0000000..23597e2
--- /dev/null
+++ b/fnu_anthra_themes.INFO
@@ -0,0 +1,42 @@
+flatPlus-fnuanthra*.themes created on 12.04.2014
+
+base theme: flatPlus-fnuanthrared.theme, base icons: fnuanthrared
+
+theme: red, highlights: #BC0000, background: #000000, foreground: #404040
+theme: amber, highlights: #FFBF00, background: #000000, foreground: #404040
+theme: ivory, highlights: #DED09F, background: #000000, foreground: #404040
+theme: cutis, highlights: #F89168, background: #000000, foreground: #404040
+theme: green, highlights: #00CD00, background: #000000, foreground: #404040
+theme: lilac, highlights: #CA90CB, background: #000000, foreground: #404040
+theme: yablue, highlights: #4E78B1, background: #000000, foreground: #404040
+
+These are flat anthra style themes following good old anthra packages from Tomas Saxer
+for vdr-plugin-text2skin. As with the originals, base theme is red highlighted. Authors
+favorit is amber highlighted, one for yaVDR family is yablue highlighted and some more.
+
+Themes are black, anthrazit, grey style with some accents in given colors and like the
+original themes with a white logo base. All kept flat to fit into strenght of skinflatplus.
+
+Author does recommend to use "round big" decor and nopacity-default logos from Copperhead,
+because of the white logo base:
+
+- http://creimer.net/channellogos/
+
+vdr-plugin-femon does fit with this settings to these anthra style themes:
+
+femon.AnalStream = 1
+femon.CalcInterval = 20
+femon.DisplayMode = 0
+femon.Downscale = 1
+femon.GreenLimit = 66
+femon.HideMenu = 0
+femon.Position = 1
+femon.RedLimit = 33
+femon.ServerIp = 0.0.0.0
+femon.ServerPort = 6419
+femon.Skin = 1
+femon.Theme = 9
+femon.UpdateInterval = 5
+femon.UseSvdrp = 0
+
+(C) 2014 Frank Neumann <fnu at yavdr.org>
diff --git a/icons/COPYRIGHT b/icons/COPYRIGHT
new file mode 100644
index 0000000..420e8a1
--- /dev/null
+++ b/icons/COPYRIGHT
@@ -0,0 +1,17 @@
+Symbols from
+Alexander Moore
+paket Snowish
+under GNU/GPL
+http://findicons.com/pack/2152/snowish
+
+mute & unmute from
+brsev
+paket vrsev
+Creative Commons Attribution
+http://findicons.com/pack/949/token
+
+iconsweet2
+http://www.iconsweets2.com/
+
+Default Radio, TV, Data
+http://icons8.com/download-huge-windows8-set/
\ No newline at end of file
diff --git a/icons/MVBeige/1280x720.png b/icons/MVBeige/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVBeige/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVBeige/1440x1080.png b/icons/MVBeige/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVBeige/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVBeige/169.png b/icons/MVBeige/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVBeige/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVBeige/169w.png b/icons/MVBeige/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVBeige/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVBeige/1920x1080.png b/icons/MVBeige/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVBeige/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVBeige/221.png b/icons/MVBeige/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVBeige/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVBeige/352x576.png b/icons/MVBeige/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVBeige/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVBeige/43.png b/icons/MVBeige/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVBeige/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVBeige/480x576.png b/icons/MVBeige/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVBeige/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVBeige/528x576.png b/icons/MVBeige/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVBeige/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVBeige/544x576.png b/icons/MVBeige/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVBeige/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVBeige/704x576.png b/icons/MVBeige/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVBeige/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVBeige/720x576.png b/icons/MVBeige/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVBeige/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVBeige/960x720.png b/icons/MVBeige/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVBeige/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVBeige/blank.png b/icons/MVBeige/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVBeige/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVBeige/changroup.png b/icons/MVBeige/changroup.png
new file mode 100644
index 0000000..631044d
Binary files /dev/null and b/icons/MVBeige/changroup.png differ
diff --git a/icons/MVBeige/chart1b.png b/icons/MVBeige/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVBeige/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVBeige/chart2b.png b/icons/MVBeige/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVBeige/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVBeige/chart3b.png b/icons/MVBeige/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVBeige/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVBeige/chart4b.png b/icons/MVBeige/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVBeige/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVBeige/chart5b.png b/icons/MVBeige/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVBeige/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVBeige/chart6b.png b/icons/MVBeige/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVBeige/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVBeige/chart7.png b/icons/MVBeige/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVBeige/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVBeige/chart7b.png b/icons/MVBeige/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVBeige/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVBeige/crypted.png b/icons/MVBeige/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVBeige/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVBeige/forward.png b/icons/MVBeige/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVBeige/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVBeige/forward_sel.png b/icons/MVBeige/forward_sel.png
new file mode 100644
index 0000000..7a02216
Binary files /dev/null and b/icons/MVBeige/forward_sel.png differ
diff --git a/icons/MVBeige/hd.png b/icons/MVBeige/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVBeige/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVBeige/message_error.png b/icons/MVBeige/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVBeige/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVBeige/message_info.png b/icons/MVBeige/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVBeige/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVBeige/message_status.png b/icons/MVBeige/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVBeige/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVBeige/message_warning.png b/icons/MVBeige/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVBeige/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVBeige/pause.png b/icons/MVBeige/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVBeige/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVBeige/pause_sel.png b/icons/MVBeige/pause_sel.png
new file mode 100644
index 0000000..9963631
Binary files /dev/null and b/icons/MVBeige/pause_sel.png differ
diff --git a/icons/MVBeige/play.png b/icons/MVBeige/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVBeige/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVBeige/play_sel.png b/icons/MVBeige/play_sel.png
new file mode 100644
index 0000000..677a8c1
Binary files /dev/null and b/icons/MVBeige/play_sel.png differ
diff --git a/icons/MVBeige/prev.png b/icons/MVBeige/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVBeige/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVBeige/prev_sel.png b/icons/MVBeige/prev_sel.png
new file mode 100644
index 0000000..bc140e3
Binary files /dev/null and b/icons/MVBeige/prev_sel.png differ
diff --git a/icons/MVBeige/radio.png b/icons/MVBeige/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVBeige/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVBeige/recording.png b/icons/MVBeige/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVBeige/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVBeige/recording_cutted.png b/icons/MVBeige/recording_cutted.png
new file mode 100644
index 0000000..df8275f
Binary files /dev/null and b/icons/MVBeige/recording_cutted.png differ
diff --git a/icons/MVBeige/recording_cutted_cur.png b/icons/MVBeige/recording_cutted_cur.png
new file mode 120000
index 0000000..e270866
--- /dev/null
+++ b/icons/MVBeige/recording_cutted_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_cutted_cur.png
\ No newline at end of file
diff --git a/icons/MVBeige/recording_cutted_extra.png b/icons/MVBeige/recording_cutted_extra.png
new file mode 100644
index 0000000..06437d4
Binary files /dev/null and b/icons/MVBeige/recording_cutted_extra.png differ
diff --git a/icons/MVBeige/recording_new.png b/icons/MVBeige/recording_new.png
new file mode 100644
index 0000000..45876a7
Binary files /dev/null and b/icons/MVBeige/recording_new.png differ
diff --git a/icons/MVBeige/recording_new_cur.png b/icons/MVBeige/recording_new_cur.png
new file mode 120000
index 0000000..7d08eda
--- /dev/null
+++ b/icons/MVBeige/recording_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_new_cur.png
\ No newline at end of file
diff --git a/icons/MVBeige/rewind.png b/icons/MVBeige/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVBeige/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVBeige/rewind_sel.png b/icons/MVBeige/rewind_sel.png
new file mode 100644
index 0000000..058c5a8
Binary files /dev/null and b/icons/MVBeige/rewind_sel.png differ
diff --git a/icons/MVBeige/sd.png b/icons/MVBeige/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVBeige/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVBeige/skip.png b/icons/MVBeige/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVBeige/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVBeige/skip_sel.png b/icons/MVBeige/skip_sel.png
new file mode 100644
index 0000000..888e8bd
Binary files /dev/null and b/icons/MVBeige/skip_sel.png differ
diff --git a/icons/MVBeige/text_arrowturn.png b/icons/MVBeige/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVBeige/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVBeige/text_arrowturn_cur.png b/icons/MVBeige/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVBeige/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVBeige/text_arrowturn_sel.png b/icons/MVBeige/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVBeige/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVBeige/text_new.png b/icons/MVBeige/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVBeige/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVBeige/text_new_cur.png b/icons/MVBeige/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVBeige/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVBeige/text_new_sel.png b/icons/MVBeige/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVBeige/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVBeige/text_rec.png b/icons/MVBeige/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVBeige/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVBeige/text_rec_cur.png b/icons/MVBeige/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVBeige/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVBeige/text_rec_sel.png b/icons/MVBeige/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVBeige/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVBeige/text_timer_full.png b/icons/MVBeige/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVBeige/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVBeige/text_timer_full_cur.png b/icons/MVBeige/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVBeige/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVBeige/text_timer_full_sel.png b/icons/MVBeige/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVBeige/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVBeige/text_timer_partial.png b/icons/MVBeige/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVBeige/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVBeige/text_timer_partial_cur.png b/icons/MVBeige/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVBeige/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVBeige/text_timer_partial_sel.png b/icons/MVBeige/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVBeige/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVBeige/text_vps.png b/icons/MVBeige/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVBeige/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVBeige/text_vps_cur.png b/icons/MVBeige/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVBeige/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVBeige/text_vps_sel.png b/icons/MVBeige/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVBeige/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVBeige/timerActive.png b/icons/MVBeige/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVBeige/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVBeige/timerInactive.png b/icons/MVBeige/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVBeige/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVBeige/timerRecording.png b/icons/MVBeige/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVBeige/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVBeige/timer_full.png b/icons/MVBeige/timer_full.png
new file mode 100644
index 0000000..3037dd7
Binary files /dev/null and b/icons/MVBeige/timer_full.png differ
diff --git a/icons/MVBeige/timer_full_cur.png b/icons/MVBeige/timer_full_cur.png
new file mode 120000
index 0000000..e0225f1
--- /dev/null
+++ b/icons/MVBeige/timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVBeige/timer_partial.png b/icons/MVBeige/timer_partial.png
new file mode 100644
index 0000000..0572238
Binary files /dev/null and b/icons/MVBeige/timer_partial.png differ
diff --git a/icons/MVBeige/timer_partial_cur.png b/icons/MVBeige/timer_partial_cur.png
new file mode 120000
index 0000000..db9e5d7
--- /dev/null
+++ b/icons/MVBeige/timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVBeige/topbar_timer.png b/icons/MVBeige/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVBeige/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVBeige/topbar_timerconflict_high.png b/icons/MVBeige/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVBeige/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVBeige/topbar_timerconflict_low.png b/icons/MVBeige/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVBeige/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVBeige/tv.png b/icons/MVBeige/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVBeige/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVBeige/uncrypted.png b/icons/MVBeige/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVBeige/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVBeige/unknown_asp.png b/icons/MVBeige/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVBeige/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVBeige/unknown_res.png b/icons/MVBeige/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVBeige/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVBeige/vps.png b/icons/MVBeige/vps.png
new file mode 100644
index 0000000..a7b2ae3
Binary files /dev/null and b/icons/MVBeige/vps.png differ
diff --git a/icons/MVBeige/vps_cur.png b/icons/MVBeige/vps_cur.png
new file mode 120000
index 0000000..923472f
--- /dev/null
+++ b/icons/MVBeige/vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/vps_cur.png
\ No newline at end of file
diff --git a/icons/MVBerry/1280x720.png b/icons/MVBerry/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVBerry/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVBerry/1440x1080.png b/icons/MVBerry/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVBerry/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVBerry/169.png b/icons/MVBerry/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVBerry/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVBerry/169w.png b/icons/MVBerry/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVBerry/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVBerry/1920x1080.png b/icons/MVBerry/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVBerry/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVBerry/221.png b/icons/MVBerry/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVBerry/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVBerry/352x576.png b/icons/MVBerry/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVBerry/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVBerry/43.png b/icons/MVBerry/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVBerry/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVBerry/480x576.png b/icons/MVBerry/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVBerry/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVBerry/528x576.png b/icons/MVBerry/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVBerry/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVBerry/544x576.png b/icons/MVBerry/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVBerry/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVBerry/704x576.png b/icons/MVBerry/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVBerry/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVBerry/720x576.png b/icons/MVBerry/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVBerry/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVBerry/960x720.png b/icons/MVBerry/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVBerry/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVBerry/blank.png b/icons/MVBerry/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVBerry/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVBerry/changroup.png b/icons/MVBerry/changroup.png
new file mode 100644
index 0000000..334ed6a
Binary files /dev/null and b/icons/MVBerry/changroup.png differ
diff --git a/icons/MVBerry/chart1b.png b/icons/MVBerry/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVBerry/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVBerry/chart2b.png b/icons/MVBerry/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVBerry/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVBerry/chart3b.png b/icons/MVBerry/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVBerry/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVBerry/chart4b.png b/icons/MVBerry/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVBerry/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVBerry/chart5b.png b/icons/MVBerry/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVBerry/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVBerry/chart6b.png b/icons/MVBerry/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVBerry/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVBerry/chart7.png b/icons/MVBerry/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVBerry/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVBerry/chart7b.png b/icons/MVBerry/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVBerry/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVBerry/crypted.png b/icons/MVBerry/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVBerry/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVBerry/forward.png b/icons/MVBerry/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVBerry/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVBerry/forward_sel.png b/icons/MVBerry/forward_sel.png
new file mode 100644
index 0000000..399f044
Binary files /dev/null and b/icons/MVBerry/forward_sel.png differ
diff --git a/icons/MVBerry/hd.png b/icons/MVBerry/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVBerry/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVBerry/message_error.png b/icons/MVBerry/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVBerry/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVBerry/message_info.png b/icons/MVBerry/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVBerry/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVBerry/message_status.png b/icons/MVBerry/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVBerry/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVBerry/message_warning.png b/icons/MVBerry/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVBerry/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVBerry/pause.png b/icons/MVBerry/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVBerry/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVBerry/pause_sel.png b/icons/MVBerry/pause_sel.png
new file mode 100644
index 0000000..2bb0c2a
Binary files /dev/null and b/icons/MVBerry/pause_sel.png differ
diff --git a/icons/MVBerry/play.png b/icons/MVBerry/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVBerry/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVBerry/play_sel.png b/icons/MVBerry/play_sel.png
new file mode 100644
index 0000000..2378326
Binary files /dev/null and b/icons/MVBerry/play_sel.png differ
diff --git a/icons/MVBerry/prev.png b/icons/MVBerry/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVBerry/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVBerry/prev_sel.png b/icons/MVBerry/prev_sel.png
new file mode 100644
index 0000000..e04cbfd
Binary files /dev/null and b/icons/MVBerry/prev_sel.png differ
diff --git a/icons/MVBerry/radio.png b/icons/MVBerry/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVBerry/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVBerry/recording.png b/icons/MVBerry/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVBerry/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVBerry/recording_cutted.png b/icons/MVBerry/recording_cutted.png
new file mode 100644
index 0000000..5652aa7
Binary files /dev/null and b/icons/MVBerry/recording_cutted.png differ
diff --git a/icons/MVBerry/recording_cutted_cur.png b/icons/MVBerry/recording_cutted_cur.png
new file mode 120000
index 0000000..e270866
--- /dev/null
+++ b/icons/MVBerry/recording_cutted_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_cutted_cur.png
\ No newline at end of file
diff --git a/icons/MVBerry/recording_cutted_extra.png b/icons/MVBerry/recording_cutted_extra.png
new file mode 100644
index 0000000..8581226
Binary files /dev/null and b/icons/MVBerry/recording_cutted_extra.png differ
diff --git a/icons/MVBerry/recording_new.png b/icons/MVBerry/recording_new.png
new file mode 100644
index 0000000..55547d4
Binary files /dev/null and b/icons/MVBerry/recording_new.png differ
diff --git a/icons/MVBerry/recording_new_cur.png b/icons/MVBerry/recording_new_cur.png
new file mode 120000
index 0000000..7d08eda
--- /dev/null
+++ b/icons/MVBerry/recording_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_new_cur.png
\ No newline at end of file
diff --git a/icons/MVBerry/rewind.png b/icons/MVBerry/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVBerry/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVBerry/rewind_sel.png b/icons/MVBerry/rewind_sel.png
new file mode 100644
index 0000000..899689b
Binary files /dev/null and b/icons/MVBerry/rewind_sel.png differ
diff --git a/icons/MVBerry/sd.png b/icons/MVBerry/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVBerry/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVBerry/skip.png b/icons/MVBerry/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVBerry/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVBerry/skip_sel.png b/icons/MVBerry/skip_sel.png
new file mode 100644
index 0000000..0b00df2
Binary files /dev/null and b/icons/MVBerry/skip_sel.png differ
diff --git a/icons/MVBerry/text_arrowturn.png b/icons/MVBerry/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVBerry/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVBerry/text_arrowturn_cur.png b/icons/MVBerry/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVBerry/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVBerry/text_arrowturn_sel.png b/icons/MVBerry/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVBerry/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVBerry/text_new.png b/icons/MVBerry/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVBerry/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVBerry/text_new_cur.png b/icons/MVBerry/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVBerry/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVBerry/text_new_sel.png b/icons/MVBerry/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVBerry/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVBerry/text_rec.png b/icons/MVBerry/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVBerry/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVBerry/text_rec_cur.png b/icons/MVBerry/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVBerry/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVBerry/text_rec_sel.png b/icons/MVBerry/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVBerry/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVBerry/text_timer_full.png b/icons/MVBerry/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVBerry/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVBerry/text_timer_full_cur.png b/icons/MVBerry/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVBerry/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVBerry/text_timer_full_sel.png b/icons/MVBerry/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVBerry/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVBerry/text_timer_partial.png b/icons/MVBerry/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVBerry/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVBerry/text_timer_partial_cur.png b/icons/MVBerry/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVBerry/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVBerry/text_timer_partial_sel.png b/icons/MVBerry/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVBerry/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVBerry/text_vps.png b/icons/MVBerry/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVBerry/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVBerry/text_vps_cur.png b/icons/MVBerry/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVBerry/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVBerry/text_vps_sel.png b/icons/MVBerry/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVBerry/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVBerry/timerActive.png b/icons/MVBerry/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVBerry/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVBerry/timerInactive.png b/icons/MVBerry/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVBerry/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVBerry/timerRecording.png b/icons/MVBerry/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVBerry/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVBerry/timer_full.png b/icons/MVBerry/timer_full.png
new file mode 100644
index 0000000..c83c5db
Binary files /dev/null and b/icons/MVBerry/timer_full.png differ
diff --git a/icons/MVBerry/timer_full_cur.png b/icons/MVBerry/timer_full_cur.png
new file mode 120000
index 0000000..e0225f1
--- /dev/null
+++ b/icons/MVBerry/timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVBerry/timer_partial.png b/icons/MVBerry/timer_partial.png
new file mode 100644
index 0000000..b9fb0a2
Binary files /dev/null and b/icons/MVBerry/timer_partial.png differ
diff --git a/icons/MVBerry/timer_partial_cur.png b/icons/MVBerry/timer_partial_cur.png
new file mode 120000
index 0000000..db9e5d7
--- /dev/null
+++ b/icons/MVBerry/timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVBerry/topbar_timer.png b/icons/MVBerry/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVBerry/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVBerry/topbar_timerconflict_high.png b/icons/MVBerry/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVBerry/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVBerry/topbar_timerconflict_low.png b/icons/MVBerry/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVBerry/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVBerry/tv.png b/icons/MVBerry/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVBerry/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVBerry/uncrypted.png b/icons/MVBerry/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVBerry/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVBerry/unknown_asp.png b/icons/MVBerry/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVBerry/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVBerry/unknown_res.png b/icons/MVBerry/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVBerry/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVBerry/vps.png b/icons/MVBerry/vps.png
new file mode 100644
index 0000000..b18f75d
Binary files /dev/null and b/icons/MVBerry/vps.png differ
diff --git a/icons/MVBerry/vps_cur.png b/icons/MVBerry/vps_cur.png
new file mode 120000
index 0000000..923472f
--- /dev/null
+++ b/icons/MVBerry/vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/vps_cur.png
\ No newline at end of file
diff --git a/icons/MVBlood/1280x720.png b/icons/MVBlood/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVBlood/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVBlood/1440x1080.png b/icons/MVBlood/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVBlood/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVBlood/169.png b/icons/MVBlood/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVBlood/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVBlood/169w.png b/icons/MVBlood/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVBlood/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVBlood/1920x1080.png b/icons/MVBlood/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVBlood/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVBlood/221.png b/icons/MVBlood/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVBlood/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVBlood/352x576.png b/icons/MVBlood/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVBlood/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVBlood/43.png b/icons/MVBlood/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVBlood/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVBlood/480x576.png b/icons/MVBlood/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVBlood/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVBlood/528x576.png b/icons/MVBlood/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVBlood/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVBlood/544x576.png b/icons/MVBlood/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVBlood/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVBlood/704x576.png b/icons/MVBlood/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVBlood/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVBlood/720x576.png b/icons/MVBlood/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVBlood/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVBlood/960x720.png b/icons/MVBlood/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVBlood/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVBlood/blank.png b/icons/MVBlood/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVBlood/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVBlood/changroup.png b/icons/MVBlood/changroup.png
new file mode 100644
index 0000000..4f86974
Binary files /dev/null and b/icons/MVBlood/changroup.png differ
diff --git a/icons/MVBlood/chart1b.png b/icons/MVBlood/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVBlood/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVBlood/chart2b.png b/icons/MVBlood/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVBlood/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVBlood/chart3b.png b/icons/MVBlood/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVBlood/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVBlood/chart4b.png b/icons/MVBlood/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVBlood/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVBlood/chart5b.png b/icons/MVBlood/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVBlood/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVBlood/chart6b.png b/icons/MVBlood/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVBlood/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVBlood/chart7.png b/icons/MVBlood/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVBlood/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVBlood/chart7b.png b/icons/MVBlood/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVBlood/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVBlood/crypted.png b/icons/MVBlood/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVBlood/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVBlood/forward.png b/icons/MVBlood/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVBlood/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVBlood/forward_sel.png b/icons/MVBlood/forward_sel.png
new file mode 100644
index 0000000..c1bfa3c
Binary files /dev/null and b/icons/MVBlood/forward_sel.png differ
diff --git a/icons/MVBlood/hd.png b/icons/MVBlood/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVBlood/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVBlood/message_error.png b/icons/MVBlood/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVBlood/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVBlood/message_info.png b/icons/MVBlood/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVBlood/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVBlood/message_status.png b/icons/MVBlood/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVBlood/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVBlood/message_warning.png b/icons/MVBlood/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVBlood/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVBlood/pause.png b/icons/MVBlood/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVBlood/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVBlood/pause_sel.png b/icons/MVBlood/pause_sel.png
new file mode 100644
index 0000000..6846889
Binary files /dev/null and b/icons/MVBlood/pause_sel.png differ
diff --git a/icons/MVBlood/play.png b/icons/MVBlood/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVBlood/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVBlood/play_sel.png b/icons/MVBlood/play_sel.png
new file mode 100644
index 0000000..f196a2f
Binary files /dev/null and b/icons/MVBlood/play_sel.png differ
diff --git a/icons/MVBlood/prev.png b/icons/MVBlood/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVBlood/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVBlood/prev_sel.png b/icons/MVBlood/prev_sel.png
new file mode 100644
index 0000000..b2c4ffb
Binary files /dev/null and b/icons/MVBlood/prev_sel.png differ
diff --git a/icons/MVBlood/radio.png b/icons/MVBlood/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVBlood/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVBlood/recording.png b/icons/MVBlood/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVBlood/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVBlood/recording_cutted.png b/icons/MVBlood/recording_cutted.png
new file mode 100644
index 0000000..b616b1a
Binary files /dev/null and b/icons/MVBlood/recording_cutted.png differ
diff --git a/icons/MVBlood/recording_cutted_cur.png b/icons/MVBlood/recording_cutted_cur.png
new file mode 100644
index 0000000..9cc3155
Binary files /dev/null and b/icons/MVBlood/recording_cutted_cur.png differ
diff --git a/icons/MVBlood/recording_cutted_extra.png b/icons/MVBlood/recording_cutted_extra.png
new file mode 100644
index 0000000..eaba3cf
Binary files /dev/null and b/icons/MVBlood/recording_cutted_extra.png differ
diff --git a/icons/MVBlood/recording_new.png b/icons/MVBlood/recording_new.png
new file mode 100644
index 0000000..0adfbc6
Binary files /dev/null and b/icons/MVBlood/recording_new.png differ
diff --git a/icons/MVBlood/recording_new_cur.png b/icons/MVBlood/recording_new_cur.png
new file mode 100644
index 0000000..3377f23
Binary files /dev/null and b/icons/MVBlood/recording_new_cur.png differ
diff --git a/icons/MVBlood/rewind.png b/icons/MVBlood/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVBlood/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVBlood/rewind_sel.png b/icons/MVBlood/rewind_sel.png
new file mode 100644
index 0000000..c359b5e
Binary files /dev/null and b/icons/MVBlood/rewind_sel.png differ
diff --git a/icons/MVBlood/sd.png b/icons/MVBlood/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVBlood/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVBlood/skip.png b/icons/MVBlood/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVBlood/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVBlood/skip_sel.png b/icons/MVBlood/skip_sel.png
new file mode 100644
index 0000000..6a386a5
Binary files /dev/null and b/icons/MVBlood/skip_sel.png differ
diff --git a/icons/MVBlood/text_arrowturn.png b/icons/MVBlood/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVBlood/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVBlood/text_arrowturn_cur.png b/icons/MVBlood/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVBlood/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVBlood/text_arrowturn_sel.png b/icons/MVBlood/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVBlood/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVBlood/text_new.png b/icons/MVBlood/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVBlood/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVBlood/text_new_cur.png b/icons/MVBlood/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVBlood/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVBlood/text_new_sel.png b/icons/MVBlood/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVBlood/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVBlood/text_rec.png b/icons/MVBlood/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVBlood/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVBlood/text_rec_cur.png b/icons/MVBlood/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVBlood/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVBlood/text_rec_sel.png b/icons/MVBlood/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVBlood/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVBlood/text_timer_full.png b/icons/MVBlood/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVBlood/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVBlood/text_timer_full_cur.png b/icons/MVBlood/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVBlood/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVBlood/text_timer_full_sel.png b/icons/MVBlood/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVBlood/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVBlood/text_timer_partial.png b/icons/MVBlood/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVBlood/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVBlood/text_timer_partial_cur.png b/icons/MVBlood/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVBlood/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVBlood/text_timer_partial_sel.png b/icons/MVBlood/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVBlood/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVBlood/text_vps.png b/icons/MVBlood/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVBlood/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVBlood/text_vps_cur.png b/icons/MVBlood/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVBlood/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVBlood/text_vps_sel.png b/icons/MVBlood/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVBlood/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVBlood/timerActive.png b/icons/MVBlood/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVBlood/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVBlood/timerInactive.png b/icons/MVBlood/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVBlood/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVBlood/timerRecording.png b/icons/MVBlood/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVBlood/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVBlood/timer_full.png b/icons/MVBlood/timer_full.png
new file mode 100644
index 0000000..ce85d0f
Binary files /dev/null and b/icons/MVBlood/timer_full.png differ
diff --git a/icons/MVBlood/timer_full_cur.png b/icons/MVBlood/timer_full_cur.png
new file mode 100644
index 0000000..6a4ff86
Binary files /dev/null and b/icons/MVBlood/timer_full_cur.png differ
diff --git a/icons/MVBlood/timer_partial.png b/icons/MVBlood/timer_partial.png
new file mode 100644
index 0000000..99f616c
Binary files /dev/null and b/icons/MVBlood/timer_partial.png differ
diff --git a/icons/MVBlood/timer_partial_cur.png b/icons/MVBlood/timer_partial_cur.png
new file mode 100644
index 0000000..6f008e2
Binary files /dev/null and b/icons/MVBlood/timer_partial_cur.png differ
diff --git a/icons/MVBlood/topbar_timer.png b/icons/MVBlood/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVBlood/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVBlood/topbar_timerconflict_high.png b/icons/MVBlood/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVBlood/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVBlood/topbar_timerconflict_low.png b/icons/MVBlood/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVBlood/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVBlood/tv.png b/icons/MVBlood/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVBlood/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVBlood/uncrypted.png b/icons/MVBlood/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVBlood/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVBlood/unknown_asp.png b/icons/MVBlood/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVBlood/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVBlood/unknown_res.png b/icons/MVBlood/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVBlood/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVBlood/vps.png b/icons/MVBlood/vps.png
new file mode 100644
index 0000000..28832e8
Binary files /dev/null and b/icons/MVBlood/vps.png differ
diff --git a/icons/MVBlood/vps_cur.png b/icons/MVBlood/vps_cur.png
new file mode 100644
index 0000000..e128e7a
Binary files /dev/null and b/icons/MVBlood/vps_cur.png differ
diff --git a/icons/MVBlue/1280x720.png b/icons/MVBlue/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVBlue/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVBlue/1440x1080.png b/icons/MVBlue/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVBlue/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVBlue/169.png b/icons/MVBlue/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVBlue/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVBlue/169w.png b/icons/MVBlue/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVBlue/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVBlue/1920x1080.png b/icons/MVBlue/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVBlue/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVBlue/221.png b/icons/MVBlue/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVBlue/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVBlue/352x576.png b/icons/MVBlue/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVBlue/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVBlue/43.png b/icons/MVBlue/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVBlue/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVBlue/480x576.png b/icons/MVBlue/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVBlue/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVBlue/528x576.png b/icons/MVBlue/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVBlue/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVBlue/544x576.png b/icons/MVBlue/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVBlue/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVBlue/704x576.png b/icons/MVBlue/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVBlue/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVBlue/720x576.png b/icons/MVBlue/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVBlue/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVBlue/960x720.png b/icons/MVBlue/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVBlue/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVBlue/blank.png b/icons/MVBlue/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVBlue/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVBlue/changroup.png b/icons/MVBlue/changroup.png
new file mode 100644
index 0000000..5403f3c
Binary files /dev/null and b/icons/MVBlue/changroup.png differ
diff --git a/icons/MVBlue/chart1b.png b/icons/MVBlue/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVBlue/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVBlue/chart2b.png b/icons/MVBlue/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVBlue/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVBlue/chart3b.png b/icons/MVBlue/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVBlue/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVBlue/chart4b.png b/icons/MVBlue/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVBlue/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVBlue/chart5b.png b/icons/MVBlue/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVBlue/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVBlue/chart6b.png b/icons/MVBlue/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVBlue/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVBlue/chart7.png b/icons/MVBlue/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVBlue/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVBlue/chart7b.png b/icons/MVBlue/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVBlue/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVBlue/crypted.png b/icons/MVBlue/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVBlue/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVBlue/forward.png b/icons/MVBlue/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVBlue/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVBlue/forward_sel.png b/icons/MVBlue/forward_sel.png
new file mode 100644
index 0000000..3677f3d
Binary files /dev/null and b/icons/MVBlue/forward_sel.png differ
diff --git a/icons/MVBlue/hd.png b/icons/MVBlue/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVBlue/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVBlue/message_error.png b/icons/MVBlue/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVBlue/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVBlue/message_info.png b/icons/MVBlue/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVBlue/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVBlue/message_status.png b/icons/MVBlue/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVBlue/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVBlue/message_warning.png b/icons/MVBlue/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVBlue/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVBlue/pause.png b/icons/MVBlue/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVBlue/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVBlue/pause_sel.png b/icons/MVBlue/pause_sel.png
new file mode 100644
index 0000000..7067d95
Binary files /dev/null and b/icons/MVBlue/pause_sel.png differ
diff --git a/icons/MVBlue/play.png b/icons/MVBlue/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVBlue/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVBlue/play_sel.png b/icons/MVBlue/play_sel.png
new file mode 100644
index 0000000..231ad4d
Binary files /dev/null and b/icons/MVBlue/play_sel.png differ
diff --git a/icons/MVBlue/prev.png b/icons/MVBlue/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVBlue/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVBlue/prev_sel.png b/icons/MVBlue/prev_sel.png
new file mode 100644
index 0000000..d9d2a5f
Binary files /dev/null and b/icons/MVBlue/prev_sel.png differ
diff --git a/icons/MVBlue/radio.png b/icons/MVBlue/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVBlue/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVBlue/recording.png b/icons/MVBlue/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVBlue/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVBlue/recording_cutted.png b/icons/MVBlue/recording_cutted.png
new file mode 100644
index 0000000..a3a7cc1
Binary files /dev/null and b/icons/MVBlue/recording_cutted.png differ
diff --git a/icons/MVBlue/recording_cutted_cur.png b/icons/MVBlue/recording_cutted_cur.png
new file mode 120000
index 0000000..e270866
--- /dev/null
+++ b/icons/MVBlue/recording_cutted_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_cutted_cur.png
\ No newline at end of file
diff --git a/icons/MVBlue/recording_cutted_extra.png b/icons/MVBlue/recording_cutted_extra.png
new file mode 100644
index 0000000..96a8ea9
Binary files /dev/null and b/icons/MVBlue/recording_cutted_extra.png differ
diff --git a/icons/MVBlue/recording_new.png b/icons/MVBlue/recording_new.png
new file mode 100644
index 0000000..61139fd
Binary files /dev/null and b/icons/MVBlue/recording_new.png differ
diff --git a/icons/MVBlue/recording_new_cur.png b/icons/MVBlue/recording_new_cur.png
new file mode 120000
index 0000000..7d08eda
--- /dev/null
+++ b/icons/MVBlue/recording_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_new_cur.png
\ No newline at end of file
diff --git a/icons/MVBlue/rewind.png b/icons/MVBlue/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVBlue/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVBlue/rewind_sel.png b/icons/MVBlue/rewind_sel.png
new file mode 100644
index 0000000..2645c11
Binary files /dev/null and b/icons/MVBlue/rewind_sel.png differ
diff --git a/icons/MVBlue/sd.png b/icons/MVBlue/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVBlue/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVBlue/skip.png b/icons/MVBlue/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVBlue/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVBlue/skip_sel.png b/icons/MVBlue/skip_sel.png
new file mode 100644
index 0000000..0589acd
Binary files /dev/null and b/icons/MVBlue/skip_sel.png differ
diff --git a/icons/MVBlue/text_arrowturn.png b/icons/MVBlue/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVBlue/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVBlue/text_arrowturn_cur.png b/icons/MVBlue/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVBlue/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVBlue/text_arrowturn_sel.png b/icons/MVBlue/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVBlue/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVBlue/text_new.png b/icons/MVBlue/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVBlue/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVBlue/text_new_cur.png b/icons/MVBlue/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVBlue/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVBlue/text_new_sel.png b/icons/MVBlue/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVBlue/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVBlue/text_rec.png b/icons/MVBlue/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVBlue/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVBlue/text_rec_cur.png b/icons/MVBlue/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVBlue/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVBlue/text_rec_sel.png b/icons/MVBlue/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVBlue/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVBlue/text_timer_full.png b/icons/MVBlue/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVBlue/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVBlue/text_timer_full_cur.png b/icons/MVBlue/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVBlue/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVBlue/text_timer_full_sel.png b/icons/MVBlue/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVBlue/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVBlue/text_timer_partial.png b/icons/MVBlue/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVBlue/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVBlue/text_timer_partial_cur.png b/icons/MVBlue/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVBlue/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVBlue/text_timer_partial_sel.png b/icons/MVBlue/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVBlue/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVBlue/text_vps.png b/icons/MVBlue/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVBlue/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVBlue/text_vps_cur.png b/icons/MVBlue/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVBlue/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVBlue/text_vps_sel.png b/icons/MVBlue/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVBlue/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVBlue/timerActive.png b/icons/MVBlue/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVBlue/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVBlue/timerInactive.png b/icons/MVBlue/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVBlue/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVBlue/timerRecording.png b/icons/MVBlue/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVBlue/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVBlue/timer_full.png b/icons/MVBlue/timer_full.png
new file mode 100644
index 0000000..0489cb6
Binary files /dev/null and b/icons/MVBlue/timer_full.png differ
diff --git a/icons/MVBlue/timer_full_cur.png b/icons/MVBlue/timer_full_cur.png
new file mode 120000
index 0000000..e0225f1
--- /dev/null
+++ b/icons/MVBlue/timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVBlue/timer_partial.png b/icons/MVBlue/timer_partial.png
new file mode 100644
index 0000000..ab160d5
Binary files /dev/null and b/icons/MVBlue/timer_partial.png differ
diff --git a/icons/MVBlue/timer_partial_cur.png b/icons/MVBlue/timer_partial_cur.png
new file mode 120000
index 0000000..db9e5d7
--- /dev/null
+++ b/icons/MVBlue/timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVBlue/topbar_timer.png b/icons/MVBlue/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVBlue/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVBlue/topbar_timerconflict_high.png b/icons/MVBlue/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVBlue/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVBlue/topbar_timerconflict_low.png b/icons/MVBlue/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVBlue/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVBlue/tv.png b/icons/MVBlue/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVBlue/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVBlue/uncrypted.png b/icons/MVBlue/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVBlue/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVBlue/unknown_asp.png b/icons/MVBlue/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVBlue/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVBlue/unknown_res.png b/icons/MVBlue/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVBlue/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVBlue/vps.png b/icons/MVBlue/vps.png
new file mode 100644
index 0000000..4fe3549
Binary files /dev/null and b/icons/MVBlue/vps.png differ
diff --git a/icons/MVBlue/vps_cur.png b/icons/MVBlue/vps_cur.png
new file mode 120000
index 0000000..923472f
--- /dev/null
+++ b/icons/MVBlue/vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/vps_cur.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/1280x720.png b/icons/MVCappuchino/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVCappuchino/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/1440x1080.png b/icons/MVCappuchino/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVCappuchino/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/169.png b/icons/MVCappuchino/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVCappuchino/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/169w.png b/icons/MVCappuchino/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVCappuchino/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/1920x1080.png b/icons/MVCappuchino/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVCappuchino/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/221.png b/icons/MVCappuchino/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVCappuchino/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/352x576.png b/icons/MVCappuchino/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVCappuchino/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/43.png b/icons/MVCappuchino/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVCappuchino/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/480x576.png b/icons/MVCappuchino/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVCappuchino/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/528x576.png b/icons/MVCappuchino/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVCappuchino/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/544x576.png b/icons/MVCappuchino/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVCappuchino/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/704x576.png b/icons/MVCappuchino/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVCappuchino/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/720x576.png b/icons/MVCappuchino/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVCappuchino/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/960x720.png b/icons/MVCappuchino/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVCappuchino/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/blank.png b/icons/MVCappuchino/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVCappuchino/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/changroup.png b/icons/MVCappuchino/changroup.png
new file mode 100644
index 0000000..3f89097
Binary files /dev/null and b/icons/MVCappuchino/changroup.png differ
diff --git a/icons/MVCappuchino/chart1b.png b/icons/MVCappuchino/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVCappuchino/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/chart2b.png b/icons/MVCappuchino/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVCappuchino/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/chart3b.png b/icons/MVCappuchino/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVCappuchino/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/chart4b.png b/icons/MVCappuchino/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVCappuchino/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/chart5b.png b/icons/MVCappuchino/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVCappuchino/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/chart6b.png b/icons/MVCappuchino/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVCappuchino/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/chart7.png b/icons/MVCappuchino/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVCappuchino/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/chart7b.png b/icons/MVCappuchino/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVCappuchino/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/crypted.png b/icons/MVCappuchino/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVCappuchino/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/forward.png b/icons/MVCappuchino/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVCappuchino/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/forward_sel.png b/icons/MVCappuchino/forward_sel.png
new file mode 100644
index 0000000..35c3924
Binary files /dev/null and b/icons/MVCappuchino/forward_sel.png differ
diff --git a/icons/MVCappuchino/hd.png b/icons/MVCappuchino/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVCappuchino/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/message_error.png b/icons/MVCappuchino/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVCappuchino/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/message_info.png b/icons/MVCappuchino/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVCappuchino/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/message_status.png b/icons/MVCappuchino/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVCappuchino/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/message_warning.png b/icons/MVCappuchino/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVCappuchino/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/pause.png b/icons/MVCappuchino/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVCappuchino/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/pause_sel.png b/icons/MVCappuchino/pause_sel.png
new file mode 100644
index 0000000..9be7129
Binary files /dev/null and b/icons/MVCappuchino/pause_sel.png differ
diff --git a/icons/MVCappuchino/play.png b/icons/MVCappuchino/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVCappuchino/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/play_sel.png b/icons/MVCappuchino/play_sel.png
new file mode 100644
index 0000000..62bc72a
Binary files /dev/null and b/icons/MVCappuchino/play_sel.png differ
diff --git a/icons/MVCappuchino/prev.png b/icons/MVCappuchino/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVCappuchino/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/prev_sel.png b/icons/MVCappuchino/prev_sel.png
new file mode 100644
index 0000000..7201a06
Binary files /dev/null and b/icons/MVCappuchino/prev_sel.png differ
diff --git a/icons/MVCappuchino/radio.png b/icons/MVCappuchino/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVCappuchino/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/recording.png b/icons/MVCappuchino/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVCappuchino/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/recording_cutted.png b/icons/MVCappuchino/recording_cutted.png
new file mode 100644
index 0000000..71df280
Binary files /dev/null and b/icons/MVCappuchino/recording_cutted.png differ
diff --git a/icons/MVCappuchino/recording_cutted_cur.png b/icons/MVCappuchino/recording_cutted_cur.png
new file mode 120000
index 0000000..e270866
--- /dev/null
+++ b/icons/MVCappuchino/recording_cutted_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_cutted_cur.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/recording_cutted_extra.png b/icons/MVCappuchino/recording_cutted_extra.png
new file mode 100644
index 0000000..5e78c36
Binary files /dev/null and b/icons/MVCappuchino/recording_cutted_extra.png differ
diff --git a/icons/MVCappuchino/recording_new.png b/icons/MVCappuchino/recording_new.png
new file mode 100644
index 0000000..3b8c46a
Binary files /dev/null and b/icons/MVCappuchino/recording_new.png differ
diff --git a/icons/MVCappuchino/recording_new_cur.png b/icons/MVCappuchino/recording_new_cur.png
new file mode 120000
index 0000000..7d08eda
--- /dev/null
+++ b/icons/MVCappuchino/recording_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_new_cur.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/rewind.png b/icons/MVCappuchino/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVCappuchino/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/rewind_sel.png b/icons/MVCappuchino/rewind_sel.png
new file mode 100644
index 0000000..719f88e
Binary files /dev/null and b/icons/MVCappuchino/rewind_sel.png differ
diff --git a/icons/MVCappuchino/sd.png b/icons/MVCappuchino/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVCappuchino/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/skip.png b/icons/MVCappuchino/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVCappuchino/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/skip_sel.png b/icons/MVCappuchino/skip_sel.png
new file mode 100644
index 0000000..68bfbbd
Binary files /dev/null and b/icons/MVCappuchino/skip_sel.png differ
diff --git a/icons/MVCappuchino/text_arrowturn.png b/icons/MVCappuchino/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVCappuchino/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/text_arrowturn_cur.png b/icons/MVCappuchino/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVCappuchino/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/text_arrowturn_sel.png b/icons/MVCappuchino/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVCappuchino/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/text_new.png b/icons/MVCappuchino/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVCappuchino/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/text_new_cur.png b/icons/MVCappuchino/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVCappuchino/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/text_new_sel.png b/icons/MVCappuchino/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVCappuchino/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/text_rec.png b/icons/MVCappuchino/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVCappuchino/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/text_rec_cur.png b/icons/MVCappuchino/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVCappuchino/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/text_rec_sel.png b/icons/MVCappuchino/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVCappuchino/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/text_timer_full.png b/icons/MVCappuchino/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVCappuchino/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/text_timer_full_cur.png b/icons/MVCappuchino/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVCappuchino/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/text_timer_full_sel.png b/icons/MVCappuchino/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVCappuchino/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/text_timer_partial.png b/icons/MVCappuchino/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVCappuchino/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/text_timer_partial_cur.png b/icons/MVCappuchino/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVCappuchino/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/text_timer_partial_sel.png b/icons/MVCappuchino/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVCappuchino/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/text_vps.png b/icons/MVCappuchino/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVCappuchino/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/text_vps_cur.png b/icons/MVCappuchino/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVCappuchino/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/text_vps_sel.png b/icons/MVCappuchino/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVCappuchino/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/timerActive.png b/icons/MVCappuchino/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVCappuchino/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/timerInactive.png b/icons/MVCappuchino/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVCappuchino/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/timerRecording.png b/icons/MVCappuchino/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVCappuchino/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/timer_full.png b/icons/MVCappuchino/timer_full.png
new file mode 100644
index 0000000..8c6f5cb
Binary files /dev/null and b/icons/MVCappuchino/timer_full.png differ
diff --git a/icons/MVCappuchino/timer_full_cur.png b/icons/MVCappuchino/timer_full_cur.png
new file mode 120000
index 0000000..e0225f1
--- /dev/null
+++ b/icons/MVCappuchino/timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/timer_partial.png b/icons/MVCappuchino/timer_partial.png
new file mode 100644
index 0000000..f4e7b01
Binary files /dev/null and b/icons/MVCappuchino/timer_partial.png differ
diff --git a/icons/MVCappuchino/timer_partial_cur.png b/icons/MVCappuchino/timer_partial_cur.png
new file mode 120000
index 0000000..db9e5d7
--- /dev/null
+++ b/icons/MVCappuchino/timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/topbar_timer.png b/icons/MVCappuchino/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVCappuchino/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/topbar_timerconflict_high.png b/icons/MVCappuchino/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVCappuchino/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/topbar_timerconflict_low.png b/icons/MVCappuchino/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVCappuchino/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/tv.png b/icons/MVCappuchino/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVCappuchino/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/uncrypted.png b/icons/MVCappuchino/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVCappuchino/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/unknown_asp.png b/icons/MVCappuchino/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVCappuchino/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/unknown_res.png b/icons/MVCappuchino/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVCappuchino/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVCappuchino/vps.png b/icons/MVCappuchino/vps.png
new file mode 100644
index 0000000..1fff2c9
Binary files /dev/null and b/icons/MVCappuchino/vps.png differ
diff --git a/icons/MVCappuchino/vps_cur.png b/icons/MVCappuchino/vps_cur.png
new file mode 120000
index 0000000..923472f
--- /dev/null
+++ b/icons/MVCappuchino/vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/vps_cur.png
\ No newline at end of file
diff --git a/icons/MVChocolate/1280x720.png b/icons/MVChocolate/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVChocolate/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVChocolate/1440x1080.png b/icons/MVChocolate/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVChocolate/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVChocolate/169.png b/icons/MVChocolate/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVChocolate/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVChocolate/169w.png b/icons/MVChocolate/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVChocolate/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVChocolate/1920x1080.png b/icons/MVChocolate/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVChocolate/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVChocolate/221.png b/icons/MVChocolate/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVChocolate/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVChocolate/352x576.png b/icons/MVChocolate/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVChocolate/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVChocolate/43.png b/icons/MVChocolate/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVChocolate/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVChocolate/480x576.png b/icons/MVChocolate/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVChocolate/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVChocolate/528x576.png b/icons/MVChocolate/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVChocolate/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVChocolate/544x576.png b/icons/MVChocolate/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVChocolate/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVChocolate/704x576.png b/icons/MVChocolate/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVChocolate/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVChocolate/720x576.png b/icons/MVChocolate/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVChocolate/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVChocolate/960x720.png b/icons/MVChocolate/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVChocolate/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVChocolate/blank.png b/icons/MVChocolate/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVChocolate/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVChocolate/changroup.png b/icons/MVChocolate/changroup.png
new file mode 100644
index 0000000..3f41e9e
Binary files /dev/null and b/icons/MVChocolate/changroup.png differ
diff --git a/icons/MVChocolate/chart1b.png b/icons/MVChocolate/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVChocolate/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVChocolate/chart2b.png b/icons/MVChocolate/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVChocolate/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVChocolate/chart3b.png b/icons/MVChocolate/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVChocolate/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVChocolate/chart4b.png b/icons/MVChocolate/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVChocolate/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVChocolate/chart5b.png b/icons/MVChocolate/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVChocolate/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVChocolate/chart6b.png b/icons/MVChocolate/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVChocolate/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVChocolate/chart7.png b/icons/MVChocolate/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVChocolate/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVChocolate/chart7b.png b/icons/MVChocolate/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVChocolate/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVChocolate/crypted.png b/icons/MVChocolate/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVChocolate/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVChocolate/forward.png b/icons/MVChocolate/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVChocolate/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVChocolate/forward_sel.png b/icons/MVChocolate/forward_sel.png
new file mode 100644
index 0000000..2b0f3ab
Binary files /dev/null and b/icons/MVChocolate/forward_sel.png differ
diff --git a/icons/MVChocolate/hd.png b/icons/MVChocolate/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVChocolate/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVChocolate/message_error.png b/icons/MVChocolate/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVChocolate/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVChocolate/message_info.png b/icons/MVChocolate/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVChocolate/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVChocolate/message_status.png b/icons/MVChocolate/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVChocolate/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVChocolate/message_warning.png b/icons/MVChocolate/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVChocolate/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVChocolate/pause.png b/icons/MVChocolate/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVChocolate/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVChocolate/pause_sel.png b/icons/MVChocolate/pause_sel.png
new file mode 100644
index 0000000..e3e5542
Binary files /dev/null and b/icons/MVChocolate/pause_sel.png differ
diff --git a/icons/MVChocolate/play.png b/icons/MVChocolate/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVChocolate/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVChocolate/play_sel.png b/icons/MVChocolate/play_sel.png
new file mode 100644
index 0000000..c129249
Binary files /dev/null and b/icons/MVChocolate/play_sel.png differ
diff --git a/icons/MVChocolate/prev.png b/icons/MVChocolate/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVChocolate/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVChocolate/prev_sel.png b/icons/MVChocolate/prev_sel.png
new file mode 100644
index 0000000..b6c9c97
Binary files /dev/null and b/icons/MVChocolate/prev_sel.png differ
diff --git a/icons/MVChocolate/radio.png b/icons/MVChocolate/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVChocolate/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVChocolate/recording.png b/icons/MVChocolate/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVChocolate/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVChocolate/recording_cutted.png b/icons/MVChocolate/recording_cutted.png
new file mode 100644
index 0000000..ca992ab
Binary files /dev/null and b/icons/MVChocolate/recording_cutted.png differ
diff --git a/icons/MVChocolate/recording_cutted_cur.png b/icons/MVChocolate/recording_cutted_cur.png
new file mode 120000
index 0000000..e270866
--- /dev/null
+++ b/icons/MVChocolate/recording_cutted_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_cutted_cur.png
\ No newline at end of file
diff --git a/icons/MVChocolate/recording_cutted_extra.png b/icons/MVChocolate/recording_cutted_extra.png
new file mode 100644
index 0000000..995cc80
Binary files /dev/null and b/icons/MVChocolate/recording_cutted_extra.png differ
diff --git a/icons/MVChocolate/recording_new.png b/icons/MVChocolate/recording_new.png
new file mode 100644
index 0000000..233dd6f
Binary files /dev/null and b/icons/MVChocolate/recording_new.png differ
diff --git a/icons/MVChocolate/recording_new_cur.png b/icons/MVChocolate/recording_new_cur.png
new file mode 120000
index 0000000..7d08eda
--- /dev/null
+++ b/icons/MVChocolate/recording_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_new_cur.png
\ No newline at end of file
diff --git a/icons/MVChocolate/rewind.png b/icons/MVChocolate/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVChocolate/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVChocolate/rewind_sel.png b/icons/MVChocolate/rewind_sel.png
new file mode 100644
index 0000000..6e2c6bf
Binary files /dev/null and b/icons/MVChocolate/rewind_sel.png differ
diff --git a/icons/MVChocolate/sd.png b/icons/MVChocolate/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVChocolate/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVChocolate/skip.png b/icons/MVChocolate/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVChocolate/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVChocolate/skip_sel.png b/icons/MVChocolate/skip_sel.png
new file mode 100644
index 0000000..608c45f
Binary files /dev/null and b/icons/MVChocolate/skip_sel.png differ
diff --git a/icons/MVChocolate/text_arrowturn.png b/icons/MVChocolate/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVChocolate/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVChocolate/text_arrowturn_cur.png b/icons/MVChocolate/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVChocolate/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVChocolate/text_arrowturn_sel.png b/icons/MVChocolate/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVChocolate/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVChocolate/text_new.png b/icons/MVChocolate/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVChocolate/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVChocolate/text_new_cur.png b/icons/MVChocolate/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVChocolate/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVChocolate/text_new_sel.png b/icons/MVChocolate/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVChocolate/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVChocolate/text_rec.png b/icons/MVChocolate/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVChocolate/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVChocolate/text_rec_cur.png b/icons/MVChocolate/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVChocolate/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVChocolate/text_rec_sel.png b/icons/MVChocolate/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVChocolate/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVChocolate/text_timer_full.png b/icons/MVChocolate/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVChocolate/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVChocolate/text_timer_full_cur.png b/icons/MVChocolate/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVChocolate/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVChocolate/text_timer_full_sel.png b/icons/MVChocolate/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVChocolate/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVChocolate/text_timer_partial.png b/icons/MVChocolate/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVChocolate/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVChocolate/text_timer_partial_cur.png b/icons/MVChocolate/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVChocolate/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVChocolate/text_timer_partial_sel.png b/icons/MVChocolate/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVChocolate/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVChocolate/text_vps.png b/icons/MVChocolate/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVChocolate/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVChocolate/text_vps_cur.png b/icons/MVChocolate/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVChocolate/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVChocolate/text_vps_sel.png b/icons/MVChocolate/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVChocolate/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVChocolate/timerActive.png b/icons/MVChocolate/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVChocolate/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVChocolate/timerInactive.png b/icons/MVChocolate/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVChocolate/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVChocolate/timerRecording.png b/icons/MVChocolate/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVChocolate/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVChocolate/timer_full.png b/icons/MVChocolate/timer_full.png
new file mode 100644
index 0000000..cf895c8
Binary files /dev/null and b/icons/MVChocolate/timer_full.png differ
diff --git a/icons/MVChocolate/timer_full_cur.png b/icons/MVChocolate/timer_full_cur.png
new file mode 120000
index 0000000..e0225f1
--- /dev/null
+++ b/icons/MVChocolate/timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVChocolate/timer_partial.png b/icons/MVChocolate/timer_partial.png
new file mode 100644
index 0000000..c705bf0
Binary files /dev/null and b/icons/MVChocolate/timer_partial.png differ
diff --git a/icons/MVChocolate/timer_partial_cur.png b/icons/MVChocolate/timer_partial_cur.png
new file mode 120000
index 0000000..db9e5d7
--- /dev/null
+++ b/icons/MVChocolate/timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVChocolate/topbar_timer.png b/icons/MVChocolate/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVChocolate/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVChocolate/topbar_timerconflict_high.png b/icons/MVChocolate/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVChocolate/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVChocolate/topbar_timerconflict_low.png b/icons/MVChocolate/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVChocolate/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVChocolate/tv.png b/icons/MVChocolate/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVChocolate/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVChocolate/uncrypted.png b/icons/MVChocolate/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVChocolate/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVChocolate/unknown_asp.png b/icons/MVChocolate/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVChocolate/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVChocolate/unknown_res.png b/icons/MVChocolate/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVChocolate/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVChocolate/vps.png b/icons/MVChocolate/vps.png
new file mode 100644
index 0000000..dd3fef0
Binary files /dev/null and b/icons/MVChocolate/vps.png differ
diff --git a/icons/MVChocolate/vps_cur.png b/icons/MVChocolate/vps_cur.png
new file mode 120000
index 0000000..923472f
--- /dev/null
+++ b/icons/MVChocolate/vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/vps_cur.png
\ No newline at end of file
diff --git a/icons/MVCyan/1280x720.png b/icons/MVCyan/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVCyan/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVCyan/1440x1080.png b/icons/MVCyan/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVCyan/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVCyan/169.png b/icons/MVCyan/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVCyan/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVCyan/169w.png b/icons/MVCyan/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVCyan/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVCyan/1920x1080.png b/icons/MVCyan/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVCyan/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVCyan/221.png b/icons/MVCyan/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVCyan/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVCyan/352x576.png b/icons/MVCyan/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVCyan/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVCyan/43.png b/icons/MVCyan/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVCyan/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVCyan/480x576.png b/icons/MVCyan/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVCyan/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVCyan/528x576.png b/icons/MVCyan/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVCyan/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVCyan/544x576.png b/icons/MVCyan/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVCyan/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVCyan/704x576.png b/icons/MVCyan/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVCyan/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVCyan/720x576.png b/icons/MVCyan/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVCyan/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVCyan/960x720.png b/icons/MVCyan/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVCyan/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVCyan/blank.png b/icons/MVCyan/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVCyan/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVCyan/changroup.png b/icons/MVCyan/changroup.png
new file mode 100644
index 0000000..f7f8e1e
Binary files /dev/null and b/icons/MVCyan/changroup.png differ
diff --git a/icons/MVCyan/chart1b.png b/icons/MVCyan/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVCyan/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVCyan/chart2b.png b/icons/MVCyan/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVCyan/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVCyan/chart3b.png b/icons/MVCyan/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVCyan/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVCyan/chart4b.png b/icons/MVCyan/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVCyan/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVCyan/chart5b.png b/icons/MVCyan/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVCyan/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVCyan/chart6b.png b/icons/MVCyan/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVCyan/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVCyan/chart7.png b/icons/MVCyan/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVCyan/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVCyan/chart7b.png b/icons/MVCyan/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVCyan/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVCyan/crypted.png b/icons/MVCyan/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVCyan/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVCyan/forward.png b/icons/MVCyan/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVCyan/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVCyan/forward_sel.png b/icons/MVCyan/forward_sel.png
new file mode 100644
index 0000000..6c92813
Binary files /dev/null and b/icons/MVCyan/forward_sel.png differ
diff --git a/icons/MVCyan/hd.png b/icons/MVCyan/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVCyan/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVCyan/message_error.png b/icons/MVCyan/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVCyan/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVCyan/message_info.png b/icons/MVCyan/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVCyan/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVCyan/message_status.png b/icons/MVCyan/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVCyan/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVCyan/message_warning.png b/icons/MVCyan/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVCyan/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVCyan/pause.png b/icons/MVCyan/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVCyan/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVCyan/pause_sel.png b/icons/MVCyan/pause_sel.png
new file mode 100644
index 0000000..151dbed
Binary files /dev/null and b/icons/MVCyan/pause_sel.png differ
diff --git a/icons/MVCyan/play.png b/icons/MVCyan/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVCyan/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVCyan/play_sel.png b/icons/MVCyan/play_sel.png
new file mode 100644
index 0000000..5405387
Binary files /dev/null and b/icons/MVCyan/play_sel.png differ
diff --git a/icons/MVCyan/prev.png b/icons/MVCyan/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVCyan/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVCyan/prev_sel.png b/icons/MVCyan/prev_sel.png
new file mode 100644
index 0000000..48b3661
Binary files /dev/null and b/icons/MVCyan/prev_sel.png differ
diff --git a/icons/MVCyan/radio.png b/icons/MVCyan/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVCyan/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVCyan/recording.png b/icons/MVCyan/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVCyan/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVCyan/recording_cutted.png b/icons/MVCyan/recording_cutted.png
new file mode 100644
index 0000000..c4eea18
Binary files /dev/null and b/icons/MVCyan/recording_cutted.png differ
diff --git a/icons/MVCyan/recording_cutted_cur.png b/icons/MVCyan/recording_cutted_cur.png
new file mode 120000
index 0000000..e270866
--- /dev/null
+++ b/icons/MVCyan/recording_cutted_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_cutted_cur.png
\ No newline at end of file
diff --git a/icons/MVCyan/recording_cutted_extra.png b/icons/MVCyan/recording_cutted_extra.png
new file mode 100644
index 0000000..b089cba
Binary files /dev/null and b/icons/MVCyan/recording_cutted_extra.png differ
diff --git a/icons/MVCyan/recording_new.png b/icons/MVCyan/recording_new.png
new file mode 100644
index 0000000..c446d8c
Binary files /dev/null and b/icons/MVCyan/recording_new.png differ
diff --git a/icons/MVCyan/recording_new_cur.png b/icons/MVCyan/recording_new_cur.png
new file mode 120000
index 0000000..7d08eda
--- /dev/null
+++ b/icons/MVCyan/recording_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_new_cur.png
\ No newline at end of file
diff --git a/icons/MVCyan/rewind.png b/icons/MVCyan/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVCyan/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVCyan/rewind_sel.png b/icons/MVCyan/rewind_sel.png
new file mode 100644
index 0000000..1f8b88c
Binary files /dev/null and b/icons/MVCyan/rewind_sel.png differ
diff --git a/icons/MVCyan/sd.png b/icons/MVCyan/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVCyan/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVCyan/skip.png b/icons/MVCyan/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVCyan/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVCyan/skip_sel.png b/icons/MVCyan/skip_sel.png
new file mode 100644
index 0000000..7ccc1b6
Binary files /dev/null and b/icons/MVCyan/skip_sel.png differ
diff --git a/icons/MVCyan/text_arrowturn.png b/icons/MVCyan/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVCyan/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVCyan/text_arrowturn_cur.png b/icons/MVCyan/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVCyan/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVCyan/text_arrowturn_sel.png b/icons/MVCyan/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVCyan/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVCyan/text_new.png b/icons/MVCyan/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVCyan/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVCyan/text_new_cur.png b/icons/MVCyan/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVCyan/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVCyan/text_new_sel.png b/icons/MVCyan/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVCyan/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVCyan/text_rec.png b/icons/MVCyan/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVCyan/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVCyan/text_rec_cur.png b/icons/MVCyan/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVCyan/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVCyan/text_rec_sel.png b/icons/MVCyan/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVCyan/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVCyan/text_timer_full.png b/icons/MVCyan/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVCyan/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVCyan/text_timer_full_cur.png b/icons/MVCyan/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVCyan/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVCyan/text_timer_full_sel.png b/icons/MVCyan/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVCyan/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVCyan/text_timer_partial.png b/icons/MVCyan/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVCyan/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVCyan/text_timer_partial_cur.png b/icons/MVCyan/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVCyan/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVCyan/text_timer_partial_sel.png b/icons/MVCyan/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVCyan/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVCyan/text_vps.png b/icons/MVCyan/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVCyan/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVCyan/text_vps_cur.png b/icons/MVCyan/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVCyan/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVCyan/text_vps_sel.png b/icons/MVCyan/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVCyan/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVCyan/timerActive.png b/icons/MVCyan/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVCyan/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVCyan/timerInactive.png b/icons/MVCyan/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVCyan/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVCyan/timerRecording.png b/icons/MVCyan/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVCyan/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVCyan/timer_full.png b/icons/MVCyan/timer_full.png
new file mode 100644
index 0000000..fd56a85
Binary files /dev/null and b/icons/MVCyan/timer_full.png differ
diff --git a/icons/MVCyan/timer_full_cur.png b/icons/MVCyan/timer_full_cur.png
new file mode 120000
index 0000000..e0225f1
--- /dev/null
+++ b/icons/MVCyan/timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVCyan/timer_partial.png b/icons/MVCyan/timer_partial.png
new file mode 100644
index 0000000..41fd05a
Binary files /dev/null and b/icons/MVCyan/timer_partial.png differ
diff --git a/icons/MVCyan/timer_partial_cur.png b/icons/MVCyan/timer_partial_cur.png
new file mode 120000
index 0000000..db9e5d7
--- /dev/null
+++ b/icons/MVCyan/timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVCyan/topbar_timer.png b/icons/MVCyan/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVCyan/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVCyan/topbar_timerconflict_high.png b/icons/MVCyan/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVCyan/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVCyan/topbar_timerconflict_low.png b/icons/MVCyan/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVCyan/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVCyan/tv.png b/icons/MVCyan/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVCyan/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVCyan/uncrypted.png b/icons/MVCyan/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVCyan/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVCyan/unknown_asp.png b/icons/MVCyan/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVCyan/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVCyan/unknown_res.png b/icons/MVCyan/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVCyan/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVCyan/vps.png b/icons/MVCyan/vps.png
new file mode 100644
index 0000000..d79cee4
Binary files /dev/null and b/icons/MVCyan/vps.png differ
diff --git a/icons/MVCyan/vps_cur.png b/icons/MVCyan/vps_cur.png
new file mode 120000
index 0000000..923472f
--- /dev/null
+++ b/icons/MVCyan/vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/vps_cur.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/1280x720.png b/icons/MVDeepBlue/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVDeepBlue/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/1440x1080.png b/icons/MVDeepBlue/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVDeepBlue/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/169.png b/icons/MVDeepBlue/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVDeepBlue/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/169w.png b/icons/MVDeepBlue/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVDeepBlue/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/1920x1080.png b/icons/MVDeepBlue/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVDeepBlue/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/221.png b/icons/MVDeepBlue/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVDeepBlue/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/352x576.png b/icons/MVDeepBlue/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVDeepBlue/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/43.png b/icons/MVDeepBlue/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVDeepBlue/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/480x576.png b/icons/MVDeepBlue/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVDeepBlue/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/528x576.png b/icons/MVDeepBlue/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVDeepBlue/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/544x576.png b/icons/MVDeepBlue/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVDeepBlue/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/704x576.png b/icons/MVDeepBlue/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVDeepBlue/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/720x576.png b/icons/MVDeepBlue/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVDeepBlue/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/960x720.png b/icons/MVDeepBlue/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVDeepBlue/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/blank.png b/icons/MVDeepBlue/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVDeepBlue/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/changroup.png b/icons/MVDeepBlue/changroup.png
new file mode 100644
index 0000000..c2954a0
Binary files /dev/null and b/icons/MVDeepBlue/changroup.png differ
diff --git a/icons/MVDeepBlue/chart1b.png b/icons/MVDeepBlue/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVDeepBlue/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/chart2b.png b/icons/MVDeepBlue/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVDeepBlue/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/chart3b.png b/icons/MVDeepBlue/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVDeepBlue/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/chart4b.png b/icons/MVDeepBlue/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVDeepBlue/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/chart5b.png b/icons/MVDeepBlue/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVDeepBlue/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/chart6b.png b/icons/MVDeepBlue/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVDeepBlue/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/chart7.png b/icons/MVDeepBlue/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVDeepBlue/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/chart7b.png b/icons/MVDeepBlue/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVDeepBlue/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/crypted.png b/icons/MVDeepBlue/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVDeepBlue/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/forward.png b/icons/MVDeepBlue/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVDeepBlue/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/forward_sel.png b/icons/MVDeepBlue/forward_sel.png
new file mode 100644
index 0000000..81676e5
Binary files /dev/null and b/icons/MVDeepBlue/forward_sel.png differ
diff --git a/icons/MVDeepBlue/hd.png b/icons/MVDeepBlue/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVDeepBlue/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/message_error.png b/icons/MVDeepBlue/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVDeepBlue/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/message_info.png b/icons/MVDeepBlue/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVDeepBlue/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/message_status.png b/icons/MVDeepBlue/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVDeepBlue/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/message_warning.png b/icons/MVDeepBlue/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVDeepBlue/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/pause.png b/icons/MVDeepBlue/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVDeepBlue/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/pause_sel.png b/icons/MVDeepBlue/pause_sel.png
new file mode 100644
index 0000000..3c3002a
Binary files /dev/null and b/icons/MVDeepBlue/pause_sel.png differ
diff --git a/icons/MVDeepBlue/play.png b/icons/MVDeepBlue/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVDeepBlue/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/play_sel.png b/icons/MVDeepBlue/play_sel.png
new file mode 100644
index 0000000..9fd289f
Binary files /dev/null and b/icons/MVDeepBlue/play_sel.png differ
diff --git a/icons/MVDeepBlue/prev.png b/icons/MVDeepBlue/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVDeepBlue/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/prev_sel.png b/icons/MVDeepBlue/prev_sel.png
new file mode 100644
index 0000000..071334f
Binary files /dev/null and b/icons/MVDeepBlue/prev_sel.png differ
diff --git a/icons/MVDeepBlue/radio.png b/icons/MVDeepBlue/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVDeepBlue/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/recording.png b/icons/MVDeepBlue/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVDeepBlue/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/recording_cutted.png b/icons/MVDeepBlue/recording_cutted.png
new file mode 100644
index 0000000..51a53ec
Binary files /dev/null and b/icons/MVDeepBlue/recording_cutted.png differ
diff --git a/icons/MVDeepBlue/recording_cutted_cur.png b/icons/MVDeepBlue/recording_cutted_cur.png
new file mode 100644
index 0000000..e15075f
Binary files /dev/null and b/icons/MVDeepBlue/recording_cutted_cur.png differ
diff --git a/icons/MVDeepBlue/recording_cutted_extra.png b/icons/MVDeepBlue/recording_cutted_extra.png
new file mode 100644
index 0000000..d3ce629
Binary files /dev/null and b/icons/MVDeepBlue/recording_cutted_extra.png differ
diff --git a/icons/MVDeepBlue/recording_new.png b/icons/MVDeepBlue/recording_new.png
new file mode 100644
index 0000000..d118704
Binary files /dev/null and b/icons/MVDeepBlue/recording_new.png differ
diff --git a/icons/MVDeepBlue/recording_new_cur.png b/icons/MVDeepBlue/recording_new_cur.png
new file mode 100644
index 0000000..3f53e0d
Binary files /dev/null and b/icons/MVDeepBlue/recording_new_cur.png differ
diff --git a/icons/MVDeepBlue/rewind.png b/icons/MVDeepBlue/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVDeepBlue/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/rewind_sel.png b/icons/MVDeepBlue/rewind_sel.png
new file mode 100644
index 0000000..29e7756
Binary files /dev/null and b/icons/MVDeepBlue/rewind_sel.png differ
diff --git a/icons/MVDeepBlue/sd.png b/icons/MVDeepBlue/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVDeepBlue/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/skip.png b/icons/MVDeepBlue/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVDeepBlue/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/skip_sel.png b/icons/MVDeepBlue/skip_sel.png
new file mode 100644
index 0000000..251f0f3
Binary files /dev/null and b/icons/MVDeepBlue/skip_sel.png differ
diff --git a/icons/MVDeepBlue/text_arrowturn.png b/icons/MVDeepBlue/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVDeepBlue/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/text_arrowturn_cur.png b/icons/MVDeepBlue/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVDeepBlue/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/text_arrowturn_sel.png b/icons/MVDeepBlue/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVDeepBlue/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/text_new.png b/icons/MVDeepBlue/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVDeepBlue/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/text_new_cur.png b/icons/MVDeepBlue/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVDeepBlue/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/text_new_sel.png b/icons/MVDeepBlue/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVDeepBlue/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/text_rec.png b/icons/MVDeepBlue/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVDeepBlue/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/text_rec_cur.png b/icons/MVDeepBlue/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVDeepBlue/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/text_rec_sel.png b/icons/MVDeepBlue/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVDeepBlue/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/text_timer_full.png b/icons/MVDeepBlue/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVDeepBlue/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/text_timer_full_cur.png b/icons/MVDeepBlue/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVDeepBlue/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/text_timer_full_sel.png b/icons/MVDeepBlue/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVDeepBlue/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/text_timer_partial.png b/icons/MVDeepBlue/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVDeepBlue/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/text_timer_partial_cur.png b/icons/MVDeepBlue/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVDeepBlue/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/text_timer_partial_sel.png b/icons/MVDeepBlue/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVDeepBlue/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/text_vps.png b/icons/MVDeepBlue/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVDeepBlue/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/text_vps_cur.png b/icons/MVDeepBlue/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVDeepBlue/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/text_vps_sel.png b/icons/MVDeepBlue/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVDeepBlue/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/timerActive.png b/icons/MVDeepBlue/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVDeepBlue/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/timerInactive.png b/icons/MVDeepBlue/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVDeepBlue/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/timerRecording.png b/icons/MVDeepBlue/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVDeepBlue/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/timer_full.png b/icons/MVDeepBlue/timer_full.png
new file mode 100644
index 0000000..a352048
Binary files /dev/null and b/icons/MVDeepBlue/timer_full.png differ
diff --git a/icons/MVDeepBlue/timer_full_cur.png b/icons/MVDeepBlue/timer_full_cur.png
new file mode 100644
index 0000000..44ffc44
Binary files /dev/null and b/icons/MVDeepBlue/timer_full_cur.png differ
diff --git a/icons/MVDeepBlue/timer_partial.png b/icons/MVDeepBlue/timer_partial.png
new file mode 100644
index 0000000..5e82f89
Binary files /dev/null and b/icons/MVDeepBlue/timer_partial.png differ
diff --git a/icons/MVDeepBlue/timer_partial_cur.png b/icons/MVDeepBlue/timer_partial_cur.png
new file mode 100644
index 0000000..c3a1d00
Binary files /dev/null and b/icons/MVDeepBlue/timer_partial_cur.png differ
diff --git a/icons/MVDeepBlue/topbar_timer.png b/icons/MVDeepBlue/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVDeepBlue/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/topbar_timerconflict_high.png b/icons/MVDeepBlue/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVDeepBlue/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/topbar_timerconflict_low.png b/icons/MVDeepBlue/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVDeepBlue/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/tv.png b/icons/MVDeepBlue/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVDeepBlue/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/uncrypted.png b/icons/MVDeepBlue/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVDeepBlue/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/unknown_asp.png b/icons/MVDeepBlue/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVDeepBlue/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/unknown_res.png b/icons/MVDeepBlue/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVDeepBlue/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVDeepBlue/vps.png b/icons/MVDeepBlue/vps.png
new file mode 100644
index 0000000..633e090
Binary files /dev/null and b/icons/MVDeepBlue/vps.png differ
diff --git a/icons/MVDeepBlue/vps_cur.png b/icons/MVDeepBlue/vps_cur.png
new file mode 100644
index 0000000..b822ba8
Binary files /dev/null and b/icons/MVDeepBlue/vps_cur.png differ
diff --git a/icons/MVFog/1280x720.png b/icons/MVFog/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVFog/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVFog/1440x1080.png b/icons/MVFog/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVFog/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVFog/169.png b/icons/MVFog/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVFog/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVFog/169w.png b/icons/MVFog/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVFog/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVFog/1920x1080.png b/icons/MVFog/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVFog/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVFog/221.png b/icons/MVFog/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVFog/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVFog/352x576.png b/icons/MVFog/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVFog/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVFog/43.png b/icons/MVFog/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVFog/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVFog/480x576.png b/icons/MVFog/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVFog/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVFog/528x576.png b/icons/MVFog/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVFog/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVFog/544x576.png b/icons/MVFog/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVFog/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVFog/704x576.png b/icons/MVFog/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVFog/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVFog/720x576.png b/icons/MVFog/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVFog/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVFog/960x720.png b/icons/MVFog/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVFog/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVFog/blank.png b/icons/MVFog/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVFog/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVFog/changroup.png b/icons/MVFog/changroup.png
new file mode 100644
index 0000000..915f2c7
Binary files /dev/null and b/icons/MVFog/changroup.png differ
diff --git a/icons/MVFog/chart1b.png b/icons/MVFog/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVFog/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVFog/chart2b.png b/icons/MVFog/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVFog/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVFog/chart3b.png b/icons/MVFog/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVFog/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVFog/chart4b.png b/icons/MVFog/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVFog/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVFog/chart5b.png b/icons/MVFog/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVFog/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVFog/chart6b.png b/icons/MVFog/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVFog/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVFog/chart7.png b/icons/MVFog/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVFog/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVFog/chart7b.png b/icons/MVFog/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVFog/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVFog/crypted.png b/icons/MVFog/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVFog/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVFog/forward.png b/icons/MVFog/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVFog/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVFog/forward_sel.png b/icons/MVFog/forward_sel.png
new file mode 100644
index 0000000..6695459
Binary files /dev/null and b/icons/MVFog/forward_sel.png differ
diff --git a/icons/MVFog/hd.png b/icons/MVFog/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVFog/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVFog/message_error.png b/icons/MVFog/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVFog/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVFog/message_info.png b/icons/MVFog/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVFog/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVFog/message_status.png b/icons/MVFog/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVFog/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVFog/message_warning.png b/icons/MVFog/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVFog/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVFog/pause.png b/icons/MVFog/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVFog/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVFog/pause_sel.png b/icons/MVFog/pause_sel.png
new file mode 100644
index 0000000..f7853c1
Binary files /dev/null and b/icons/MVFog/pause_sel.png differ
diff --git a/icons/MVFog/play.png b/icons/MVFog/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVFog/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVFog/play_sel.png b/icons/MVFog/play_sel.png
new file mode 100644
index 0000000..428906e
Binary files /dev/null and b/icons/MVFog/play_sel.png differ
diff --git a/icons/MVFog/prev.png b/icons/MVFog/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVFog/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVFog/prev_sel.png b/icons/MVFog/prev_sel.png
new file mode 100644
index 0000000..5c1a390
Binary files /dev/null and b/icons/MVFog/prev_sel.png differ
diff --git a/icons/MVFog/radio.png b/icons/MVFog/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVFog/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVFog/recording.png b/icons/MVFog/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVFog/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVFog/recording_cutted.png b/icons/MVFog/recording_cutted.png
new file mode 100644
index 0000000..15ffe0a
Binary files /dev/null and b/icons/MVFog/recording_cutted.png differ
diff --git a/icons/MVFog/recording_cutted_cur.png b/icons/MVFog/recording_cutted_cur.png
new file mode 100644
index 0000000..9171d5c
Binary files /dev/null and b/icons/MVFog/recording_cutted_cur.png differ
diff --git a/icons/MVFog/recording_cutted_extra.png b/icons/MVFog/recording_cutted_extra.png
new file mode 100644
index 0000000..9f5e394
Binary files /dev/null and b/icons/MVFog/recording_cutted_extra.png differ
diff --git a/icons/MVFog/recording_new.png b/icons/MVFog/recording_new.png
new file mode 100644
index 0000000..4051afd
Binary files /dev/null and b/icons/MVFog/recording_new.png differ
diff --git a/icons/MVFog/recording_new_cur.png b/icons/MVFog/recording_new_cur.png
new file mode 100644
index 0000000..9ba1f79
Binary files /dev/null and b/icons/MVFog/recording_new_cur.png differ
diff --git a/icons/MVFog/rewind.png b/icons/MVFog/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVFog/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVFog/rewind_sel.png b/icons/MVFog/rewind_sel.png
new file mode 100644
index 0000000..cd0f46f
Binary files /dev/null and b/icons/MVFog/rewind_sel.png differ
diff --git a/icons/MVFog/sd.png b/icons/MVFog/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVFog/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVFog/skip.png b/icons/MVFog/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVFog/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVFog/skip_sel.png b/icons/MVFog/skip_sel.png
new file mode 100644
index 0000000..b14717f
Binary files /dev/null and b/icons/MVFog/skip_sel.png differ
diff --git a/icons/MVFog/text_arrowturn.png b/icons/MVFog/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVFog/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVFog/text_arrowturn_cur.png b/icons/MVFog/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVFog/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVFog/text_arrowturn_sel.png b/icons/MVFog/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVFog/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVFog/text_new.png b/icons/MVFog/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVFog/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVFog/text_new_cur.png b/icons/MVFog/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVFog/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVFog/text_new_sel.png b/icons/MVFog/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVFog/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVFog/text_rec.png b/icons/MVFog/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVFog/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVFog/text_rec_cur.png b/icons/MVFog/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVFog/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVFog/text_rec_sel.png b/icons/MVFog/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVFog/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVFog/text_timer_full.png b/icons/MVFog/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVFog/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVFog/text_timer_full_cur.png b/icons/MVFog/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVFog/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVFog/text_timer_full_sel.png b/icons/MVFog/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVFog/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVFog/text_timer_partial.png b/icons/MVFog/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVFog/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVFog/text_timer_partial_cur.png b/icons/MVFog/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVFog/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVFog/text_timer_partial_sel.png b/icons/MVFog/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVFog/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVFog/text_vps.png b/icons/MVFog/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVFog/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVFog/text_vps_cur.png b/icons/MVFog/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVFog/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVFog/text_vps_sel.png b/icons/MVFog/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVFog/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVFog/timerActive.png b/icons/MVFog/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVFog/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVFog/timerInactive.png b/icons/MVFog/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVFog/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVFog/timerRecording.png b/icons/MVFog/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVFog/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVFog/timer_full.png b/icons/MVFog/timer_full.png
new file mode 100644
index 0000000..3a62e79
Binary files /dev/null and b/icons/MVFog/timer_full.png differ
diff --git a/icons/MVFog/timer_full_cur.png b/icons/MVFog/timer_full_cur.png
new file mode 100644
index 0000000..7612be4
Binary files /dev/null and b/icons/MVFog/timer_full_cur.png differ
diff --git a/icons/MVFog/timer_partial.png b/icons/MVFog/timer_partial.png
new file mode 100644
index 0000000..39538a7
Binary files /dev/null and b/icons/MVFog/timer_partial.png differ
diff --git a/icons/MVFog/timer_partial_cur.png b/icons/MVFog/timer_partial_cur.png
new file mode 100644
index 0000000..7692638
Binary files /dev/null and b/icons/MVFog/timer_partial_cur.png differ
diff --git a/icons/MVFog/topbar_timer.png b/icons/MVFog/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVFog/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVFog/topbar_timerconflict_high.png b/icons/MVFog/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVFog/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVFog/topbar_timerconflict_low.png b/icons/MVFog/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVFog/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVFog/tv.png b/icons/MVFog/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVFog/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVFog/uncrypted.png b/icons/MVFog/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVFog/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVFog/unknown_asp.png b/icons/MVFog/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVFog/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVFog/unknown_res.png b/icons/MVFog/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVFog/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVFog/vps.png b/icons/MVFog/vps.png
new file mode 100644
index 0000000..409c4f8
Binary files /dev/null and b/icons/MVFog/vps.png differ
diff --git a/icons/MVFog/vps_cur.png b/icons/MVFog/vps_cur.png
new file mode 100644
index 0000000..55c7261
Binary files /dev/null and b/icons/MVFog/vps_cur.png differ
diff --git a/icons/MVGrapefruit/1280x720.png b/icons/MVGrapefruit/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVGrapefruit/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/1440x1080.png b/icons/MVGrapefruit/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVGrapefruit/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/169.png b/icons/MVGrapefruit/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVGrapefruit/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/169w.png b/icons/MVGrapefruit/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVGrapefruit/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/1920x1080.png b/icons/MVGrapefruit/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVGrapefruit/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/221.png b/icons/MVGrapefruit/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVGrapefruit/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/352x576.png b/icons/MVGrapefruit/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVGrapefruit/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/43.png b/icons/MVGrapefruit/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVGrapefruit/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/480x576.png b/icons/MVGrapefruit/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVGrapefruit/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/528x576.png b/icons/MVGrapefruit/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVGrapefruit/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/544x576.png b/icons/MVGrapefruit/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVGrapefruit/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/704x576.png b/icons/MVGrapefruit/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVGrapefruit/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/720x576.png b/icons/MVGrapefruit/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVGrapefruit/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/960x720.png b/icons/MVGrapefruit/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVGrapefruit/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/blank.png b/icons/MVGrapefruit/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVGrapefruit/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/changroup.png b/icons/MVGrapefruit/changroup.png
new file mode 100644
index 0000000..ab21403
Binary files /dev/null and b/icons/MVGrapefruit/changroup.png differ
diff --git a/icons/MVGrapefruit/chart1b.png b/icons/MVGrapefruit/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVGrapefruit/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/chart2b.png b/icons/MVGrapefruit/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVGrapefruit/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/chart3b.png b/icons/MVGrapefruit/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVGrapefruit/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/chart4b.png b/icons/MVGrapefruit/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVGrapefruit/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/chart5b.png b/icons/MVGrapefruit/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVGrapefruit/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/chart6b.png b/icons/MVGrapefruit/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVGrapefruit/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/chart7.png b/icons/MVGrapefruit/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVGrapefruit/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/chart7b.png b/icons/MVGrapefruit/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVGrapefruit/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/crypted.png b/icons/MVGrapefruit/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVGrapefruit/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/forward.png b/icons/MVGrapefruit/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVGrapefruit/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/forward_sel.png b/icons/MVGrapefruit/forward_sel.png
new file mode 100644
index 0000000..4234659
Binary files /dev/null and b/icons/MVGrapefruit/forward_sel.png differ
diff --git a/icons/MVGrapefruit/hd.png b/icons/MVGrapefruit/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVGrapefruit/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/message_error.png b/icons/MVGrapefruit/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVGrapefruit/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/message_info.png b/icons/MVGrapefruit/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVGrapefruit/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/message_status.png b/icons/MVGrapefruit/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVGrapefruit/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/message_warning.png b/icons/MVGrapefruit/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVGrapefruit/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/pause.png b/icons/MVGrapefruit/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVGrapefruit/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/pause_sel.png b/icons/MVGrapefruit/pause_sel.png
new file mode 100644
index 0000000..d6508d4
Binary files /dev/null and b/icons/MVGrapefruit/pause_sel.png differ
diff --git a/icons/MVGrapefruit/play.png b/icons/MVGrapefruit/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVGrapefruit/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/play_sel.png b/icons/MVGrapefruit/play_sel.png
new file mode 100644
index 0000000..9b2fc35
Binary files /dev/null and b/icons/MVGrapefruit/play_sel.png differ
diff --git a/icons/MVGrapefruit/prev.png b/icons/MVGrapefruit/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVGrapefruit/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/prev_sel.png b/icons/MVGrapefruit/prev_sel.png
new file mode 100644
index 0000000..4b1c3ba
Binary files /dev/null and b/icons/MVGrapefruit/prev_sel.png differ
diff --git a/icons/MVGrapefruit/radio.png b/icons/MVGrapefruit/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVGrapefruit/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/recording.png b/icons/MVGrapefruit/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVGrapefruit/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/recording_cutted.png b/icons/MVGrapefruit/recording_cutted.png
new file mode 100644
index 0000000..e7b9293
Binary files /dev/null and b/icons/MVGrapefruit/recording_cutted.png differ
diff --git a/icons/MVGrapefruit/recording_cutted_cur.png b/icons/MVGrapefruit/recording_cutted_cur.png
new file mode 120000
index 0000000..e270866
--- /dev/null
+++ b/icons/MVGrapefruit/recording_cutted_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_cutted_cur.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/recording_cutted_extra.png b/icons/MVGrapefruit/recording_cutted_extra.png
new file mode 100644
index 0000000..a653eee
Binary files /dev/null and b/icons/MVGrapefruit/recording_cutted_extra.png differ
diff --git a/icons/MVGrapefruit/recording_new.png b/icons/MVGrapefruit/recording_new.png
new file mode 100644
index 0000000..171e33e
Binary files /dev/null and b/icons/MVGrapefruit/recording_new.png differ
diff --git a/icons/MVGrapefruit/recording_new_cur.png b/icons/MVGrapefruit/recording_new_cur.png
new file mode 120000
index 0000000..7d08eda
--- /dev/null
+++ b/icons/MVGrapefruit/recording_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_new_cur.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/rewind.png b/icons/MVGrapefruit/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVGrapefruit/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/rewind_sel.png b/icons/MVGrapefruit/rewind_sel.png
new file mode 100644
index 0000000..8827977
Binary files /dev/null and b/icons/MVGrapefruit/rewind_sel.png differ
diff --git a/icons/MVGrapefruit/sd.png b/icons/MVGrapefruit/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVGrapefruit/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/skip.png b/icons/MVGrapefruit/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVGrapefruit/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/skip_sel.png b/icons/MVGrapefruit/skip_sel.png
new file mode 100644
index 0000000..c789bbe
Binary files /dev/null and b/icons/MVGrapefruit/skip_sel.png differ
diff --git a/icons/MVGrapefruit/text_arrowturn.png b/icons/MVGrapefruit/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVGrapefruit/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/text_arrowturn_cur.png b/icons/MVGrapefruit/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVGrapefruit/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/text_arrowturn_sel.png b/icons/MVGrapefruit/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVGrapefruit/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/text_new.png b/icons/MVGrapefruit/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVGrapefruit/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/text_new_cur.png b/icons/MVGrapefruit/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVGrapefruit/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/text_new_sel.png b/icons/MVGrapefruit/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVGrapefruit/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/text_rec.png b/icons/MVGrapefruit/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVGrapefruit/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/text_rec_cur.png b/icons/MVGrapefruit/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVGrapefruit/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/text_rec_sel.png b/icons/MVGrapefruit/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVGrapefruit/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/text_timer_full.png b/icons/MVGrapefruit/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVGrapefruit/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/text_timer_full_cur.png b/icons/MVGrapefruit/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVGrapefruit/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/text_timer_full_sel.png b/icons/MVGrapefruit/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVGrapefruit/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/text_timer_partial.png b/icons/MVGrapefruit/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVGrapefruit/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/text_timer_partial_cur.png b/icons/MVGrapefruit/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVGrapefruit/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/text_timer_partial_sel.png b/icons/MVGrapefruit/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVGrapefruit/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/text_vps.png b/icons/MVGrapefruit/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVGrapefruit/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/text_vps_cur.png b/icons/MVGrapefruit/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVGrapefruit/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/text_vps_sel.png b/icons/MVGrapefruit/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVGrapefruit/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/timerActive.png b/icons/MVGrapefruit/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVGrapefruit/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/timerInactive.png b/icons/MVGrapefruit/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVGrapefruit/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/timerRecording.png b/icons/MVGrapefruit/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVGrapefruit/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/timer_full.png b/icons/MVGrapefruit/timer_full.png
new file mode 100644
index 0000000..028c023
Binary files /dev/null and b/icons/MVGrapefruit/timer_full.png differ
diff --git a/icons/MVGrapefruit/timer_full_cur.png b/icons/MVGrapefruit/timer_full_cur.png
new file mode 120000
index 0000000..e0225f1
--- /dev/null
+++ b/icons/MVGrapefruit/timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/timer_partial.png b/icons/MVGrapefruit/timer_partial.png
new file mode 100644
index 0000000..2542a56
Binary files /dev/null and b/icons/MVGrapefruit/timer_partial.png differ
diff --git a/icons/MVGrapefruit/timer_partial_cur.png b/icons/MVGrapefruit/timer_partial_cur.png
new file mode 120000
index 0000000..db9e5d7
--- /dev/null
+++ b/icons/MVGrapefruit/timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/topbar_timer.png b/icons/MVGrapefruit/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVGrapefruit/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/topbar_timerconflict_high.png b/icons/MVGrapefruit/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVGrapefruit/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/topbar_timerconflict_low.png b/icons/MVGrapefruit/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVGrapefruit/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/tv.png b/icons/MVGrapefruit/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVGrapefruit/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/uncrypted.png b/icons/MVGrapefruit/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVGrapefruit/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/unknown_asp.png b/icons/MVGrapefruit/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVGrapefruit/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/unknown_res.png b/icons/MVGrapefruit/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVGrapefruit/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVGrapefruit/vps.png b/icons/MVGrapefruit/vps.png
new file mode 100644
index 0000000..708aa2c
Binary files /dev/null and b/icons/MVGrapefruit/vps.png differ
diff --git a/icons/MVGrapefruit/vps_cur.png b/icons/MVGrapefruit/vps_cur.png
new file mode 120000
index 0000000..923472f
--- /dev/null
+++ b/icons/MVGrapefruit/vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/vps_cur.png
\ No newline at end of file
diff --git a/icons/MVGreen/1280x720.png b/icons/MVGreen/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVGreen/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVGreen/1440x1080.png b/icons/MVGreen/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVGreen/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVGreen/169.png b/icons/MVGreen/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVGreen/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVGreen/169w.png b/icons/MVGreen/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVGreen/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVGreen/1920x1080.png b/icons/MVGreen/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVGreen/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVGreen/221.png b/icons/MVGreen/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVGreen/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVGreen/352x576.png b/icons/MVGreen/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVGreen/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVGreen/43.png b/icons/MVGreen/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVGreen/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVGreen/480x576.png b/icons/MVGreen/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVGreen/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVGreen/528x576.png b/icons/MVGreen/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVGreen/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVGreen/544x576.png b/icons/MVGreen/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVGreen/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVGreen/704x576.png b/icons/MVGreen/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVGreen/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVGreen/720x576.png b/icons/MVGreen/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVGreen/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVGreen/960x720.png b/icons/MVGreen/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVGreen/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVGreen/blank.png b/icons/MVGreen/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVGreen/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVGreen/changroup.png b/icons/MVGreen/changroup.png
new file mode 100644
index 0000000..626b974
Binary files /dev/null and b/icons/MVGreen/changroup.png differ
diff --git a/icons/MVGreen/chart1b.png b/icons/MVGreen/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVGreen/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVGreen/chart2b.png b/icons/MVGreen/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVGreen/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVGreen/chart3b.png b/icons/MVGreen/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVGreen/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVGreen/chart4b.png b/icons/MVGreen/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVGreen/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVGreen/chart5b.png b/icons/MVGreen/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVGreen/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVGreen/chart6b.png b/icons/MVGreen/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVGreen/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVGreen/chart7.png b/icons/MVGreen/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVGreen/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVGreen/chart7b.png b/icons/MVGreen/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVGreen/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVGreen/crypted.png b/icons/MVGreen/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVGreen/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVGreen/forward.png b/icons/MVGreen/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVGreen/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVGreen/forward_sel.png b/icons/MVGreen/forward_sel.png
new file mode 100644
index 0000000..5601e3f
Binary files /dev/null and b/icons/MVGreen/forward_sel.png differ
diff --git a/icons/MVGreen/hd.png b/icons/MVGreen/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVGreen/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVGreen/message_error.png b/icons/MVGreen/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVGreen/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVGreen/message_info.png b/icons/MVGreen/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVGreen/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVGreen/message_status.png b/icons/MVGreen/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVGreen/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVGreen/message_warning.png b/icons/MVGreen/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVGreen/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVGreen/pause.png b/icons/MVGreen/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVGreen/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVGreen/pause_sel.png b/icons/MVGreen/pause_sel.png
new file mode 100644
index 0000000..efec03a
Binary files /dev/null and b/icons/MVGreen/pause_sel.png differ
diff --git a/icons/MVGreen/play.png b/icons/MVGreen/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVGreen/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVGreen/play_sel.png b/icons/MVGreen/play_sel.png
new file mode 100644
index 0000000..d23ea70
Binary files /dev/null and b/icons/MVGreen/play_sel.png differ
diff --git a/icons/MVGreen/prev.png b/icons/MVGreen/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVGreen/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVGreen/prev_sel.png b/icons/MVGreen/prev_sel.png
new file mode 100644
index 0000000..e004d9e
Binary files /dev/null and b/icons/MVGreen/prev_sel.png differ
diff --git a/icons/MVGreen/radio.png b/icons/MVGreen/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVGreen/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVGreen/recording.png b/icons/MVGreen/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVGreen/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVGreen/recording_cutted.png b/icons/MVGreen/recording_cutted.png
new file mode 100644
index 0000000..0b03d0f
Binary files /dev/null and b/icons/MVGreen/recording_cutted.png differ
diff --git a/icons/MVGreen/recording_cutted_cur.png b/icons/MVGreen/recording_cutted_cur.png
new file mode 120000
index 0000000..e270866
--- /dev/null
+++ b/icons/MVGreen/recording_cutted_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_cutted_cur.png
\ No newline at end of file
diff --git a/icons/MVGreen/recording_cutted_extra.png b/icons/MVGreen/recording_cutted_extra.png
new file mode 100644
index 0000000..1c953e7
Binary files /dev/null and b/icons/MVGreen/recording_cutted_extra.png differ
diff --git a/icons/MVGreen/recording_new.png b/icons/MVGreen/recording_new.png
new file mode 100644
index 0000000..ce992e8
Binary files /dev/null and b/icons/MVGreen/recording_new.png differ
diff --git a/icons/MVGreen/recording_new_cur.png b/icons/MVGreen/recording_new_cur.png
new file mode 120000
index 0000000..7d08eda
--- /dev/null
+++ b/icons/MVGreen/recording_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_new_cur.png
\ No newline at end of file
diff --git a/icons/MVGreen/rewind.png b/icons/MVGreen/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVGreen/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVGreen/rewind_sel.png b/icons/MVGreen/rewind_sel.png
new file mode 100644
index 0000000..598bf21
Binary files /dev/null and b/icons/MVGreen/rewind_sel.png differ
diff --git a/icons/MVGreen/sd.png b/icons/MVGreen/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVGreen/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVGreen/skip.png b/icons/MVGreen/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVGreen/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVGreen/skip_sel.png b/icons/MVGreen/skip_sel.png
new file mode 100644
index 0000000..14e5388
Binary files /dev/null and b/icons/MVGreen/skip_sel.png differ
diff --git a/icons/MVGreen/text_arrowturn.png b/icons/MVGreen/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVGreen/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVGreen/text_arrowturn_cur.png b/icons/MVGreen/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVGreen/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVGreen/text_arrowturn_sel.png b/icons/MVGreen/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVGreen/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVGreen/text_new.png b/icons/MVGreen/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVGreen/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVGreen/text_new_cur.png b/icons/MVGreen/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVGreen/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVGreen/text_new_sel.png b/icons/MVGreen/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVGreen/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVGreen/text_rec.png b/icons/MVGreen/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVGreen/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVGreen/text_rec_cur.png b/icons/MVGreen/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVGreen/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVGreen/text_rec_sel.png b/icons/MVGreen/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVGreen/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVGreen/text_timer_full.png b/icons/MVGreen/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVGreen/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVGreen/text_timer_full_cur.png b/icons/MVGreen/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVGreen/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVGreen/text_timer_full_sel.png b/icons/MVGreen/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVGreen/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVGreen/text_timer_partial.png b/icons/MVGreen/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVGreen/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVGreen/text_timer_partial_cur.png b/icons/MVGreen/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVGreen/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVGreen/text_timer_partial_sel.png b/icons/MVGreen/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVGreen/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVGreen/text_vps.png b/icons/MVGreen/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVGreen/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVGreen/text_vps_cur.png b/icons/MVGreen/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVGreen/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVGreen/text_vps_sel.png b/icons/MVGreen/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVGreen/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVGreen/timerActive.png b/icons/MVGreen/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVGreen/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVGreen/timerInactive.png b/icons/MVGreen/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVGreen/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVGreen/timerRecording.png b/icons/MVGreen/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVGreen/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVGreen/timer_full.png b/icons/MVGreen/timer_full.png
new file mode 100644
index 0000000..fa850a3
Binary files /dev/null and b/icons/MVGreen/timer_full.png differ
diff --git a/icons/MVGreen/timer_full_cur.png b/icons/MVGreen/timer_full_cur.png
new file mode 120000
index 0000000..e0225f1
--- /dev/null
+++ b/icons/MVGreen/timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVGreen/timer_partial.png b/icons/MVGreen/timer_partial.png
new file mode 100644
index 0000000..179f727
Binary files /dev/null and b/icons/MVGreen/timer_partial.png differ
diff --git a/icons/MVGreen/timer_partial_cur.png b/icons/MVGreen/timer_partial_cur.png
new file mode 120000
index 0000000..db9e5d7
--- /dev/null
+++ b/icons/MVGreen/timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVGreen/topbar_timer.png b/icons/MVGreen/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVGreen/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVGreen/topbar_timerconflict_high.png b/icons/MVGreen/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVGreen/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVGreen/topbar_timerconflict_low.png b/icons/MVGreen/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVGreen/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVGreen/tv.png b/icons/MVGreen/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVGreen/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVGreen/uncrypted.png b/icons/MVGreen/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVGreen/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVGreen/unknown_asp.png b/icons/MVGreen/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVGreen/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVGreen/unknown_res.png b/icons/MVGreen/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVGreen/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVGreen/vps.png b/icons/MVGreen/vps.png
new file mode 100644
index 0000000..611abdc
Binary files /dev/null and b/icons/MVGreen/vps.png differ
diff --git a/icons/MVGreen/vps_cur.png b/icons/MVGreen/vps_cur.png
new file mode 120000
index 0000000..923472f
--- /dev/null
+++ b/icons/MVGreen/vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/vps_cur.png
\ No newline at end of file
diff --git a/icons/MVGreen2/1280x720.png b/icons/MVGreen2/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVGreen2/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVGreen2/1440x1080.png b/icons/MVGreen2/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVGreen2/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVGreen2/169.png b/icons/MVGreen2/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVGreen2/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVGreen2/169w.png b/icons/MVGreen2/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVGreen2/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVGreen2/1920x1080.png b/icons/MVGreen2/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVGreen2/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVGreen2/221.png b/icons/MVGreen2/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVGreen2/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVGreen2/352x576.png b/icons/MVGreen2/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVGreen2/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVGreen2/43.png b/icons/MVGreen2/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVGreen2/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVGreen2/480x576.png b/icons/MVGreen2/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVGreen2/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVGreen2/528x576.png b/icons/MVGreen2/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVGreen2/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVGreen2/544x576.png b/icons/MVGreen2/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVGreen2/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVGreen2/704x576.png b/icons/MVGreen2/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVGreen2/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVGreen2/720x576.png b/icons/MVGreen2/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVGreen2/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVGreen2/960x720.png b/icons/MVGreen2/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVGreen2/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVGreen2/blank.png b/icons/MVGreen2/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVGreen2/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVGreen2/changroup.png b/icons/MVGreen2/changroup.png
new file mode 100644
index 0000000..626b974
Binary files /dev/null and b/icons/MVGreen2/changroup.png differ
diff --git a/icons/MVGreen2/chart1b.png b/icons/MVGreen2/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVGreen2/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVGreen2/chart2b.png b/icons/MVGreen2/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVGreen2/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVGreen2/chart3b.png b/icons/MVGreen2/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVGreen2/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVGreen2/chart4b.png b/icons/MVGreen2/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVGreen2/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVGreen2/chart5b.png b/icons/MVGreen2/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVGreen2/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVGreen2/chart6b.png b/icons/MVGreen2/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVGreen2/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVGreen2/chart7.png b/icons/MVGreen2/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVGreen2/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVGreen2/chart7b.png b/icons/MVGreen2/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVGreen2/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVGreen2/crypted.png b/icons/MVGreen2/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVGreen2/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVGreen2/forward.png b/icons/MVGreen2/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVGreen2/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVGreen2/forward_sel.png b/icons/MVGreen2/forward_sel.png
new file mode 100644
index 0000000..5601e3f
Binary files /dev/null and b/icons/MVGreen2/forward_sel.png differ
diff --git a/icons/MVGreen2/hd.png b/icons/MVGreen2/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVGreen2/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVGreen2/message_error.png b/icons/MVGreen2/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVGreen2/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVGreen2/message_info.png b/icons/MVGreen2/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVGreen2/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVGreen2/message_status.png b/icons/MVGreen2/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVGreen2/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVGreen2/message_warning.png b/icons/MVGreen2/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVGreen2/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVGreen2/pause.png b/icons/MVGreen2/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVGreen2/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVGreen2/pause_sel.png b/icons/MVGreen2/pause_sel.png
new file mode 100644
index 0000000..efec03a
Binary files /dev/null and b/icons/MVGreen2/pause_sel.png differ
diff --git a/icons/MVGreen2/play.png b/icons/MVGreen2/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVGreen2/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVGreen2/play_sel.png b/icons/MVGreen2/play_sel.png
new file mode 100644
index 0000000..d23ea70
Binary files /dev/null and b/icons/MVGreen2/play_sel.png differ
diff --git a/icons/MVGreen2/prev.png b/icons/MVGreen2/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVGreen2/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVGreen2/prev_sel.png b/icons/MVGreen2/prev_sel.png
new file mode 100644
index 0000000..e004d9e
Binary files /dev/null and b/icons/MVGreen2/prev_sel.png differ
diff --git a/icons/MVGreen2/radio.png b/icons/MVGreen2/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVGreen2/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVGreen2/recording.png b/icons/MVGreen2/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVGreen2/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVGreen2/recording_cutted.png b/icons/MVGreen2/recording_cutted.png
new file mode 100644
index 0000000..0b03d0f
Binary files /dev/null and b/icons/MVGreen2/recording_cutted.png differ
diff --git a/icons/MVGreen2/recording_cutted_cur.png b/icons/MVGreen2/recording_cutted_cur.png
new file mode 100644
index 0000000..889ebbd
Binary files /dev/null and b/icons/MVGreen2/recording_cutted_cur.png differ
diff --git a/icons/MVGreen2/recording_cutted_extra.png b/icons/MVGreen2/recording_cutted_extra.png
new file mode 100644
index 0000000..1c953e7
Binary files /dev/null and b/icons/MVGreen2/recording_cutted_extra.png differ
diff --git a/icons/MVGreen2/recording_new.png b/icons/MVGreen2/recording_new.png
new file mode 100644
index 0000000..ce992e8
Binary files /dev/null and b/icons/MVGreen2/recording_new.png differ
diff --git a/icons/MVGreen2/recording_new_cur.png b/icons/MVGreen2/recording_new_cur.png
new file mode 100644
index 0000000..3cde27e
Binary files /dev/null and b/icons/MVGreen2/recording_new_cur.png differ
diff --git a/icons/MVGreen2/rewind.png b/icons/MVGreen2/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVGreen2/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVGreen2/rewind_sel.png b/icons/MVGreen2/rewind_sel.png
new file mode 100644
index 0000000..598bf21
Binary files /dev/null and b/icons/MVGreen2/rewind_sel.png differ
diff --git a/icons/MVGreen2/sd.png b/icons/MVGreen2/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVGreen2/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVGreen2/skip.png b/icons/MVGreen2/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVGreen2/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVGreen2/skip_sel.png b/icons/MVGreen2/skip_sel.png
new file mode 100644
index 0000000..14e5388
Binary files /dev/null and b/icons/MVGreen2/skip_sel.png differ
diff --git a/icons/MVGreen2/text_arrowturn.png b/icons/MVGreen2/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVGreen2/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVGreen2/text_arrowturn_cur.png b/icons/MVGreen2/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVGreen2/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVGreen2/text_arrowturn_sel.png b/icons/MVGreen2/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVGreen2/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVGreen2/text_new.png b/icons/MVGreen2/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVGreen2/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVGreen2/text_new_cur.png b/icons/MVGreen2/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVGreen2/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVGreen2/text_new_sel.png b/icons/MVGreen2/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVGreen2/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVGreen2/text_rec.png b/icons/MVGreen2/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVGreen2/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVGreen2/text_rec_cur.png b/icons/MVGreen2/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVGreen2/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVGreen2/text_rec_sel.png b/icons/MVGreen2/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVGreen2/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVGreen2/text_timer_full.png b/icons/MVGreen2/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVGreen2/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVGreen2/text_timer_full_cur.png b/icons/MVGreen2/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVGreen2/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVGreen2/text_timer_full_sel.png b/icons/MVGreen2/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVGreen2/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVGreen2/text_timer_partial.png b/icons/MVGreen2/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVGreen2/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVGreen2/text_timer_partial_cur.png b/icons/MVGreen2/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVGreen2/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVGreen2/text_timer_partial_sel.png b/icons/MVGreen2/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVGreen2/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVGreen2/text_vps.png b/icons/MVGreen2/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVGreen2/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVGreen2/text_vps_cur.png b/icons/MVGreen2/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVGreen2/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVGreen2/text_vps_sel.png b/icons/MVGreen2/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVGreen2/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVGreen2/timerActive.png b/icons/MVGreen2/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVGreen2/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVGreen2/timerInactive.png b/icons/MVGreen2/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVGreen2/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVGreen2/timerRecording.png b/icons/MVGreen2/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVGreen2/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVGreen2/timer_full.png b/icons/MVGreen2/timer_full.png
new file mode 100644
index 0000000..fa850a3
Binary files /dev/null and b/icons/MVGreen2/timer_full.png differ
diff --git a/icons/MVGreen2/timer_full_cur.png b/icons/MVGreen2/timer_full_cur.png
new file mode 100644
index 0000000..0f254c1
Binary files /dev/null and b/icons/MVGreen2/timer_full_cur.png differ
diff --git a/icons/MVGreen2/timer_partial.png b/icons/MVGreen2/timer_partial.png
new file mode 100644
index 0000000..179f727
Binary files /dev/null and b/icons/MVGreen2/timer_partial.png differ
diff --git a/icons/MVGreen2/timer_partial_cur.png b/icons/MVGreen2/timer_partial_cur.png
new file mode 100644
index 0000000..69d9c02
Binary files /dev/null and b/icons/MVGreen2/timer_partial_cur.png differ
diff --git a/icons/MVGreen2/topbar_timer.png b/icons/MVGreen2/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVGreen2/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVGreen2/topbar_timerconflict_high.png b/icons/MVGreen2/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVGreen2/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVGreen2/topbar_timerconflict_low.png b/icons/MVGreen2/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVGreen2/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVGreen2/tv.png b/icons/MVGreen2/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVGreen2/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVGreen2/uncrypted.png b/icons/MVGreen2/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVGreen2/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVGreen2/unknown_asp.png b/icons/MVGreen2/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVGreen2/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVGreen2/unknown_res.png b/icons/MVGreen2/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVGreen2/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVGreen2/vps.png b/icons/MVGreen2/vps.png
new file mode 100644
index 0000000..611abdc
Binary files /dev/null and b/icons/MVGreen2/vps.png differ
diff --git a/icons/MVGreen2/vps_cur.png b/icons/MVGreen2/vps_cur.png
new file mode 100644
index 0000000..a4793fc
Binary files /dev/null and b/icons/MVGreen2/vps_cur.png differ
diff --git a/icons/MVGrey/1280x720.png b/icons/MVGrey/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVGrey/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVGrey/1440x1080.png b/icons/MVGrey/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVGrey/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVGrey/169.png b/icons/MVGrey/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVGrey/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVGrey/169w.png b/icons/MVGrey/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVGrey/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVGrey/1920x1080.png b/icons/MVGrey/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVGrey/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVGrey/221.png b/icons/MVGrey/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVGrey/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVGrey/352x576.png b/icons/MVGrey/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVGrey/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVGrey/43.png b/icons/MVGrey/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVGrey/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVGrey/480x576.png b/icons/MVGrey/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVGrey/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVGrey/528x576.png b/icons/MVGrey/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVGrey/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVGrey/544x576.png b/icons/MVGrey/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVGrey/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVGrey/704x576.png b/icons/MVGrey/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVGrey/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVGrey/720x576.png b/icons/MVGrey/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVGrey/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVGrey/960x720.png b/icons/MVGrey/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVGrey/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVGrey/blank.png b/icons/MVGrey/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVGrey/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVGrey/changroup.png b/icons/MVGrey/changroup.png
new file mode 100644
index 0000000..b84d1cc
Binary files /dev/null and b/icons/MVGrey/changroup.png differ
diff --git a/icons/MVGrey/chart1b.png b/icons/MVGrey/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVGrey/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVGrey/chart2b.png b/icons/MVGrey/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVGrey/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVGrey/chart3b.png b/icons/MVGrey/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVGrey/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVGrey/chart4b.png b/icons/MVGrey/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVGrey/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVGrey/chart5b.png b/icons/MVGrey/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVGrey/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVGrey/chart6b.png b/icons/MVGrey/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVGrey/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVGrey/chart7.png b/icons/MVGrey/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVGrey/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVGrey/chart7b.png b/icons/MVGrey/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVGrey/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVGrey/crypted.png b/icons/MVGrey/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVGrey/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVGrey/forward.png b/icons/MVGrey/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVGrey/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVGrey/forward_sel.png b/icons/MVGrey/forward_sel.png
new file mode 100644
index 0000000..1119042
Binary files /dev/null and b/icons/MVGrey/forward_sel.png differ
diff --git a/icons/MVGrey/hd.png b/icons/MVGrey/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVGrey/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVGrey/message_error.png b/icons/MVGrey/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVGrey/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVGrey/message_info.png b/icons/MVGrey/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVGrey/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVGrey/message_status.png b/icons/MVGrey/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVGrey/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVGrey/message_warning.png b/icons/MVGrey/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVGrey/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVGrey/pause.png b/icons/MVGrey/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVGrey/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVGrey/pause_sel.png b/icons/MVGrey/pause_sel.png
new file mode 100644
index 0000000..316a4c2
Binary files /dev/null and b/icons/MVGrey/pause_sel.png differ
diff --git a/icons/MVGrey/play.png b/icons/MVGrey/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVGrey/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVGrey/play_sel.png b/icons/MVGrey/play_sel.png
new file mode 100644
index 0000000..c4d103f
Binary files /dev/null and b/icons/MVGrey/play_sel.png differ
diff --git a/icons/MVGrey/prev.png b/icons/MVGrey/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVGrey/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVGrey/prev_sel.png b/icons/MVGrey/prev_sel.png
new file mode 100644
index 0000000..3451580
Binary files /dev/null and b/icons/MVGrey/prev_sel.png differ
diff --git a/icons/MVGrey/radio.png b/icons/MVGrey/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVGrey/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVGrey/recording.png b/icons/MVGrey/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVGrey/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVGrey/recording_cutted.png b/icons/MVGrey/recording_cutted.png
new file mode 100644
index 0000000..7bef541
Binary files /dev/null and b/icons/MVGrey/recording_cutted.png differ
diff --git a/icons/MVGrey/recording_cutted_cur.png b/icons/MVGrey/recording_cutted_cur.png
new file mode 120000
index 0000000..e270866
--- /dev/null
+++ b/icons/MVGrey/recording_cutted_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_cutted_cur.png
\ No newline at end of file
diff --git a/icons/MVGrey/recording_cutted_extra.png b/icons/MVGrey/recording_cutted_extra.png
new file mode 100644
index 0000000..e1ccd6a
Binary files /dev/null and b/icons/MVGrey/recording_cutted_extra.png differ
diff --git a/icons/MVGrey/recording_new.png b/icons/MVGrey/recording_new.png
new file mode 100644
index 0000000..262059e
Binary files /dev/null and b/icons/MVGrey/recording_new.png differ
diff --git a/icons/MVGrey/recording_new_cur.png b/icons/MVGrey/recording_new_cur.png
new file mode 120000
index 0000000..7d08eda
--- /dev/null
+++ b/icons/MVGrey/recording_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_new_cur.png
\ No newline at end of file
diff --git a/icons/MVGrey/rewind.png b/icons/MVGrey/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVGrey/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVGrey/rewind_sel.png b/icons/MVGrey/rewind_sel.png
new file mode 100644
index 0000000..ef3ab07
Binary files /dev/null and b/icons/MVGrey/rewind_sel.png differ
diff --git a/icons/MVGrey/sd.png b/icons/MVGrey/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVGrey/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVGrey/skip.png b/icons/MVGrey/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVGrey/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVGrey/skip_sel.png b/icons/MVGrey/skip_sel.png
new file mode 100644
index 0000000..146a341
Binary files /dev/null and b/icons/MVGrey/skip_sel.png differ
diff --git a/icons/MVGrey/text_arrowturn.png b/icons/MVGrey/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVGrey/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVGrey/text_arrowturn_cur.png b/icons/MVGrey/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVGrey/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVGrey/text_arrowturn_sel.png b/icons/MVGrey/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVGrey/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVGrey/text_new.png b/icons/MVGrey/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVGrey/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVGrey/text_new_cur.png b/icons/MVGrey/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVGrey/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVGrey/text_new_sel.png b/icons/MVGrey/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVGrey/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVGrey/text_rec.png b/icons/MVGrey/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVGrey/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVGrey/text_rec_cur.png b/icons/MVGrey/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVGrey/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVGrey/text_rec_sel.png b/icons/MVGrey/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVGrey/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVGrey/text_timer_full.png b/icons/MVGrey/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVGrey/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVGrey/text_timer_full_cur.png b/icons/MVGrey/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVGrey/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVGrey/text_timer_full_sel.png b/icons/MVGrey/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVGrey/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVGrey/text_timer_partial.png b/icons/MVGrey/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVGrey/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVGrey/text_timer_partial_cur.png b/icons/MVGrey/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVGrey/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVGrey/text_timer_partial_sel.png b/icons/MVGrey/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVGrey/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVGrey/text_vps.png b/icons/MVGrey/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVGrey/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVGrey/text_vps_cur.png b/icons/MVGrey/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVGrey/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVGrey/text_vps_sel.png b/icons/MVGrey/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVGrey/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVGrey/timerActive.png b/icons/MVGrey/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVGrey/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVGrey/timerInactive.png b/icons/MVGrey/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVGrey/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVGrey/timerRecording.png b/icons/MVGrey/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVGrey/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVGrey/timer_full.png b/icons/MVGrey/timer_full.png
new file mode 100644
index 0000000..ffcc08c
Binary files /dev/null and b/icons/MVGrey/timer_full.png differ
diff --git a/icons/MVGrey/timer_full_cur.png b/icons/MVGrey/timer_full_cur.png
new file mode 120000
index 0000000..e0225f1
--- /dev/null
+++ b/icons/MVGrey/timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVGrey/timer_partial.png b/icons/MVGrey/timer_partial.png
new file mode 100644
index 0000000..101aaba
Binary files /dev/null and b/icons/MVGrey/timer_partial.png differ
diff --git a/icons/MVGrey/timer_partial_cur.png b/icons/MVGrey/timer_partial_cur.png
new file mode 120000
index 0000000..db9e5d7
--- /dev/null
+++ b/icons/MVGrey/timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVGrey/topbar_timer.png b/icons/MVGrey/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVGrey/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVGrey/topbar_timerconflict_high.png b/icons/MVGrey/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVGrey/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVGrey/topbar_timerconflict_low.png b/icons/MVGrey/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVGrey/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVGrey/tv.png b/icons/MVGrey/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVGrey/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVGrey/uncrypted.png b/icons/MVGrey/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVGrey/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVGrey/unknown_asp.png b/icons/MVGrey/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVGrey/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVGrey/unknown_res.png b/icons/MVGrey/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVGrey/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVGrey/vps.png b/icons/MVGrey/vps.png
new file mode 100644
index 0000000..d76d5c4
Binary files /dev/null and b/icons/MVGrey/vps.png differ
diff --git a/icons/MVGrey/vps_cur.png b/icons/MVGrey/vps_cur.png
new file mode 120000
index 0000000..923472f
--- /dev/null
+++ b/icons/MVGrey/vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/vps_cur.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/1280x720.png b/icons/MVHelloKitty/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVHelloKitty/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/1440x1080.png b/icons/MVHelloKitty/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVHelloKitty/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/169.png b/icons/MVHelloKitty/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVHelloKitty/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/169w.png b/icons/MVHelloKitty/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVHelloKitty/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/1920x1080.png b/icons/MVHelloKitty/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVHelloKitty/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/221.png b/icons/MVHelloKitty/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVHelloKitty/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/352x576.png b/icons/MVHelloKitty/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVHelloKitty/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/43.png b/icons/MVHelloKitty/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVHelloKitty/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/480x576.png b/icons/MVHelloKitty/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVHelloKitty/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/528x576.png b/icons/MVHelloKitty/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVHelloKitty/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/544x576.png b/icons/MVHelloKitty/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVHelloKitty/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/704x576.png b/icons/MVHelloKitty/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVHelloKitty/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/720x576.png b/icons/MVHelloKitty/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVHelloKitty/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/960x720.png b/icons/MVHelloKitty/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVHelloKitty/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/blank.png b/icons/MVHelloKitty/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVHelloKitty/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/changroup.png b/icons/MVHelloKitty/changroup.png
new file mode 100644
index 0000000..36e3dc9
Binary files /dev/null and b/icons/MVHelloKitty/changroup.png differ
diff --git a/icons/MVHelloKitty/chart1b.png b/icons/MVHelloKitty/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVHelloKitty/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/chart2b.png b/icons/MVHelloKitty/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVHelloKitty/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/chart3b.png b/icons/MVHelloKitty/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVHelloKitty/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/chart4b.png b/icons/MVHelloKitty/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVHelloKitty/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/chart5b.png b/icons/MVHelloKitty/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVHelloKitty/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/chart6b.png b/icons/MVHelloKitty/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVHelloKitty/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/chart7.png b/icons/MVHelloKitty/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVHelloKitty/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/chart7b.png b/icons/MVHelloKitty/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVHelloKitty/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/crypted.png b/icons/MVHelloKitty/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVHelloKitty/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/forward.png b/icons/MVHelloKitty/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVHelloKitty/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/forward_sel.png b/icons/MVHelloKitty/forward_sel.png
new file mode 100644
index 0000000..1471bef
Binary files /dev/null and b/icons/MVHelloKitty/forward_sel.png differ
diff --git a/icons/MVHelloKitty/hd.png b/icons/MVHelloKitty/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVHelloKitty/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/message_error.png b/icons/MVHelloKitty/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVHelloKitty/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/message_info.png b/icons/MVHelloKitty/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVHelloKitty/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/message_status.png b/icons/MVHelloKitty/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVHelloKitty/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/message_warning.png b/icons/MVHelloKitty/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVHelloKitty/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/pause.png b/icons/MVHelloKitty/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVHelloKitty/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/pause_sel.png b/icons/MVHelloKitty/pause_sel.png
new file mode 100644
index 0000000..26c6bf6
Binary files /dev/null and b/icons/MVHelloKitty/pause_sel.png differ
diff --git a/icons/MVHelloKitty/play.png b/icons/MVHelloKitty/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVHelloKitty/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/play_sel.png b/icons/MVHelloKitty/play_sel.png
new file mode 100644
index 0000000..6def288
Binary files /dev/null and b/icons/MVHelloKitty/play_sel.png differ
diff --git a/icons/MVHelloKitty/prev.png b/icons/MVHelloKitty/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVHelloKitty/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/prev_sel.png b/icons/MVHelloKitty/prev_sel.png
new file mode 100644
index 0000000..08bbb70
Binary files /dev/null and b/icons/MVHelloKitty/prev_sel.png differ
diff --git a/icons/MVHelloKitty/radio.png b/icons/MVHelloKitty/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVHelloKitty/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/recording.png b/icons/MVHelloKitty/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVHelloKitty/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/recording_cutted.png b/icons/MVHelloKitty/recording_cutted.png
new file mode 100644
index 0000000..82966c9
Binary files /dev/null and b/icons/MVHelloKitty/recording_cutted.png differ
diff --git a/icons/MVHelloKitty/recording_cutted_cur.png b/icons/MVHelloKitty/recording_cutted_cur.png
new file mode 120000
index 0000000..e270866
--- /dev/null
+++ b/icons/MVHelloKitty/recording_cutted_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_cutted_cur.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/recording_cutted_extra.png b/icons/MVHelloKitty/recording_cutted_extra.png
new file mode 100644
index 0000000..43499cb
Binary files /dev/null and b/icons/MVHelloKitty/recording_cutted_extra.png differ
diff --git a/icons/MVHelloKitty/recording_new.png b/icons/MVHelloKitty/recording_new.png
new file mode 100644
index 0000000..a36a023
Binary files /dev/null and b/icons/MVHelloKitty/recording_new.png differ
diff --git a/icons/MVHelloKitty/recording_new_cur.png b/icons/MVHelloKitty/recording_new_cur.png
new file mode 120000
index 0000000..7d08eda
--- /dev/null
+++ b/icons/MVHelloKitty/recording_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_new_cur.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/rewind.png b/icons/MVHelloKitty/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVHelloKitty/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/rewind_sel.png b/icons/MVHelloKitty/rewind_sel.png
new file mode 100644
index 0000000..0ed1999
Binary files /dev/null and b/icons/MVHelloKitty/rewind_sel.png differ
diff --git a/icons/MVHelloKitty/sd.png b/icons/MVHelloKitty/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVHelloKitty/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/skip.png b/icons/MVHelloKitty/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVHelloKitty/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/skip_sel.png b/icons/MVHelloKitty/skip_sel.png
new file mode 100644
index 0000000..39a7141
Binary files /dev/null and b/icons/MVHelloKitty/skip_sel.png differ
diff --git a/icons/MVHelloKitty/text_arrowturn.png b/icons/MVHelloKitty/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVHelloKitty/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/text_arrowturn_cur.png b/icons/MVHelloKitty/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVHelloKitty/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/text_arrowturn_sel.png b/icons/MVHelloKitty/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVHelloKitty/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/text_new.png b/icons/MVHelloKitty/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVHelloKitty/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/text_new_cur.png b/icons/MVHelloKitty/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVHelloKitty/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/text_new_sel.png b/icons/MVHelloKitty/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVHelloKitty/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/text_rec.png b/icons/MVHelloKitty/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVHelloKitty/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/text_rec_cur.png b/icons/MVHelloKitty/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVHelloKitty/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/text_rec_sel.png b/icons/MVHelloKitty/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVHelloKitty/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/text_timer_full.png b/icons/MVHelloKitty/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVHelloKitty/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/text_timer_full_cur.png b/icons/MVHelloKitty/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVHelloKitty/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/text_timer_full_sel.png b/icons/MVHelloKitty/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVHelloKitty/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/text_timer_partial.png b/icons/MVHelloKitty/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVHelloKitty/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/text_timer_partial_cur.png b/icons/MVHelloKitty/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVHelloKitty/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/text_timer_partial_sel.png b/icons/MVHelloKitty/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVHelloKitty/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/text_vps.png b/icons/MVHelloKitty/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVHelloKitty/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/text_vps_cur.png b/icons/MVHelloKitty/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVHelloKitty/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/text_vps_sel.png b/icons/MVHelloKitty/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVHelloKitty/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/timerActive.png b/icons/MVHelloKitty/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVHelloKitty/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/timerInactive.png b/icons/MVHelloKitty/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVHelloKitty/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/timerRecording.png b/icons/MVHelloKitty/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVHelloKitty/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/timer_full.png b/icons/MVHelloKitty/timer_full.png
new file mode 100644
index 0000000..ec078bb
Binary files /dev/null and b/icons/MVHelloKitty/timer_full.png differ
diff --git a/icons/MVHelloKitty/timer_full_cur.png b/icons/MVHelloKitty/timer_full_cur.png
new file mode 120000
index 0000000..e0225f1
--- /dev/null
+++ b/icons/MVHelloKitty/timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/timer_partial.png b/icons/MVHelloKitty/timer_partial.png
new file mode 100644
index 0000000..144e6ff
Binary files /dev/null and b/icons/MVHelloKitty/timer_partial.png differ
diff --git a/icons/MVHelloKitty/timer_partial_cur.png b/icons/MVHelloKitty/timer_partial_cur.png
new file mode 120000
index 0000000..db9e5d7
--- /dev/null
+++ b/icons/MVHelloKitty/timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/topbar_timer.png b/icons/MVHelloKitty/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVHelloKitty/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/topbar_timerconflict_high.png b/icons/MVHelloKitty/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVHelloKitty/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/topbar_timerconflict_low.png b/icons/MVHelloKitty/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVHelloKitty/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/tv.png b/icons/MVHelloKitty/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVHelloKitty/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/uncrypted.png b/icons/MVHelloKitty/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVHelloKitty/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/unknown_asp.png b/icons/MVHelloKitty/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVHelloKitty/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/unknown_res.png b/icons/MVHelloKitty/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVHelloKitty/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty/vps.png b/icons/MVHelloKitty/vps.png
new file mode 100644
index 0000000..430ca4d
Binary files /dev/null and b/icons/MVHelloKitty/vps.png differ
diff --git a/icons/MVHelloKitty/vps_cur.png b/icons/MVHelloKitty/vps_cur.png
new file mode 120000
index 0000000..923472f
--- /dev/null
+++ b/icons/MVHelloKitty/vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/vps_cur.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/1280x720.png b/icons/MVHelloKitty2/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVHelloKitty2/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/1440x1080.png b/icons/MVHelloKitty2/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVHelloKitty2/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/169.png b/icons/MVHelloKitty2/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVHelloKitty2/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/169w.png b/icons/MVHelloKitty2/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVHelloKitty2/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/1920x1080.png b/icons/MVHelloKitty2/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVHelloKitty2/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/221.png b/icons/MVHelloKitty2/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVHelloKitty2/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/352x576.png b/icons/MVHelloKitty2/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVHelloKitty2/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/43.png b/icons/MVHelloKitty2/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVHelloKitty2/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/480x576.png b/icons/MVHelloKitty2/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVHelloKitty2/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/528x576.png b/icons/MVHelloKitty2/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVHelloKitty2/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/544x576.png b/icons/MVHelloKitty2/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVHelloKitty2/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/704x576.png b/icons/MVHelloKitty2/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVHelloKitty2/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/720x576.png b/icons/MVHelloKitty2/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVHelloKitty2/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/960x720.png b/icons/MVHelloKitty2/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVHelloKitty2/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/blank.png b/icons/MVHelloKitty2/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVHelloKitty2/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/changroup.png b/icons/MVHelloKitty2/changroup.png
new file mode 100644
index 0000000..36e3dc9
Binary files /dev/null and b/icons/MVHelloKitty2/changroup.png differ
diff --git a/icons/MVHelloKitty2/chart1b.png b/icons/MVHelloKitty2/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVHelloKitty2/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/chart2b.png b/icons/MVHelloKitty2/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVHelloKitty2/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/chart3b.png b/icons/MVHelloKitty2/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVHelloKitty2/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/chart4b.png b/icons/MVHelloKitty2/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVHelloKitty2/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/chart5b.png b/icons/MVHelloKitty2/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVHelloKitty2/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/chart6b.png b/icons/MVHelloKitty2/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVHelloKitty2/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/chart7.png b/icons/MVHelloKitty2/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVHelloKitty2/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/chart7b.png b/icons/MVHelloKitty2/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVHelloKitty2/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/crypted.png b/icons/MVHelloKitty2/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVHelloKitty2/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/forward.png b/icons/MVHelloKitty2/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVHelloKitty2/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/forward_sel.png b/icons/MVHelloKitty2/forward_sel.png
new file mode 100644
index 0000000..1471bef
Binary files /dev/null and b/icons/MVHelloKitty2/forward_sel.png differ
diff --git a/icons/MVHelloKitty2/hd.png b/icons/MVHelloKitty2/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVHelloKitty2/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/message_error.png b/icons/MVHelloKitty2/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVHelloKitty2/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/message_info.png b/icons/MVHelloKitty2/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVHelloKitty2/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/message_status.png b/icons/MVHelloKitty2/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVHelloKitty2/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/message_warning.png b/icons/MVHelloKitty2/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVHelloKitty2/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/pause.png b/icons/MVHelloKitty2/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVHelloKitty2/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/pause_sel.png b/icons/MVHelloKitty2/pause_sel.png
new file mode 100644
index 0000000..26c6bf6
Binary files /dev/null and b/icons/MVHelloKitty2/pause_sel.png differ
diff --git a/icons/MVHelloKitty2/play.png b/icons/MVHelloKitty2/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVHelloKitty2/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/play_sel.png b/icons/MVHelloKitty2/play_sel.png
new file mode 100644
index 0000000..6def288
Binary files /dev/null and b/icons/MVHelloKitty2/play_sel.png differ
diff --git a/icons/MVHelloKitty2/prev.png b/icons/MVHelloKitty2/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVHelloKitty2/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/prev_sel.png b/icons/MVHelloKitty2/prev_sel.png
new file mode 100644
index 0000000..08bbb70
Binary files /dev/null and b/icons/MVHelloKitty2/prev_sel.png differ
diff --git a/icons/MVHelloKitty2/radio.png b/icons/MVHelloKitty2/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVHelloKitty2/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/recording.png b/icons/MVHelloKitty2/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVHelloKitty2/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/recording_cutted.png b/icons/MVHelloKitty2/recording_cutted.png
new file mode 100644
index 0000000..82966c9
Binary files /dev/null and b/icons/MVHelloKitty2/recording_cutted.png differ
diff --git a/icons/MVHelloKitty2/recording_cutted_cur.png b/icons/MVHelloKitty2/recording_cutted_cur.png
new file mode 100644
index 0000000..1781920
Binary files /dev/null and b/icons/MVHelloKitty2/recording_cutted_cur.png differ
diff --git a/icons/MVHelloKitty2/recording_cutted_extra.png b/icons/MVHelloKitty2/recording_cutted_extra.png
new file mode 100644
index 0000000..43499cb
Binary files /dev/null and b/icons/MVHelloKitty2/recording_cutted_extra.png differ
diff --git a/icons/MVHelloKitty2/recording_new.png b/icons/MVHelloKitty2/recording_new.png
new file mode 100644
index 0000000..a36a023
Binary files /dev/null and b/icons/MVHelloKitty2/recording_new.png differ
diff --git a/icons/MVHelloKitty2/recording_new_cur.png b/icons/MVHelloKitty2/recording_new_cur.png
new file mode 100644
index 0000000..10f7e7b
Binary files /dev/null and b/icons/MVHelloKitty2/recording_new_cur.png differ
diff --git a/icons/MVHelloKitty2/rewind.png b/icons/MVHelloKitty2/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVHelloKitty2/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/rewind_sel.png b/icons/MVHelloKitty2/rewind_sel.png
new file mode 100644
index 0000000..0ed1999
Binary files /dev/null and b/icons/MVHelloKitty2/rewind_sel.png differ
diff --git a/icons/MVHelloKitty2/sd.png b/icons/MVHelloKitty2/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVHelloKitty2/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/skip.png b/icons/MVHelloKitty2/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVHelloKitty2/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/skip_sel.png b/icons/MVHelloKitty2/skip_sel.png
new file mode 100644
index 0000000..39a7141
Binary files /dev/null and b/icons/MVHelloKitty2/skip_sel.png differ
diff --git a/icons/MVHelloKitty2/text_arrowturn.png b/icons/MVHelloKitty2/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVHelloKitty2/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/text_arrowturn_cur.png b/icons/MVHelloKitty2/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVHelloKitty2/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/text_arrowturn_sel.png b/icons/MVHelloKitty2/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVHelloKitty2/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/text_new.png b/icons/MVHelloKitty2/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVHelloKitty2/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/text_new_cur.png b/icons/MVHelloKitty2/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVHelloKitty2/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/text_new_sel.png b/icons/MVHelloKitty2/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVHelloKitty2/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/text_rec.png b/icons/MVHelloKitty2/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVHelloKitty2/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/text_rec_cur.png b/icons/MVHelloKitty2/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVHelloKitty2/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/text_rec_sel.png b/icons/MVHelloKitty2/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVHelloKitty2/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/text_timer_full.png b/icons/MVHelloKitty2/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVHelloKitty2/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/text_timer_full_cur.png b/icons/MVHelloKitty2/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVHelloKitty2/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/text_timer_full_sel.png b/icons/MVHelloKitty2/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVHelloKitty2/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/text_timer_partial.png b/icons/MVHelloKitty2/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVHelloKitty2/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/text_timer_partial_cur.png b/icons/MVHelloKitty2/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVHelloKitty2/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/text_timer_partial_sel.png b/icons/MVHelloKitty2/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVHelloKitty2/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/text_vps.png b/icons/MVHelloKitty2/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVHelloKitty2/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/text_vps_cur.png b/icons/MVHelloKitty2/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVHelloKitty2/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/text_vps_sel.png b/icons/MVHelloKitty2/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVHelloKitty2/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/timerActive.png b/icons/MVHelloKitty2/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVHelloKitty2/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/timerInactive.png b/icons/MVHelloKitty2/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVHelloKitty2/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/timerRecording.png b/icons/MVHelloKitty2/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVHelloKitty2/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/timer_full.png b/icons/MVHelloKitty2/timer_full.png
new file mode 100644
index 0000000..ec078bb
Binary files /dev/null and b/icons/MVHelloKitty2/timer_full.png differ
diff --git a/icons/MVHelloKitty2/timer_full_cur.png b/icons/MVHelloKitty2/timer_full_cur.png
new file mode 100644
index 0000000..dd16b8b
Binary files /dev/null and b/icons/MVHelloKitty2/timer_full_cur.png differ
diff --git a/icons/MVHelloKitty2/timer_partial.png b/icons/MVHelloKitty2/timer_partial.png
new file mode 100644
index 0000000..144e6ff
Binary files /dev/null and b/icons/MVHelloKitty2/timer_partial.png differ
diff --git a/icons/MVHelloKitty2/timer_partial_cur.png b/icons/MVHelloKitty2/timer_partial_cur.png
new file mode 100644
index 0000000..5247325
Binary files /dev/null and b/icons/MVHelloKitty2/timer_partial_cur.png differ
diff --git a/icons/MVHelloKitty2/topbar_timer.png b/icons/MVHelloKitty2/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVHelloKitty2/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/topbar_timerconflict_high.png b/icons/MVHelloKitty2/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVHelloKitty2/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/topbar_timerconflict_low.png b/icons/MVHelloKitty2/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVHelloKitty2/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/tv.png b/icons/MVHelloKitty2/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVHelloKitty2/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/uncrypted.png b/icons/MVHelloKitty2/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVHelloKitty2/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/unknown_asp.png b/icons/MVHelloKitty2/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVHelloKitty2/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/unknown_res.png b/icons/MVHelloKitty2/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVHelloKitty2/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVHelloKitty2/vps.png b/icons/MVHelloKitty2/vps.png
new file mode 100644
index 0000000..430ca4d
Binary files /dev/null and b/icons/MVHelloKitty2/vps.png differ
diff --git a/icons/MVHelloKitty2/vps_cur.png b/icons/MVHelloKitty2/vps_cur.png
new file mode 100644
index 0000000..2b6127b
Binary files /dev/null and b/icons/MVHelloKitty2/vps_cur.png differ
diff --git a/icons/MVIndigo/1280x720.png b/icons/MVIndigo/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVIndigo/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVIndigo/1440x1080.png b/icons/MVIndigo/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVIndigo/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVIndigo/169.png b/icons/MVIndigo/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVIndigo/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVIndigo/169w.png b/icons/MVIndigo/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVIndigo/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVIndigo/1920x1080.png b/icons/MVIndigo/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVIndigo/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVIndigo/221.png b/icons/MVIndigo/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVIndigo/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVIndigo/352x576.png b/icons/MVIndigo/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVIndigo/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVIndigo/43.png b/icons/MVIndigo/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVIndigo/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVIndigo/480x576.png b/icons/MVIndigo/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVIndigo/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVIndigo/528x576.png b/icons/MVIndigo/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVIndigo/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVIndigo/544x576.png b/icons/MVIndigo/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVIndigo/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVIndigo/704x576.png b/icons/MVIndigo/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVIndigo/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVIndigo/720x576.png b/icons/MVIndigo/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVIndigo/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVIndigo/960x720.png b/icons/MVIndigo/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVIndigo/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVIndigo/blank.png b/icons/MVIndigo/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVIndigo/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVIndigo/changroup.png b/icons/MVIndigo/changroup.png
new file mode 100644
index 0000000..de7dffa
Binary files /dev/null and b/icons/MVIndigo/changroup.png differ
diff --git a/icons/MVIndigo/chart1b.png b/icons/MVIndigo/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVIndigo/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVIndigo/chart2b.png b/icons/MVIndigo/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVIndigo/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVIndigo/chart3b.png b/icons/MVIndigo/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVIndigo/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVIndigo/chart4b.png b/icons/MVIndigo/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVIndigo/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVIndigo/chart5b.png b/icons/MVIndigo/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVIndigo/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVIndigo/chart6b.png b/icons/MVIndigo/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVIndigo/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVIndigo/chart7.png b/icons/MVIndigo/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVIndigo/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVIndigo/chart7b.png b/icons/MVIndigo/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVIndigo/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVIndigo/crypted.png b/icons/MVIndigo/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVIndigo/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVIndigo/forward.png b/icons/MVIndigo/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVIndigo/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVIndigo/forward_sel.png b/icons/MVIndigo/forward_sel.png
new file mode 100644
index 0000000..bb368e4
Binary files /dev/null and b/icons/MVIndigo/forward_sel.png differ
diff --git a/icons/MVIndigo/hd.png b/icons/MVIndigo/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVIndigo/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVIndigo/message_error.png b/icons/MVIndigo/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVIndigo/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVIndigo/message_info.png b/icons/MVIndigo/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVIndigo/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVIndigo/message_status.png b/icons/MVIndigo/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVIndigo/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVIndigo/message_warning.png b/icons/MVIndigo/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVIndigo/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVIndigo/pause.png b/icons/MVIndigo/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVIndigo/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVIndigo/pause_sel.png b/icons/MVIndigo/pause_sel.png
new file mode 100644
index 0000000..be41b54
Binary files /dev/null and b/icons/MVIndigo/pause_sel.png differ
diff --git a/icons/MVIndigo/play.png b/icons/MVIndigo/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVIndigo/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVIndigo/play_sel.png b/icons/MVIndigo/play_sel.png
new file mode 100644
index 0000000..9d266d7
Binary files /dev/null and b/icons/MVIndigo/play_sel.png differ
diff --git a/icons/MVIndigo/prev.png b/icons/MVIndigo/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVIndigo/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVIndigo/prev_sel.png b/icons/MVIndigo/prev_sel.png
new file mode 100644
index 0000000..3f3f993
Binary files /dev/null and b/icons/MVIndigo/prev_sel.png differ
diff --git a/icons/MVIndigo/radio.png b/icons/MVIndigo/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVIndigo/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVIndigo/recording.png b/icons/MVIndigo/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVIndigo/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVIndigo/recording_cutted.png b/icons/MVIndigo/recording_cutted.png
new file mode 100644
index 0000000..d542500
Binary files /dev/null and b/icons/MVIndigo/recording_cutted.png differ
diff --git a/icons/MVIndigo/recording_cutted_cur.png b/icons/MVIndigo/recording_cutted_cur.png
new file mode 120000
index 0000000..e270866
--- /dev/null
+++ b/icons/MVIndigo/recording_cutted_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_cutted_cur.png
\ No newline at end of file
diff --git a/icons/MVIndigo/recording_cutted_extra.png b/icons/MVIndigo/recording_cutted_extra.png
new file mode 100644
index 0000000..ce1669e
Binary files /dev/null and b/icons/MVIndigo/recording_cutted_extra.png differ
diff --git a/icons/MVIndigo/recording_new.png b/icons/MVIndigo/recording_new.png
new file mode 100644
index 0000000..11e3d98
Binary files /dev/null and b/icons/MVIndigo/recording_new.png differ
diff --git a/icons/MVIndigo/recording_new_cur.png b/icons/MVIndigo/recording_new_cur.png
new file mode 120000
index 0000000..7d08eda
--- /dev/null
+++ b/icons/MVIndigo/recording_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_new_cur.png
\ No newline at end of file
diff --git a/icons/MVIndigo/rewind.png b/icons/MVIndigo/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVIndigo/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVIndigo/rewind_sel.png b/icons/MVIndigo/rewind_sel.png
new file mode 100644
index 0000000..ce0eb03
Binary files /dev/null and b/icons/MVIndigo/rewind_sel.png differ
diff --git a/icons/MVIndigo/sd.png b/icons/MVIndigo/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVIndigo/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVIndigo/skip.png b/icons/MVIndigo/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVIndigo/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVIndigo/skip_sel.png b/icons/MVIndigo/skip_sel.png
new file mode 100644
index 0000000..5ab9325
Binary files /dev/null and b/icons/MVIndigo/skip_sel.png differ
diff --git a/icons/MVIndigo/text_arrowturn.png b/icons/MVIndigo/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVIndigo/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVIndigo/text_arrowturn_cur.png b/icons/MVIndigo/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVIndigo/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVIndigo/text_arrowturn_sel.png b/icons/MVIndigo/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVIndigo/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVIndigo/text_new.png b/icons/MVIndigo/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVIndigo/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVIndigo/text_new_cur.png b/icons/MVIndigo/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVIndigo/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVIndigo/text_new_sel.png b/icons/MVIndigo/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVIndigo/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVIndigo/text_rec.png b/icons/MVIndigo/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVIndigo/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVIndigo/text_rec_cur.png b/icons/MVIndigo/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVIndigo/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVIndigo/text_rec_sel.png b/icons/MVIndigo/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVIndigo/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVIndigo/text_timer_full.png b/icons/MVIndigo/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVIndigo/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVIndigo/text_timer_full_cur.png b/icons/MVIndigo/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVIndigo/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVIndigo/text_timer_full_sel.png b/icons/MVIndigo/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVIndigo/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVIndigo/text_timer_partial.png b/icons/MVIndigo/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVIndigo/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVIndigo/text_timer_partial_cur.png b/icons/MVIndigo/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVIndigo/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVIndigo/text_timer_partial_sel.png b/icons/MVIndigo/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVIndigo/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVIndigo/text_vps.png b/icons/MVIndigo/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVIndigo/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVIndigo/text_vps_cur.png b/icons/MVIndigo/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVIndigo/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVIndigo/text_vps_sel.png b/icons/MVIndigo/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVIndigo/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVIndigo/timerActive.png b/icons/MVIndigo/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVIndigo/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVIndigo/timerInactive.png b/icons/MVIndigo/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVIndigo/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVIndigo/timerRecording.png b/icons/MVIndigo/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVIndigo/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVIndigo/timer_full.png b/icons/MVIndigo/timer_full.png
new file mode 100644
index 0000000..3436080
Binary files /dev/null and b/icons/MVIndigo/timer_full.png differ
diff --git a/icons/MVIndigo/timer_full_cur.png b/icons/MVIndigo/timer_full_cur.png
new file mode 120000
index 0000000..e0225f1
--- /dev/null
+++ b/icons/MVIndigo/timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVIndigo/timer_partial.png b/icons/MVIndigo/timer_partial.png
new file mode 100644
index 0000000..a49673d
Binary files /dev/null and b/icons/MVIndigo/timer_partial.png differ
diff --git a/icons/MVIndigo/timer_partial_cur.png b/icons/MVIndigo/timer_partial_cur.png
new file mode 120000
index 0000000..db9e5d7
--- /dev/null
+++ b/icons/MVIndigo/timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVIndigo/topbar_timer.png b/icons/MVIndigo/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVIndigo/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVIndigo/topbar_timerconflict_high.png b/icons/MVIndigo/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVIndigo/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVIndigo/topbar_timerconflict_low.png b/icons/MVIndigo/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVIndigo/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVIndigo/tv.png b/icons/MVIndigo/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVIndigo/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVIndigo/uncrypted.png b/icons/MVIndigo/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVIndigo/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVIndigo/unknown_asp.png b/icons/MVIndigo/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVIndigo/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVIndigo/unknown_res.png b/icons/MVIndigo/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVIndigo/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVIndigo/vps.png b/icons/MVIndigo/vps.png
new file mode 100644
index 0000000..7ee594e
Binary files /dev/null and b/icons/MVIndigo/vps.png differ
diff --git a/icons/MVIndigo/vps_cur.png b/icons/MVIndigo/vps_cur.png
new file mode 120000
index 0000000..923472f
--- /dev/null
+++ b/icons/MVIndigo/vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/vps_cur.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/1280x720.png b/icons/MVLightBlue/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVLightBlue/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/1440x1080.png b/icons/MVLightBlue/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVLightBlue/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/169.png b/icons/MVLightBlue/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVLightBlue/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/169w.png b/icons/MVLightBlue/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVLightBlue/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/1920x1080.png b/icons/MVLightBlue/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVLightBlue/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/221.png b/icons/MVLightBlue/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVLightBlue/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/352x576.png b/icons/MVLightBlue/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVLightBlue/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/43.png b/icons/MVLightBlue/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVLightBlue/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/480x576.png b/icons/MVLightBlue/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVLightBlue/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/528x576.png b/icons/MVLightBlue/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVLightBlue/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/544x576.png b/icons/MVLightBlue/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVLightBlue/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/704x576.png b/icons/MVLightBlue/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVLightBlue/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/720x576.png b/icons/MVLightBlue/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVLightBlue/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/960x720.png b/icons/MVLightBlue/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVLightBlue/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/blank.png b/icons/MVLightBlue/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVLightBlue/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/changroup.png b/icons/MVLightBlue/changroup.png
new file mode 100644
index 0000000..26e4ded
Binary files /dev/null and b/icons/MVLightBlue/changroup.png differ
diff --git a/icons/MVLightBlue/chart1b.png b/icons/MVLightBlue/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVLightBlue/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/chart2b.png b/icons/MVLightBlue/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVLightBlue/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/chart3b.png b/icons/MVLightBlue/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVLightBlue/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/chart4b.png b/icons/MVLightBlue/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVLightBlue/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/chart5b.png b/icons/MVLightBlue/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVLightBlue/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/chart6b.png b/icons/MVLightBlue/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVLightBlue/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/chart7.png b/icons/MVLightBlue/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVLightBlue/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/chart7b.png b/icons/MVLightBlue/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVLightBlue/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/crypted.png b/icons/MVLightBlue/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVLightBlue/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/forward.png b/icons/MVLightBlue/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVLightBlue/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/forward_sel.png b/icons/MVLightBlue/forward_sel.png
new file mode 100644
index 0000000..6735e18
Binary files /dev/null and b/icons/MVLightBlue/forward_sel.png differ
diff --git a/icons/MVLightBlue/hd.png b/icons/MVLightBlue/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVLightBlue/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/message_error.png b/icons/MVLightBlue/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVLightBlue/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/message_info.png b/icons/MVLightBlue/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVLightBlue/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/message_status.png b/icons/MVLightBlue/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVLightBlue/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/message_warning.png b/icons/MVLightBlue/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVLightBlue/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/pause.png b/icons/MVLightBlue/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVLightBlue/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/pause_sel.png b/icons/MVLightBlue/pause_sel.png
new file mode 100644
index 0000000..07f7d60
Binary files /dev/null and b/icons/MVLightBlue/pause_sel.png differ
diff --git a/icons/MVLightBlue/play.png b/icons/MVLightBlue/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVLightBlue/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/play_sel.png b/icons/MVLightBlue/play_sel.png
new file mode 100644
index 0000000..d41cdee
Binary files /dev/null and b/icons/MVLightBlue/play_sel.png differ
diff --git a/icons/MVLightBlue/prev.png b/icons/MVLightBlue/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVLightBlue/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/prev_sel.png b/icons/MVLightBlue/prev_sel.png
new file mode 100644
index 0000000..68f6e4f
Binary files /dev/null and b/icons/MVLightBlue/prev_sel.png differ
diff --git a/icons/MVLightBlue/radio.png b/icons/MVLightBlue/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVLightBlue/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/recording.png b/icons/MVLightBlue/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVLightBlue/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/recording_cutted.png b/icons/MVLightBlue/recording_cutted.png
new file mode 100644
index 0000000..dc02923
Binary files /dev/null and b/icons/MVLightBlue/recording_cutted.png differ
diff --git a/icons/MVLightBlue/recording_cutted_cur.png b/icons/MVLightBlue/recording_cutted_cur.png
new file mode 120000
index 0000000..e270866
--- /dev/null
+++ b/icons/MVLightBlue/recording_cutted_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_cutted_cur.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/recording_cutted_extra.png b/icons/MVLightBlue/recording_cutted_extra.png
new file mode 100644
index 0000000..03fca68
Binary files /dev/null and b/icons/MVLightBlue/recording_cutted_extra.png differ
diff --git a/icons/MVLightBlue/recording_new.png b/icons/MVLightBlue/recording_new.png
new file mode 100644
index 0000000..3831478
Binary files /dev/null and b/icons/MVLightBlue/recording_new.png differ
diff --git a/icons/MVLightBlue/recording_new_cur.png b/icons/MVLightBlue/recording_new_cur.png
new file mode 120000
index 0000000..7d08eda
--- /dev/null
+++ b/icons/MVLightBlue/recording_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_new_cur.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/rewind.png b/icons/MVLightBlue/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVLightBlue/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/rewind_sel.png b/icons/MVLightBlue/rewind_sel.png
new file mode 100644
index 0000000..69c27ce
Binary files /dev/null and b/icons/MVLightBlue/rewind_sel.png differ
diff --git a/icons/MVLightBlue/sd.png b/icons/MVLightBlue/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVLightBlue/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/skip.png b/icons/MVLightBlue/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVLightBlue/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/skip_sel.png b/icons/MVLightBlue/skip_sel.png
new file mode 100644
index 0000000..5c6540d
Binary files /dev/null and b/icons/MVLightBlue/skip_sel.png differ
diff --git a/icons/MVLightBlue/text_arrowturn.png b/icons/MVLightBlue/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVLightBlue/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/text_arrowturn_cur.png b/icons/MVLightBlue/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVLightBlue/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/text_arrowturn_sel.png b/icons/MVLightBlue/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVLightBlue/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/text_new.png b/icons/MVLightBlue/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVLightBlue/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/text_new_cur.png b/icons/MVLightBlue/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVLightBlue/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/text_new_sel.png b/icons/MVLightBlue/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVLightBlue/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/text_rec.png b/icons/MVLightBlue/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVLightBlue/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/text_rec_cur.png b/icons/MVLightBlue/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVLightBlue/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/text_rec_sel.png b/icons/MVLightBlue/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVLightBlue/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/text_timer_full.png b/icons/MVLightBlue/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVLightBlue/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/text_timer_full_cur.png b/icons/MVLightBlue/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVLightBlue/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/text_timer_full_sel.png b/icons/MVLightBlue/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVLightBlue/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/text_timer_partial.png b/icons/MVLightBlue/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVLightBlue/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/text_timer_partial_cur.png b/icons/MVLightBlue/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVLightBlue/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/text_timer_partial_sel.png b/icons/MVLightBlue/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVLightBlue/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/text_vps.png b/icons/MVLightBlue/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVLightBlue/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/text_vps_cur.png b/icons/MVLightBlue/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVLightBlue/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/text_vps_sel.png b/icons/MVLightBlue/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVLightBlue/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/timerActive.png b/icons/MVLightBlue/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVLightBlue/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/timerInactive.png b/icons/MVLightBlue/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVLightBlue/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/timerRecording.png b/icons/MVLightBlue/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVLightBlue/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/timer_full.png b/icons/MVLightBlue/timer_full.png
new file mode 100644
index 0000000..b3c5533
Binary files /dev/null and b/icons/MVLightBlue/timer_full.png differ
diff --git a/icons/MVLightBlue/timer_full_cur.png b/icons/MVLightBlue/timer_full_cur.png
new file mode 120000
index 0000000..e0225f1
--- /dev/null
+++ b/icons/MVLightBlue/timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/timer_partial.png b/icons/MVLightBlue/timer_partial.png
new file mode 100644
index 0000000..b600bdb
Binary files /dev/null and b/icons/MVLightBlue/timer_partial.png differ
diff --git a/icons/MVLightBlue/timer_partial_cur.png b/icons/MVLightBlue/timer_partial_cur.png
new file mode 120000
index 0000000..db9e5d7
--- /dev/null
+++ b/icons/MVLightBlue/timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/topbar_timer.png b/icons/MVLightBlue/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVLightBlue/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/topbar_timerconflict_high.png b/icons/MVLightBlue/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVLightBlue/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/topbar_timerconflict_low.png b/icons/MVLightBlue/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVLightBlue/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/tv.png b/icons/MVLightBlue/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVLightBlue/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/uncrypted.png b/icons/MVLightBlue/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVLightBlue/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/unknown_asp.png b/icons/MVLightBlue/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVLightBlue/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/unknown_res.png b/icons/MVLightBlue/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVLightBlue/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVLightBlue/vps.png b/icons/MVLightBlue/vps.png
new file mode 100644
index 0000000..ff540a6
Binary files /dev/null and b/icons/MVLightBlue/vps.png differ
diff --git a/icons/MVLightBlue/vps_cur.png b/icons/MVLightBlue/vps_cur.png
new file mode 120000
index 0000000..923472f
--- /dev/null
+++ b/icons/MVLightBlue/vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/vps_cur.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/1280x720.png b/icons/MVLightGreen/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVLightGreen/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/1440x1080.png b/icons/MVLightGreen/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVLightGreen/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/169.png b/icons/MVLightGreen/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVLightGreen/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/169w.png b/icons/MVLightGreen/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVLightGreen/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/1920x1080.png b/icons/MVLightGreen/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVLightGreen/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/221.png b/icons/MVLightGreen/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVLightGreen/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/352x576.png b/icons/MVLightGreen/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVLightGreen/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/43.png b/icons/MVLightGreen/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVLightGreen/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/480x576.png b/icons/MVLightGreen/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVLightGreen/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/528x576.png b/icons/MVLightGreen/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVLightGreen/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/544x576.png b/icons/MVLightGreen/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVLightGreen/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/704x576.png b/icons/MVLightGreen/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVLightGreen/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/720x576.png b/icons/MVLightGreen/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVLightGreen/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/960x720.png b/icons/MVLightGreen/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVLightGreen/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/blank.png b/icons/MVLightGreen/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVLightGreen/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/changroup.png b/icons/MVLightGreen/changroup.png
new file mode 100644
index 0000000..ed78a46
Binary files /dev/null and b/icons/MVLightGreen/changroup.png differ
diff --git a/icons/MVLightGreen/chart1b.png b/icons/MVLightGreen/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVLightGreen/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/chart2b.png b/icons/MVLightGreen/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVLightGreen/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/chart3b.png b/icons/MVLightGreen/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVLightGreen/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/chart4b.png b/icons/MVLightGreen/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVLightGreen/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/chart5b.png b/icons/MVLightGreen/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVLightGreen/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/chart6b.png b/icons/MVLightGreen/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVLightGreen/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/chart7.png b/icons/MVLightGreen/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVLightGreen/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/chart7b.png b/icons/MVLightGreen/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVLightGreen/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/crypted.png b/icons/MVLightGreen/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVLightGreen/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/forward.png b/icons/MVLightGreen/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVLightGreen/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/forward_sel.png b/icons/MVLightGreen/forward_sel.png
new file mode 100644
index 0000000..004f3ed
Binary files /dev/null and b/icons/MVLightGreen/forward_sel.png differ
diff --git a/icons/MVLightGreen/hd.png b/icons/MVLightGreen/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVLightGreen/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/message_error.png b/icons/MVLightGreen/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVLightGreen/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/message_info.png b/icons/MVLightGreen/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVLightGreen/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/message_status.png b/icons/MVLightGreen/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVLightGreen/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/message_warning.png b/icons/MVLightGreen/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVLightGreen/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/pause.png b/icons/MVLightGreen/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVLightGreen/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/pause_sel.png b/icons/MVLightGreen/pause_sel.png
new file mode 100644
index 0000000..b1d248a
Binary files /dev/null and b/icons/MVLightGreen/pause_sel.png differ
diff --git a/icons/MVLightGreen/play.png b/icons/MVLightGreen/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVLightGreen/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/play_sel.png b/icons/MVLightGreen/play_sel.png
new file mode 100644
index 0000000..8c186e5
Binary files /dev/null and b/icons/MVLightGreen/play_sel.png differ
diff --git a/icons/MVLightGreen/prev.png b/icons/MVLightGreen/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVLightGreen/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/prev_sel.png b/icons/MVLightGreen/prev_sel.png
new file mode 100644
index 0000000..88faa98
Binary files /dev/null and b/icons/MVLightGreen/prev_sel.png differ
diff --git a/icons/MVLightGreen/radio.png b/icons/MVLightGreen/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVLightGreen/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/recording.png b/icons/MVLightGreen/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVLightGreen/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/recording_cutted.png b/icons/MVLightGreen/recording_cutted.png
new file mode 100644
index 0000000..29d6188
Binary files /dev/null and b/icons/MVLightGreen/recording_cutted.png differ
diff --git a/icons/MVLightGreen/recording_cutted_cur.png b/icons/MVLightGreen/recording_cutted_cur.png
new file mode 120000
index 0000000..e270866
--- /dev/null
+++ b/icons/MVLightGreen/recording_cutted_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_cutted_cur.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/recording_cutted_extra.png b/icons/MVLightGreen/recording_cutted_extra.png
new file mode 100644
index 0000000..8619668
Binary files /dev/null and b/icons/MVLightGreen/recording_cutted_extra.png differ
diff --git a/icons/MVLightGreen/recording_new.png b/icons/MVLightGreen/recording_new.png
new file mode 100644
index 0000000..2038c67
Binary files /dev/null and b/icons/MVLightGreen/recording_new.png differ
diff --git a/icons/MVLightGreen/recording_new_cur.png b/icons/MVLightGreen/recording_new_cur.png
new file mode 120000
index 0000000..7d08eda
--- /dev/null
+++ b/icons/MVLightGreen/recording_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_new_cur.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/rewind.png b/icons/MVLightGreen/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVLightGreen/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/rewind_sel.png b/icons/MVLightGreen/rewind_sel.png
new file mode 100644
index 0000000..8452ebd
Binary files /dev/null and b/icons/MVLightGreen/rewind_sel.png differ
diff --git a/icons/MVLightGreen/sd.png b/icons/MVLightGreen/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVLightGreen/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/skip.png b/icons/MVLightGreen/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVLightGreen/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/skip_sel.png b/icons/MVLightGreen/skip_sel.png
new file mode 100644
index 0000000..eb952ff
Binary files /dev/null and b/icons/MVLightGreen/skip_sel.png differ
diff --git a/icons/MVLightGreen/text_arrowturn.png b/icons/MVLightGreen/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVLightGreen/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/text_arrowturn_cur.png b/icons/MVLightGreen/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVLightGreen/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/text_arrowturn_sel.png b/icons/MVLightGreen/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVLightGreen/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/text_new.png b/icons/MVLightGreen/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVLightGreen/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/text_new_cur.png b/icons/MVLightGreen/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVLightGreen/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/text_new_sel.png b/icons/MVLightGreen/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVLightGreen/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/text_rec.png b/icons/MVLightGreen/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVLightGreen/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/text_rec_cur.png b/icons/MVLightGreen/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVLightGreen/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/text_rec_sel.png b/icons/MVLightGreen/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVLightGreen/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/text_timer_full.png b/icons/MVLightGreen/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVLightGreen/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/text_timer_full_cur.png b/icons/MVLightGreen/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVLightGreen/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/text_timer_full_sel.png b/icons/MVLightGreen/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVLightGreen/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/text_timer_partial.png b/icons/MVLightGreen/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVLightGreen/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/text_timer_partial_cur.png b/icons/MVLightGreen/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVLightGreen/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/text_timer_partial_sel.png b/icons/MVLightGreen/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVLightGreen/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/text_vps.png b/icons/MVLightGreen/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVLightGreen/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/text_vps_cur.png b/icons/MVLightGreen/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVLightGreen/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/text_vps_sel.png b/icons/MVLightGreen/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVLightGreen/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/timerActive.png b/icons/MVLightGreen/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVLightGreen/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/timerInactive.png b/icons/MVLightGreen/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVLightGreen/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/timerRecording.png b/icons/MVLightGreen/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVLightGreen/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/timer_full.png b/icons/MVLightGreen/timer_full.png
new file mode 100644
index 0000000..a638a2f
Binary files /dev/null and b/icons/MVLightGreen/timer_full.png differ
diff --git a/icons/MVLightGreen/timer_full_cur.png b/icons/MVLightGreen/timer_full_cur.png
new file mode 120000
index 0000000..e0225f1
--- /dev/null
+++ b/icons/MVLightGreen/timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/timer_partial.png b/icons/MVLightGreen/timer_partial.png
new file mode 100644
index 0000000..5c44ecd
Binary files /dev/null and b/icons/MVLightGreen/timer_partial.png differ
diff --git a/icons/MVLightGreen/timer_partial_cur.png b/icons/MVLightGreen/timer_partial_cur.png
new file mode 120000
index 0000000..db9e5d7
--- /dev/null
+++ b/icons/MVLightGreen/timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/topbar_timer.png b/icons/MVLightGreen/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVLightGreen/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/topbar_timerconflict_high.png b/icons/MVLightGreen/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVLightGreen/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/topbar_timerconflict_low.png b/icons/MVLightGreen/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVLightGreen/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/tv.png b/icons/MVLightGreen/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVLightGreen/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/uncrypted.png b/icons/MVLightGreen/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVLightGreen/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/unknown_asp.png b/icons/MVLightGreen/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVLightGreen/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/unknown_res.png b/icons/MVLightGreen/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVLightGreen/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVLightGreen/vps.png b/icons/MVLightGreen/vps.png
new file mode 100644
index 0000000..47f87b7
Binary files /dev/null and b/icons/MVLightGreen/vps.png differ
diff --git a/icons/MVLightGreen/vps_cur.png b/icons/MVLightGreen/vps_cur.png
new file mode 120000
index 0000000..923472f
--- /dev/null
+++ b/icons/MVLightGreen/vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/vps_cur.png
\ No newline at end of file
diff --git a/icons/MVMint/1280x720.png b/icons/MVMint/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVMint/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVMint/1440x1080.png b/icons/MVMint/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVMint/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVMint/169.png b/icons/MVMint/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVMint/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVMint/169w.png b/icons/MVMint/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVMint/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVMint/1920x1080.png b/icons/MVMint/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVMint/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVMint/221.png b/icons/MVMint/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVMint/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVMint/352x576.png b/icons/MVMint/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVMint/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVMint/43.png b/icons/MVMint/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVMint/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVMint/480x576.png b/icons/MVMint/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVMint/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVMint/528x576.png b/icons/MVMint/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVMint/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVMint/544x576.png b/icons/MVMint/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVMint/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVMint/704x576.png b/icons/MVMint/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVMint/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVMint/720x576.png b/icons/MVMint/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVMint/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVMint/960x720.png b/icons/MVMint/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVMint/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVMint/blank.png b/icons/MVMint/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVMint/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVMint/changroup.png b/icons/MVMint/changroup.png
new file mode 100644
index 0000000..8e9ac25
Binary files /dev/null and b/icons/MVMint/changroup.png differ
diff --git a/icons/MVMint/chart1b.png b/icons/MVMint/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVMint/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVMint/chart2b.png b/icons/MVMint/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVMint/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVMint/chart3b.png b/icons/MVMint/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVMint/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVMint/chart4b.png b/icons/MVMint/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVMint/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVMint/chart5b.png b/icons/MVMint/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVMint/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVMint/chart6b.png b/icons/MVMint/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVMint/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVMint/chart7.png b/icons/MVMint/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVMint/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVMint/chart7b.png b/icons/MVMint/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVMint/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVMint/crypted.png b/icons/MVMint/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVMint/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVMint/forward.png b/icons/MVMint/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVMint/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVMint/forward_sel.png b/icons/MVMint/forward_sel.png
new file mode 100644
index 0000000..e5f8914
Binary files /dev/null and b/icons/MVMint/forward_sel.png differ
diff --git a/icons/MVMint/hd.png b/icons/MVMint/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVMint/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVMint/message_error.png b/icons/MVMint/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVMint/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVMint/message_info.png b/icons/MVMint/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVMint/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVMint/message_status.png b/icons/MVMint/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVMint/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVMint/message_warning.png b/icons/MVMint/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVMint/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVMint/pause.png b/icons/MVMint/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVMint/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVMint/pause_sel.png b/icons/MVMint/pause_sel.png
new file mode 100644
index 0000000..7e56a33
Binary files /dev/null and b/icons/MVMint/pause_sel.png differ
diff --git a/icons/MVMint/play.png b/icons/MVMint/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVMint/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVMint/play_sel.png b/icons/MVMint/play_sel.png
new file mode 100644
index 0000000..b383656
Binary files /dev/null and b/icons/MVMint/play_sel.png differ
diff --git a/icons/MVMint/prev.png b/icons/MVMint/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVMint/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVMint/prev_sel.png b/icons/MVMint/prev_sel.png
new file mode 100644
index 0000000..77bfcac
Binary files /dev/null and b/icons/MVMint/prev_sel.png differ
diff --git a/icons/MVMint/radio.png b/icons/MVMint/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVMint/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVMint/recording.png b/icons/MVMint/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVMint/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVMint/recording_cutted.png b/icons/MVMint/recording_cutted.png
new file mode 100644
index 0000000..1c0c391
Binary files /dev/null and b/icons/MVMint/recording_cutted.png differ
diff --git a/icons/MVMint/recording_cutted_cur.png b/icons/MVMint/recording_cutted_cur.png
new file mode 120000
index 0000000..e270866
--- /dev/null
+++ b/icons/MVMint/recording_cutted_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_cutted_cur.png
\ No newline at end of file
diff --git a/icons/MVMint/recording_cutted_extra.png b/icons/MVMint/recording_cutted_extra.png
new file mode 100644
index 0000000..d8ca9c1
Binary files /dev/null and b/icons/MVMint/recording_cutted_extra.png differ
diff --git a/icons/MVMint/recording_new.png b/icons/MVMint/recording_new.png
new file mode 100644
index 0000000..41fd6d1
Binary files /dev/null and b/icons/MVMint/recording_new.png differ
diff --git a/icons/MVMint/recording_new_cur.png b/icons/MVMint/recording_new_cur.png
new file mode 120000
index 0000000..7d08eda
--- /dev/null
+++ b/icons/MVMint/recording_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_new_cur.png
\ No newline at end of file
diff --git a/icons/MVMint/rewind.png b/icons/MVMint/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVMint/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVMint/rewind_sel.png b/icons/MVMint/rewind_sel.png
new file mode 100644
index 0000000..9c1fd93
Binary files /dev/null and b/icons/MVMint/rewind_sel.png differ
diff --git a/icons/MVMint/sd.png b/icons/MVMint/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVMint/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVMint/skip.png b/icons/MVMint/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVMint/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVMint/skip_sel.png b/icons/MVMint/skip_sel.png
new file mode 100644
index 0000000..6298857
Binary files /dev/null and b/icons/MVMint/skip_sel.png differ
diff --git a/icons/MVMint/text_arrowturn.png b/icons/MVMint/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVMint/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVMint/text_arrowturn_cur.png b/icons/MVMint/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVMint/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVMint/text_arrowturn_sel.png b/icons/MVMint/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVMint/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVMint/text_new.png b/icons/MVMint/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVMint/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVMint/text_new_cur.png b/icons/MVMint/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVMint/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVMint/text_new_sel.png b/icons/MVMint/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVMint/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVMint/text_rec.png b/icons/MVMint/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVMint/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVMint/text_rec_cur.png b/icons/MVMint/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVMint/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVMint/text_rec_sel.png b/icons/MVMint/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVMint/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVMint/text_timer_full.png b/icons/MVMint/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVMint/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVMint/text_timer_full_cur.png b/icons/MVMint/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVMint/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVMint/text_timer_full_sel.png b/icons/MVMint/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVMint/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVMint/text_timer_partial.png b/icons/MVMint/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVMint/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVMint/text_timer_partial_cur.png b/icons/MVMint/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVMint/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVMint/text_timer_partial_sel.png b/icons/MVMint/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVMint/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVMint/text_vps.png b/icons/MVMint/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVMint/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVMint/text_vps_cur.png b/icons/MVMint/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVMint/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVMint/text_vps_sel.png b/icons/MVMint/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVMint/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVMint/timerActive.png b/icons/MVMint/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVMint/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVMint/timerInactive.png b/icons/MVMint/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVMint/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVMint/timerRecording.png b/icons/MVMint/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVMint/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVMint/timer_full.png b/icons/MVMint/timer_full.png
new file mode 100644
index 0000000..acab193
Binary files /dev/null and b/icons/MVMint/timer_full.png differ
diff --git a/icons/MVMint/timer_full_cur.png b/icons/MVMint/timer_full_cur.png
new file mode 120000
index 0000000..e0225f1
--- /dev/null
+++ b/icons/MVMint/timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVMint/timer_partial.png b/icons/MVMint/timer_partial.png
new file mode 100644
index 0000000..2a22fe8
Binary files /dev/null and b/icons/MVMint/timer_partial.png differ
diff --git a/icons/MVMint/timer_partial_cur.png b/icons/MVMint/timer_partial_cur.png
new file mode 120000
index 0000000..db9e5d7
--- /dev/null
+++ b/icons/MVMint/timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVMint/topbar_timer.png b/icons/MVMint/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVMint/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVMint/topbar_timerconflict_high.png b/icons/MVMint/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVMint/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVMint/topbar_timerconflict_low.png b/icons/MVMint/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVMint/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVMint/tv.png b/icons/MVMint/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVMint/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVMint/uncrypted.png b/icons/MVMint/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVMint/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVMint/unknown_asp.png b/icons/MVMint/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVMint/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVMint/unknown_res.png b/icons/MVMint/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVMint/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVMint/vps.png b/icons/MVMint/vps.png
new file mode 100644
index 0000000..7972d36
Binary files /dev/null and b/icons/MVMint/vps.png differ
diff --git a/icons/MVMint/vps_cur.png b/icons/MVMint/vps_cur.png
new file mode 120000
index 0000000..923472f
--- /dev/null
+++ b/icons/MVMint/vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/vps_cur.png
\ No newline at end of file
diff --git a/icons/MVNuts/1280x720.png b/icons/MVNuts/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVNuts/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVNuts/1440x1080.png b/icons/MVNuts/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVNuts/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVNuts/169.png b/icons/MVNuts/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVNuts/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVNuts/169w.png b/icons/MVNuts/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVNuts/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVNuts/1920x1080.png b/icons/MVNuts/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVNuts/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVNuts/221.png b/icons/MVNuts/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVNuts/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVNuts/352x576.png b/icons/MVNuts/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVNuts/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVNuts/43.png b/icons/MVNuts/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVNuts/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVNuts/480x576.png b/icons/MVNuts/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVNuts/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVNuts/528x576.png b/icons/MVNuts/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVNuts/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVNuts/544x576.png b/icons/MVNuts/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVNuts/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVNuts/704x576.png b/icons/MVNuts/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVNuts/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVNuts/720x576.png b/icons/MVNuts/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVNuts/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVNuts/960x720.png b/icons/MVNuts/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVNuts/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVNuts/blank.png b/icons/MVNuts/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVNuts/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVNuts/changroup.png b/icons/MVNuts/changroup.png
new file mode 100644
index 0000000..7e179f2
Binary files /dev/null and b/icons/MVNuts/changroup.png differ
diff --git a/icons/MVNuts/chart1b.png b/icons/MVNuts/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVNuts/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVNuts/chart2b.png b/icons/MVNuts/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVNuts/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVNuts/chart3b.png b/icons/MVNuts/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVNuts/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVNuts/chart4b.png b/icons/MVNuts/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVNuts/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVNuts/chart5b.png b/icons/MVNuts/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVNuts/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVNuts/chart6b.png b/icons/MVNuts/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVNuts/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVNuts/chart7.png b/icons/MVNuts/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVNuts/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVNuts/chart7b.png b/icons/MVNuts/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVNuts/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVNuts/crypted.png b/icons/MVNuts/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVNuts/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVNuts/forward.png b/icons/MVNuts/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVNuts/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVNuts/forward_sel.png b/icons/MVNuts/forward_sel.png
new file mode 100644
index 0000000..6701b91
Binary files /dev/null and b/icons/MVNuts/forward_sel.png differ
diff --git a/icons/MVNuts/hd.png b/icons/MVNuts/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVNuts/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVNuts/message_error.png b/icons/MVNuts/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVNuts/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVNuts/message_info.png b/icons/MVNuts/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVNuts/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVNuts/message_status.png b/icons/MVNuts/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVNuts/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVNuts/message_warning.png b/icons/MVNuts/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVNuts/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVNuts/pause.png b/icons/MVNuts/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVNuts/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVNuts/pause_sel.png b/icons/MVNuts/pause_sel.png
new file mode 100644
index 0000000..c5ca9cc
Binary files /dev/null and b/icons/MVNuts/pause_sel.png differ
diff --git a/icons/MVNuts/play.png b/icons/MVNuts/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVNuts/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVNuts/play_sel.png b/icons/MVNuts/play_sel.png
new file mode 100644
index 0000000..913f81c
Binary files /dev/null and b/icons/MVNuts/play_sel.png differ
diff --git a/icons/MVNuts/prev.png b/icons/MVNuts/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVNuts/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVNuts/prev_sel.png b/icons/MVNuts/prev_sel.png
new file mode 100644
index 0000000..063ffc9
Binary files /dev/null and b/icons/MVNuts/prev_sel.png differ
diff --git a/icons/MVNuts/radio.png b/icons/MVNuts/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVNuts/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVNuts/recording.png b/icons/MVNuts/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVNuts/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVNuts/recording_cutted.png b/icons/MVNuts/recording_cutted.png
new file mode 100644
index 0000000..245355b
Binary files /dev/null and b/icons/MVNuts/recording_cutted.png differ
diff --git a/icons/MVNuts/recording_cutted_cur.png b/icons/MVNuts/recording_cutted_cur.png
new file mode 120000
index 0000000..e270866
--- /dev/null
+++ b/icons/MVNuts/recording_cutted_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_cutted_cur.png
\ No newline at end of file
diff --git a/icons/MVNuts/recording_cutted_extra.png b/icons/MVNuts/recording_cutted_extra.png
new file mode 100644
index 0000000..8f367a6
Binary files /dev/null and b/icons/MVNuts/recording_cutted_extra.png differ
diff --git a/icons/MVNuts/recording_new.png b/icons/MVNuts/recording_new.png
new file mode 100644
index 0000000..19bf094
Binary files /dev/null and b/icons/MVNuts/recording_new.png differ
diff --git a/icons/MVNuts/recording_new_cur.png b/icons/MVNuts/recording_new_cur.png
new file mode 120000
index 0000000..7d08eda
--- /dev/null
+++ b/icons/MVNuts/recording_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_new_cur.png
\ No newline at end of file
diff --git a/icons/MVNuts/rewind.png b/icons/MVNuts/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVNuts/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVNuts/rewind_sel.png b/icons/MVNuts/rewind_sel.png
new file mode 100644
index 0000000..e0c94cc
Binary files /dev/null and b/icons/MVNuts/rewind_sel.png differ
diff --git a/icons/MVNuts/sd.png b/icons/MVNuts/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVNuts/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVNuts/skip.png b/icons/MVNuts/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVNuts/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVNuts/skip_sel.png b/icons/MVNuts/skip_sel.png
new file mode 100644
index 0000000..bf23fec
Binary files /dev/null and b/icons/MVNuts/skip_sel.png differ
diff --git a/icons/MVNuts/text_arrowturn.png b/icons/MVNuts/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVNuts/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVNuts/text_arrowturn_cur.png b/icons/MVNuts/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVNuts/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVNuts/text_arrowturn_sel.png b/icons/MVNuts/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVNuts/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVNuts/text_new.png b/icons/MVNuts/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVNuts/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVNuts/text_new_cur.png b/icons/MVNuts/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVNuts/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVNuts/text_new_sel.png b/icons/MVNuts/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVNuts/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVNuts/text_rec.png b/icons/MVNuts/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVNuts/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVNuts/text_rec_cur.png b/icons/MVNuts/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVNuts/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVNuts/text_rec_sel.png b/icons/MVNuts/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVNuts/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVNuts/text_timer_full.png b/icons/MVNuts/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVNuts/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVNuts/text_timer_full_cur.png b/icons/MVNuts/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVNuts/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVNuts/text_timer_full_sel.png b/icons/MVNuts/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVNuts/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVNuts/text_timer_partial.png b/icons/MVNuts/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVNuts/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVNuts/text_timer_partial_cur.png b/icons/MVNuts/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVNuts/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVNuts/text_timer_partial_sel.png b/icons/MVNuts/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVNuts/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVNuts/text_vps.png b/icons/MVNuts/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVNuts/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVNuts/text_vps_cur.png b/icons/MVNuts/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVNuts/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVNuts/text_vps_sel.png b/icons/MVNuts/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVNuts/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVNuts/timerActive.png b/icons/MVNuts/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVNuts/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVNuts/timerInactive.png b/icons/MVNuts/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVNuts/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVNuts/timerRecording.png b/icons/MVNuts/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVNuts/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVNuts/timer_full.png b/icons/MVNuts/timer_full.png
new file mode 100644
index 0000000..a8b951c
Binary files /dev/null and b/icons/MVNuts/timer_full.png differ
diff --git a/icons/MVNuts/timer_full_cur.png b/icons/MVNuts/timer_full_cur.png
new file mode 120000
index 0000000..e0225f1
--- /dev/null
+++ b/icons/MVNuts/timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVNuts/timer_partial.png b/icons/MVNuts/timer_partial.png
new file mode 100644
index 0000000..6016a77
Binary files /dev/null and b/icons/MVNuts/timer_partial.png differ
diff --git a/icons/MVNuts/timer_partial_cur.png b/icons/MVNuts/timer_partial_cur.png
new file mode 120000
index 0000000..db9e5d7
--- /dev/null
+++ b/icons/MVNuts/timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVNuts/topbar_timer.png b/icons/MVNuts/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVNuts/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVNuts/topbar_timerconflict_high.png b/icons/MVNuts/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVNuts/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVNuts/topbar_timerconflict_low.png b/icons/MVNuts/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVNuts/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVNuts/tv.png b/icons/MVNuts/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVNuts/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVNuts/uncrypted.png b/icons/MVNuts/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVNuts/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVNuts/unknown_asp.png b/icons/MVNuts/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVNuts/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVNuts/unknown_res.png b/icons/MVNuts/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVNuts/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVNuts/vps.png b/icons/MVNuts/vps.png
new file mode 100644
index 0000000..de85afe
Binary files /dev/null and b/icons/MVNuts/vps.png differ
diff --git a/icons/MVNuts/vps_cur.png b/icons/MVNuts/vps_cur.png
new file mode 120000
index 0000000..923472f
--- /dev/null
+++ b/icons/MVNuts/vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/vps_cur.png
\ No newline at end of file
diff --git a/icons/MVOlive/1280x720.png b/icons/MVOlive/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVOlive/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVOlive/1440x1080.png b/icons/MVOlive/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVOlive/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVOlive/169.png b/icons/MVOlive/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVOlive/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVOlive/169w.png b/icons/MVOlive/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVOlive/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVOlive/1920x1080.png b/icons/MVOlive/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVOlive/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVOlive/221.png b/icons/MVOlive/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVOlive/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVOlive/352x576.png b/icons/MVOlive/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVOlive/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVOlive/43.png b/icons/MVOlive/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVOlive/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVOlive/480x576.png b/icons/MVOlive/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVOlive/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVOlive/528x576.png b/icons/MVOlive/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVOlive/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVOlive/544x576.png b/icons/MVOlive/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVOlive/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVOlive/704x576.png b/icons/MVOlive/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVOlive/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVOlive/720x576.png b/icons/MVOlive/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVOlive/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVOlive/960x720.png b/icons/MVOlive/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVOlive/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVOlive/blank.png b/icons/MVOlive/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVOlive/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVOlive/changroup.png b/icons/MVOlive/changroup.png
new file mode 100644
index 0000000..50a28fc
Binary files /dev/null and b/icons/MVOlive/changroup.png differ
diff --git a/icons/MVOlive/chart1b.png b/icons/MVOlive/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVOlive/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVOlive/chart2b.png b/icons/MVOlive/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVOlive/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVOlive/chart3b.png b/icons/MVOlive/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVOlive/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVOlive/chart4b.png b/icons/MVOlive/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVOlive/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVOlive/chart5b.png b/icons/MVOlive/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVOlive/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVOlive/chart6b.png b/icons/MVOlive/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVOlive/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVOlive/chart7.png b/icons/MVOlive/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVOlive/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVOlive/chart7b.png b/icons/MVOlive/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVOlive/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVOlive/crypted.png b/icons/MVOlive/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVOlive/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVOlive/forward.png b/icons/MVOlive/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVOlive/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVOlive/forward_sel.png b/icons/MVOlive/forward_sel.png
new file mode 100644
index 0000000..e93f662
Binary files /dev/null and b/icons/MVOlive/forward_sel.png differ
diff --git a/icons/MVOlive/hd.png b/icons/MVOlive/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVOlive/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVOlive/message_error.png b/icons/MVOlive/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVOlive/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVOlive/message_info.png b/icons/MVOlive/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVOlive/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVOlive/message_status.png b/icons/MVOlive/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVOlive/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVOlive/message_warning.png b/icons/MVOlive/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVOlive/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVOlive/pause.png b/icons/MVOlive/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVOlive/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVOlive/pause_sel.png b/icons/MVOlive/pause_sel.png
new file mode 100644
index 0000000..6ac95c1
Binary files /dev/null and b/icons/MVOlive/pause_sel.png differ
diff --git a/icons/MVOlive/play.png b/icons/MVOlive/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVOlive/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVOlive/play_sel.png b/icons/MVOlive/play_sel.png
new file mode 100644
index 0000000..7aecda3
Binary files /dev/null and b/icons/MVOlive/play_sel.png differ
diff --git a/icons/MVOlive/prev.png b/icons/MVOlive/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVOlive/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVOlive/prev_sel.png b/icons/MVOlive/prev_sel.png
new file mode 100644
index 0000000..169ca42
Binary files /dev/null and b/icons/MVOlive/prev_sel.png differ
diff --git a/icons/MVOlive/radio.png b/icons/MVOlive/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVOlive/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVOlive/recording.png b/icons/MVOlive/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVOlive/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVOlive/recording_cutted.png b/icons/MVOlive/recording_cutted.png
new file mode 100644
index 0000000..4f61f53
Binary files /dev/null and b/icons/MVOlive/recording_cutted.png differ
diff --git a/icons/MVOlive/recording_cutted_cur.png b/icons/MVOlive/recording_cutted_cur.png
new file mode 120000
index 0000000..e270866
--- /dev/null
+++ b/icons/MVOlive/recording_cutted_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_cutted_cur.png
\ No newline at end of file
diff --git a/icons/MVOlive/recording_cutted_extra.png b/icons/MVOlive/recording_cutted_extra.png
new file mode 100644
index 0000000..dcb5823
Binary files /dev/null and b/icons/MVOlive/recording_cutted_extra.png differ
diff --git a/icons/MVOlive/recording_new.png b/icons/MVOlive/recording_new.png
new file mode 100644
index 0000000..04899dd
Binary files /dev/null and b/icons/MVOlive/recording_new.png differ
diff --git a/icons/MVOlive/recording_new_cur.png b/icons/MVOlive/recording_new_cur.png
new file mode 120000
index 0000000..7d08eda
--- /dev/null
+++ b/icons/MVOlive/recording_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_new_cur.png
\ No newline at end of file
diff --git a/icons/MVOlive/rewind.png b/icons/MVOlive/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVOlive/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVOlive/rewind_sel.png b/icons/MVOlive/rewind_sel.png
new file mode 100644
index 0000000..5bbddf9
Binary files /dev/null and b/icons/MVOlive/rewind_sel.png differ
diff --git a/icons/MVOlive/sd.png b/icons/MVOlive/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVOlive/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVOlive/skip.png b/icons/MVOlive/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVOlive/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVOlive/skip_sel.png b/icons/MVOlive/skip_sel.png
new file mode 100644
index 0000000..527db9f
Binary files /dev/null and b/icons/MVOlive/skip_sel.png differ
diff --git a/icons/MVOlive/text_arrowturn.png b/icons/MVOlive/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVOlive/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVOlive/text_arrowturn_cur.png b/icons/MVOlive/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVOlive/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVOlive/text_arrowturn_sel.png b/icons/MVOlive/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVOlive/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVOlive/text_new.png b/icons/MVOlive/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVOlive/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVOlive/text_new_cur.png b/icons/MVOlive/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVOlive/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVOlive/text_new_sel.png b/icons/MVOlive/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVOlive/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVOlive/text_rec.png b/icons/MVOlive/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVOlive/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVOlive/text_rec_cur.png b/icons/MVOlive/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVOlive/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVOlive/text_rec_sel.png b/icons/MVOlive/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVOlive/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVOlive/text_timer_full.png b/icons/MVOlive/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVOlive/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVOlive/text_timer_full_cur.png b/icons/MVOlive/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVOlive/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVOlive/text_timer_full_sel.png b/icons/MVOlive/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVOlive/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVOlive/text_timer_partial.png b/icons/MVOlive/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVOlive/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVOlive/text_timer_partial_cur.png b/icons/MVOlive/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVOlive/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVOlive/text_timer_partial_sel.png b/icons/MVOlive/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVOlive/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVOlive/text_vps.png b/icons/MVOlive/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVOlive/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVOlive/text_vps_cur.png b/icons/MVOlive/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVOlive/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVOlive/text_vps_sel.png b/icons/MVOlive/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVOlive/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVOlive/timerActive.png b/icons/MVOlive/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVOlive/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVOlive/timerInactive.png b/icons/MVOlive/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVOlive/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVOlive/timerRecording.png b/icons/MVOlive/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVOlive/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVOlive/timer_full.png b/icons/MVOlive/timer_full.png
new file mode 100644
index 0000000..b68bac3
Binary files /dev/null and b/icons/MVOlive/timer_full.png differ
diff --git a/icons/MVOlive/timer_full_cur.png b/icons/MVOlive/timer_full_cur.png
new file mode 120000
index 0000000..e0225f1
--- /dev/null
+++ b/icons/MVOlive/timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVOlive/timer_partial.png b/icons/MVOlive/timer_partial.png
new file mode 100644
index 0000000..80da049
Binary files /dev/null and b/icons/MVOlive/timer_partial.png differ
diff --git a/icons/MVOlive/timer_partial_cur.png b/icons/MVOlive/timer_partial_cur.png
new file mode 120000
index 0000000..db9e5d7
--- /dev/null
+++ b/icons/MVOlive/timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVOlive/topbar_timer.png b/icons/MVOlive/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVOlive/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVOlive/topbar_timerconflict_high.png b/icons/MVOlive/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVOlive/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVOlive/topbar_timerconflict_low.png b/icons/MVOlive/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVOlive/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVOlive/tv.png b/icons/MVOlive/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVOlive/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVOlive/uncrypted.png b/icons/MVOlive/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVOlive/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVOlive/unknown_asp.png b/icons/MVOlive/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVOlive/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVOlive/unknown_res.png b/icons/MVOlive/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVOlive/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVOlive/vps.png b/icons/MVOlive/vps.png
new file mode 100644
index 0000000..c968ff2
Binary files /dev/null and b/icons/MVOlive/vps.png differ
diff --git a/icons/MVOlive/vps_cur.png b/icons/MVOlive/vps_cur.png
new file mode 120000
index 0000000..923472f
--- /dev/null
+++ b/icons/MVOlive/vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/vps_cur.png
\ No newline at end of file
diff --git a/icons/MVOrange/1280x720.png b/icons/MVOrange/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVOrange/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVOrange/1440x1080.png b/icons/MVOrange/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVOrange/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVOrange/169.png b/icons/MVOrange/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVOrange/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVOrange/169w.png b/icons/MVOrange/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVOrange/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVOrange/1920x1080.png b/icons/MVOrange/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVOrange/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVOrange/221.png b/icons/MVOrange/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVOrange/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVOrange/352x576.png b/icons/MVOrange/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVOrange/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVOrange/43.png b/icons/MVOrange/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVOrange/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVOrange/480x576.png b/icons/MVOrange/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVOrange/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVOrange/528x576.png b/icons/MVOrange/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVOrange/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVOrange/544x576.png b/icons/MVOrange/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVOrange/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVOrange/704x576.png b/icons/MVOrange/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVOrange/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVOrange/720x576.png b/icons/MVOrange/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVOrange/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVOrange/960x720.png b/icons/MVOrange/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVOrange/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVOrange/blank.png b/icons/MVOrange/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVOrange/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVOrange/changroup.png b/icons/MVOrange/changroup.png
new file mode 100644
index 0000000..987e2c5
Binary files /dev/null and b/icons/MVOrange/changroup.png differ
diff --git a/icons/MVOrange/chart1b.png b/icons/MVOrange/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVOrange/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVOrange/chart2b.png b/icons/MVOrange/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVOrange/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVOrange/chart3b.png b/icons/MVOrange/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVOrange/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVOrange/chart4b.png b/icons/MVOrange/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVOrange/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVOrange/chart5b.png b/icons/MVOrange/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVOrange/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVOrange/chart6b.png b/icons/MVOrange/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVOrange/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVOrange/chart7.png b/icons/MVOrange/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVOrange/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVOrange/chart7b.png b/icons/MVOrange/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVOrange/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVOrange/crypted.png b/icons/MVOrange/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVOrange/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVOrange/forward.png b/icons/MVOrange/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVOrange/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVOrange/forward_sel.png b/icons/MVOrange/forward_sel.png
new file mode 100644
index 0000000..45711a1
Binary files /dev/null and b/icons/MVOrange/forward_sel.png differ
diff --git a/icons/MVOrange/hd.png b/icons/MVOrange/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVOrange/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVOrange/message_error.png b/icons/MVOrange/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVOrange/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVOrange/message_info.png b/icons/MVOrange/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVOrange/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVOrange/message_status.png b/icons/MVOrange/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVOrange/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVOrange/message_warning.png b/icons/MVOrange/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVOrange/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVOrange/pause.png b/icons/MVOrange/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVOrange/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVOrange/pause_sel.png b/icons/MVOrange/pause_sel.png
new file mode 100644
index 0000000..42f11b3
Binary files /dev/null and b/icons/MVOrange/pause_sel.png differ
diff --git a/icons/MVOrange/play.png b/icons/MVOrange/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVOrange/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVOrange/play_sel.png b/icons/MVOrange/play_sel.png
new file mode 100644
index 0000000..e00cce6
Binary files /dev/null and b/icons/MVOrange/play_sel.png differ
diff --git a/icons/MVOrange/prev.png b/icons/MVOrange/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVOrange/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVOrange/prev_sel.png b/icons/MVOrange/prev_sel.png
new file mode 100644
index 0000000..3b70d36
Binary files /dev/null and b/icons/MVOrange/prev_sel.png differ
diff --git a/icons/MVOrange/radio.png b/icons/MVOrange/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVOrange/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVOrange/recording.png b/icons/MVOrange/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVOrange/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVOrange/recording_cutted.png b/icons/MVOrange/recording_cutted.png
new file mode 100644
index 0000000..c89ff9f
Binary files /dev/null and b/icons/MVOrange/recording_cutted.png differ
diff --git a/icons/MVOrange/recording_cutted_cur.png b/icons/MVOrange/recording_cutted_cur.png
new file mode 120000
index 0000000..e270866
--- /dev/null
+++ b/icons/MVOrange/recording_cutted_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_cutted_cur.png
\ No newline at end of file
diff --git a/icons/MVOrange/recording_cutted_extra.png b/icons/MVOrange/recording_cutted_extra.png
new file mode 100644
index 0000000..ed681d7
Binary files /dev/null and b/icons/MVOrange/recording_cutted_extra.png differ
diff --git a/icons/MVOrange/recording_new.png b/icons/MVOrange/recording_new.png
new file mode 100644
index 0000000..f9def4b
Binary files /dev/null and b/icons/MVOrange/recording_new.png differ
diff --git a/icons/MVOrange/recording_new_cur.png b/icons/MVOrange/recording_new_cur.png
new file mode 120000
index 0000000..7d08eda
--- /dev/null
+++ b/icons/MVOrange/recording_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_new_cur.png
\ No newline at end of file
diff --git a/icons/MVOrange/rewind.png b/icons/MVOrange/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVOrange/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVOrange/rewind_sel.png b/icons/MVOrange/rewind_sel.png
new file mode 100644
index 0000000..330d2fd
Binary files /dev/null and b/icons/MVOrange/rewind_sel.png differ
diff --git a/icons/MVOrange/sd.png b/icons/MVOrange/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVOrange/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVOrange/skip.png b/icons/MVOrange/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVOrange/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVOrange/skip_sel.png b/icons/MVOrange/skip_sel.png
new file mode 100644
index 0000000..9e06793
Binary files /dev/null and b/icons/MVOrange/skip_sel.png differ
diff --git a/icons/MVOrange/text_arrowturn.png b/icons/MVOrange/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVOrange/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVOrange/text_arrowturn_cur.png b/icons/MVOrange/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVOrange/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVOrange/text_arrowturn_sel.png b/icons/MVOrange/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVOrange/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVOrange/text_new.png b/icons/MVOrange/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVOrange/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVOrange/text_new_cur.png b/icons/MVOrange/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVOrange/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVOrange/text_new_sel.png b/icons/MVOrange/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVOrange/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVOrange/text_rec.png b/icons/MVOrange/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVOrange/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVOrange/text_rec_cur.png b/icons/MVOrange/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVOrange/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVOrange/text_rec_sel.png b/icons/MVOrange/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVOrange/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVOrange/text_timer_full.png b/icons/MVOrange/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVOrange/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVOrange/text_timer_full_cur.png b/icons/MVOrange/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVOrange/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVOrange/text_timer_full_sel.png b/icons/MVOrange/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVOrange/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVOrange/text_timer_partial.png b/icons/MVOrange/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVOrange/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVOrange/text_timer_partial_cur.png b/icons/MVOrange/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVOrange/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVOrange/text_timer_partial_sel.png b/icons/MVOrange/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVOrange/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVOrange/text_vps.png b/icons/MVOrange/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVOrange/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVOrange/text_vps_cur.png b/icons/MVOrange/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVOrange/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVOrange/text_vps_sel.png b/icons/MVOrange/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVOrange/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVOrange/timerActive.png b/icons/MVOrange/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVOrange/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVOrange/timerInactive.png b/icons/MVOrange/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVOrange/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVOrange/timerRecording.png b/icons/MVOrange/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVOrange/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVOrange/timer_full.png b/icons/MVOrange/timer_full.png
new file mode 100644
index 0000000..d7c54a8
Binary files /dev/null and b/icons/MVOrange/timer_full.png differ
diff --git a/icons/MVOrange/timer_full_cur.png b/icons/MVOrange/timer_full_cur.png
new file mode 120000
index 0000000..e0225f1
--- /dev/null
+++ b/icons/MVOrange/timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVOrange/timer_partial.png b/icons/MVOrange/timer_partial.png
new file mode 100644
index 0000000..fd7363e
Binary files /dev/null and b/icons/MVOrange/timer_partial.png differ
diff --git a/icons/MVOrange/timer_partial_cur.png b/icons/MVOrange/timer_partial_cur.png
new file mode 120000
index 0000000..db9e5d7
--- /dev/null
+++ b/icons/MVOrange/timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVOrange/topbar_timer.png b/icons/MVOrange/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVOrange/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVOrange/topbar_timerconflict_high.png b/icons/MVOrange/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVOrange/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVOrange/topbar_timerconflict_low.png b/icons/MVOrange/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVOrange/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVOrange/tv.png b/icons/MVOrange/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVOrange/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVOrange/uncrypted.png b/icons/MVOrange/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVOrange/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVOrange/unknown_asp.png b/icons/MVOrange/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVOrange/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVOrange/unknown_res.png b/icons/MVOrange/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVOrange/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVOrange/vps.png b/icons/MVOrange/vps.png
new file mode 100644
index 0000000..b527705
Binary files /dev/null and b/icons/MVOrange/vps.png differ
diff --git a/icons/MVOrange/vps_cur.png b/icons/MVOrange/vps_cur.png
new file mode 120000
index 0000000..923472f
--- /dev/null
+++ b/icons/MVOrange/vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/vps_cur.png
\ No newline at end of file
diff --git a/icons/MVPflaume/1280x720.png b/icons/MVPflaume/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVPflaume/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVPflaume/1440x1080.png b/icons/MVPflaume/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVPflaume/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVPflaume/169.png b/icons/MVPflaume/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVPflaume/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVPflaume/169w.png b/icons/MVPflaume/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVPflaume/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVPflaume/1920x1080.png b/icons/MVPflaume/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVPflaume/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVPflaume/221.png b/icons/MVPflaume/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVPflaume/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVPflaume/352x576.png b/icons/MVPflaume/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVPflaume/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVPflaume/43.png b/icons/MVPflaume/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVPflaume/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVPflaume/480x576.png b/icons/MVPflaume/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVPflaume/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVPflaume/528x576.png b/icons/MVPflaume/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVPflaume/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVPflaume/544x576.png b/icons/MVPflaume/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVPflaume/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVPflaume/704x576.png b/icons/MVPflaume/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVPflaume/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVPflaume/720x576.png b/icons/MVPflaume/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVPflaume/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVPflaume/960x720.png b/icons/MVPflaume/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVPflaume/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVPflaume/blank.png b/icons/MVPflaume/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVPflaume/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVPflaume/changroup.png b/icons/MVPflaume/changroup.png
new file mode 100644
index 0000000..6390c73
Binary files /dev/null and b/icons/MVPflaume/changroup.png differ
diff --git a/icons/MVPflaume/chart1b.png b/icons/MVPflaume/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVPflaume/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVPflaume/chart2b.png b/icons/MVPflaume/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVPflaume/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVPflaume/chart3b.png b/icons/MVPflaume/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVPflaume/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVPflaume/chart4b.png b/icons/MVPflaume/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVPflaume/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVPflaume/chart5b.png b/icons/MVPflaume/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVPflaume/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVPflaume/chart6b.png b/icons/MVPflaume/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVPflaume/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVPflaume/chart7.png b/icons/MVPflaume/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVPflaume/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVPflaume/chart7b.png b/icons/MVPflaume/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVPflaume/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVPflaume/crypted.png b/icons/MVPflaume/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVPflaume/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVPflaume/forward.png b/icons/MVPflaume/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVPflaume/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVPflaume/forward_sel.png b/icons/MVPflaume/forward_sel.png
new file mode 100644
index 0000000..af0e81e
Binary files /dev/null and b/icons/MVPflaume/forward_sel.png differ
diff --git a/icons/MVPflaume/hd.png b/icons/MVPflaume/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVPflaume/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVPflaume/message_error.png b/icons/MVPflaume/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVPflaume/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVPflaume/message_info.png b/icons/MVPflaume/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVPflaume/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVPflaume/message_status.png b/icons/MVPflaume/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVPflaume/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVPflaume/message_warning.png b/icons/MVPflaume/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVPflaume/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVPflaume/pause.png b/icons/MVPflaume/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVPflaume/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVPflaume/pause_sel.png b/icons/MVPflaume/pause_sel.png
new file mode 100644
index 0000000..ba3cc9c
Binary files /dev/null and b/icons/MVPflaume/pause_sel.png differ
diff --git a/icons/MVPflaume/play.png b/icons/MVPflaume/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVPflaume/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVPflaume/play_sel.png b/icons/MVPflaume/play_sel.png
new file mode 100644
index 0000000..b7e0af6
Binary files /dev/null and b/icons/MVPflaume/play_sel.png differ
diff --git a/icons/MVPflaume/prev.png b/icons/MVPflaume/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVPflaume/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVPflaume/prev_sel.png b/icons/MVPflaume/prev_sel.png
new file mode 100644
index 0000000..548c7cb
Binary files /dev/null and b/icons/MVPflaume/prev_sel.png differ
diff --git a/icons/MVPflaume/radio.png b/icons/MVPflaume/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVPflaume/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVPflaume/recording.png b/icons/MVPflaume/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVPflaume/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVPflaume/recording_cutted.png b/icons/MVPflaume/recording_cutted.png
new file mode 100644
index 0000000..e87d2bd
Binary files /dev/null and b/icons/MVPflaume/recording_cutted.png differ
diff --git a/icons/MVPflaume/recording_cutted_cur.png b/icons/MVPflaume/recording_cutted_cur.png
new file mode 120000
index 0000000..e270866
--- /dev/null
+++ b/icons/MVPflaume/recording_cutted_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_cutted_cur.png
\ No newline at end of file
diff --git a/icons/MVPflaume/recording_cutted_extra.png b/icons/MVPflaume/recording_cutted_extra.png
new file mode 100644
index 0000000..c734de2
Binary files /dev/null and b/icons/MVPflaume/recording_cutted_extra.png differ
diff --git a/icons/MVPflaume/recording_new.png b/icons/MVPflaume/recording_new.png
new file mode 100644
index 0000000..ee2738a
Binary files /dev/null and b/icons/MVPflaume/recording_new.png differ
diff --git a/icons/MVPflaume/recording_new_cur.png b/icons/MVPflaume/recording_new_cur.png
new file mode 120000
index 0000000..7d08eda
--- /dev/null
+++ b/icons/MVPflaume/recording_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_new_cur.png
\ No newline at end of file
diff --git a/icons/MVPflaume/rewind.png b/icons/MVPflaume/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVPflaume/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVPflaume/rewind_sel.png b/icons/MVPflaume/rewind_sel.png
new file mode 100644
index 0000000..558e4b4
Binary files /dev/null and b/icons/MVPflaume/rewind_sel.png differ
diff --git a/icons/MVPflaume/sd.png b/icons/MVPflaume/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVPflaume/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVPflaume/skip.png b/icons/MVPflaume/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVPflaume/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVPflaume/skip_sel.png b/icons/MVPflaume/skip_sel.png
new file mode 100644
index 0000000..c689d2c
Binary files /dev/null and b/icons/MVPflaume/skip_sel.png differ
diff --git a/icons/MVPflaume/text_arrowturn.png b/icons/MVPflaume/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVPflaume/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVPflaume/text_arrowturn_cur.png b/icons/MVPflaume/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVPflaume/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVPflaume/text_arrowturn_sel.png b/icons/MVPflaume/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVPflaume/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVPflaume/text_new.png b/icons/MVPflaume/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVPflaume/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVPflaume/text_new_cur.png b/icons/MVPflaume/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVPflaume/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVPflaume/text_new_sel.png b/icons/MVPflaume/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVPflaume/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVPflaume/text_rec.png b/icons/MVPflaume/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVPflaume/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVPflaume/text_rec_cur.png b/icons/MVPflaume/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVPflaume/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVPflaume/text_rec_sel.png b/icons/MVPflaume/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVPflaume/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVPflaume/text_timer_full.png b/icons/MVPflaume/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVPflaume/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVPflaume/text_timer_full_cur.png b/icons/MVPflaume/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVPflaume/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVPflaume/text_timer_full_sel.png b/icons/MVPflaume/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVPflaume/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVPflaume/text_timer_partial.png b/icons/MVPflaume/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVPflaume/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVPflaume/text_timer_partial_cur.png b/icons/MVPflaume/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVPflaume/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVPflaume/text_timer_partial_sel.png b/icons/MVPflaume/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVPflaume/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVPflaume/text_vps.png b/icons/MVPflaume/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVPflaume/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVPflaume/text_vps_cur.png b/icons/MVPflaume/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVPflaume/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVPflaume/text_vps_sel.png b/icons/MVPflaume/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVPflaume/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVPflaume/timerActive.png b/icons/MVPflaume/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVPflaume/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVPflaume/timerInactive.png b/icons/MVPflaume/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVPflaume/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVPflaume/timerRecording.png b/icons/MVPflaume/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVPflaume/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVPflaume/timer_full.png b/icons/MVPflaume/timer_full.png
new file mode 100644
index 0000000..2ca5481
Binary files /dev/null and b/icons/MVPflaume/timer_full.png differ
diff --git a/icons/MVPflaume/timer_full_cur.png b/icons/MVPflaume/timer_full_cur.png
new file mode 120000
index 0000000..e0225f1
--- /dev/null
+++ b/icons/MVPflaume/timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVPflaume/timer_partial.png b/icons/MVPflaume/timer_partial.png
new file mode 100644
index 0000000..457a859
Binary files /dev/null and b/icons/MVPflaume/timer_partial.png differ
diff --git a/icons/MVPflaume/timer_partial_cur.png b/icons/MVPflaume/timer_partial_cur.png
new file mode 120000
index 0000000..db9e5d7
--- /dev/null
+++ b/icons/MVPflaume/timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVPflaume/topbar_timer.png b/icons/MVPflaume/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVPflaume/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVPflaume/topbar_timerconflict_high.png b/icons/MVPflaume/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVPflaume/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVPflaume/topbar_timerconflict_low.png b/icons/MVPflaume/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVPflaume/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVPflaume/tv.png b/icons/MVPflaume/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVPflaume/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVPflaume/uncrypted.png b/icons/MVPflaume/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVPflaume/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVPflaume/unknown_asp.png b/icons/MVPflaume/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVPflaume/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVPflaume/unknown_res.png b/icons/MVPflaume/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVPflaume/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVPflaume/vps.png b/icons/MVPflaume/vps.png
new file mode 100644
index 0000000..12e5733
Binary files /dev/null and b/icons/MVPflaume/vps.png differ
diff --git a/icons/MVPflaume/vps_cur.png b/icons/MVPflaume/vps_cur.png
new file mode 120000
index 0000000..923472f
--- /dev/null
+++ b/icons/MVPflaume/vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/vps_cur.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/1280x720.png b/icons/MVPumpkin/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVPumpkin/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/1440x1080.png b/icons/MVPumpkin/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVPumpkin/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/169.png b/icons/MVPumpkin/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVPumpkin/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/169w.png b/icons/MVPumpkin/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVPumpkin/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/1920x1080.png b/icons/MVPumpkin/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVPumpkin/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/221.png b/icons/MVPumpkin/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVPumpkin/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/352x576.png b/icons/MVPumpkin/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVPumpkin/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/43.png b/icons/MVPumpkin/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVPumpkin/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/480x576.png b/icons/MVPumpkin/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVPumpkin/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/528x576.png b/icons/MVPumpkin/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVPumpkin/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/544x576.png b/icons/MVPumpkin/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVPumpkin/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/704x576.png b/icons/MVPumpkin/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVPumpkin/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/720x576.png b/icons/MVPumpkin/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVPumpkin/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/960x720.png b/icons/MVPumpkin/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVPumpkin/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/blank.png b/icons/MVPumpkin/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVPumpkin/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/changroup.png b/icons/MVPumpkin/changroup.png
new file mode 100644
index 0000000..987e2c5
Binary files /dev/null and b/icons/MVPumpkin/changroup.png differ
diff --git a/icons/MVPumpkin/chart1b.png b/icons/MVPumpkin/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVPumpkin/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/chart2b.png b/icons/MVPumpkin/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVPumpkin/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/chart3b.png b/icons/MVPumpkin/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVPumpkin/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/chart4b.png b/icons/MVPumpkin/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVPumpkin/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/chart5b.png b/icons/MVPumpkin/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVPumpkin/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/chart6b.png b/icons/MVPumpkin/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVPumpkin/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/chart7.png b/icons/MVPumpkin/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVPumpkin/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/chart7b.png b/icons/MVPumpkin/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVPumpkin/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/crypted.png b/icons/MVPumpkin/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVPumpkin/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/forward.png b/icons/MVPumpkin/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVPumpkin/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/forward_sel.png b/icons/MVPumpkin/forward_sel.png
new file mode 100644
index 0000000..45711a1
Binary files /dev/null and b/icons/MVPumpkin/forward_sel.png differ
diff --git a/icons/MVPumpkin/hd.png b/icons/MVPumpkin/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVPumpkin/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/message_error.png b/icons/MVPumpkin/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVPumpkin/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/message_info.png b/icons/MVPumpkin/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVPumpkin/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/message_status.png b/icons/MVPumpkin/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVPumpkin/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/message_warning.png b/icons/MVPumpkin/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVPumpkin/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/pause.png b/icons/MVPumpkin/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVPumpkin/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/pause_sel.png b/icons/MVPumpkin/pause_sel.png
new file mode 100644
index 0000000..42f11b3
Binary files /dev/null and b/icons/MVPumpkin/pause_sel.png differ
diff --git a/icons/MVPumpkin/play.png b/icons/MVPumpkin/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVPumpkin/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/play_sel.png b/icons/MVPumpkin/play_sel.png
new file mode 100644
index 0000000..e00cce6
Binary files /dev/null and b/icons/MVPumpkin/play_sel.png differ
diff --git a/icons/MVPumpkin/prev.png b/icons/MVPumpkin/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVPumpkin/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/prev_sel.png b/icons/MVPumpkin/prev_sel.png
new file mode 100644
index 0000000..3b70d36
Binary files /dev/null and b/icons/MVPumpkin/prev_sel.png differ
diff --git a/icons/MVPumpkin/radio.png b/icons/MVPumpkin/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVPumpkin/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/recording.png b/icons/MVPumpkin/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVPumpkin/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/recording_cutted.png b/icons/MVPumpkin/recording_cutted.png
new file mode 100644
index 0000000..c89ff9f
Binary files /dev/null and b/icons/MVPumpkin/recording_cutted.png differ
diff --git a/icons/MVPumpkin/recording_cutted_cur.png b/icons/MVPumpkin/recording_cutted_cur.png
new file mode 120000
index 0000000..e270866
--- /dev/null
+++ b/icons/MVPumpkin/recording_cutted_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_cutted_cur.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/recording_cutted_extra.png b/icons/MVPumpkin/recording_cutted_extra.png
new file mode 100644
index 0000000..ed681d7
Binary files /dev/null and b/icons/MVPumpkin/recording_cutted_extra.png differ
diff --git a/icons/MVPumpkin/recording_new.png b/icons/MVPumpkin/recording_new.png
new file mode 100644
index 0000000..f9def4b
Binary files /dev/null and b/icons/MVPumpkin/recording_new.png differ
diff --git a/icons/MVPumpkin/recording_new_cur.png b/icons/MVPumpkin/recording_new_cur.png
new file mode 120000
index 0000000..7d08eda
--- /dev/null
+++ b/icons/MVPumpkin/recording_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_new_cur.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/rewind.png b/icons/MVPumpkin/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVPumpkin/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/rewind_sel.png b/icons/MVPumpkin/rewind_sel.png
new file mode 100644
index 0000000..330d2fd
Binary files /dev/null and b/icons/MVPumpkin/rewind_sel.png differ
diff --git a/icons/MVPumpkin/sd.png b/icons/MVPumpkin/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVPumpkin/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/skip.png b/icons/MVPumpkin/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVPumpkin/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/skip_sel.png b/icons/MVPumpkin/skip_sel.png
new file mode 100644
index 0000000..9e06793
Binary files /dev/null and b/icons/MVPumpkin/skip_sel.png differ
diff --git a/icons/MVPumpkin/text_arrowturn.png b/icons/MVPumpkin/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVPumpkin/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/text_arrowturn_cur.png b/icons/MVPumpkin/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVPumpkin/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/text_arrowturn_sel.png b/icons/MVPumpkin/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVPumpkin/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/text_new.png b/icons/MVPumpkin/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVPumpkin/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/text_new_cur.png b/icons/MVPumpkin/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVPumpkin/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/text_new_sel.png b/icons/MVPumpkin/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVPumpkin/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/text_rec.png b/icons/MVPumpkin/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVPumpkin/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/text_rec_cur.png b/icons/MVPumpkin/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVPumpkin/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/text_rec_sel.png b/icons/MVPumpkin/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVPumpkin/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/text_timer_full.png b/icons/MVPumpkin/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVPumpkin/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/text_timer_full_cur.png b/icons/MVPumpkin/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVPumpkin/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/text_timer_full_sel.png b/icons/MVPumpkin/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVPumpkin/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/text_timer_partial.png b/icons/MVPumpkin/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVPumpkin/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/text_timer_partial_cur.png b/icons/MVPumpkin/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVPumpkin/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/text_timer_partial_sel.png b/icons/MVPumpkin/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVPumpkin/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/text_vps.png b/icons/MVPumpkin/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVPumpkin/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/text_vps_cur.png b/icons/MVPumpkin/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVPumpkin/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/text_vps_sel.png b/icons/MVPumpkin/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVPumpkin/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/timerActive.png b/icons/MVPumpkin/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVPumpkin/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/timerInactive.png b/icons/MVPumpkin/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVPumpkin/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/timerRecording.png b/icons/MVPumpkin/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVPumpkin/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/timer_full.png b/icons/MVPumpkin/timer_full.png
new file mode 100644
index 0000000..d7c54a8
Binary files /dev/null and b/icons/MVPumpkin/timer_full.png differ
diff --git a/icons/MVPumpkin/timer_full_cur.png b/icons/MVPumpkin/timer_full_cur.png
new file mode 120000
index 0000000..e0225f1
--- /dev/null
+++ b/icons/MVPumpkin/timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/timer_partial.png b/icons/MVPumpkin/timer_partial.png
new file mode 100644
index 0000000..fd7363e
Binary files /dev/null and b/icons/MVPumpkin/timer_partial.png differ
diff --git a/icons/MVPumpkin/timer_partial_cur.png b/icons/MVPumpkin/timer_partial_cur.png
new file mode 120000
index 0000000..db9e5d7
--- /dev/null
+++ b/icons/MVPumpkin/timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/topbar_timer.png b/icons/MVPumpkin/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVPumpkin/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/topbar_timerconflict_high.png b/icons/MVPumpkin/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVPumpkin/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/topbar_timerconflict_low.png b/icons/MVPumpkin/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVPumpkin/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/tv.png b/icons/MVPumpkin/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVPumpkin/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/uncrypted.png b/icons/MVPumpkin/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVPumpkin/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/unknown_asp.png b/icons/MVPumpkin/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVPumpkin/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/unknown_res.png b/icons/MVPumpkin/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVPumpkin/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVPumpkin/vps.png b/icons/MVPumpkin/vps.png
new file mode 100644
index 0000000..b527705
Binary files /dev/null and b/icons/MVPumpkin/vps.png differ
diff --git a/icons/MVPumpkin/vps_cur.png b/icons/MVPumpkin/vps_cur.png
new file mode 120000
index 0000000..923472f
--- /dev/null
+++ b/icons/MVPumpkin/vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/vps_cur.png
\ No newline at end of file
diff --git a/icons/MVPurple/1280x720.png b/icons/MVPurple/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVPurple/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVPurple/1440x1080.png b/icons/MVPurple/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVPurple/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVPurple/169.png b/icons/MVPurple/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVPurple/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVPurple/169w.png b/icons/MVPurple/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVPurple/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVPurple/1920x1080.png b/icons/MVPurple/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVPurple/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVPurple/221.png b/icons/MVPurple/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVPurple/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVPurple/352x576.png b/icons/MVPurple/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVPurple/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVPurple/43.png b/icons/MVPurple/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVPurple/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVPurple/480x576.png b/icons/MVPurple/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVPurple/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVPurple/528x576.png b/icons/MVPurple/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVPurple/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVPurple/544x576.png b/icons/MVPurple/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVPurple/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVPurple/704x576.png b/icons/MVPurple/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVPurple/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVPurple/720x576.png b/icons/MVPurple/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVPurple/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVPurple/960x720.png b/icons/MVPurple/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVPurple/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVPurple/blank.png b/icons/MVPurple/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVPurple/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVPurple/changroup.png b/icons/MVPurple/changroup.png
new file mode 100644
index 0000000..4856e6e
Binary files /dev/null and b/icons/MVPurple/changroup.png differ
diff --git a/icons/MVPurple/chart1b.png b/icons/MVPurple/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVPurple/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVPurple/chart2b.png b/icons/MVPurple/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVPurple/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVPurple/chart3b.png b/icons/MVPurple/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVPurple/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVPurple/chart4b.png b/icons/MVPurple/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVPurple/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVPurple/chart5b.png b/icons/MVPurple/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVPurple/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVPurple/chart6b.png b/icons/MVPurple/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVPurple/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVPurple/chart7.png b/icons/MVPurple/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVPurple/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVPurple/chart7b.png b/icons/MVPurple/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVPurple/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVPurple/crypted.png b/icons/MVPurple/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVPurple/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVPurple/forward.png b/icons/MVPurple/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVPurple/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVPurple/forward_sel.png b/icons/MVPurple/forward_sel.png
new file mode 100644
index 0000000..2383f28
Binary files /dev/null and b/icons/MVPurple/forward_sel.png differ
diff --git a/icons/MVPurple/hd.png b/icons/MVPurple/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVPurple/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVPurple/message_error.png b/icons/MVPurple/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVPurple/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVPurple/message_info.png b/icons/MVPurple/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVPurple/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVPurple/message_status.png b/icons/MVPurple/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVPurple/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVPurple/message_warning.png b/icons/MVPurple/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVPurple/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVPurple/pause.png b/icons/MVPurple/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVPurple/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVPurple/pause_sel.png b/icons/MVPurple/pause_sel.png
new file mode 100644
index 0000000..ecd41e32
Binary files /dev/null and b/icons/MVPurple/pause_sel.png differ
diff --git a/icons/MVPurple/play.png b/icons/MVPurple/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVPurple/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVPurple/play_sel.png b/icons/MVPurple/play_sel.png
new file mode 100644
index 0000000..4626847
Binary files /dev/null and b/icons/MVPurple/play_sel.png differ
diff --git a/icons/MVPurple/prev.png b/icons/MVPurple/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVPurple/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVPurple/prev_sel.png b/icons/MVPurple/prev_sel.png
new file mode 100644
index 0000000..51c4f2f
Binary files /dev/null and b/icons/MVPurple/prev_sel.png differ
diff --git a/icons/MVPurple/radio.png b/icons/MVPurple/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVPurple/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVPurple/recording.png b/icons/MVPurple/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVPurple/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVPurple/recording_cutted.png b/icons/MVPurple/recording_cutted.png
new file mode 100644
index 0000000..b140a9f
Binary files /dev/null and b/icons/MVPurple/recording_cutted.png differ
diff --git a/icons/MVPurple/recording_cutted_cur.png b/icons/MVPurple/recording_cutted_cur.png
new file mode 120000
index 0000000..e270866
--- /dev/null
+++ b/icons/MVPurple/recording_cutted_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_cutted_cur.png
\ No newline at end of file
diff --git a/icons/MVPurple/recording_cutted_extra.png b/icons/MVPurple/recording_cutted_extra.png
new file mode 100644
index 0000000..df0ee80
Binary files /dev/null and b/icons/MVPurple/recording_cutted_extra.png differ
diff --git a/icons/MVPurple/recording_new.png b/icons/MVPurple/recording_new.png
new file mode 100644
index 0000000..1661de0
Binary files /dev/null and b/icons/MVPurple/recording_new.png differ
diff --git a/icons/MVPurple/recording_new_cur.png b/icons/MVPurple/recording_new_cur.png
new file mode 120000
index 0000000..7d08eda
--- /dev/null
+++ b/icons/MVPurple/recording_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_new_cur.png
\ No newline at end of file
diff --git a/icons/MVPurple/rewind.png b/icons/MVPurple/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVPurple/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVPurple/rewind_sel.png b/icons/MVPurple/rewind_sel.png
new file mode 100644
index 0000000..77157b5
Binary files /dev/null and b/icons/MVPurple/rewind_sel.png differ
diff --git a/icons/MVPurple/sd.png b/icons/MVPurple/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVPurple/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVPurple/skip.png b/icons/MVPurple/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVPurple/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVPurple/skip_sel.png b/icons/MVPurple/skip_sel.png
new file mode 100644
index 0000000..427b058
Binary files /dev/null and b/icons/MVPurple/skip_sel.png differ
diff --git a/icons/MVPurple/text_arrowturn.png b/icons/MVPurple/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVPurple/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVPurple/text_arrowturn_cur.png b/icons/MVPurple/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVPurple/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVPurple/text_arrowturn_sel.png b/icons/MVPurple/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVPurple/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVPurple/text_new.png b/icons/MVPurple/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVPurple/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVPurple/text_new_cur.png b/icons/MVPurple/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVPurple/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVPurple/text_new_sel.png b/icons/MVPurple/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVPurple/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVPurple/text_rec.png b/icons/MVPurple/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVPurple/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVPurple/text_rec_cur.png b/icons/MVPurple/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVPurple/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVPurple/text_rec_sel.png b/icons/MVPurple/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVPurple/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVPurple/text_timer_full.png b/icons/MVPurple/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVPurple/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVPurple/text_timer_full_cur.png b/icons/MVPurple/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVPurple/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVPurple/text_timer_full_sel.png b/icons/MVPurple/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVPurple/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVPurple/text_timer_partial.png b/icons/MVPurple/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVPurple/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVPurple/text_timer_partial_cur.png b/icons/MVPurple/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVPurple/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVPurple/text_timer_partial_sel.png b/icons/MVPurple/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVPurple/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVPurple/text_vps.png b/icons/MVPurple/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVPurple/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVPurple/text_vps_cur.png b/icons/MVPurple/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVPurple/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVPurple/text_vps_sel.png b/icons/MVPurple/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVPurple/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVPurple/timerActive.png b/icons/MVPurple/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVPurple/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVPurple/timerInactive.png b/icons/MVPurple/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVPurple/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVPurple/timerRecording.png b/icons/MVPurple/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVPurple/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVPurple/timer_full.png b/icons/MVPurple/timer_full.png
new file mode 100644
index 0000000..cdbfa65
Binary files /dev/null and b/icons/MVPurple/timer_full.png differ
diff --git a/icons/MVPurple/timer_full_cur.png b/icons/MVPurple/timer_full_cur.png
new file mode 120000
index 0000000..e0225f1
--- /dev/null
+++ b/icons/MVPurple/timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVPurple/timer_partial.png b/icons/MVPurple/timer_partial.png
new file mode 100644
index 0000000..90c6a26
Binary files /dev/null and b/icons/MVPurple/timer_partial.png differ
diff --git a/icons/MVPurple/timer_partial_cur.png b/icons/MVPurple/timer_partial_cur.png
new file mode 120000
index 0000000..db9e5d7
--- /dev/null
+++ b/icons/MVPurple/timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVPurple/topbar_timer.png b/icons/MVPurple/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVPurple/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVPurple/topbar_timerconflict_high.png b/icons/MVPurple/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVPurple/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVPurple/topbar_timerconflict_low.png b/icons/MVPurple/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVPurple/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVPurple/tv.png b/icons/MVPurple/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVPurple/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVPurple/uncrypted.png b/icons/MVPurple/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVPurple/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVPurple/unknown_asp.png b/icons/MVPurple/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVPurple/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVPurple/unknown_res.png b/icons/MVPurple/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVPurple/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVPurple/vps.png b/icons/MVPurple/vps.png
new file mode 100644
index 0000000..fb162b5
Binary files /dev/null and b/icons/MVPurple/vps.png differ
diff --git a/icons/MVPurple/vps_cur.png b/icons/MVPurple/vps_cur.png
new file mode 120000
index 0000000..923472f
--- /dev/null
+++ b/icons/MVPurple/vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/vps_cur.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/1280x720.png b/icons/MVPurpleGrey/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVPurpleGrey/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/1440x1080.png b/icons/MVPurpleGrey/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVPurpleGrey/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/169.png b/icons/MVPurpleGrey/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVPurpleGrey/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/169w.png b/icons/MVPurpleGrey/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVPurpleGrey/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/1920x1080.png b/icons/MVPurpleGrey/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVPurpleGrey/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/221.png b/icons/MVPurpleGrey/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVPurpleGrey/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/352x576.png b/icons/MVPurpleGrey/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVPurpleGrey/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/43.png b/icons/MVPurpleGrey/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVPurpleGrey/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/480x576.png b/icons/MVPurpleGrey/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVPurpleGrey/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/528x576.png b/icons/MVPurpleGrey/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVPurpleGrey/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/544x576.png b/icons/MVPurpleGrey/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVPurpleGrey/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/704x576.png b/icons/MVPurpleGrey/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVPurpleGrey/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/720x576.png b/icons/MVPurpleGrey/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVPurpleGrey/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/960x720.png b/icons/MVPurpleGrey/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVPurpleGrey/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/blank.png b/icons/MVPurpleGrey/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVPurpleGrey/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/changroup.png b/icons/MVPurpleGrey/changroup.png
new file mode 100644
index 0000000..5515a57
Binary files /dev/null and b/icons/MVPurpleGrey/changroup.png differ
diff --git a/icons/MVPurpleGrey/chart1b.png b/icons/MVPurpleGrey/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVPurpleGrey/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/chart2b.png b/icons/MVPurpleGrey/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVPurpleGrey/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/chart3b.png b/icons/MVPurpleGrey/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVPurpleGrey/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/chart4b.png b/icons/MVPurpleGrey/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVPurpleGrey/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/chart5b.png b/icons/MVPurpleGrey/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVPurpleGrey/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/chart6b.png b/icons/MVPurpleGrey/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVPurpleGrey/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/chart7.png b/icons/MVPurpleGrey/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVPurpleGrey/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/chart7b.png b/icons/MVPurpleGrey/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVPurpleGrey/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/crypted.png b/icons/MVPurpleGrey/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVPurpleGrey/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/forward.png b/icons/MVPurpleGrey/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVPurpleGrey/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/forward_sel.png b/icons/MVPurpleGrey/forward_sel.png
new file mode 100644
index 0000000..ab5add7
Binary files /dev/null and b/icons/MVPurpleGrey/forward_sel.png differ
diff --git a/icons/MVPurpleGrey/hd.png b/icons/MVPurpleGrey/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVPurpleGrey/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/message_error.png b/icons/MVPurpleGrey/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVPurpleGrey/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/message_info.png b/icons/MVPurpleGrey/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVPurpleGrey/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/message_status.png b/icons/MVPurpleGrey/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVPurpleGrey/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/message_warning.png b/icons/MVPurpleGrey/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVPurpleGrey/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/pause.png b/icons/MVPurpleGrey/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVPurpleGrey/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/pause_sel.png b/icons/MVPurpleGrey/pause_sel.png
new file mode 100644
index 0000000..cc182b6
Binary files /dev/null and b/icons/MVPurpleGrey/pause_sel.png differ
diff --git a/icons/MVPurpleGrey/play.png b/icons/MVPurpleGrey/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVPurpleGrey/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/play_sel.png b/icons/MVPurpleGrey/play_sel.png
new file mode 100644
index 0000000..43e6218
Binary files /dev/null and b/icons/MVPurpleGrey/play_sel.png differ
diff --git a/icons/MVPurpleGrey/prev.png b/icons/MVPurpleGrey/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVPurpleGrey/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/prev_sel.png b/icons/MVPurpleGrey/prev_sel.png
new file mode 100644
index 0000000..e73198c
Binary files /dev/null and b/icons/MVPurpleGrey/prev_sel.png differ
diff --git a/icons/MVPurpleGrey/radio.png b/icons/MVPurpleGrey/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVPurpleGrey/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/recording.png b/icons/MVPurpleGrey/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVPurpleGrey/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/recording_cutted.png b/icons/MVPurpleGrey/recording_cutted.png
new file mode 100644
index 0000000..ce3119a
Binary files /dev/null and b/icons/MVPurpleGrey/recording_cutted.png differ
diff --git a/icons/MVPurpleGrey/recording_cutted_cur.png b/icons/MVPurpleGrey/recording_cutted_cur.png
new file mode 120000
index 0000000..e270866
--- /dev/null
+++ b/icons/MVPurpleGrey/recording_cutted_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_cutted_cur.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/recording_cutted_extra.png b/icons/MVPurpleGrey/recording_cutted_extra.png
new file mode 100644
index 0000000..272daed
Binary files /dev/null and b/icons/MVPurpleGrey/recording_cutted_extra.png differ
diff --git a/icons/MVPurpleGrey/recording_new.png b/icons/MVPurpleGrey/recording_new.png
new file mode 100644
index 0000000..fcfaef6
Binary files /dev/null and b/icons/MVPurpleGrey/recording_new.png differ
diff --git a/icons/MVPurpleGrey/recording_new_cur.png b/icons/MVPurpleGrey/recording_new_cur.png
new file mode 120000
index 0000000..7d08eda
--- /dev/null
+++ b/icons/MVPurpleGrey/recording_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_new_cur.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/rewind.png b/icons/MVPurpleGrey/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVPurpleGrey/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/rewind_sel.png b/icons/MVPurpleGrey/rewind_sel.png
new file mode 100644
index 0000000..dd0b8d0
Binary files /dev/null and b/icons/MVPurpleGrey/rewind_sel.png differ
diff --git a/icons/MVPurpleGrey/sd.png b/icons/MVPurpleGrey/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVPurpleGrey/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/skip.png b/icons/MVPurpleGrey/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVPurpleGrey/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/skip_sel.png b/icons/MVPurpleGrey/skip_sel.png
new file mode 100644
index 0000000..5162080
Binary files /dev/null and b/icons/MVPurpleGrey/skip_sel.png differ
diff --git a/icons/MVPurpleGrey/text_arrowturn.png b/icons/MVPurpleGrey/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVPurpleGrey/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/text_arrowturn_cur.png b/icons/MVPurpleGrey/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVPurpleGrey/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/text_arrowturn_sel.png b/icons/MVPurpleGrey/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVPurpleGrey/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/text_new.png b/icons/MVPurpleGrey/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVPurpleGrey/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/text_new_cur.png b/icons/MVPurpleGrey/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVPurpleGrey/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/text_new_sel.png b/icons/MVPurpleGrey/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVPurpleGrey/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/text_rec.png b/icons/MVPurpleGrey/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVPurpleGrey/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/text_rec_cur.png b/icons/MVPurpleGrey/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVPurpleGrey/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/text_rec_sel.png b/icons/MVPurpleGrey/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVPurpleGrey/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/text_timer_full.png b/icons/MVPurpleGrey/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVPurpleGrey/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/text_timer_full_cur.png b/icons/MVPurpleGrey/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVPurpleGrey/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/text_timer_full_sel.png b/icons/MVPurpleGrey/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVPurpleGrey/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/text_timer_partial.png b/icons/MVPurpleGrey/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVPurpleGrey/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/text_timer_partial_cur.png b/icons/MVPurpleGrey/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVPurpleGrey/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/text_timer_partial_sel.png b/icons/MVPurpleGrey/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVPurpleGrey/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/text_vps.png b/icons/MVPurpleGrey/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVPurpleGrey/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/text_vps_cur.png b/icons/MVPurpleGrey/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVPurpleGrey/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/text_vps_sel.png b/icons/MVPurpleGrey/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVPurpleGrey/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/timerActive.png b/icons/MVPurpleGrey/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVPurpleGrey/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/timerInactive.png b/icons/MVPurpleGrey/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVPurpleGrey/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/timerRecording.png b/icons/MVPurpleGrey/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVPurpleGrey/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/timer_full.png b/icons/MVPurpleGrey/timer_full.png
new file mode 100644
index 0000000..feb4438
Binary files /dev/null and b/icons/MVPurpleGrey/timer_full.png differ
diff --git a/icons/MVPurpleGrey/timer_full_cur.png b/icons/MVPurpleGrey/timer_full_cur.png
new file mode 120000
index 0000000..e0225f1
--- /dev/null
+++ b/icons/MVPurpleGrey/timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/timer_partial.png b/icons/MVPurpleGrey/timer_partial.png
new file mode 100644
index 0000000..68ad4b7
Binary files /dev/null and b/icons/MVPurpleGrey/timer_partial.png differ
diff --git a/icons/MVPurpleGrey/timer_partial_cur.png b/icons/MVPurpleGrey/timer_partial_cur.png
new file mode 120000
index 0000000..db9e5d7
--- /dev/null
+++ b/icons/MVPurpleGrey/timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/topbar_timer.png b/icons/MVPurpleGrey/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVPurpleGrey/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/topbar_timerconflict_high.png b/icons/MVPurpleGrey/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVPurpleGrey/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/topbar_timerconflict_low.png b/icons/MVPurpleGrey/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVPurpleGrey/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/tv.png b/icons/MVPurpleGrey/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVPurpleGrey/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/uncrypted.png b/icons/MVPurpleGrey/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVPurpleGrey/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/unknown_asp.png b/icons/MVPurpleGrey/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVPurpleGrey/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/unknown_res.png b/icons/MVPurpleGrey/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVPurpleGrey/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVPurpleGrey/vps.png b/icons/MVPurpleGrey/vps.png
new file mode 100644
index 0000000..ab5358e
Binary files /dev/null and b/icons/MVPurpleGrey/vps.png differ
diff --git a/icons/MVPurpleGrey/vps_cur.png b/icons/MVPurpleGrey/vps_cur.png
new file mode 120000
index 0000000..923472f
--- /dev/null
+++ b/icons/MVPurpleGrey/vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/vps_cur.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/1280x720.png b/icons/MVRauchglas/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVRauchglas/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/1440x1080.png b/icons/MVRauchglas/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVRauchglas/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/169.png b/icons/MVRauchglas/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVRauchglas/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/169w.png b/icons/MVRauchglas/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVRauchglas/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/1920x1080.png b/icons/MVRauchglas/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVRauchglas/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/221.png b/icons/MVRauchglas/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVRauchglas/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/352x576.png b/icons/MVRauchglas/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVRauchglas/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/43.png b/icons/MVRauchglas/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVRauchglas/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/480x576.png b/icons/MVRauchglas/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVRauchglas/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/528x576.png b/icons/MVRauchglas/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVRauchglas/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/544x576.png b/icons/MVRauchglas/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVRauchglas/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/704x576.png b/icons/MVRauchglas/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVRauchglas/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/720x576.png b/icons/MVRauchglas/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVRauchglas/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/960x720.png b/icons/MVRauchglas/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVRauchglas/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/blank.png b/icons/MVRauchglas/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVRauchglas/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/changroup.png b/icons/MVRauchglas/changroup.png
new file mode 100644
index 0000000..3f41e9e
Binary files /dev/null and b/icons/MVRauchglas/changroup.png differ
diff --git a/icons/MVRauchglas/chart1b.png b/icons/MVRauchglas/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVRauchglas/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/chart2b.png b/icons/MVRauchglas/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVRauchglas/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/chart3b.png b/icons/MVRauchglas/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVRauchglas/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/chart4b.png b/icons/MVRauchglas/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVRauchglas/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/chart5b.png b/icons/MVRauchglas/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVRauchglas/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/chart6b.png b/icons/MVRauchglas/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVRauchglas/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/chart7.png b/icons/MVRauchglas/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVRauchglas/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/chart7b.png b/icons/MVRauchglas/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVRauchglas/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/crypted.png b/icons/MVRauchglas/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVRauchglas/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/forward.png b/icons/MVRauchglas/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVRauchglas/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/forward_sel.png b/icons/MVRauchglas/forward_sel.png
new file mode 100644
index 0000000..2b0f3ab
Binary files /dev/null and b/icons/MVRauchglas/forward_sel.png differ
diff --git a/icons/MVRauchglas/hd.png b/icons/MVRauchglas/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVRauchglas/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/message_error.png b/icons/MVRauchglas/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVRauchglas/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/message_info.png b/icons/MVRauchglas/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVRauchglas/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/message_status.png b/icons/MVRauchglas/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVRauchglas/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/message_warning.png b/icons/MVRauchglas/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVRauchglas/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/pause.png b/icons/MVRauchglas/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVRauchglas/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/pause_sel.png b/icons/MVRauchglas/pause_sel.png
new file mode 100644
index 0000000..e3e5542
Binary files /dev/null and b/icons/MVRauchglas/pause_sel.png differ
diff --git a/icons/MVRauchglas/play.png b/icons/MVRauchglas/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVRauchglas/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/play_sel.png b/icons/MVRauchglas/play_sel.png
new file mode 100644
index 0000000..c129249
Binary files /dev/null and b/icons/MVRauchglas/play_sel.png differ
diff --git a/icons/MVRauchglas/prev.png b/icons/MVRauchglas/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVRauchglas/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/prev_sel.png b/icons/MVRauchglas/prev_sel.png
new file mode 100644
index 0000000..b6c9c97
Binary files /dev/null and b/icons/MVRauchglas/prev_sel.png differ
diff --git a/icons/MVRauchglas/radio.png b/icons/MVRauchglas/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVRauchglas/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/recording.png b/icons/MVRauchglas/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVRauchglas/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/recording_cutted.png b/icons/MVRauchglas/recording_cutted.png
new file mode 100644
index 0000000..ca992ab
Binary files /dev/null and b/icons/MVRauchglas/recording_cutted.png differ
diff --git a/icons/MVRauchglas/recording_cutted_cur.png b/icons/MVRauchglas/recording_cutted_cur.png
new file mode 100644
index 0000000..beb8aa2
Binary files /dev/null and b/icons/MVRauchglas/recording_cutted_cur.png differ
diff --git a/icons/MVRauchglas/recording_cutted_extra.png b/icons/MVRauchglas/recording_cutted_extra.png
new file mode 100644
index 0000000..995cc80
Binary files /dev/null and b/icons/MVRauchglas/recording_cutted_extra.png differ
diff --git a/icons/MVRauchglas/recording_new.png b/icons/MVRauchglas/recording_new.png
new file mode 100644
index 0000000..233dd6f
Binary files /dev/null and b/icons/MVRauchglas/recording_new.png differ
diff --git a/icons/MVRauchglas/recording_new_cur.png b/icons/MVRauchglas/recording_new_cur.png
new file mode 100644
index 0000000..1b56e87
Binary files /dev/null and b/icons/MVRauchglas/recording_new_cur.png differ
diff --git a/icons/MVRauchglas/rewind.png b/icons/MVRauchglas/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVRauchglas/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/rewind_sel.png b/icons/MVRauchglas/rewind_sel.png
new file mode 100644
index 0000000..6e2c6bf
Binary files /dev/null and b/icons/MVRauchglas/rewind_sel.png differ
diff --git a/icons/MVRauchglas/sd.png b/icons/MVRauchglas/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVRauchglas/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/skip.png b/icons/MVRauchglas/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVRauchglas/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/skip_sel.png b/icons/MVRauchglas/skip_sel.png
new file mode 100644
index 0000000..608c45f
Binary files /dev/null and b/icons/MVRauchglas/skip_sel.png differ
diff --git a/icons/MVRauchglas/text_arrowturn.png b/icons/MVRauchglas/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVRauchglas/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/text_arrowturn_cur.png b/icons/MVRauchglas/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVRauchglas/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/text_arrowturn_sel.png b/icons/MVRauchglas/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVRauchglas/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/text_new.png b/icons/MVRauchglas/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVRauchglas/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/text_new_cur.png b/icons/MVRauchglas/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVRauchglas/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/text_new_sel.png b/icons/MVRauchglas/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVRauchglas/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/text_rec.png b/icons/MVRauchglas/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVRauchglas/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/text_rec_cur.png b/icons/MVRauchglas/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVRauchglas/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/text_rec_sel.png b/icons/MVRauchglas/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVRauchglas/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/text_timer_full.png b/icons/MVRauchglas/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVRauchglas/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/text_timer_full_cur.png b/icons/MVRauchglas/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVRauchglas/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/text_timer_full_sel.png b/icons/MVRauchglas/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVRauchglas/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/text_timer_partial.png b/icons/MVRauchglas/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVRauchglas/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/text_timer_partial_cur.png b/icons/MVRauchglas/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVRauchglas/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/text_timer_partial_sel.png b/icons/MVRauchglas/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVRauchglas/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/text_vps.png b/icons/MVRauchglas/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVRauchglas/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/text_vps_cur.png b/icons/MVRauchglas/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVRauchglas/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/text_vps_sel.png b/icons/MVRauchglas/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVRauchglas/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/timerActive.png b/icons/MVRauchglas/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVRauchglas/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/timerInactive.png b/icons/MVRauchglas/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVRauchglas/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/timerRecording.png b/icons/MVRauchglas/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVRauchglas/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/timer_full.png b/icons/MVRauchglas/timer_full.png
new file mode 100644
index 0000000..cf895c8
Binary files /dev/null and b/icons/MVRauchglas/timer_full.png differ
diff --git a/icons/MVRauchglas/timer_full_cur.png b/icons/MVRauchglas/timer_full_cur.png
new file mode 100644
index 0000000..cd3c65b
Binary files /dev/null and b/icons/MVRauchglas/timer_full_cur.png differ
diff --git a/icons/MVRauchglas/timer_partial.png b/icons/MVRauchglas/timer_partial.png
new file mode 100644
index 0000000..c705bf0
Binary files /dev/null and b/icons/MVRauchglas/timer_partial.png differ
diff --git a/icons/MVRauchglas/timer_partial_cur.png b/icons/MVRauchglas/timer_partial_cur.png
new file mode 100644
index 0000000..7e868d9
Binary files /dev/null and b/icons/MVRauchglas/timer_partial_cur.png differ
diff --git a/icons/MVRauchglas/topbar_timer.png b/icons/MVRauchglas/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVRauchglas/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/topbar_timerconflict_high.png b/icons/MVRauchglas/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVRauchglas/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/topbar_timerconflict_low.png b/icons/MVRauchglas/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVRauchglas/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/tv.png b/icons/MVRauchglas/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVRauchglas/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/uncrypted.png b/icons/MVRauchglas/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVRauchglas/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/unknown_asp.png b/icons/MVRauchglas/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVRauchglas/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/unknown_res.png b/icons/MVRauchglas/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVRauchglas/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVRauchglas/vps.png b/icons/MVRauchglas/vps.png
new file mode 100644
index 0000000..dd3fef0
Binary files /dev/null and b/icons/MVRauchglas/vps.png differ
diff --git a/icons/MVRauchglas/vps_cur.png b/icons/MVRauchglas/vps_cur.png
new file mode 100644
index 0000000..5882820
Binary files /dev/null and b/icons/MVRauchglas/vps_cur.png differ
diff --git a/icons/MVRed/1280x720.png b/icons/MVRed/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVRed/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVRed/1440x1080.png b/icons/MVRed/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVRed/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVRed/169.png b/icons/MVRed/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVRed/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVRed/169w.png b/icons/MVRed/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVRed/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVRed/1920x1080.png b/icons/MVRed/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVRed/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVRed/221.png b/icons/MVRed/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVRed/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVRed/352x576.png b/icons/MVRed/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVRed/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVRed/43.png b/icons/MVRed/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVRed/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVRed/480x576.png b/icons/MVRed/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVRed/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVRed/528x576.png b/icons/MVRed/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVRed/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVRed/544x576.png b/icons/MVRed/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVRed/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVRed/704x576.png b/icons/MVRed/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVRed/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVRed/720x576.png b/icons/MVRed/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVRed/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVRed/960x720.png b/icons/MVRed/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVRed/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVRed/blank.png b/icons/MVRed/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVRed/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVRed/changroup.png b/icons/MVRed/changroup.png
new file mode 100644
index 0000000..d657250
Binary files /dev/null and b/icons/MVRed/changroup.png differ
diff --git a/icons/MVRed/chart1b.png b/icons/MVRed/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVRed/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVRed/chart2b.png b/icons/MVRed/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVRed/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVRed/chart3b.png b/icons/MVRed/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVRed/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVRed/chart4b.png b/icons/MVRed/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVRed/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVRed/chart5b.png b/icons/MVRed/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVRed/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVRed/chart6b.png b/icons/MVRed/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVRed/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVRed/chart7.png b/icons/MVRed/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVRed/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVRed/chart7b.png b/icons/MVRed/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVRed/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVRed/crypted.png b/icons/MVRed/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVRed/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVRed/forward.png b/icons/MVRed/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVRed/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVRed/forward_sel.png b/icons/MVRed/forward_sel.png
new file mode 100644
index 0000000..a537d3a
Binary files /dev/null and b/icons/MVRed/forward_sel.png differ
diff --git a/icons/MVRed/hd.png b/icons/MVRed/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVRed/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVRed/message_error.png b/icons/MVRed/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVRed/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVRed/message_info.png b/icons/MVRed/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVRed/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVRed/message_status.png b/icons/MVRed/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVRed/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVRed/message_warning.png b/icons/MVRed/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVRed/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVRed/pause.png b/icons/MVRed/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVRed/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVRed/pause_sel.png b/icons/MVRed/pause_sel.png
new file mode 100644
index 0000000..c2a1973
Binary files /dev/null and b/icons/MVRed/pause_sel.png differ
diff --git a/icons/MVRed/play.png b/icons/MVRed/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVRed/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVRed/play_sel.png b/icons/MVRed/play_sel.png
new file mode 100644
index 0000000..cc867c6
Binary files /dev/null and b/icons/MVRed/play_sel.png differ
diff --git a/icons/MVRed/prev.png b/icons/MVRed/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVRed/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVRed/prev_sel.png b/icons/MVRed/prev_sel.png
new file mode 100644
index 0000000..ef30db4
Binary files /dev/null and b/icons/MVRed/prev_sel.png differ
diff --git a/icons/MVRed/radio.png b/icons/MVRed/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVRed/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVRed/recording.png b/icons/MVRed/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVRed/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVRed/recording_cutted.png b/icons/MVRed/recording_cutted.png
new file mode 100644
index 0000000..7d3c029
Binary files /dev/null and b/icons/MVRed/recording_cutted.png differ
diff --git a/icons/MVRed/recording_cutted_cur.png b/icons/MVRed/recording_cutted_cur.png
new file mode 120000
index 0000000..e270866
--- /dev/null
+++ b/icons/MVRed/recording_cutted_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_cutted_cur.png
\ No newline at end of file
diff --git a/icons/MVRed/recording_cutted_extra.png b/icons/MVRed/recording_cutted_extra.png
new file mode 100644
index 0000000..a70f2a6
Binary files /dev/null and b/icons/MVRed/recording_cutted_extra.png differ
diff --git a/icons/MVRed/recording_new.png b/icons/MVRed/recording_new.png
new file mode 100644
index 0000000..1a8d256
Binary files /dev/null and b/icons/MVRed/recording_new.png differ
diff --git a/icons/MVRed/recording_new_cur.png b/icons/MVRed/recording_new_cur.png
new file mode 120000
index 0000000..7d08eda
--- /dev/null
+++ b/icons/MVRed/recording_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_new_cur.png
\ No newline at end of file
diff --git a/icons/MVRed/rewind.png b/icons/MVRed/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVRed/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVRed/rewind_sel.png b/icons/MVRed/rewind_sel.png
new file mode 100644
index 0000000..cde89b1
Binary files /dev/null and b/icons/MVRed/rewind_sel.png differ
diff --git a/icons/MVRed/sd.png b/icons/MVRed/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVRed/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVRed/skip.png b/icons/MVRed/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVRed/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVRed/skip_sel.png b/icons/MVRed/skip_sel.png
new file mode 100644
index 0000000..db2f1e9
Binary files /dev/null and b/icons/MVRed/skip_sel.png differ
diff --git a/icons/MVRed/text_arrowturn.png b/icons/MVRed/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVRed/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVRed/text_arrowturn_cur.png b/icons/MVRed/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVRed/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVRed/text_arrowturn_sel.png b/icons/MVRed/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVRed/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVRed/text_new.png b/icons/MVRed/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVRed/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVRed/text_new_cur.png b/icons/MVRed/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVRed/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVRed/text_new_sel.png b/icons/MVRed/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVRed/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVRed/text_rec.png b/icons/MVRed/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVRed/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVRed/text_rec_cur.png b/icons/MVRed/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVRed/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVRed/text_rec_sel.png b/icons/MVRed/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVRed/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVRed/text_timer_full.png b/icons/MVRed/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVRed/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVRed/text_timer_full_cur.png b/icons/MVRed/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVRed/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVRed/text_timer_full_sel.png b/icons/MVRed/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVRed/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVRed/text_timer_partial.png b/icons/MVRed/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVRed/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVRed/text_timer_partial_cur.png b/icons/MVRed/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVRed/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVRed/text_timer_partial_sel.png b/icons/MVRed/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVRed/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVRed/text_vps.png b/icons/MVRed/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVRed/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVRed/text_vps_cur.png b/icons/MVRed/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVRed/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVRed/text_vps_sel.png b/icons/MVRed/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVRed/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVRed/timerActive.png b/icons/MVRed/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVRed/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVRed/timerInactive.png b/icons/MVRed/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVRed/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVRed/timerRecording.png b/icons/MVRed/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVRed/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVRed/timer_full.png b/icons/MVRed/timer_full.png
new file mode 100644
index 0000000..1e1e0e1
Binary files /dev/null and b/icons/MVRed/timer_full.png differ
diff --git a/icons/MVRed/timer_full_cur.png b/icons/MVRed/timer_full_cur.png
new file mode 120000
index 0000000..e0225f1
--- /dev/null
+++ b/icons/MVRed/timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVRed/timer_partial.png b/icons/MVRed/timer_partial.png
new file mode 100644
index 0000000..81f55fe
Binary files /dev/null and b/icons/MVRed/timer_partial.png differ
diff --git a/icons/MVRed/timer_partial_cur.png b/icons/MVRed/timer_partial_cur.png
new file mode 120000
index 0000000..db9e5d7
--- /dev/null
+++ b/icons/MVRed/timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVRed/topbar_timer.png b/icons/MVRed/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVRed/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVRed/topbar_timerconflict_high.png b/icons/MVRed/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVRed/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVRed/topbar_timerconflict_low.png b/icons/MVRed/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVRed/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVRed/tv.png b/icons/MVRed/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVRed/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVRed/uncrypted.png b/icons/MVRed/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVRed/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVRed/unknown_asp.png b/icons/MVRed/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVRed/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVRed/unknown_res.png b/icons/MVRed/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVRed/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVRed/vps.png b/icons/MVRed/vps.png
new file mode 100644
index 0000000..f315d0f
Binary files /dev/null and b/icons/MVRed/vps.png differ
diff --git a/icons/MVRed/vps_cur.png b/icons/MVRed/vps_cur.png
new file mode 120000
index 0000000..923472f
--- /dev/null
+++ b/icons/MVRed/vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/vps_cur.png
\ No newline at end of file
diff --git a/icons/MVTerra/1280x720.png b/icons/MVTerra/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVTerra/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVTerra/1440x1080.png b/icons/MVTerra/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVTerra/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVTerra/169.png b/icons/MVTerra/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVTerra/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVTerra/169w.png b/icons/MVTerra/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVTerra/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVTerra/1920x1080.png b/icons/MVTerra/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVTerra/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVTerra/221.png b/icons/MVTerra/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVTerra/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVTerra/352x576.png b/icons/MVTerra/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVTerra/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVTerra/43.png b/icons/MVTerra/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVTerra/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVTerra/480x576.png b/icons/MVTerra/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVTerra/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVTerra/528x576.png b/icons/MVTerra/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVTerra/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVTerra/544x576.png b/icons/MVTerra/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVTerra/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVTerra/704x576.png b/icons/MVTerra/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVTerra/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVTerra/720x576.png b/icons/MVTerra/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVTerra/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVTerra/960x720.png b/icons/MVTerra/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVTerra/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVTerra/blank.png b/icons/MVTerra/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVTerra/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVTerra/changroup.png b/icons/MVTerra/changroup.png
new file mode 100644
index 0000000..563bfb4
Binary files /dev/null and b/icons/MVTerra/changroup.png differ
diff --git a/icons/MVTerra/chart1b.png b/icons/MVTerra/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVTerra/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVTerra/chart2b.png b/icons/MVTerra/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVTerra/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVTerra/chart3b.png b/icons/MVTerra/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVTerra/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVTerra/chart4b.png b/icons/MVTerra/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVTerra/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVTerra/chart5b.png b/icons/MVTerra/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVTerra/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVTerra/chart6b.png b/icons/MVTerra/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVTerra/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVTerra/chart7.png b/icons/MVTerra/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVTerra/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVTerra/chart7b.png b/icons/MVTerra/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVTerra/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVTerra/crypted.png b/icons/MVTerra/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVTerra/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVTerra/forward.png b/icons/MVTerra/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVTerra/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVTerra/forward_sel.png b/icons/MVTerra/forward_sel.png
new file mode 100644
index 0000000..4721a01
Binary files /dev/null and b/icons/MVTerra/forward_sel.png differ
diff --git a/icons/MVTerra/hd.png b/icons/MVTerra/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVTerra/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVTerra/message_error.png b/icons/MVTerra/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVTerra/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVTerra/message_info.png b/icons/MVTerra/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVTerra/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVTerra/message_status.png b/icons/MVTerra/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVTerra/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVTerra/message_warning.png b/icons/MVTerra/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVTerra/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVTerra/pause.png b/icons/MVTerra/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVTerra/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVTerra/pause_sel.png b/icons/MVTerra/pause_sel.png
new file mode 100644
index 0000000..5e7cb5f
Binary files /dev/null and b/icons/MVTerra/pause_sel.png differ
diff --git a/icons/MVTerra/play.png b/icons/MVTerra/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVTerra/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVTerra/play_sel.png b/icons/MVTerra/play_sel.png
new file mode 100644
index 0000000..ca864fc
Binary files /dev/null and b/icons/MVTerra/play_sel.png differ
diff --git a/icons/MVTerra/prev.png b/icons/MVTerra/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVTerra/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVTerra/prev_sel.png b/icons/MVTerra/prev_sel.png
new file mode 100644
index 0000000..17b6454
Binary files /dev/null and b/icons/MVTerra/prev_sel.png differ
diff --git a/icons/MVTerra/radio.png b/icons/MVTerra/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVTerra/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVTerra/recording.png b/icons/MVTerra/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVTerra/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVTerra/recording_cutted.png b/icons/MVTerra/recording_cutted.png
new file mode 100644
index 0000000..483268f
Binary files /dev/null and b/icons/MVTerra/recording_cutted.png differ
diff --git a/icons/MVTerra/recording_cutted_cur.png b/icons/MVTerra/recording_cutted_cur.png
new file mode 120000
index 0000000..e270866
--- /dev/null
+++ b/icons/MVTerra/recording_cutted_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_cutted_cur.png
\ No newline at end of file
diff --git a/icons/MVTerra/recording_cutted_extra.png b/icons/MVTerra/recording_cutted_extra.png
new file mode 100644
index 0000000..d08d3e7
Binary files /dev/null and b/icons/MVTerra/recording_cutted_extra.png differ
diff --git a/icons/MVTerra/recording_new.png b/icons/MVTerra/recording_new.png
new file mode 100644
index 0000000..5506320
Binary files /dev/null and b/icons/MVTerra/recording_new.png differ
diff --git a/icons/MVTerra/recording_new_cur.png b/icons/MVTerra/recording_new_cur.png
new file mode 120000
index 0000000..7d08eda
--- /dev/null
+++ b/icons/MVTerra/recording_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_new_cur.png
\ No newline at end of file
diff --git a/icons/MVTerra/rewind.png b/icons/MVTerra/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVTerra/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVTerra/rewind_sel.png b/icons/MVTerra/rewind_sel.png
new file mode 100644
index 0000000..21cd9fc
Binary files /dev/null and b/icons/MVTerra/rewind_sel.png differ
diff --git a/icons/MVTerra/sd.png b/icons/MVTerra/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVTerra/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVTerra/skip.png b/icons/MVTerra/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVTerra/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVTerra/skip_sel.png b/icons/MVTerra/skip_sel.png
new file mode 100644
index 0000000..c05dd0e
Binary files /dev/null and b/icons/MVTerra/skip_sel.png differ
diff --git a/icons/MVTerra/text_arrowturn.png b/icons/MVTerra/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVTerra/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVTerra/text_arrowturn_cur.png b/icons/MVTerra/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVTerra/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVTerra/text_arrowturn_sel.png b/icons/MVTerra/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVTerra/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVTerra/text_new.png b/icons/MVTerra/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVTerra/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVTerra/text_new_cur.png b/icons/MVTerra/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVTerra/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVTerra/text_new_sel.png b/icons/MVTerra/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVTerra/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVTerra/text_rec.png b/icons/MVTerra/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVTerra/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVTerra/text_rec_cur.png b/icons/MVTerra/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVTerra/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVTerra/text_rec_sel.png b/icons/MVTerra/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVTerra/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVTerra/text_timer_full.png b/icons/MVTerra/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVTerra/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVTerra/text_timer_full_cur.png b/icons/MVTerra/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVTerra/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVTerra/text_timer_full_sel.png b/icons/MVTerra/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVTerra/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVTerra/text_timer_partial.png b/icons/MVTerra/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVTerra/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVTerra/text_timer_partial_cur.png b/icons/MVTerra/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVTerra/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVTerra/text_timer_partial_sel.png b/icons/MVTerra/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVTerra/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVTerra/text_vps.png b/icons/MVTerra/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVTerra/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVTerra/text_vps_cur.png b/icons/MVTerra/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVTerra/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVTerra/text_vps_sel.png b/icons/MVTerra/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVTerra/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVTerra/timerActive.png b/icons/MVTerra/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVTerra/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVTerra/timerInactive.png b/icons/MVTerra/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVTerra/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVTerra/timerRecording.png b/icons/MVTerra/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVTerra/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVTerra/timer_full.png b/icons/MVTerra/timer_full.png
new file mode 100644
index 0000000..b0ed0fe
Binary files /dev/null and b/icons/MVTerra/timer_full.png differ
diff --git a/icons/MVTerra/timer_full_cur.png b/icons/MVTerra/timer_full_cur.png
new file mode 120000
index 0000000..e0225f1
--- /dev/null
+++ b/icons/MVTerra/timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVTerra/timer_partial.png b/icons/MVTerra/timer_partial.png
new file mode 100644
index 0000000..e412b5c
Binary files /dev/null and b/icons/MVTerra/timer_partial.png differ
diff --git a/icons/MVTerra/timer_partial_cur.png b/icons/MVTerra/timer_partial_cur.png
new file mode 120000
index 0000000..db9e5d7
--- /dev/null
+++ b/icons/MVTerra/timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVTerra/topbar_timer.png b/icons/MVTerra/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVTerra/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVTerra/topbar_timerconflict_high.png b/icons/MVTerra/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVTerra/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVTerra/topbar_timerconflict_low.png b/icons/MVTerra/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVTerra/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVTerra/tv.png b/icons/MVTerra/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVTerra/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVTerra/uncrypted.png b/icons/MVTerra/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVTerra/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVTerra/unknown_asp.png b/icons/MVTerra/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVTerra/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVTerra/unknown_res.png b/icons/MVTerra/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVTerra/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVTerra/vps.png b/icons/MVTerra/vps.png
new file mode 100644
index 0000000..7c7b20f
Binary files /dev/null and b/icons/MVTerra/vps.png differ
diff --git a/icons/MVTerra/vps_cur.png b/icons/MVTerra/vps_cur.png
new file mode 120000
index 0000000..923472f
--- /dev/null
+++ b/icons/MVTerra/vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/vps_cur.png
\ No newline at end of file
diff --git a/icons/MVWhite/1280x720.png b/icons/MVWhite/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVWhite/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVWhite/1440x1080.png b/icons/MVWhite/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVWhite/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVWhite/169.png b/icons/MVWhite/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVWhite/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVWhite/169w.png b/icons/MVWhite/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVWhite/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVWhite/1920x1080.png b/icons/MVWhite/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVWhite/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVWhite/221.png b/icons/MVWhite/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVWhite/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVWhite/352x576.png b/icons/MVWhite/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVWhite/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVWhite/43.png b/icons/MVWhite/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVWhite/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVWhite/480x576.png b/icons/MVWhite/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVWhite/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVWhite/528x576.png b/icons/MVWhite/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVWhite/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVWhite/544x576.png b/icons/MVWhite/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVWhite/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVWhite/704x576.png b/icons/MVWhite/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVWhite/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVWhite/720x576.png b/icons/MVWhite/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVWhite/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVWhite/960x720.png b/icons/MVWhite/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVWhite/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVWhite/blank.png b/icons/MVWhite/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVWhite/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVWhite/changroup.png b/icons/MVWhite/changroup.png
new file mode 100644
index 0000000..e8eb87f
Binary files /dev/null and b/icons/MVWhite/changroup.png differ
diff --git a/icons/MVWhite/chart1b.png b/icons/MVWhite/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVWhite/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVWhite/chart2b.png b/icons/MVWhite/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVWhite/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVWhite/chart3b.png b/icons/MVWhite/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVWhite/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVWhite/chart4b.png b/icons/MVWhite/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVWhite/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVWhite/chart5b.png b/icons/MVWhite/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVWhite/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVWhite/chart6b.png b/icons/MVWhite/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVWhite/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVWhite/chart7.png b/icons/MVWhite/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVWhite/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVWhite/chart7b.png b/icons/MVWhite/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVWhite/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVWhite/crypted.png b/icons/MVWhite/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVWhite/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVWhite/forward.png b/icons/MVWhite/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVWhite/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVWhite/forward_sel.png b/icons/MVWhite/forward_sel.png
new file mode 100644
index 0000000..08f0036
Binary files /dev/null and b/icons/MVWhite/forward_sel.png differ
diff --git a/icons/MVWhite/hd.png b/icons/MVWhite/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVWhite/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVWhite/message_error.png b/icons/MVWhite/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVWhite/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVWhite/message_info.png b/icons/MVWhite/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVWhite/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVWhite/message_status.png b/icons/MVWhite/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVWhite/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVWhite/message_warning.png b/icons/MVWhite/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVWhite/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVWhite/pause.png b/icons/MVWhite/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVWhite/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVWhite/pause_sel.png b/icons/MVWhite/pause_sel.png
new file mode 100644
index 0000000..af6dbfb
Binary files /dev/null and b/icons/MVWhite/pause_sel.png differ
diff --git a/icons/MVWhite/play.png b/icons/MVWhite/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVWhite/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVWhite/play_sel.png b/icons/MVWhite/play_sel.png
new file mode 100644
index 0000000..14b6aeb
Binary files /dev/null and b/icons/MVWhite/play_sel.png differ
diff --git a/icons/MVWhite/prev.png b/icons/MVWhite/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVWhite/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVWhite/prev_sel.png b/icons/MVWhite/prev_sel.png
new file mode 100644
index 0000000..55940bd
Binary files /dev/null and b/icons/MVWhite/prev_sel.png differ
diff --git a/icons/MVWhite/radio.png b/icons/MVWhite/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVWhite/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVWhite/recording.png b/icons/MVWhite/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVWhite/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVWhite/recording_cutted.png b/icons/MVWhite/recording_cutted.png
new file mode 100644
index 0000000..7b22722
Binary files /dev/null and b/icons/MVWhite/recording_cutted.png differ
diff --git a/icons/MVWhite/recording_cutted_cur.png b/icons/MVWhite/recording_cutted_cur.png
new file mode 120000
index 0000000..e270866
--- /dev/null
+++ b/icons/MVWhite/recording_cutted_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_cutted_cur.png
\ No newline at end of file
diff --git a/icons/MVWhite/recording_cutted_extra.png b/icons/MVWhite/recording_cutted_extra.png
new file mode 100644
index 0000000..cf9ef69
Binary files /dev/null and b/icons/MVWhite/recording_cutted_extra.png differ
diff --git a/icons/MVWhite/recording_new.png b/icons/MVWhite/recording_new.png
new file mode 100644
index 0000000..d005f95
Binary files /dev/null and b/icons/MVWhite/recording_new.png differ
diff --git a/icons/MVWhite/recording_new_cur.png b/icons/MVWhite/recording_new_cur.png
new file mode 120000
index 0000000..7d08eda
--- /dev/null
+++ b/icons/MVWhite/recording_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/recording_new_cur.png
\ No newline at end of file
diff --git a/icons/MVWhite/rewind.png b/icons/MVWhite/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVWhite/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVWhite/rewind_sel.png b/icons/MVWhite/rewind_sel.png
new file mode 100644
index 0000000..1f2b489
Binary files /dev/null and b/icons/MVWhite/rewind_sel.png differ
diff --git a/icons/MVWhite/sd.png b/icons/MVWhite/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVWhite/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVWhite/skip.png b/icons/MVWhite/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVWhite/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVWhite/skip_sel.png b/icons/MVWhite/skip_sel.png
new file mode 100644
index 0000000..2e984d0
Binary files /dev/null and b/icons/MVWhite/skip_sel.png differ
diff --git a/icons/MVWhite/text_arrowturn.png b/icons/MVWhite/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVWhite/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVWhite/text_arrowturn_cur.png b/icons/MVWhite/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVWhite/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVWhite/text_arrowturn_sel.png b/icons/MVWhite/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVWhite/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVWhite/text_new.png b/icons/MVWhite/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVWhite/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVWhite/text_new_cur.png b/icons/MVWhite/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVWhite/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVWhite/text_new_sel.png b/icons/MVWhite/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVWhite/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVWhite/text_rec.png b/icons/MVWhite/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVWhite/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVWhite/text_rec_cur.png b/icons/MVWhite/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVWhite/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVWhite/text_rec_sel.png b/icons/MVWhite/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVWhite/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVWhite/text_timer_full.png b/icons/MVWhite/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVWhite/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVWhite/text_timer_full_cur.png b/icons/MVWhite/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVWhite/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVWhite/text_timer_full_sel.png b/icons/MVWhite/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVWhite/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVWhite/text_timer_partial.png b/icons/MVWhite/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVWhite/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVWhite/text_timer_partial_cur.png b/icons/MVWhite/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVWhite/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVWhite/text_timer_partial_sel.png b/icons/MVWhite/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVWhite/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVWhite/text_vps.png b/icons/MVWhite/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVWhite/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVWhite/text_vps_cur.png b/icons/MVWhite/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVWhite/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVWhite/text_vps_sel.png b/icons/MVWhite/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVWhite/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVWhite/timerActive.png b/icons/MVWhite/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVWhite/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVWhite/timerInactive.png b/icons/MVWhite/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVWhite/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVWhite/timerRecording.png b/icons/MVWhite/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVWhite/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVWhite/timer_full.png b/icons/MVWhite/timer_full.png
new file mode 100644
index 0000000..a746376
Binary files /dev/null and b/icons/MVWhite/timer_full.png differ
diff --git a/icons/MVWhite/timer_full_cur.png b/icons/MVWhite/timer_full_cur.png
new file mode 120000
index 0000000..e0225f1
--- /dev/null
+++ b/icons/MVWhite/timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVWhite/timer_partial.png b/icons/MVWhite/timer_partial.png
new file mode 100644
index 0000000..6e69759
Binary files /dev/null and b/icons/MVWhite/timer_partial.png differ
diff --git a/icons/MVWhite/timer_partial_cur.png b/icons/MVWhite/timer_partial_cur.png
new file mode 120000
index 0000000..db9e5d7
--- /dev/null
+++ b/icons/MVWhite/timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVWhite/topbar_timer.png b/icons/MVWhite/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVWhite/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVWhite/topbar_timerconflict_high.png b/icons/MVWhite/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVWhite/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVWhite/topbar_timerconflict_low.png b/icons/MVWhite/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVWhite/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVWhite/tv.png b/icons/MVWhite/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVWhite/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVWhite/uncrypted.png b/icons/MVWhite/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVWhite/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVWhite/unknown_asp.png b/icons/MVWhite/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVWhite/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVWhite/unknown_res.png b/icons/MVWhite/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVWhite/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVWhite/vps.png b/icons/MVWhite/vps.png
new file mode 100644
index 0000000..d9ff76a
Binary files /dev/null and b/icons/MVWhite/vps.png differ
diff --git a/icons/MVWhite/vps_cur.png b/icons/MVWhite/vps_cur.png
new file mode 120000
index 0000000..923472f
--- /dev/null
+++ b/icons/MVWhite/vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/vps_cur.png
\ No newline at end of file
diff --git a/icons/MVXMAS/1280x720.png b/icons/MVXMAS/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVXMAS/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVXMAS/1440x1080.png b/icons/MVXMAS/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVXMAS/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVXMAS/169.png b/icons/MVXMAS/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVXMAS/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVXMAS/169w.png b/icons/MVXMAS/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVXMAS/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVXMAS/1920x1080.png b/icons/MVXMAS/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVXMAS/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVXMAS/221.png b/icons/MVXMAS/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVXMAS/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVXMAS/352x576.png b/icons/MVXMAS/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVXMAS/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVXMAS/43.png b/icons/MVXMAS/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVXMAS/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVXMAS/480x576.png b/icons/MVXMAS/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVXMAS/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVXMAS/528x576.png b/icons/MVXMAS/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVXMAS/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVXMAS/544x576.png b/icons/MVXMAS/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVXMAS/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVXMAS/704x576.png b/icons/MVXMAS/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVXMAS/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVXMAS/720x576.png b/icons/MVXMAS/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVXMAS/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVXMAS/960x720.png b/icons/MVXMAS/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVXMAS/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVXMAS/blank.png b/icons/MVXMAS/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVXMAS/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVXMAS/changroup.png b/icons/MVXMAS/changroup.png
new file mode 100644
index 0000000..2c6b89a
Binary files /dev/null and b/icons/MVXMAS/changroup.png differ
diff --git a/icons/MVXMAS/chart1b.png b/icons/MVXMAS/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVXMAS/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVXMAS/chart2b.png b/icons/MVXMAS/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVXMAS/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVXMAS/chart3b.png b/icons/MVXMAS/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVXMAS/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVXMAS/chart4b.png b/icons/MVXMAS/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVXMAS/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVXMAS/chart5b.png b/icons/MVXMAS/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVXMAS/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVXMAS/chart6b.png b/icons/MVXMAS/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVXMAS/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVXMAS/chart7.png b/icons/MVXMAS/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVXMAS/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVXMAS/chart7b.png b/icons/MVXMAS/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVXMAS/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVXMAS/crypted.png b/icons/MVXMAS/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVXMAS/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVXMAS/forward.png b/icons/MVXMAS/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVXMAS/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVXMAS/forward_sel.png b/icons/MVXMAS/forward_sel.png
new file mode 100644
index 0000000..f7c7139
Binary files /dev/null and b/icons/MVXMAS/forward_sel.png differ
diff --git a/icons/MVXMAS/hd.png b/icons/MVXMAS/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVXMAS/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVXMAS/message_error.png b/icons/MVXMAS/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVXMAS/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVXMAS/message_info.png b/icons/MVXMAS/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVXMAS/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVXMAS/message_status.png b/icons/MVXMAS/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVXMAS/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVXMAS/message_warning.png b/icons/MVXMAS/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVXMAS/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVXMAS/pause.png b/icons/MVXMAS/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVXMAS/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVXMAS/pause_sel.png b/icons/MVXMAS/pause_sel.png
new file mode 100644
index 0000000..d9092c3
Binary files /dev/null and b/icons/MVXMAS/pause_sel.png differ
diff --git a/icons/MVXMAS/play.png b/icons/MVXMAS/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVXMAS/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVXMAS/play_sel.png b/icons/MVXMAS/play_sel.png
new file mode 100644
index 0000000..185ceeb
Binary files /dev/null and b/icons/MVXMAS/play_sel.png differ
diff --git a/icons/MVXMAS/prev.png b/icons/MVXMAS/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVXMAS/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVXMAS/prev_sel.png b/icons/MVXMAS/prev_sel.png
new file mode 100644
index 0000000..d71445f
Binary files /dev/null and b/icons/MVXMAS/prev_sel.png differ
diff --git a/icons/MVXMAS/radio.png b/icons/MVXMAS/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVXMAS/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVXMAS/recording.png b/icons/MVXMAS/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVXMAS/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVXMAS/recording_cutted.png b/icons/MVXMAS/recording_cutted.png
new file mode 100644
index 0000000..4fa6a88
Binary files /dev/null and b/icons/MVXMAS/recording_cutted.png differ
diff --git a/icons/MVXMAS/recording_cutted_cur.png b/icons/MVXMAS/recording_cutted_cur.png
new file mode 100644
index 0000000..72be960
Binary files /dev/null and b/icons/MVXMAS/recording_cutted_cur.png differ
diff --git a/icons/MVXMAS/recording_cutted_extra.png b/icons/MVXMAS/recording_cutted_extra.png
new file mode 100644
index 0000000..f897e93
Binary files /dev/null and b/icons/MVXMAS/recording_cutted_extra.png differ
diff --git a/icons/MVXMAS/recording_new.png b/icons/MVXMAS/recording_new.png
new file mode 100644
index 0000000..ccdc1ca
Binary files /dev/null and b/icons/MVXMAS/recording_new.png differ
diff --git a/icons/MVXMAS/recording_new_cur.png b/icons/MVXMAS/recording_new_cur.png
new file mode 100644
index 0000000..b53149a
Binary files /dev/null and b/icons/MVXMAS/recording_new_cur.png differ
diff --git a/icons/MVXMAS/rewind.png b/icons/MVXMAS/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVXMAS/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVXMAS/rewind_sel.png b/icons/MVXMAS/rewind_sel.png
new file mode 100644
index 0000000..93b3f8e
Binary files /dev/null and b/icons/MVXMAS/rewind_sel.png differ
diff --git a/icons/MVXMAS/sd.png b/icons/MVXMAS/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVXMAS/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVXMAS/skip.png b/icons/MVXMAS/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVXMAS/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVXMAS/skip_sel.png b/icons/MVXMAS/skip_sel.png
new file mode 100644
index 0000000..643447e
Binary files /dev/null and b/icons/MVXMAS/skip_sel.png differ
diff --git a/icons/MVXMAS/text_arrowturn.png b/icons/MVXMAS/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVXMAS/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVXMAS/text_arrowturn_cur.png b/icons/MVXMAS/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVXMAS/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVXMAS/text_arrowturn_sel.png b/icons/MVXMAS/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVXMAS/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVXMAS/text_new.png b/icons/MVXMAS/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVXMAS/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVXMAS/text_new_cur.png b/icons/MVXMAS/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVXMAS/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVXMAS/text_new_sel.png b/icons/MVXMAS/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVXMAS/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVXMAS/text_rec.png b/icons/MVXMAS/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVXMAS/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVXMAS/text_rec_cur.png b/icons/MVXMAS/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVXMAS/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVXMAS/text_rec_sel.png b/icons/MVXMAS/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVXMAS/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVXMAS/text_timer_full.png b/icons/MVXMAS/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVXMAS/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVXMAS/text_timer_full_cur.png b/icons/MVXMAS/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVXMAS/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVXMAS/text_timer_full_sel.png b/icons/MVXMAS/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVXMAS/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVXMAS/text_timer_partial.png b/icons/MVXMAS/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVXMAS/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVXMAS/text_timer_partial_cur.png b/icons/MVXMAS/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVXMAS/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVXMAS/text_timer_partial_sel.png b/icons/MVXMAS/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVXMAS/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVXMAS/text_vps.png b/icons/MVXMAS/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVXMAS/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVXMAS/text_vps_cur.png b/icons/MVXMAS/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVXMAS/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVXMAS/text_vps_sel.png b/icons/MVXMAS/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVXMAS/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVXMAS/timerActive.png b/icons/MVXMAS/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVXMAS/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVXMAS/timerInactive.png b/icons/MVXMAS/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVXMAS/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVXMAS/timerRecording.png b/icons/MVXMAS/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVXMAS/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVXMAS/timer_full.png b/icons/MVXMAS/timer_full.png
new file mode 100644
index 0000000..fcd7a09
Binary files /dev/null and b/icons/MVXMAS/timer_full.png differ
diff --git a/icons/MVXMAS/timer_full_cur.png b/icons/MVXMAS/timer_full_cur.png
new file mode 100644
index 0000000..a31c34a
Binary files /dev/null and b/icons/MVXMAS/timer_full_cur.png differ
diff --git a/icons/MVXMAS/timer_partial.png b/icons/MVXMAS/timer_partial.png
new file mode 100644
index 0000000..b0bc56c
Binary files /dev/null and b/icons/MVXMAS/timer_partial.png differ
diff --git a/icons/MVXMAS/timer_partial_cur.png b/icons/MVXMAS/timer_partial_cur.png
new file mode 100644
index 0000000..2950eb9
Binary files /dev/null and b/icons/MVXMAS/timer_partial_cur.png differ
diff --git a/icons/MVXMAS/topbar_timer.png b/icons/MVXMAS/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVXMAS/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVXMAS/topbar_timerconflict_high.png b/icons/MVXMAS/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVXMAS/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVXMAS/topbar_timerconflict_low.png b/icons/MVXMAS/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVXMAS/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVXMAS/tv.png b/icons/MVXMAS/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVXMAS/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVXMAS/uncrypted.png b/icons/MVXMAS/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVXMAS/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVXMAS/unknown_asp.png b/icons/MVXMAS/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVXMAS/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVXMAS/unknown_res.png b/icons/MVXMAS/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVXMAS/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVXMAS/vps.png b/icons/MVXMAS/vps.png
new file mode 100644
index 0000000..7c16cf0
Binary files /dev/null and b/icons/MVXMAS/vps.png differ
diff --git a/icons/MVXMAS/vps_cur.png b/icons/MVXMAS/vps_cur.png
new file mode 100644
index 0000000..703b910
Binary files /dev/null and b/icons/MVXMAS/vps_cur.png differ
diff --git a/icons/MVZitrone/1280x720.png b/icons/MVZitrone/1280x720.png
new file mode 120000
index 0000000..430aa32
--- /dev/null
+++ b/icons/MVZitrone/1280x720.png
@@ -0,0 +1 @@
+../MVdefault/1280x720.png
\ No newline at end of file
diff --git a/icons/MVZitrone/1440x1080.png b/icons/MVZitrone/1440x1080.png
new file mode 120000
index 0000000..41a1815
--- /dev/null
+++ b/icons/MVZitrone/1440x1080.png
@@ -0,0 +1 @@
+../MVdefault/1440x1080.png
\ No newline at end of file
diff --git a/icons/MVZitrone/169.png b/icons/MVZitrone/169.png
new file mode 120000
index 0000000..7508375
--- /dev/null
+++ b/icons/MVZitrone/169.png
@@ -0,0 +1 @@
+../MVdefault/169.png
\ No newline at end of file
diff --git a/icons/MVZitrone/169w.png b/icons/MVZitrone/169w.png
new file mode 120000
index 0000000..9e2ec75
--- /dev/null
+++ b/icons/MVZitrone/169w.png
@@ -0,0 +1 @@
+../MVdefault/169w.png
\ No newline at end of file
diff --git a/icons/MVZitrone/1920x1080.png b/icons/MVZitrone/1920x1080.png
new file mode 120000
index 0000000..3c50167
--- /dev/null
+++ b/icons/MVZitrone/1920x1080.png
@@ -0,0 +1 @@
+../MVdefault/1920x1080.png
\ No newline at end of file
diff --git a/icons/MVZitrone/221.png b/icons/MVZitrone/221.png
new file mode 120000
index 0000000..23aa284
--- /dev/null
+++ b/icons/MVZitrone/221.png
@@ -0,0 +1 @@
+../MVdefault/221.png
\ No newline at end of file
diff --git a/icons/MVZitrone/352x576.png b/icons/MVZitrone/352x576.png
new file mode 120000
index 0000000..94f37ef
--- /dev/null
+++ b/icons/MVZitrone/352x576.png
@@ -0,0 +1 @@
+../MVdefault/352x576.png
\ No newline at end of file
diff --git a/icons/MVZitrone/43.png b/icons/MVZitrone/43.png
new file mode 120000
index 0000000..279f6b8
--- /dev/null
+++ b/icons/MVZitrone/43.png
@@ -0,0 +1 @@
+../MVdefault/43.png
\ No newline at end of file
diff --git a/icons/MVZitrone/480x576.png b/icons/MVZitrone/480x576.png
new file mode 120000
index 0000000..45c0fd6
--- /dev/null
+++ b/icons/MVZitrone/480x576.png
@@ -0,0 +1 @@
+../MVdefault/480x576.png
\ No newline at end of file
diff --git a/icons/MVZitrone/528x576.png b/icons/MVZitrone/528x576.png
new file mode 120000
index 0000000..fb5e3ba
--- /dev/null
+++ b/icons/MVZitrone/528x576.png
@@ -0,0 +1 @@
+../MVdefault/528x576.png
\ No newline at end of file
diff --git a/icons/MVZitrone/544x576.png b/icons/MVZitrone/544x576.png
new file mode 120000
index 0000000..899b0ac
--- /dev/null
+++ b/icons/MVZitrone/544x576.png
@@ -0,0 +1 @@
+../MVdefault/544x576.png
\ No newline at end of file
diff --git a/icons/MVZitrone/704x576.png b/icons/MVZitrone/704x576.png
new file mode 120000
index 0000000..e533b6e
--- /dev/null
+++ b/icons/MVZitrone/704x576.png
@@ -0,0 +1 @@
+../MVdefault/704x576.png
\ No newline at end of file
diff --git a/icons/MVZitrone/720x576.png b/icons/MVZitrone/720x576.png
new file mode 120000
index 0000000..e7cf52e
--- /dev/null
+++ b/icons/MVZitrone/720x576.png
@@ -0,0 +1 @@
+../MVdefault/720x576.png
\ No newline at end of file
diff --git a/icons/MVZitrone/960x720.png b/icons/MVZitrone/960x720.png
new file mode 120000
index 0000000..b419e04
--- /dev/null
+++ b/icons/MVZitrone/960x720.png
@@ -0,0 +1 @@
+../MVdefault/960x720.png
\ No newline at end of file
diff --git a/icons/MVZitrone/blank.png b/icons/MVZitrone/blank.png
new file mode 120000
index 0000000..c0c0911
--- /dev/null
+++ b/icons/MVZitrone/blank.png
@@ -0,0 +1 @@
+../MVdefault/blank.png
\ No newline at end of file
diff --git a/icons/MVZitrone/changroup.png b/icons/MVZitrone/changroup.png
new file mode 100644
index 0000000..a3a5be9
Binary files /dev/null and b/icons/MVZitrone/changroup.png differ
diff --git a/icons/MVZitrone/chart1b.png b/icons/MVZitrone/chart1b.png
new file mode 120000
index 0000000..e1f43c4
--- /dev/null
+++ b/icons/MVZitrone/chart1b.png
@@ -0,0 +1 @@
+../MVdefault/chart1b.png
\ No newline at end of file
diff --git a/icons/MVZitrone/chart2b.png b/icons/MVZitrone/chart2b.png
new file mode 120000
index 0000000..8184251
--- /dev/null
+++ b/icons/MVZitrone/chart2b.png
@@ -0,0 +1 @@
+../MVdefault/chart2b.png
\ No newline at end of file
diff --git a/icons/MVZitrone/chart3b.png b/icons/MVZitrone/chart3b.png
new file mode 120000
index 0000000..d84f26c
--- /dev/null
+++ b/icons/MVZitrone/chart3b.png
@@ -0,0 +1 @@
+../MVdefault/chart3b.png
\ No newline at end of file
diff --git a/icons/MVZitrone/chart4b.png b/icons/MVZitrone/chart4b.png
new file mode 120000
index 0000000..3a67244
--- /dev/null
+++ b/icons/MVZitrone/chart4b.png
@@ -0,0 +1 @@
+../MVdefault/chart4b.png
\ No newline at end of file
diff --git a/icons/MVZitrone/chart5b.png b/icons/MVZitrone/chart5b.png
new file mode 120000
index 0000000..0687cb8
--- /dev/null
+++ b/icons/MVZitrone/chart5b.png
@@ -0,0 +1 @@
+../MVdefault/chart5b.png
\ No newline at end of file
diff --git a/icons/MVZitrone/chart6b.png b/icons/MVZitrone/chart6b.png
new file mode 120000
index 0000000..16ef384
--- /dev/null
+++ b/icons/MVZitrone/chart6b.png
@@ -0,0 +1 @@
+../MVdefault/chart6b.png
\ No newline at end of file
diff --git a/icons/MVZitrone/chart7.png b/icons/MVZitrone/chart7.png
new file mode 120000
index 0000000..a7702b0
--- /dev/null
+++ b/icons/MVZitrone/chart7.png
@@ -0,0 +1 @@
+../MVdefault/chart7.png
\ No newline at end of file
diff --git a/icons/MVZitrone/chart7b.png b/icons/MVZitrone/chart7b.png
new file mode 120000
index 0000000..101813e
--- /dev/null
+++ b/icons/MVZitrone/chart7b.png
@@ -0,0 +1 @@
+../MVdefault/chart7b.png
\ No newline at end of file
diff --git a/icons/MVZitrone/crypted.png b/icons/MVZitrone/crypted.png
new file mode 120000
index 0000000..948eccf
--- /dev/null
+++ b/icons/MVZitrone/crypted.png
@@ -0,0 +1 @@
+../MVdefault/crypted.png
\ No newline at end of file
diff --git a/icons/MVZitrone/forward.png b/icons/MVZitrone/forward.png
new file mode 120000
index 0000000..2fb6b73
--- /dev/null
+++ b/icons/MVZitrone/forward.png
@@ -0,0 +1 @@
+../MVdefault/forward.png
\ No newline at end of file
diff --git a/icons/MVZitrone/forward_sel.png b/icons/MVZitrone/forward_sel.png
new file mode 100644
index 0000000..cde2574
Binary files /dev/null and b/icons/MVZitrone/forward_sel.png differ
diff --git a/icons/MVZitrone/hd.png b/icons/MVZitrone/hd.png
new file mode 120000
index 0000000..da281f8
--- /dev/null
+++ b/icons/MVZitrone/hd.png
@@ -0,0 +1 @@
+../MVdefault/hd.png
\ No newline at end of file
diff --git a/icons/MVZitrone/message_error.png b/icons/MVZitrone/message_error.png
new file mode 120000
index 0000000..60a2753
--- /dev/null
+++ b/icons/MVZitrone/message_error.png
@@ -0,0 +1 @@
+../MVdefault/message_error.png
\ No newline at end of file
diff --git a/icons/MVZitrone/message_info.png b/icons/MVZitrone/message_info.png
new file mode 120000
index 0000000..78bb166
--- /dev/null
+++ b/icons/MVZitrone/message_info.png
@@ -0,0 +1 @@
+../MVdefault/message_info.png
\ No newline at end of file
diff --git a/icons/MVZitrone/message_status.png b/icons/MVZitrone/message_status.png
new file mode 120000
index 0000000..9cdb268
--- /dev/null
+++ b/icons/MVZitrone/message_status.png
@@ -0,0 +1 @@
+../MVdefault/message_status.png
\ No newline at end of file
diff --git a/icons/MVZitrone/message_warning.png b/icons/MVZitrone/message_warning.png
new file mode 120000
index 0000000..8426ee8
--- /dev/null
+++ b/icons/MVZitrone/message_warning.png
@@ -0,0 +1 @@
+../MVdefault/message_warning.png
\ No newline at end of file
diff --git a/icons/MVZitrone/pause.png b/icons/MVZitrone/pause.png
new file mode 120000
index 0000000..99223ef
--- /dev/null
+++ b/icons/MVZitrone/pause.png
@@ -0,0 +1 @@
+../MVdefault/pause.png
\ No newline at end of file
diff --git a/icons/MVZitrone/pause_sel.png b/icons/MVZitrone/pause_sel.png
new file mode 100644
index 0000000..6f8e389
Binary files /dev/null and b/icons/MVZitrone/pause_sel.png differ
diff --git a/icons/MVZitrone/play.png b/icons/MVZitrone/play.png
new file mode 120000
index 0000000..430b019
--- /dev/null
+++ b/icons/MVZitrone/play.png
@@ -0,0 +1 @@
+../MVdefault/play.png
\ No newline at end of file
diff --git a/icons/MVZitrone/play_sel.png b/icons/MVZitrone/play_sel.png
new file mode 100644
index 0000000..f4a07f5
Binary files /dev/null and b/icons/MVZitrone/play_sel.png differ
diff --git a/icons/MVZitrone/prev.png b/icons/MVZitrone/prev.png
new file mode 120000
index 0000000..769c803
--- /dev/null
+++ b/icons/MVZitrone/prev.png
@@ -0,0 +1 @@
+../MVdefault/prev.png
\ No newline at end of file
diff --git a/icons/MVZitrone/prev_sel.png b/icons/MVZitrone/prev_sel.png
new file mode 100644
index 0000000..fedcfbd
Binary files /dev/null and b/icons/MVZitrone/prev_sel.png differ
diff --git a/icons/MVZitrone/radio.png b/icons/MVZitrone/radio.png
new file mode 120000
index 0000000..c33eb66
--- /dev/null
+++ b/icons/MVZitrone/radio.png
@@ -0,0 +1 @@
+../MVdefault/radio.png
\ No newline at end of file
diff --git a/icons/MVZitrone/recording.png b/icons/MVZitrone/recording.png
new file mode 120000
index 0000000..91f539a
--- /dev/null
+++ b/icons/MVZitrone/recording.png
@@ -0,0 +1 @@
+../MVdefault/recording.png
\ No newline at end of file
diff --git a/icons/MVZitrone/recording_cutted.png b/icons/MVZitrone/recording_cutted.png
new file mode 100644
index 0000000..7c4e1d6
Binary files /dev/null and b/icons/MVZitrone/recording_cutted.png differ
diff --git a/icons/MVZitrone/recording_cutted_cur.png b/icons/MVZitrone/recording_cutted_cur.png
new file mode 100644
index 0000000..92f37cb
Binary files /dev/null and b/icons/MVZitrone/recording_cutted_cur.png differ
diff --git a/icons/MVZitrone/recording_cutted_extra.png b/icons/MVZitrone/recording_cutted_extra.png
new file mode 100644
index 0000000..a5ff21d
Binary files /dev/null and b/icons/MVZitrone/recording_cutted_extra.png differ
diff --git a/icons/MVZitrone/recording_new.png b/icons/MVZitrone/recording_new.png
new file mode 100644
index 0000000..19bfc45
Binary files /dev/null and b/icons/MVZitrone/recording_new.png differ
diff --git a/icons/MVZitrone/recording_new_cur.png b/icons/MVZitrone/recording_new_cur.png
new file mode 100644
index 0000000..5f6bc42
Binary files /dev/null and b/icons/MVZitrone/recording_new_cur.png differ
diff --git a/icons/MVZitrone/rewind.png b/icons/MVZitrone/rewind.png
new file mode 120000
index 0000000..e68ea2b
--- /dev/null
+++ b/icons/MVZitrone/rewind.png
@@ -0,0 +1 @@
+../MVdefault/rewind.png
\ No newline at end of file
diff --git a/icons/MVZitrone/rewind_sel.png b/icons/MVZitrone/rewind_sel.png
new file mode 100644
index 0000000..ba2f219
Binary files /dev/null and b/icons/MVZitrone/rewind_sel.png differ
diff --git a/icons/MVZitrone/sd.png b/icons/MVZitrone/sd.png
new file mode 120000
index 0000000..abbf57c
--- /dev/null
+++ b/icons/MVZitrone/sd.png
@@ -0,0 +1 @@
+../MVdefault/sd.png
\ No newline at end of file
diff --git a/icons/MVZitrone/skip.png b/icons/MVZitrone/skip.png
new file mode 120000
index 0000000..6c05a7b
--- /dev/null
+++ b/icons/MVZitrone/skip.png
@@ -0,0 +1 @@
+../MVdefault/skip.png
\ No newline at end of file
diff --git a/icons/MVZitrone/skip_sel.png b/icons/MVZitrone/skip_sel.png
new file mode 100644
index 0000000..c77c374
Binary files /dev/null and b/icons/MVZitrone/skip_sel.png differ
diff --git a/icons/MVZitrone/text_arrowturn.png b/icons/MVZitrone/text_arrowturn.png
new file mode 120000
index 0000000..9a442d6
--- /dev/null
+++ b/icons/MVZitrone/text_arrowturn.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVZitrone/text_arrowturn_cur.png b/icons/MVZitrone/text_arrowturn_cur.png
new file mode 120000
index 0000000..bf042ec
--- /dev/null
+++ b/icons/MVZitrone/text_arrowturn_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_cur.png
\ No newline at end of file
diff --git a/icons/MVZitrone/text_arrowturn_sel.png b/icons/MVZitrone/text_arrowturn_sel.png
new file mode 120000
index 0000000..94d2bdb
--- /dev/null
+++ b/icons/MVZitrone/text_arrowturn_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_arrowturn_sel.png
\ No newline at end of file
diff --git a/icons/MVZitrone/text_new.png b/icons/MVZitrone/text_new.png
new file mode 120000
index 0000000..d32fc45
--- /dev/null
+++ b/icons/MVZitrone/text_new.png
@@ -0,0 +1 @@
+../MVdefault/text_new.png
\ No newline at end of file
diff --git a/icons/MVZitrone/text_new_cur.png b/icons/MVZitrone/text_new_cur.png
new file mode 120000
index 0000000..3ac2804
--- /dev/null
+++ b/icons/MVZitrone/text_new_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_new_cur.png
\ No newline at end of file
diff --git a/icons/MVZitrone/text_new_sel.png b/icons/MVZitrone/text_new_sel.png
new file mode 120000
index 0000000..a573144
--- /dev/null
+++ b/icons/MVZitrone/text_new_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_new_sel.png
\ No newline at end of file
diff --git a/icons/MVZitrone/text_rec.png b/icons/MVZitrone/text_rec.png
new file mode 120000
index 0000000..cbdeaa0
--- /dev/null
+++ b/icons/MVZitrone/text_rec.png
@@ -0,0 +1 @@
+../MVdefault/text_rec.png
\ No newline at end of file
diff --git a/icons/MVZitrone/text_rec_cur.png b/icons/MVZitrone/text_rec_cur.png
new file mode 120000
index 0000000..bf59c48
--- /dev/null
+++ b/icons/MVZitrone/text_rec_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_cur.png
\ No newline at end of file
diff --git a/icons/MVZitrone/text_rec_sel.png b/icons/MVZitrone/text_rec_sel.png
new file mode 120000
index 0000000..49413a1
--- /dev/null
+++ b/icons/MVZitrone/text_rec_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_rec_sel.png
\ No newline at end of file
diff --git a/icons/MVZitrone/text_timer_full.png b/icons/MVZitrone/text_timer_full.png
new file mode 120000
index 0000000..626bd59
--- /dev/null
+++ b/icons/MVZitrone/text_timer_full.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVZitrone/text_timer_full_cur.png b/icons/MVZitrone/text_timer_full_cur.png
new file mode 120000
index 0000000..4d23147
--- /dev/null
+++ b/icons/MVZitrone/text_timer_full_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_cur.png
\ No newline at end of file
diff --git a/icons/MVZitrone/text_timer_full_sel.png b/icons/MVZitrone/text_timer_full_sel.png
new file mode 120000
index 0000000..cbf4652
--- /dev/null
+++ b/icons/MVZitrone/text_timer_full_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_full_sel.png
\ No newline at end of file
diff --git a/icons/MVZitrone/text_timer_partial.png b/icons/MVZitrone/text_timer_partial.png
new file mode 120000
index 0000000..46c0a4d
--- /dev/null
+++ b/icons/MVZitrone/text_timer_partial.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial.png
\ No newline at end of file
diff --git a/icons/MVZitrone/text_timer_partial_cur.png b/icons/MVZitrone/text_timer_partial_cur.png
new file mode 120000
index 0000000..1c921c6
--- /dev/null
+++ b/icons/MVZitrone/text_timer_partial_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_cur.png
\ No newline at end of file
diff --git a/icons/MVZitrone/text_timer_partial_sel.png b/icons/MVZitrone/text_timer_partial_sel.png
new file mode 120000
index 0000000..3e91ad5
--- /dev/null
+++ b/icons/MVZitrone/text_timer_partial_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_timer_partial_sel.png
\ No newline at end of file
diff --git a/icons/MVZitrone/text_vps.png b/icons/MVZitrone/text_vps.png
new file mode 120000
index 0000000..11bfc96
--- /dev/null
+++ b/icons/MVZitrone/text_vps.png
@@ -0,0 +1 @@
+../MVdefault/text_vps.png
\ No newline at end of file
diff --git a/icons/MVZitrone/text_vps_cur.png b/icons/MVZitrone/text_vps_cur.png
new file mode 120000
index 0000000..04e7ca2
--- /dev/null
+++ b/icons/MVZitrone/text_vps_cur.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_cur.png
\ No newline at end of file
diff --git a/icons/MVZitrone/text_vps_sel.png b/icons/MVZitrone/text_vps_sel.png
new file mode 120000
index 0000000..5ddf6a3
--- /dev/null
+++ b/icons/MVZitrone/text_vps_sel.png
@@ -0,0 +1 @@
+../MVdefault/text_vps_sel.png
\ No newline at end of file
diff --git a/icons/MVZitrone/timerActive.png b/icons/MVZitrone/timerActive.png
new file mode 120000
index 0000000..1d7e9a4
--- /dev/null
+++ b/icons/MVZitrone/timerActive.png
@@ -0,0 +1 @@
+../MVdefault/timerActive.png
\ No newline at end of file
diff --git a/icons/MVZitrone/timerInactive.png b/icons/MVZitrone/timerInactive.png
new file mode 120000
index 0000000..d78c031
--- /dev/null
+++ b/icons/MVZitrone/timerInactive.png
@@ -0,0 +1 @@
+../MVdefault/timerInactive.png
\ No newline at end of file
diff --git a/icons/MVZitrone/timerRecording.png b/icons/MVZitrone/timerRecording.png
new file mode 120000
index 0000000..b8a89b1
--- /dev/null
+++ b/icons/MVZitrone/timerRecording.png
@@ -0,0 +1 @@
+../MVdefault/timerRecording.png
\ No newline at end of file
diff --git a/icons/MVZitrone/timer_full.png b/icons/MVZitrone/timer_full.png
new file mode 100644
index 0000000..ed7bf54
Binary files /dev/null and b/icons/MVZitrone/timer_full.png differ
diff --git a/icons/MVZitrone/timer_full_cur.png b/icons/MVZitrone/timer_full_cur.png
new file mode 100644
index 0000000..3263392
Binary files /dev/null and b/icons/MVZitrone/timer_full_cur.png differ
diff --git a/icons/MVZitrone/timer_partial.png b/icons/MVZitrone/timer_partial.png
new file mode 100644
index 0000000..ddb28b4
Binary files /dev/null and b/icons/MVZitrone/timer_partial.png differ
diff --git a/icons/MVZitrone/timer_partial_cur.png b/icons/MVZitrone/timer_partial_cur.png
new file mode 100644
index 0000000..aaccbf9
Binary files /dev/null and b/icons/MVZitrone/timer_partial_cur.png differ
diff --git a/icons/MVZitrone/topbar_timer.png b/icons/MVZitrone/topbar_timer.png
new file mode 120000
index 0000000..f94bc90
--- /dev/null
+++ b/icons/MVZitrone/topbar_timer.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timer.png
\ No newline at end of file
diff --git a/icons/MVZitrone/topbar_timerconflict_high.png b/icons/MVZitrone/topbar_timerconflict_high.png
new file mode 120000
index 0000000..c28186c
--- /dev/null
+++ b/icons/MVZitrone/topbar_timerconflict_high.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_high.png
\ No newline at end of file
diff --git a/icons/MVZitrone/topbar_timerconflict_low.png b/icons/MVZitrone/topbar_timerconflict_low.png
new file mode 120000
index 0000000..edaf7f5
--- /dev/null
+++ b/icons/MVZitrone/topbar_timerconflict_low.png
@@ -0,0 +1 @@
+../MVdefault/topbar_timerconflict_low.png
\ No newline at end of file
diff --git a/icons/MVZitrone/tv.png b/icons/MVZitrone/tv.png
new file mode 120000
index 0000000..34743b4
--- /dev/null
+++ b/icons/MVZitrone/tv.png
@@ -0,0 +1 @@
+../MVdefault/tv.png
\ No newline at end of file
diff --git a/icons/MVZitrone/uncrypted.png b/icons/MVZitrone/uncrypted.png
new file mode 120000
index 0000000..aef34df
--- /dev/null
+++ b/icons/MVZitrone/uncrypted.png
@@ -0,0 +1 @@
+../MVdefault/uncrypted.png
\ No newline at end of file
diff --git a/icons/MVZitrone/unknown_asp.png b/icons/MVZitrone/unknown_asp.png
new file mode 120000
index 0000000..38df818
--- /dev/null
+++ b/icons/MVZitrone/unknown_asp.png
@@ -0,0 +1 @@
+../MVdefault/unknown_asp.png
\ No newline at end of file
diff --git a/icons/MVZitrone/unknown_res.png b/icons/MVZitrone/unknown_res.png
new file mode 120000
index 0000000..3aa9b58
--- /dev/null
+++ b/icons/MVZitrone/unknown_res.png
@@ -0,0 +1 @@
+../MVdefault/unknown_res.png
\ No newline at end of file
diff --git a/icons/MVZitrone/vps.png b/icons/MVZitrone/vps.png
new file mode 100644
index 0000000..28587e3
Binary files /dev/null and b/icons/MVZitrone/vps.png differ
diff --git a/icons/MVZitrone/vps_cur.png b/icons/MVZitrone/vps_cur.png
new file mode 100644
index 0000000..8d5c5d7
Binary files /dev/null and b/icons/MVZitrone/vps_cur.png differ
diff --git a/icons/MVdefault/1280x720.png b/icons/MVdefault/1280x720.png
new file mode 100644
index 0000000..94e6ad7
Binary files /dev/null and b/icons/MVdefault/1280x720.png differ
diff --git a/icons/MVdefault/1440x1080.png b/icons/MVdefault/1440x1080.png
new file mode 100644
index 0000000..257fa60
Binary files /dev/null and b/icons/MVdefault/1440x1080.png differ
diff --git a/icons/MVdefault/169.png b/icons/MVdefault/169.png
new file mode 100644
index 0000000..0d9ad98
Binary files /dev/null and b/icons/MVdefault/169.png differ
diff --git a/icons/MVdefault/169w.png b/icons/MVdefault/169w.png
new file mode 100644
index 0000000..0f858c1
Binary files /dev/null and b/icons/MVdefault/169w.png differ
diff --git a/icons/MVdefault/1920x1080.png b/icons/MVdefault/1920x1080.png
new file mode 100644
index 0000000..12259c6
Binary files /dev/null and b/icons/MVdefault/1920x1080.png differ
diff --git a/icons/MVdefault/221.png b/icons/MVdefault/221.png
new file mode 100644
index 0000000..8b43485
Binary files /dev/null and b/icons/MVdefault/221.png differ
diff --git a/icons/MVdefault/352x576.png b/icons/MVdefault/352x576.png
new file mode 100644
index 0000000..d48451d
Binary files /dev/null and b/icons/MVdefault/352x576.png differ
diff --git a/icons/MVdefault/43.png b/icons/MVdefault/43.png
new file mode 100644
index 0000000..82371d7
Binary files /dev/null and b/icons/MVdefault/43.png differ
diff --git a/icons/MVdefault/480x576.png b/icons/MVdefault/480x576.png
new file mode 100644
index 0000000..236cb31
Binary files /dev/null and b/icons/MVdefault/480x576.png differ
diff --git a/icons/MVdefault/528x576.png b/icons/MVdefault/528x576.png
new file mode 100644
index 0000000..b1e6c84
Binary files /dev/null and b/icons/MVdefault/528x576.png differ
diff --git a/icons/MVdefault/544x576.png b/icons/MVdefault/544x576.png
new file mode 100644
index 0000000..8e3f286
Binary files /dev/null and b/icons/MVdefault/544x576.png differ
diff --git a/icons/MVdefault/704x576.png b/icons/MVdefault/704x576.png
new file mode 100644
index 0000000..bbab373
Binary files /dev/null and b/icons/MVdefault/704x576.png differ
diff --git a/icons/MVdefault/720x576.png b/icons/MVdefault/720x576.png
new file mode 100644
index 0000000..2d75b69
Binary files /dev/null and b/icons/MVdefault/720x576.png differ
diff --git a/icons/MVdefault/960x720.png b/icons/MVdefault/960x720.png
new file mode 100644
index 0000000..1239a2b
Binary files /dev/null and b/icons/MVdefault/960x720.png differ
diff --git a/icons/MVdefault/blank.png b/icons/MVdefault/blank.png
new file mode 100644
index 0000000..f6cc88e
Binary files /dev/null and b/icons/MVdefault/blank.png differ
diff --git a/icons/MVdefault/changroup.png b/icons/MVdefault/changroup.png
new file mode 100644
index 0000000..9871a49
Binary files /dev/null and b/icons/MVdefault/changroup.png differ
diff --git a/icons/MVdefault/chart1b.png b/icons/MVdefault/chart1b.png
new file mode 120000
index 0000000..a5db2d5
--- /dev/null
+++ b/icons/MVdefault/chart1b.png
@@ -0,0 +1 @@
+chart7.png
\ No newline at end of file
diff --git a/icons/MVdefault/chart2b.png b/icons/MVdefault/chart2b.png
new file mode 120000
index 0000000..c1261f5
--- /dev/null
+++ b/icons/MVdefault/chart2b.png
@@ -0,0 +1 @@
+../default/chart6.png
\ No newline at end of file
diff --git a/icons/MVdefault/chart3b.png b/icons/MVdefault/chart3b.png
new file mode 120000
index 0000000..cc57e90
--- /dev/null
+++ b/icons/MVdefault/chart3b.png
@@ -0,0 +1 @@
+../default/chart5.png
\ No newline at end of file
diff --git a/icons/MVdefault/chart4b.png b/icons/MVdefault/chart4b.png
new file mode 120000
index 0000000..6703851
--- /dev/null
+++ b/icons/MVdefault/chart4b.png
@@ -0,0 +1 @@
+../default/chart4.png
\ No newline at end of file
diff --git a/icons/MVdefault/chart5b.png b/icons/MVdefault/chart5b.png
new file mode 120000
index 0000000..c033e16
--- /dev/null
+++ b/icons/MVdefault/chart5b.png
@@ -0,0 +1 @@
+../default/chart3.png
\ No newline at end of file
diff --git a/icons/MVdefault/chart6b.png b/icons/MVdefault/chart6b.png
new file mode 120000
index 0000000..32089c8
--- /dev/null
+++ b/icons/MVdefault/chart6b.png
@@ -0,0 +1 @@
+../default/chart2.png
\ No newline at end of file
diff --git a/icons/MVdefault/chart7.png b/icons/MVdefault/chart7.png
new file mode 100644
index 0000000..d4a764e
Binary files /dev/null and b/icons/MVdefault/chart7.png differ
diff --git a/icons/MVdefault/chart7b.png b/icons/MVdefault/chart7b.png
new file mode 120000
index 0000000..bff412a
--- /dev/null
+++ b/icons/MVdefault/chart7b.png
@@ -0,0 +1 @@
+../default/chart1.png
\ No newline at end of file
diff --git a/icons/MVdefault/crypted.png b/icons/MVdefault/crypted.png
new file mode 100644
index 0000000..86c9d09
Binary files /dev/null and b/icons/MVdefault/crypted.png differ
diff --git a/icons/MVdefault/forward.png b/icons/MVdefault/forward.png
new file mode 100644
index 0000000..bbefa1c
Binary files /dev/null and b/icons/MVdefault/forward.png differ
diff --git a/icons/MVdefault/forward_sel.png b/icons/MVdefault/forward_sel.png
new file mode 100644
index 0000000..b7464a8
Binary files /dev/null and b/icons/MVdefault/forward_sel.png differ
diff --git a/icons/MVdefault/hd.png b/icons/MVdefault/hd.png
new file mode 100644
index 0000000..eb9f961
Binary files /dev/null and b/icons/MVdefault/hd.png differ
diff --git a/icons/MVdefault/message_error.png b/icons/MVdefault/message_error.png
new file mode 100644
index 0000000..f1f8a41
Binary files /dev/null and b/icons/MVdefault/message_error.png differ
diff --git a/icons/MVdefault/message_info.png b/icons/MVdefault/message_info.png
new file mode 100644
index 0000000..40cc2d6
Binary files /dev/null and b/icons/MVdefault/message_info.png differ
diff --git a/icons/MVdefault/message_status.png b/icons/MVdefault/message_status.png
new file mode 100644
index 0000000..4b011d3
Binary files /dev/null and b/icons/MVdefault/message_status.png differ
diff --git a/icons/MVdefault/message_warning.png b/icons/MVdefault/message_warning.png
new file mode 100644
index 0000000..c909d0f
Binary files /dev/null and b/icons/MVdefault/message_warning.png differ
diff --git a/icons/MVdefault/pause.png b/icons/MVdefault/pause.png
new file mode 100644
index 0000000..df4062c
Binary files /dev/null and b/icons/MVdefault/pause.png differ
diff --git a/icons/MVdefault/pause_sel.png b/icons/MVdefault/pause_sel.png
new file mode 100644
index 0000000..1755f16
Binary files /dev/null and b/icons/MVdefault/pause_sel.png differ
diff --git a/icons/MVdefault/play.png b/icons/MVdefault/play.png
new file mode 100644
index 0000000..8c00f5f
Binary files /dev/null and b/icons/MVdefault/play.png differ
diff --git a/icons/MVdefault/play_sel.png b/icons/MVdefault/play_sel.png
new file mode 100644
index 0000000..84e8a6e
Binary files /dev/null and b/icons/MVdefault/play_sel.png differ
diff --git a/icons/MVdefault/prev.png b/icons/MVdefault/prev.png
new file mode 100644
index 0000000..473b4f7
Binary files /dev/null and b/icons/MVdefault/prev.png differ
diff --git a/icons/MVdefault/prev_sel.png b/icons/MVdefault/prev_sel.png
new file mode 100644
index 0000000..4a7f813
Binary files /dev/null and b/icons/MVdefault/prev_sel.png differ
diff --git a/icons/MVdefault/radio.png b/icons/MVdefault/radio.png
new file mode 100644
index 0000000..2c3e928
Binary files /dev/null and b/icons/MVdefault/radio.png differ
diff --git a/icons/MVdefault/recording.png b/icons/MVdefault/recording.png
new file mode 100644
index 0000000..35d2187
Binary files /dev/null and b/icons/MVdefault/recording.png differ
diff --git a/icons/MVdefault/recording_cutted.png b/icons/MVdefault/recording_cutted.png
new file mode 100644
index 0000000..fa59d25
Binary files /dev/null and b/icons/MVdefault/recording_cutted.png differ
diff --git a/icons/MVdefault/recording_cutted_cur.png b/icons/MVdefault/recording_cutted_cur.png
new file mode 100644
index 0000000..2258230
Binary files /dev/null and b/icons/MVdefault/recording_cutted_cur.png differ
diff --git a/icons/MVdefault/recording_cutted_extra.png b/icons/MVdefault/recording_cutted_extra.png
new file mode 100644
index 0000000..c61e9f5
Binary files /dev/null and b/icons/MVdefault/recording_cutted_extra.png differ
diff --git a/icons/MVdefault/recording_new.png b/icons/MVdefault/recording_new.png
new file mode 100644
index 0000000..9b9a519
Binary files /dev/null and b/icons/MVdefault/recording_new.png differ
diff --git a/icons/MVdefault/recording_new_cur.png b/icons/MVdefault/recording_new_cur.png
new file mode 100644
index 0000000..53dfe00
Binary files /dev/null and b/icons/MVdefault/recording_new_cur.png differ
diff --git a/icons/MVdefault/rewind.png b/icons/MVdefault/rewind.png
new file mode 100644
index 0000000..92e120f
Binary files /dev/null and b/icons/MVdefault/rewind.png differ
diff --git a/icons/MVdefault/rewind_sel.png b/icons/MVdefault/rewind_sel.png
new file mode 100644
index 0000000..393e1bc
Binary files /dev/null and b/icons/MVdefault/rewind_sel.png differ
diff --git a/icons/MVdefault/sd.png b/icons/MVdefault/sd.png
new file mode 100644
index 0000000..5c63fed
Binary files /dev/null and b/icons/MVdefault/sd.png differ
diff --git a/icons/MVdefault/skip.png b/icons/MVdefault/skip.png
new file mode 100644
index 0000000..650ea8b
Binary files /dev/null and b/icons/MVdefault/skip.png differ
diff --git a/icons/MVdefault/skip_sel.png b/icons/MVdefault/skip_sel.png
new file mode 100644
index 0000000..1ef72ba
Binary files /dev/null and b/icons/MVdefault/skip_sel.png differ
diff --git a/icons/MVdefault/text_arrowturn.png b/icons/MVdefault/text_arrowturn.png
new file mode 100644
index 0000000..b4af6fd
Binary files /dev/null and b/icons/MVdefault/text_arrowturn.png differ
diff --git a/icons/MVdefault/text_arrowturn_cur.png b/icons/MVdefault/text_arrowturn_cur.png
new file mode 120000
index 0000000..59ec676
--- /dev/null
+++ b/icons/MVdefault/text_arrowturn_cur.png
@@ -0,0 +1 @@
+text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVdefault/text_arrowturn_sel.png b/icons/MVdefault/text_arrowturn_sel.png
new file mode 120000
index 0000000..59ec676
--- /dev/null
+++ b/icons/MVdefault/text_arrowturn_sel.png
@@ -0,0 +1 @@
+text_arrowturn.png
\ No newline at end of file
diff --git a/icons/MVdefault/text_new.png b/icons/MVdefault/text_new.png
new file mode 120000
index 0000000..5c63109
--- /dev/null
+++ b/icons/MVdefault/text_new.png
@@ -0,0 +1 @@
+recording_new.png
\ No newline at end of file
diff --git a/icons/MVdefault/text_new_cur.png b/icons/MVdefault/text_new_cur.png
new file mode 120000
index 0000000..5c63109
--- /dev/null
+++ b/icons/MVdefault/text_new_cur.png
@@ -0,0 +1 @@
+recording_new.png
\ No newline at end of file
diff --git a/icons/MVdefault/text_new_sel.png b/icons/MVdefault/text_new_sel.png
new file mode 120000
index 0000000..5c63109
--- /dev/null
+++ b/icons/MVdefault/text_new_sel.png
@@ -0,0 +1 @@
+recording_new.png
\ No newline at end of file
diff --git a/icons/MVdefault/text_rec.png b/icons/MVdefault/text_rec.png
new file mode 120000
index 0000000..9f1f56d
--- /dev/null
+++ b/icons/MVdefault/text_rec.png
@@ -0,0 +1 @@
+timerRecording.png
\ No newline at end of file
diff --git a/icons/MVdefault/text_rec_cur.png b/icons/MVdefault/text_rec_cur.png
new file mode 120000
index 0000000..9f1f56d
--- /dev/null
+++ b/icons/MVdefault/text_rec_cur.png
@@ -0,0 +1 @@
+timerRecording.png
\ No newline at end of file
diff --git a/icons/MVdefault/text_rec_sel.png b/icons/MVdefault/text_rec_sel.png
new file mode 120000
index 0000000..9f1f56d
--- /dev/null
+++ b/icons/MVdefault/text_rec_sel.png
@@ -0,0 +1 @@
+timerRecording.png
\ No newline at end of file
diff --git a/icons/MVdefault/text_timer_full.png b/icons/MVdefault/text_timer_full.png
new file mode 100644
index 0000000..273549b
Binary files /dev/null and b/icons/MVdefault/text_timer_full.png differ
diff --git a/icons/MVdefault/text_timer_full_cur.png b/icons/MVdefault/text_timer_full_cur.png
new file mode 120000
index 0000000..a3ba4fd
--- /dev/null
+++ b/icons/MVdefault/text_timer_full_cur.png
@@ -0,0 +1 @@
+text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVdefault/text_timer_full_sel.png b/icons/MVdefault/text_timer_full_sel.png
new file mode 120000
index 0000000..a3ba4fd
--- /dev/null
+++ b/icons/MVdefault/text_timer_full_sel.png
@@ -0,0 +1 @@
+text_timer_full.png
\ No newline at end of file
diff --git a/icons/MVdefault/text_timer_partial.png b/icons/MVdefault/text_timer_partial.png
new file mode 120000
index 0000000..161653e
--- /dev/null
+++ b/icons/MVdefault/text_timer_partial.png
@@ -0,0 +1 @@
+timer_partial.png
\ No newline at end of file
diff --git a/icons/MVdefault/text_timer_partial_cur.png b/icons/MVdefault/text_timer_partial_cur.png
new file mode 120000
index 0000000..161653e
--- /dev/null
+++ b/icons/MVdefault/text_timer_partial_cur.png
@@ -0,0 +1 @@
+timer_partial.png
\ No newline at end of file
diff --git a/icons/MVdefault/text_timer_partial_sel.png b/icons/MVdefault/text_timer_partial_sel.png
new file mode 120000
index 0000000..161653e
--- /dev/null
+++ b/icons/MVdefault/text_timer_partial_sel.png
@@ -0,0 +1 @@
+timer_partial.png
\ No newline at end of file
diff --git a/icons/MVdefault/text_vps.png b/icons/MVdefault/text_vps.png
new file mode 120000
index 0000000..c4c9fd0
--- /dev/null
+++ b/icons/MVdefault/text_vps.png
@@ -0,0 +1 @@
+vps.png
\ No newline at end of file
diff --git a/icons/MVdefault/text_vps_cur.png b/icons/MVdefault/text_vps_cur.png
new file mode 120000
index 0000000..c4c9fd0
--- /dev/null
+++ b/icons/MVdefault/text_vps_cur.png
@@ -0,0 +1 @@
+vps.png
\ No newline at end of file
diff --git a/icons/MVdefault/text_vps_sel.png b/icons/MVdefault/text_vps_sel.png
new file mode 120000
index 0000000..c4c9fd0
--- /dev/null
+++ b/icons/MVdefault/text_vps_sel.png
@@ -0,0 +1 @@
+vps.png
\ No newline at end of file
diff --git a/icons/MVdefault/timerActive.png b/icons/MVdefault/timerActive.png
new file mode 100644
index 0000000..cee0194
Binary files /dev/null and b/icons/MVdefault/timerActive.png differ
diff --git a/icons/MVdefault/timerInactive.png b/icons/MVdefault/timerInactive.png
new file mode 100644
index 0000000..fb1b0b7
Binary files /dev/null and b/icons/MVdefault/timerInactive.png differ
diff --git a/icons/MVdefault/timerRecording.png b/icons/MVdefault/timerRecording.png
new file mode 100644
index 0000000..dc65aa5
Binary files /dev/null and b/icons/MVdefault/timerRecording.png differ
diff --git a/icons/MVdefault/timer_full.png b/icons/MVdefault/timer_full.png
new file mode 100644
index 0000000..8169dbb
Binary files /dev/null and b/icons/MVdefault/timer_full.png differ
diff --git a/icons/MVdefault/timer_full_cur.png b/icons/MVdefault/timer_full_cur.png
new file mode 100644
index 0000000..abe1161
Binary files /dev/null and b/icons/MVdefault/timer_full_cur.png differ
diff --git a/icons/MVdefault/timer_partial.png b/icons/MVdefault/timer_partial.png
new file mode 100644
index 0000000..2c89ffe
Binary files /dev/null and b/icons/MVdefault/timer_partial.png differ
diff --git a/icons/MVdefault/timer_partial_cur.png b/icons/MVdefault/timer_partial_cur.png
new file mode 100644
index 0000000..8d1d497
Binary files /dev/null and b/icons/MVdefault/timer_partial_cur.png differ
diff --git a/icons/MVdefault/topbar_timer.png b/icons/MVdefault/topbar_timer.png
new file mode 100644
index 0000000..d0d727f
Binary files /dev/null and b/icons/MVdefault/topbar_timer.png differ
diff --git a/icons/MVdefault/topbar_timerconflict_high.png b/icons/MVdefault/topbar_timerconflict_high.png
new file mode 100644
index 0000000..237af9f
Binary files /dev/null and b/icons/MVdefault/topbar_timerconflict_high.png differ
diff --git a/icons/MVdefault/topbar_timerconflict_low.png b/icons/MVdefault/topbar_timerconflict_low.png
new file mode 100644
index 0000000..36f1cdf
Binary files /dev/null and b/icons/MVdefault/topbar_timerconflict_low.png differ
diff --git a/icons/MVdefault/tv.png b/icons/MVdefault/tv.png
new file mode 100644
index 0000000..9043dab
Binary files /dev/null and b/icons/MVdefault/tv.png differ
diff --git a/icons/MVdefault/uncrypted.png b/icons/MVdefault/uncrypted.png
new file mode 100644
index 0000000..47b0948
Binary files /dev/null and b/icons/MVdefault/uncrypted.png differ
diff --git a/icons/MVdefault/unknown_asp.png b/icons/MVdefault/unknown_asp.png
new file mode 100644
index 0000000..2f3b8a2
Binary files /dev/null and b/icons/MVdefault/unknown_asp.png differ
diff --git a/icons/MVdefault/unknown_res.png b/icons/MVdefault/unknown_res.png
new file mode 100644
index 0000000..a3ad97f
Binary files /dev/null and b/icons/MVdefault/unknown_res.png differ
diff --git a/icons/MVdefault/vps.png b/icons/MVdefault/vps.png
new file mode 100644
index 0000000..94734d0
Binary files /dev/null and b/icons/MVdefault/vps.png differ
diff --git a/icons/MVdefault/vps_cur.png b/icons/MVdefault/vps_cur.png
new file mode 100644
index 0000000..47d4aea
Binary files /dev/null and b/icons/MVdefault/vps_cur.png differ
diff --git a/icons/default/1280x720.png b/icons/default/1280x720.png
new file mode 100644
index 0000000..6153267
Binary files /dev/null and b/icons/default/1280x720.png differ
diff --git a/icons/default/1440x1080.png b/icons/default/1440x1080.png
new file mode 100644
index 0000000..d8cdcd4
Binary files /dev/null and b/icons/default/1440x1080.png differ
diff --git a/icons/default/169.png b/icons/default/169.png
new file mode 100644
index 0000000..b92771c
Binary files /dev/null and b/icons/default/169.png differ
diff --git a/icons/default/169w.png b/icons/default/169w.png
new file mode 100644
index 0000000..a48589c
Binary files /dev/null and b/icons/default/169w.png differ
diff --git a/icons/default/1920x1080.png b/icons/default/1920x1080.png
new file mode 100644
index 0000000..4da119e
Binary files /dev/null and b/icons/default/1920x1080.png differ
diff --git a/icons/default/221.png b/icons/default/221.png
new file mode 100644
index 0000000..f7490c9
Binary files /dev/null and b/icons/default/221.png differ
diff --git a/icons/default/352x576.png b/icons/default/352x576.png
new file mode 100644
index 0000000..e490b95
Binary files /dev/null and b/icons/default/352x576.png differ
diff --git a/icons/default/43.png b/icons/default/43.png
new file mode 100644
index 0000000..f181a9b
Binary files /dev/null and b/icons/default/43.png differ
diff --git a/icons/default/480x576.png b/icons/default/480x576.png
new file mode 100644
index 0000000..10dad84
Binary files /dev/null and b/icons/default/480x576.png differ
diff --git a/icons/default/528x576.png b/icons/default/528x576.png
new file mode 100644
index 0000000..b36cc98
Binary files /dev/null and b/icons/default/528x576.png differ
diff --git a/icons/default/544x576.png b/icons/default/544x576.png
new file mode 100644
index 0000000..0da26e1
Binary files /dev/null and b/icons/default/544x576.png differ
diff --git a/icons/default/704x576.png b/icons/default/704x576.png
new file mode 100644
index 0000000..1f20468
Binary files /dev/null and b/icons/default/704x576.png differ
diff --git a/icons/default/720x576.png b/icons/default/720x576.png
new file mode 100644
index 0000000..2862299
Binary files /dev/null and b/icons/default/720x576.png differ
diff --git a/icons/default/960x720.png b/icons/default/960x720.png
new file mode 100644
index 0000000..5b5ac65
Binary files /dev/null and b/icons/default/960x720.png differ
diff --git a/icons/default/EPGInfo/FSK/FSK_0.png b/icons/default/EPGInfo/FSK/FSK_0.png
new file mode 100644
index 0000000..661f500
Binary files /dev/null and b/icons/default/EPGInfo/FSK/FSK_0.png differ
diff --git a/icons/default/EPGInfo/FSK/ab 12.png b/icons/default/EPGInfo/FSK/ab 12.png
new file mode 100644
index 0000000..6f1f01d
Binary files /dev/null and b/icons/default/EPGInfo/FSK/ab 12.png differ
diff --git a/icons/default/EPGInfo/FSK/ab 16.png b/icons/default/EPGInfo/FSK/ab 16.png
new file mode 100644
index 0000000..b53ffbd
Binary files /dev/null and b/icons/default/EPGInfo/FSK/ab 16.png differ
diff --git a/icons/default/EPGInfo/FSK/ab 18.png b/icons/default/EPGInfo/FSK/ab 18.png
new file mode 100644
index 0000000..550a3b9
Binary files /dev/null and b/icons/default/EPGInfo/FSK/ab 18.png differ
diff --git a/icons/default/EPGInfo/FSK/ab 6.png b/icons/default/EPGInfo/FSK/ab 6.png
new file mode 100644
index 0000000..2dcd5a6
Binary files /dev/null and b/icons/default/EPGInfo/FSK/ab 6.png differ
diff --git a/icons/default/EPGInfo/FSK/unknown.png b/icons/default/EPGInfo/FSK/unknown.png
new file mode 100644
index 0000000..645b77c
Binary files /dev/null and b/icons/default/EPGInfo/FSK/unknown.png differ
diff --git a/icons/default/EPGInfo/FSK/unknown2.png b/icons/default/EPGInfo/FSK/unknown2.png
new file mode 100644
index 0000000..5a0706e
Binary files /dev/null and b/icons/default/EPGInfo/FSK/unknown2.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Abenteuer.png b/icons/default/EPGInfo/Genre/A0A0A0/Abenteuer.png
new file mode 100644
index 0000000..c34a879
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Abenteuer.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Action.png b/icons/default/EPGInfo/Genre/A0A0A0/Action.png
new file mode 100644
index 0000000..ce6581c
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Action.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Action2.png b/icons/default/EPGInfo/Genre/A0A0A0/Action2.png
new file mode 100644
index 0000000..13eaea7
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Action2.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Administrator2.png b/icons/default/EPGInfo/Genre/A0A0A0/Administrator2.png
new file mode 100644
index 0000000..cdc3f28
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Administrator2.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Adventure_Western_War.png b/icons/default/EPGInfo/Genre/A0A0A0/Adventure_Western_War.png
new file mode 100644
index 0000000..78e0042
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Adventure_Western_War.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Applouse.png b/icons/default/EPGInfo/Genre/A0A0A0/Applouse.png
new file mode 100644
index 0000000..3bff454
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Applouse.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Archeology.png b/icons/default/EPGInfo/Genre/A0A0A0/Archeology.png
new file mode 100644
index 0000000..8542fbf
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Archeology.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Arts_Culture.png b/icons/default/EPGInfo/Genre/A0A0A0/Arts_Culture.png
new file mode 100644
index 0000000..6869168
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Arts_Culture.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Assistant.png b/icons/default/EPGInfo/Genre/A0A0A0/Assistant.png
new file mode 100644
index 0000000..588afdf
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Assistant.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Audience.png b/icons/default/EPGInfo/Genre/A0A0A0/Audience.png
new file mode 100644
index 0000000..4f0590e
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Audience.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Baby.png b/icons/default/EPGInfo/Genre/A0A0A0/Baby.png
new file mode 100644
index 0000000..e93522e
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Baby.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Ballet_Shoes.png b/icons/default/EPGInfo/Genre/A0A0A0/Ballet_Shoes.png
new file mode 100644
index 0000000..aaf772e
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Ballet_Shoes.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Beach.png b/icons/default/EPGInfo/Genre/A0A0A0/Beach.png
new file mode 100644
index 0000000..097acf1
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Beach.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Binoculars.png b/icons/default/EPGInfo/Genre/A0A0A0/Binoculars.png
new file mode 100644
index 0000000..12bd009
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Binoculars.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Black_White.png b/icons/default/EPGInfo/Genre/A0A0A0/Black_White.png
new file mode 100644
index 0000000..f37786e
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Black_White.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Books.png b/icons/default/EPGInfo/Genre/A0A0A0/Books.png
new file mode 100644
index 0000000..ca25837
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Books.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Bowling.png b/icons/default/EPGInfo/Genre/A0A0A0/Bowling.png
new file mode 100644
index 0000000..1e015e1
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Bowling.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Boxing.png b/icons/default/EPGInfo/Genre/A0A0A0/Boxing.png
new file mode 100644
index 0000000..5cfeeca
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Boxing.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Brain.png b/icons/default/EPGInfo/Genre/A0A0A0/Brain.png
new file mode 100644
index 0000000..1cb657c
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Brain.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Breast.png b/icons/default/EPGInfo/Genre/A0A0A0/Breast.png
new file mode 100644
index 0000000..ab46c2c
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Breast.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Brick.png b/icons/default/EPGInfo/Genre/A0A0A0/Brick.png
new file mode 100644
index 0000000..f2402ba
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Brick.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Brick2.png b/icons/default/EPGInfo/Genre/A0A0A0/Brick2.png
new file mode 100644
index 0000000..e849b88
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Brick2.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Broadcasting.png b/icons/default/EPGInfo/Genre/A0A0A0/Broadcasting.png
new file mode 100644
index 0000000..6f48108
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Broadcasting.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Bunch_Flowers.png b/icons/default/EPGInfo/Genre/A0A0A0/Bunch_Flowers.png
new file mode 100644
index 0000000..72e964b
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Bunch_Flowers.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Bunch_Ingredients.png b/icons/default/EPGInfo/Genre/A0A0A0/Bunch_Ingredients.png
new file mode 100644
index 0000000..10825c8
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Bunch_Ingredients.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Camcoder.png b/icons/default/EPGInfo/Genre/A0A0A0/Camcoder.png
new file mode 100644
index 0000000..79699fd
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Camcoder.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Cannon.png b/icons/default/EPGInfo/Genre/A0A0A0/Cannon.png
new file mode 100644
index 0000000..b95a2d3
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Cannon.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Carousel.png b/icons/default/EPGInfo/Genre/A0A0A0/Carousel.png
new file mode 100644
index 0000000..3edf83b
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Carousel.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Children.png b/icons/default/EPGInfo/Genre/A0A0A0/Children.png
new file mode 100644
index 0000000..856eba6
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Children.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Children_10-16.png b/icons/default/EPGInfo/Genre/A0A0A0/Children_10-16.png
new file mode 100644
index 0000000..605078e
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Children_10-16.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Children_6-14.png b/icons/default/EPGInfo/Genre/A0A0A0/Children_6-14.png
new file mode 100644
index 0000000..9de2245
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Children_6-14.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Choir.png b/icons/default/EPGInfo/Genre/A0A0A0/Choir.png
new file mode 100644
index 0000000..9a14a64
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Choir.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Church.png b/icons/default/EPGInfo/Genre/A0A0A0/Church.png
new file mode 100644
index 0000000..57822dc
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Church.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Conference.png b/icons/default/EPGInfo/Genre/A0A0A0/Conference.png
new file mode 100644
index 0000000..6145bb1
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Conference.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Courses.png b/icons/default/EPGInfo/Genre/A0A0A0/Courses.png
new file mode 100644
index 0000000..107692e
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Courses.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/DNA_Helix.png b/icons/default/EPGInfo/Genre/A0A0A0/DNA_Helix.png
new file mode 100644
index 0000000..9fcd109
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/DNA_Helix.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Dancing.png b/icons/default/EPGInfo/Genre/A0A0A0/Dancing.png
new file mode 100644
index 0000000..1d80f74
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Dancing.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Detektiv.png b/icons/default/EPGInfo/Genre/A0A0A0/Detektiv.png
new file mode 100644
index 0000000..5776313
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Detektiv.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Diploma2.png b/icons/default/EPGInfo/Genre/A0A0A0/Diploma2.png
new file mode 100644
index 0000000..8110d76
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Diploma2.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Dokumentation.png b/icons/default/EPGInfo/Genre/A0A0A0/Dokumentation.png
new file mode 100644
index 0000000..0c648d8
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Dokumentation.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Drama.png b/icons/default/EPGInfo/Genre/A0A0A0/Drama.png
new file mode 100644
index 0000000..27cb9c0
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Drama.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Engine.png b/icons/default/EPGInfo/Genre/A0A0A0/Engine.png
new file mode 100644
index 0000000..a660794
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Engine.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Engineering.png b/icons/default/EPGInfo/Genre/A0A0A0/Engineering.png
new file mode 100644
index 0000000..3b44708
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Engineering.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Erotik.png b/icons/default/EPGInfo/Genre/A0A0A0/Erotik.png
new file mode 100644
index 0000000..9e64d27
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Erotik.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Erotik2.png b/icons/default/EPGInfo/Genre/A0A0A0/Erotik2.png
new file mode 100644
index 0000000..f95135d
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Erotik2.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Fantasie.png b/icons/default/EPGInfo/Genre/A0A0A0/Fantasie.png
new file mode 100644
index 0000000..5bc2b95
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Fantasie.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Film.png b/icons/default/EPGInfo/Genre/A0A0A0/Film.png
new file mode 100644
index 0000000..642f518
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Film.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Finish_Flag.png b/icons/default/EPGInfo/Genre/A0A0A0/Finish_Flag.png
new file mode 100644
index 0000000..5caef6a
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Finish_Flag.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Football.png b/icons/default/EPGInfo/Genre/A0A0A0/Football.png
new file mode 100644
index 0000000..f4f4db8
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Football.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/German_Hat.png b/icons/default/EPGInfo/Genre/A0A0A0/German_Hat.png
new file mode 100644
index 0000000..03f3f18
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/German_Hat.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Globe_Earth.png b/icons/default/EPGInfo/Genre/A0A0A0/Globe_Earth.png
new file mode 100644
index 0000000..fdf28ca
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Globe_Earth.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Guitar.png b/icons/default/EPGInfo/Genre/A0A0A0/Guitar.png
new file mode 100644
index 0000000..5507397
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Guitar.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Guru.png b/icons/default/EPGInfo/Genre/A0A0A0/Guru.png
new file mode 100644
index 0000000..b7db752
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Guru.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Hand_Planting.png b/icons/default/EPGInfo/Genre/A0A0A0/Hand_Planting.png
new file mode 100644
index 0000000..c334b06
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Hand_Planting.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Health.png b/icons/default/EPGInfo/Genre/A0A0A0/Health.png
new file mode 100644
index 0000000..ec67bb6
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Health.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Heart_Monitor.png b/icons/default/EPGInfo/Genre/A0A0A0/Heart_Monitor.png
new file mode 100644
index 0000000..bb6a487
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Heart_Monitor.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Historisch.png b/icons/default/EPGInfo/Genre/A0A0A0/Historisch.png
new file mode 100644
index 0000000..1f9dd38
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Historisch.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Horror.png b/icons/default/EPGInfo/Genre/A0A0A0/Horror.png
new file mode 100644
index 0000000..1e40bd8
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Horror.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Horse.png b/icons/default/EPGInfo/Genre/A0A0A0/Horse.png
new file mode 100644
index 0000000..ad80658
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Horse.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Kitchen.png b/icons/default/EPGInfo/Genre/A0A0A0/Kitchen.png
new file mode 100644
index 0000000..6be0c71
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Kitchen.png differ
diff --git "a/icons/default/EPGInfo/Genre/A0A0A0/Kom\303\266die.png" "b/icons/default/EPGInfo/Genre/A0A0A0/Kom\303\266die.png"
new file mode 100644
index 0000000..4cdf89a
Binary files /dev/null and "b/icons/default/EPGInfo/Genre/A0A0A0/Kom\303\266die.png" differ
diff --git "a/icons/default/EPGInfo/Genre/A0A0A0/Kom\303\266die2.png" "b/icons/default/EPGInfo/Genre/A0A0A0/Kom\303\266die2.png"
new file mode 100644
index 0000000..a9df48d
Binary files /dev/null and "b/icons/default/EPGInfo/Genre/A0A0A0/Kom\303\266die2.png" differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Krimi.png b/icons/default/EPGInfo/Genre/A0A0A0/Krimi.png
new file mode 100644
index 0000000..88081ee
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Krimi.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/LCD.png b/icons/default/EPGInfo/Genre/A0A0A0/LCD.png
new file mode 100644
index 0000000..2706505
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/LCD.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Law.png b/icons/default/EPGInfo/Genre/A0A0A0/Law.png
new file mode 100644
index 0000000..c842b99
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Law.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Literature.png b/icons/default/EPGInfo/Genre/A0A0A0/Literature.png
new file mode 100644
index 0000000..585585c
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Literature.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Magazine.png b/icons/default/EPGInfo/Genre/A0A0A0/Magazine.png
new file mode 100644
index 0000000..072ea2a
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Magazine.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Medical_Doctor.png b/icons/default/EPGInfo/Genre/A0A0A0/Medical_Doctor.png
new file mode 100644
index 0000000..6f0549d
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Medical_Doctor.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Mickey-Mouse.png b/icons/default/EPGInfo/Genre/A0A0A0/Mickey-Mouse.png
new file mode 100644
index 0000000..ce8ba05
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Mickey-Mouse.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Modern_Art.png b/icons/default/EPGInfo/Genre/A0A0A0/Modern_Art.png
new file mode 100644
index 0000000..b9f04f1
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Modern_Art.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Movie_Drama.png b/icons/default/EPGInfo/Genre/A0A0A0/Movie_Drama.png
new file mode 100644
index 0000000..0d3be22
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Movie_Drama.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Music.png b/icons/default/EPGInfo/Genre/A0A0A0/Music.png
new file mode 100644
index 0000000..77e7c61
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Music.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Musik.png b/icons/default/EPGInfo/Genre/A0A0A0/Musik.png
new file mode 100644
index 0000000..c38ab02
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Musik.png differ
diff --git "a/icons/default/EPGInfo/Genre/A0A0A0/M\303\244rchen.png" "b/icons/default/EPGInfo/Genre/A0A0A0/M\303\244rchen.png"
new file mode 100644
index 0000000..7867459
Binary files /dev/null and "b/icons/default/EPGInfo/Genre/A0A0A0/M\303\244rchen.png" differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Newspaper.png b/icons/default/EPGInfo/Genre/A0A0A0/Newspaper.png
new file mode 100644
index 0000000..d22a45a
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Newspaper.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/North_Direction.png b/icons/default/EPGInfo/Genre/A0A0A0/North_Direction.png
new file mode 100644
index 0000000..aca8eec
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/North_Direction.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Online.png b/icons/default/EPGInfo/Genre/A0A0A0/Online.png
new file mode 100644
index 0000000..72943f5
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Online.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Pacifier.png b/icons/default/EPGInfo/Genre/A0A0A0/Pacifier.png
new file mode 100644
index 0000000..2ac1291
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Pacifier.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Palm-Tree.png b/icons/default/EPGInfo/Genre/A0A0A0/Palm-Tree.png
new file mode 100644
index 0000000..2f767b9
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Palm-Tree.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Parliament.png b/icons/default/EPGInfo/Genre/A0A0A0/Parliament.png
new file mode 100644
index 0000000..c31013b
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Parliament.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Percentage2.png b/icons/default/EPGInfo/Genre/A0A0A0/Percentage2.png
new file mode 100644
index 0000000..c036405
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Percentage2.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Performing Arts.png b/icons/default/EPGInfo/Genre/A0A0A0/Performing Arts.png
new file mode 100644
index 0000000..76c94e1
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Performing Arts.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Physics.png b/icons/default/EPGInfo/Genre/A0A0A0/Physics.png
new file mode 100644
index 0000000..c1dfe01
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Physics.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Pie_Chart.png b/icons/default/EPGInfo/Genre/A0A0A0/Pie_Chart.png
new file mode 100644
index 0000000..6951ae1
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Pie_Chart.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Playground.png b/icons/default/EPGInfo/Genre/A0A0A0/Playground.png
new file mode 100644
index 0000000..d9c01bd
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Playground.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Popular Culture_Traditional Arts.png b/icons/default/EPGInfo/Genre/A0A0A0/Popular Culture_Traditional Arts.png
new file mode 100644
index 0000000..805e88d
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Popular Culture_Traditional Arts.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Processor.png b/icons/default/EPGInfo/Genre/A0A0A0/Processor.png
new file mode 100644
index 0000000..1016f62
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Processor.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Rattle.png b/icons/default/EPGInfo/Genre/A0A0A0/Rattle.png
new file mode 100644
index 0000000..0fe25d4
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Rattle.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Regular_Biking.png b/icons/default/EPGInfo/Genre/A0A0A0/Regular_Biking.png
new file mode 100644
index 0000000..b128984
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Regular_Biking.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Research.png b/icons/default/EPGInfo/Genre/A0A0A0/Research.png
new file mode 100644
index 0000000..6c8aac2
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Research.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Restaurant.png b/icons/default/EPGInfo/Genre/A0A0A0/Restaurant.png
new file mode 100644
index 0000000..e9b02b6
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Restaurant.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Rock.png b/icons/default/EPGInfo/Genre/A0A0A0/Rock.png
new file mode 100644
index 0000000..171d665
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Rock.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Roman.png b/icons/default/EPGInfo/Genre/A0A0A0/Roman.png
new file mode 100644
index 0000000..681dc08
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Roman.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Running.png b/icons/default/EPGInfo/Genre/A0A0A0/Running.png
new file mode 100644
index 0000000..930c1fd
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Running.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Satellite_Sending_Signal.png b/icons/default/EPGInfo/Genre/A0A0A0/Satellite_Sending_Signal.png
new file mode 100644
index 0000000..f415269
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Satellite_Sending_Signal.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Saxophone.png b/icons/default/EPGInfo/Genre/A0A0A0/Saxophone.png
new file mode 100644
index 0000000..6c0b3e9
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Saxophone.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/SciFi_Fantasy_Horror.png b/icons/default/EPGInfo/Genre/A0A0A0/SciFi_Fantasy_Horror.png
new file mode 100644
index 0000000..5194dbb
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/SciFi_Fantasy_Horror.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Science-Fiction.png b/icons/default/EPGInfo/Genre/A0A0A0/Science-Fiction.png
new file mode 100644
index 0000000..e7d1eb7
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Science-Fiction.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Serious_Classical_Religious_Historical Movie_Drama.png b/icons/default/EPGInfo/Genre/A0A0A0/Serious_Classical_Religious_Historical Movie_Drama.png
new file mode 100644
index 0000000..18cf868
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Serious_Classical_Religious_Historical Movie_Drama.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Server.png b/icons/default/EPGInfo/Genre/A0A0A0/Server.png
new file mode 100644
index 0000000..316e8fc
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Server.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Sheet_Of_Paper.png b/icons/default/EPGInfo/Genre/A0A0A0/Sheet_Of_Paper.png
new file mode 100644
index 0000000..917252c
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Sheet_Of_Paper.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Shoe_Woman.png b/icons/default/EPGInfo/Genre/A0A0A0/Shoe_Woman.png
new file mode 100644
index 0000000..eff2028
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Shoe_Woman.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Shopping.png b/icons/default/EPGInfo/Genre/A0A0A0/Shopping.png
new file mode 100644
index 0000000..7a109de
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Shopping.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Skiing.png b/icons/default/EPGInfo/Genre/A0A0A0/Skiing.png
new file mode 100644
index 0000000..7cead32
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Skiing.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Social_Political_Economics.png b/icons/default/EPGInfo/Genre/A0A0A0/Social_Political_Economics.png
new file mode 100644
index 0000000..e28747b
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Social_Political_Economics.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Special Event.png b/icons/default/EPGInfo/Genre/A0A0A0/Special Event.png
new file mode 100644
index 0000000..58a6553
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Special Event.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Spiel.png b/icons/default/EPGInfo/Genre/A0A0A0/Spiel.png
new file mode 100644
index 0000000..ce11c36
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Spiel.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Sport.png b/icons/default/EPGInfo/Genre/A0A0A0/Sport.png
new file mode 100644
index 0000000..8faf68b
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Sport.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Sport_Magazin.png b/icons/default/EPGInfo/Genre/A0A0A0/Sport_Magazin.png
new file mode 100644
index 0000000..30f993d
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Sport_Magazin.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Stanley_Knife.png b/icons/default/EPGInfo/Genre/A0A0A0/Stanley_Knife.png
new file mode 100644
index 0000000..8a13d36
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Stanley_Knife.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Strikes.png b/icons/default/EPGInfo/Genre/A0A0A0/Strikes.png
new file mode 100644
index 0000000..99bf166
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Strikes.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Stroller.png b/icons/default/EPGInfo/Genre/A0A0A0/Stroller.png
new file mode 100644
index 0000000..3abf873
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Stroller.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Student.png b/icons/default/EPGInfo/Genre/A0A0A0/Student.png
new file mode 100644
index 0000000..fe04b41
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Student.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Student_Filled.png b/icons/default/EPGInfo/Genre/A0A0A0/Student_Filled.png
new file mode 100644
index 0000000..8161cdb
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Student_Filled.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Students2.png b/icons/default/EPGInfo/Genre/A0A0A0/Students2.png
new file mode 100644
index 0000000..c8e75ac
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Students2.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Suitcase.png b/icons/default/EPGInfo/Genre/A0A0A0/Suitcase.png
new file mode 100644
index 0000000..b2e4372
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Suitcase.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Swimming.png b/icons/default/EPGInfo/Genre/A0A0A0/Swimming.png
new file mode 100644
index 0000000..a580a9a
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Swimming.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Talk.png b/icons/default/EPGInfo/Genre/A0A0A0/Talk.png
new file mode 100644
index 0000000..3af2936
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Talk.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Teams.png b/icons/default/EPGInfo/Genre/A0A0A0/Teams.png
new file mode 100644
index 0000000..e0d3cdb
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Teams.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Technology_Science.png b/icons/default/EPGInfo/Genre/A0A0A0/Technology_Science.png
new file mode 100644
index 0000000..e714891
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Technology_Science.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Teddybear.png b/icons/default/EPGInfo/Genre/A0A0A0/Teddybear.png
new file mode 100644
index 0000000..f70dbc3
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Teddybear.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Temperature.png b/icons/default/EPGInfo/Genre/A0A0A0/Temperature.png
new file mode 100644
index 0000000..c40ac24
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Temperature.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Tennis.png b/icons/default/EPGInfo/Genre/A0A0A0/Tennis.png
new file mode 100644
index 0000000..43841b6
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Tennis.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Test_Tube.png b/icons/default/EPGInfo/Genre/A0A0A0/Test_Tube.png
new file mode 100644
index 0000000..99bed82
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Test_Tube.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Theatre_Masks.png b/icons/default/EPGInfo/Genre/A0A0A0/Theatre_Masks.png
new file mode 100644
index 0000000..8275bbc
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Theatre_Masks.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Thriller.png b/icons/default/EPGInfo/Genre/A0A0A0/Thriller.png
new file mode 100644
index 0000000..7ec4747
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Thriller.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Ticket.png b/icons/default/EPGInfo/Genre/A0A0A0/Ticket.png
new file mode 100644
index 0000000..fa69f43
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Ticket.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Treble_Clef.png b/icons/default/EPGInfo/Genre/A0A0A0/Treble_Clef.png
new file mode 100644
index 0000000..3970f18
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Treble_Clef.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Tricycle.png b/icons/default/EPGInfo/Genre/A0A0A0/Tricycle.png
new file mode 100644
index 0000000..38c634c
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Tricycle.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/University.png b/icons/default/EPGInfo/Genre/A0A0A0/University.png
new file mode 100644
index 0000000..75e3181
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/University.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Unpublished.png b/icons/default/EPGInfo/Genre/A0A0A0/Unpublished.png
new file mode 100644
index 0000000..2a9d8ab
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Unpublished.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Waypoint_Map.png b/icons/default/EPGInfo/Genre/A0A0A0/Waypoint_Map.png
new file mode 100644
index 0000000..b7ef30b
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Waypoint_Map.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Weather.png b/icons/default/EPGInfo/Genre/A0A0A0/Weather.png
new file mode 100644
index 0000000..bb35ab3
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Weather.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Western.png b/icons/default/EPGInfo/Genre/A0A0A0/Western.png
new file mode 100644
index 0000000..d963f16
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Western.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/World_Map.png b/icons/default/EPGInfo/Genre/A0A0A0/World_Map.png
new file mode 100644
index 0000000..42dbb99
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/World_Map.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Yoga.png b/icons/default/EPGInfo/Genre/A0A0A0/Yoga.png
new file mode 100644
index 0000000..b7c32dc
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Yoga.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/Zombie.png b/icons/default/EPGInfo/Genre/A0A0A0/Zombie.png
new file mode 100644
index 0000000..ee41b78
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/Zombie.png differ
diff --git a/icons/default/EPGInfo/Genre/A0A0A0/unknown.png b/icons/default/EPGInfo/Genre/A0A0A0/unknown.png
new file mode 100644
index 0000000..2e62fb1
Binary files /dev/null and b/icons/default/EPGInfo/Genre/A0A0A0/unknown.png differ
diff --git a/icons/default/EPGInfo/Genre/Adult Movie_Drama.png b/icons/default/EPGInfo/Genre/Adult Movie_Drama.png
new file mode 120000
index 0000000..7583eab
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Adult Movie_Drama.png
@@ -0,0 +1 @@
+A0A0A0/Breast.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Adventure_Western_War.png b/icons/default/EPGInfo/Genre/Adventure_Western_War.png
new file mode 120000
index 0000000..3d8a291
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Adventure_Western_War.png
@@ -0,0 +1 @@
+A0A0A0/Adventure_Western_War.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Advertisement_Shopping.png b/icons/default/EPGInfo/Genre/Advertisement_Shopping.png
new file mode 120000
index 0000000..3af3e91
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Advertisement_Shopping.png
@@ -0,0 +1 @@
+A0A0A0/Shopping.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Arts_Culture Magazine.png b/icons/default/EPGInfo/Genre/Arts_Culture Magazine.png
new file mode 120000
index 0000000..19dd1c1
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Arts_Culture Magazine.png
@@ -0,0 +1 @@
+A0A0A0/Magazine.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Arts_Culture.png b/icons/default/EPGInfo/Genre/Arts_Culture.png
new file mode 120000
index 0000000..b759ee4
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Arts_Culture.png
@@ -0,0 +1 @@
+A0A0A0/Arts_Culture.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Athletics.png b/icons/default/EPGInfo/Genre/Athletics.png
new file mode 120000
index 0000000..98d09b9
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Athletics.png
@@ -0,0 +1 @@
+A0A0A0/Running.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Ballet.png b/icons/default/EPGInfo/Genre/Ballet.png
new file mode 120000
index 0000000..80e1f80
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Ballet.png
@@ -0,0 +1 @@
+A0A0A0/Ballet_Shoes.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Black_White.png b/icons/default/EPGInfo/Genre/Black_White.png
new file mode 120000
index 0000000..a04cce2
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Black_White.png
@@ -0,0 +1 @@
+A0A0A0/Black_White.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Broadcasting_Press.png b/icons/default/EPGInfo/Genre/Broadcasting_Press.png
new file mode 120000
index 0000000..daf13a1
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Broadcasting_Press.png
@@ -0,0 +1 @@
+A0A0A0/Broadcasting.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Cartoons_Puppets.png b/icons/default/EPGInfo/Genre/Cartoons_Puppets.png
new file mode 120000
index 0000000..92f0985
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Cartoons_Puppets.png
@@ -0,0 +1 @@
+A0A0A0/Mickey-Mouse.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Childrens_Youth Programme.png b/icons/default/EPGInfo/Genre/Childrens_Youth Programme.png
new file mode 120000
index 0000000..494369d
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Childrens_Youth Programme.png
@@ -0,0 +1 @@
+A0A0A0/Children.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Comedy.png b/icons/default/EPGInfo/Genre/Comedy.png
new file mode 120000
index 0000000..b6b60bf
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Comedy.png
@@ -0,0 +1 @@
+A0A0A0/Komödie2.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Cooking.png b/icons/default/EPGInfo/Genre/Cooking.png
new file mode 120000
index 0000000..80ed61f
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Cooking.png
@@ -0,0 +1 @@
+A0A0A0/Kitchen.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Detective_Thriller.png b/icons/default/EPGInfo/Genre/Detective_Thriller.png
new file mode 120000
index 0000000..a04d6f6
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Detective_Thriller.png
@@ -0,0 +1 @@
+A0A0A0/Detektiv.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Discussion_Inverview_Debate.png b/icons/default/EPGInfo/Genre/Discussion_Inverview_Debate.png
new file mode 120000
index 0000000..7b9d578
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Discussion_Inverview_Debate.png
@@ -0,0 +1 @@
+A0A0A0/Conference.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Documentary.png b/icons/default/EPGInfo/Genre/Documentary.png
new file mode 120000
index 0000000..dff07a9
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Documentary.png
@@ -0,0 +1 @@
+A0A0A0/Dokumentation.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Education_Science_Factual.png b/icons/default/EPGInfo/Genre/Education_Science_Factual.png
new file mode 120000
index 0000000..86cb0a3
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Education_Science_Factual.png
@@ -0,0 +1 @@
+A0A0A0/Test_Tube.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Entertainment Programme for 10 to 16.png b/icons/default/EPGInfo/Genre/Entertainment Programme for 10 to 16.png
new file mode 120000
index 0000000..c0d55d4
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Entertainment Programme for 10 to 16.png
@@ -0,0 +1 @@
+A0A0A0/Children_10-16.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Entertainment Programme for 6 to 14.png b/icons/default/EPGInfo/Genre/Entertainment Programme for 6 to 14.png
new file mode 120000
index 0000000..902249a
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Entertainment Programme for 6 to 14.png
@@ -0,0 +1 @@
+A0A0A0/Children_6-14.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Equestrian.png b/icons/default/EPGInfo/Genre/Equestrian.png
new file mode 120000
index 0000000..0bf2147
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Equestrian.png
@@ -0,0 +1 @@
+A0A0A0/Horse.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Experimental Film_Video.png b/icons/default/EPGInfo/Genre/Experimental Film_Video.png
new file mode 120000
index 0000000..c97bf3a
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Experimental Film_Video.png
@@ -0,0 +1 @@
+A0A0A0/Camcoder.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Abenteuer.png b/icons/default/EPGInfo/Genre/FFFFFF/Abenteuer.png
new file mode 100644
index 0000000..785399b
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Abenteuer.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Action.png b/icons/default/EPGInfo/Genre/FFFFFF/Action.png
new file mode 100644
index 0000000..e0ee080
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Action.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Action2.png b/icons/default/EPGInfo/Genre/FFFFFF/Action2.png
new file mode 100644
index 0000000..23d30f6
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Action2.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Administrator2.png b/icons/default/EPGInfo/Genre/FFFFFF/Administrator2.png
new file mode 100644
index 0000000..9d0ab5d
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Administrator2.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Adventure_Western_War.png b/icons/default/EPGInfo/Genre/FFFFFF/Adventure_Western_War.png
new file mode 100644
index 0000000..6c2e0b6
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Adventure_Western_War.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Applouse.png b/icons/default/EPGInfo/Genre/FFFFFF/Applouse.png
new file mode 100644
index 0000000..28e9971
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Applouse.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Archeology.png b/icons/default/EPGInfo/Genre/FFFFFF/Archeology.png
new file mode 100644
index 0000000..12fc4e2
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Archeology.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Arts_Culture.png b/icons/default/EPGInfo/Genre/FFFFFF/Arts_Culture.png
new file mode 100644
index 0000000..5de4b10
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Arts_Culture.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Assistant.png b/icons/default/EPGInfo/Genre/FFFFFF/Assistant.png
new file mode 100644
index 0000000..6105e5e
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Assistant.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Audience.png b/icons/default/EPGInfo/Genre/FFFFFF/Audience.png
new file mode 100644
index 0000000..475489b
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Audience.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Baby.png b/icons/default/EPGInfo/Genre/FFFFFF/Baby.png
new file mode 100644
index 0000000..d1ea7ff
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Baby.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Ballet_Shoes.png b/icons/default/EPGInfo/Genre/FFFFFF/Ballet_Shoes.png
new file mode 100644
index 0000000..2f64a59
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Ballet_Shoes.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Beach.png b/icons/default/EPGInfo/Genre/FFFFFF/Beach.png
new file mode 100644
index 0000000..7a27f1c
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Beach.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Binoculars.png b/icons/default/EPGInfo/Genre/FFFFFF/Binoculars.png
new file mode 100644
index 0000000..73a3be9
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Binoculars.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Black_White.png b/icons/default/EPGInfo/Genre/FFFFFF/Black_White.png
new file mode 100644
index 0000000..406ce17
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Black_White.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Books.png b/icons/default/EPGInfo/Genre/FFFFFF/Books.png
new file mode 100644
index 0000000..6f7c391
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Books.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Bowling.png b/icons/default/EPGInfo/Genre/FFFFFF/Bowling.png
new file mode 100644
index 0000000..a8b2b06
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Bowling.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Boxing.png b/icons/default/EPGInfo/Genre/FFFFFF/Boxing.png
new file mode 100644
index 0000000..525e251
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Boxing.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Brain.png b/icons/default/EPGInfo/Genre/FFFFFF/Brain.png
new file mode 100644
index 0000000..9f7db54
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Brain.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Breast.png b/icons/default/EPGInfo/Genre/FFFFFF/Breast.png
new file mode 100644
index 0000000..3776a01
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Breast.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Brick.png b/icons/default/EPGInfo/Genre/FFFFFF/Brick.png
new file mode 100644
index 0000000..ce2fbc9
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Brick.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Brick2.png b/icons/default/EPGInfo/Genre/FFFFFF/Brick2.png
new file mode 100644
index 0000000..7b08c02
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Brick2.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Broadcasting.png b/icons/default/EPGInfo/Genre/FFFFFF/Broadcasting.png
new file mode 100644
index 0000000..cdbf834
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Broadcasting.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Bunch_Flowers.png b/icons/default/EPGInfo/Genre/FFFFFF/Bunch_Flowers.png
new file mode 100644
index 0000000..34f0efe
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Bunch_Flowers.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Bunch_Ingredients.png b/icons/default/EPGInfo/Genre/FFFFFF/Bunch_Ingredients.png
new file mode 100644
index 0000000..ad43a5f
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Bunch_Ingredients.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Camcoder.png b/icons/default/EPGInfo/Genre/FFFFFF/Camcoder.png
new file mode 100644
index 0000000..e4398c0
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Camcoder.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Cannon.png b/icons/default/EPGInfo/Genre/FFFFFF/Cannon.png
new file mode 100644
index 0000000..d30acb2
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Cannon.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Carousel.png b/icons/default/EPGInfo/Genre/FFFFFF/Carousel.png
new file mode 100644
index 0000000..956c5ed
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Carousel.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Children.png b/icons/default/EPGInfo/Genre/FFFFFF/Children.png
new file mode 100644
index 0000000..c5b911f
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Children.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Children_10-16.png b/icons/default/EPGInfo/Genre/FFFFFF/Children_10-16.png
new file mode 100644
index 0000000..8ac9783
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Children_10-16.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Children_6-14.png b/icons/default/EPGInfo/Genre/FFFFFF/Children_6-14.png
new file mode 100644
index 0000000..e5ac5da
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Children_6-14.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Choir.png b/icons/default/EPGInfo/Genre/FFFFFF/Choir.png
new file mode 100644
index 0000000..0a015e5
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Choir.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Church.png b/icons/default/EPGInfo/Genre/FFFFFF/Church.png
new file mode 100644
index 0000000..ae0a5db
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Church.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Conference.png b/icons/default/EPGInfo/Genre/FFFFFF/Conference.png
new file mode 100644
index 0000000..e7dc0e4
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Conference.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Courses.png b/icons/default/EPGInfo/Genre/FFFFFF/Courses.png
new file mode 100644
index 0000000..d91ad03
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Courses.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/DNA_Helix.png b/icons/default/EPGInfo/Genre/FFFFFF/DNA_Helix.png
new file mode 100644
index 0000000..8baeeb0
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/DNA_Helix.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Dancing.png b/icons/default/EPGInfo/Genre/FFFFFF/Dancing.png
new file mode 100644
index 0000000..a3f2137
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Dancing.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Detektiv.png b/icons/default/EPGInfo/Genre/FFFFFF/Detektiv.png
new file mode 100644
index 0000000..35b681e
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Detektiv.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Diploma2.png b/icons/default/EPGInfo/Genre/FFFFFF/Diploma2.png
new file mode 100644
index 0000000..b2131c9
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Diploma2.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Dokumentation.png b/icons/default/EPGInfo/Genre/FFFFFF/Dokumentation.png
new file mode 100644
index 0000000..7b3fd5e
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Dokumentation.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Drama.png b/icons/default/EPGInfo/Genre/FFFFFF/Drama.png
new file mode 100644
index 0000000..4e63569
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Drama.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Engine.png b/icons/default/EPGInfo/Genre/FFFFFF/Engine.png
new file mode 100644
index 0000000..8d14f75
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Engine.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Engineering.png b/icons/default/EPGInfo/Genre/FFFFFF/Engineering.png
new file mode 100644
index 0000000..a88ca76
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Engineering.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Erotik.png b/icons/default/EPGInfo/Genre/FFFFFF/Erotik.png
new file mode 100644
index 0000000..b8d017b
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Erotik.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Erotik2.png b/icons/default/EPGInfo/Genre/FFFFFF/Erotik2.png
new file mode 100644
index 0000000..e239854
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Erotik2.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Fantasie.png b/icons/default/EPGInfo/Genre/FFFFFF/Fantasie.png
new file mode 100644
index 0000000..d4fbc2d
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Fantasie.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Film.png b/icons/default/EPGInfo/Genre/FFFFFF/Film.png
new file mode 100644
index 0000000..0f3a79c
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Film.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Finish_Flag.png b/icons/default/EPGInfo/Genre/FFFFFF/Finish_Flag.png
new file mode 100644
index 0000000..ac42017
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Finish_Flag.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Football.png b/icons/default/EPGInfo/Genre/FFFFFF/Football.png
new file mode 100644
index 0000000..cf52ef7
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Football.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/German_Hat.png b/icons/default/EPGInfo/Genre/FFFFFF/German_Hat.png
new file mode 100644
index 0000000..6dd2a86
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/German_Hat.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Globe_Earth.png b/icons/default/EPGInfo/Genre/FFFFFF/Globe_Earth.png
new file mode 100644
index 0000000..dd36ad4
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Globe_Earth.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Guitar.png b/icons/default/EPGInfo/Genre/FFFFFF/Guitar.png
new file mode 100644
index 0000000..ed1af71
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Guitar.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Guru.png b/icons/default/EPGInfo/Genre/FFFFFF/Guru.png
new file mode 100644
index 0000000..ff7e128
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Guru.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Hand_Planting.png b/icons/default/EPGInfo/Genre/FFFFFF/Hand_Planting.png
new file mode 100644
index 0000000..3c0b484
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Hand_Planting.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Health.png b/icons/default/EPGInfo/Genre/FFFFFF/Health.png
new file mode 100644
index 0000000..734fef9
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Health.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Heart_Monitor.png b/icons/default/EPGInfo/Genre/FFFFFF/Heart_Monitor.png
new file mode 100644
index 0000000..300d8b0
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Heart_Monitor.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Historisch.png b/icons/default/EPGInfo/Genre/FFFFFF/Historisch.png
new file mode 100644
index 0000000..5b29af0
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Historisch.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Horror.png b/icons/default/EPGInfo/Genre/FFFFFF/Horror.png
new file mode 100644
index 0000000..32dfe9b
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Horror.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Horse.png b/icons/default/EPGInfo/Genre/FFFFFF/Horse.png
new file mode 100644
index 0000000..662c8ed
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Horse.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Kitchen.png b/icons/default/EPGInfo/Genre/FFFFFF/Kitchen.png
new file mode 100644
index 0000000..fccdda0
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Kitchen.png differ
diff --git "a/icons/default/EPGInfo/Genre/FFFFFF/Kom\303\266die.png" "b/icons/default/EPGInfo/Genre/FFFFFF/Kom\303\266die.png"
new file mode 100644
index 0000000..dcbd218
Binary files /dev/null and "b/icons/default/EPGInfo/Genre/FFFFFF/Kom\303\266die.png" differ
diff --git "a/icons/default/EPGInfo/Genre/FFFFFF/Kom\303\266die2.png" "b/icons/default/EPGInfo/Genre/FFFFFF/Kom\303\266die2.png"
new file mode 100644
index 0000000..e14bf41
Binary files /dev/null and "b/icons/default/EPGInfo/Genre/FFFFFF/Kom\303\266die2.png" differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Krimi.png b/icons/default/EPGInfo/Genre/FFFFFF/Krimi.png
new file mode 100644
index 0000000..17da2d4
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Krimi.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/LCD.png b/icons/default/EPGInfo/Genre/FFFFFF/LCD.png
new file mode 100644
index 0000000..07f3023
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/LCD.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Law.png b/icons/default/EPGInfo/Genre/FFFFFF/Law.png
new file mode 100644
index 0000000..64d815e
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Law.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Literature.png b/icons/default/EPGInfo/Genre/FFFFFF/Literature.png
new file mode 100644
index 0000000..5baf6de
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Literature.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Magazine.png b/icons/default/EPGInfo/Genre/FFFFFF/Magazine.png
new file mode 100644
index 0000000..e7fc81f
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Magazine.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Medical_Doctor.png b/icons/default/EPGInfo/Genre/FFFFFF/Medical_Doctor.png
new file mode 100644
index 0000000..6f714c6
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Medical_Doctor.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Mickey-Mouse.png b/icons/default/EPGInfo/Genre/FFFFFF/Mickey-Mouse.png
new file mode 100644
index 0000000..e399d61
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Mickey-Mouse.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Modern_Art.png b/icons/default/EPGInfo/Genre/FFFFFF/Modern_Art.png
new file mode 100644
index 0000000..4ecd8ff
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Modern_Art.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Movie_Drama.png b/icons/default/EPGInfo/Genre/FFFFFF/Movie_Drama.png
new file mode 100644
index 0000000..725afdf
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Movie_Drama.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Music.png b/icons/default/EPGInfo/Genre/FFFFFF/Music.png
new file mode 100644
index 0000000..33c8dfd
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Music.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Musik.png b/icons/default/EPGInfo/Genre/FFFFFF/Musik.png
new file mode 100644
index 0000000..7d1f696
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Musik.png differ
diff --git "a/icons/default/EPGInfo/Genre/FFFFFF/M\303\244rchen.png" "b/icons/default/EPGInfo/Genre/FFFFFF/M\303\244rchen.png"
new file mode 100644
index 0000000..1839c78
Binary files /dev/null and "b/icons/default/EPGInfo/Genre/FFFFFF/M\303\244rchen.png" differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Newspaper.png b/icons/default/EPGInfo/Genre/FFFFFF/Newspaper.png
new file mode 100644
index 0000000..dc7c75f
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Newspaper.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/North_Direction.png b/icons/default/EPGInfo/Genre/FFFFFF/North_Direction.png
new file mode 100644
index 0000000..d61a212
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/North_Direction.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Online.png b/icons/default/EPGInfo/Genre/FFFFFF/Online.png
new file mode 100644
index 0000000..1efc4ca
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Online.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Pacifier.png b/icons/default/EPGInfo/Genre/FFFFFF/Pacifier.png
new file mode 100644
index 0000000..3259a90
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Pacifier.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Palm-Tree.png b/icons/default/EPGInfo/Genre/FFFFFF/Palm-Tree.png
new file mode 100644
index 0000000..c1655ed
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Palm-Tree.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Parliament.png b/icons/default/EPGInfo/Genre/FFFFFF/Parliament.png
new file mode 100644
index 0000000..57353dd
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Parliament.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Percentage2.png b/icons/default/EPGInfo/Genre/FFFFFF/Percentage2.png
new file mode 100644
index 0000000..24571f5
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Percentage2.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Performing Arts.png b/icons/default/EPGInfo/Genre/FFFFFF/Performing Arts.png
new file mode 100644
index 0000000..87fe092
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Performing Arts.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Physics.png b/icons/default/EPGInfo/Genre/FFFFFF/Physics.png
new file mode 100644
index 0000000..a741de5
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Physics.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Pie_Chart.png b/icons/default/EPGInfo/Genre/FFFFFF/Pie_Chart.png
new file mode 100644
index 0000000..c6ddbcd
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Pie_Chart.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Playground.png b/icons/default/EPGInfo/Genre/FFFFFF/Playground.png
new file mode 100644
index 0000000..0a4f985
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Playground.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Popular Culture_Traditional Arts.png b/icons/default/EPGInfo/Genre/FFFFFF/Popular Culture_Traditional Arts.png
new file mode 100644
index 0000000..f9d502b
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Popular Culture_Traditional Arts.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Processor.png b/icons/default/EPGInfo/Genre/FFFFFF/Processor.png
new file mode 100644
index 0000000..6736d49
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Processor.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Rattle.png b/icons/default/EPGInfo/Genre/FFFFFF/Rattle.png
new file mode 100644
index 0000000..a3692bd
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Rattle.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Regular_Biking.png b/icons/default/EPGInfo/Genre/FFFFFF/Regular_Biking.png
new file mode 100644
index 0000000..88bb053
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Regular_Biking.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Research.png b/icons/default/EPGInfo/Genre/FFFFFF/Research.png
new file mode 100644
index 0000000..30dbb1a
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Research.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Restaurant.png b/icons/default/EPGInfo/Genre/FFFFFF/Restaurant.png
new file mode 100644
index 0000000..63c6ba3
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Restaurant.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Rock.png b/icons/default/EPGInfo/Genre/FFFFFF/Rock.png
new file mode 100644
index 0000000..c61d6b4
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Rock.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Roman.png b/icons/default/EPGInfo/Genre/FFFFFF/Roman.png
new file mode 100644
index 0000000..f7e1672
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Roman.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Running.png b/icons/default/EPGInfo/Genre/FFFFFF/Running.png
new file mode 100644
index 0000000..d14d525
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Running.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Satellite_Sending_Signal.png b/icons/default/EPGInfo/Genre/FFFFFF/Satellite_Sending_Signal.png
new file mode 100644
index 0000000..9880573
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Satellite_Sending_Signal.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Saxophone.png b/icons/default/EPGInfo/Genre/FFFFFF/Saxophone.png
new file mode 100644
index 0000000..e1617f4
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Saxophone.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/SciFi_Fantasy_Horror.png b/icons/default/EPGInfo/Genre/FFFFFF/SciFi_Fantasy_Horror.png
new file mode 100644
index 0000000..ec7ee0a
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/SciFi_Fantasy_Horror.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Science-Fiction.png b/icons/default/EPGInfo/Genre/FFFFFF/Science-Fiction.png
new file mode 100644
index 0000000..ecbccb1
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Science-Fiction.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Serious_Classical_Religious_Historical Movie_Drama.png b/icons/default/EPGInfo/Genre/FFFFFF/Serious_Classical_Religious_Historical Movie_Drama.png
new file mode 100644
index 0000000..57b4ff5
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Serious_Classical_Religious_Historical Movie_Drama.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Server.png b/icons/default/EPGInfo/Genre/FFFFFF/Server.png
new file mode 100644
index 0000000..bfec7e0
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Server.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Sheet_Of_Paper.png b/icons/default/EPGInfo/Genre/FFFFFF/Sheet_Of_Paper.png
new file mode 100644
index 0000000..27003b5
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Sheet_Of_Paper.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Shoe_Woman.png b/icons/default/EPGInfo/Genre/FFFFFF/Shoe_Woman.png
new file mode 100644
index 0000000..ae87040
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Shoe_Woman.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Shopping.png b/icons/default/EPGInfo/Genre/FFFFFF/Shopping.png
new file mode 100644
index 0000000..6519d79
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Shopping.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Skiing.png b/icons/default/EPGInfo/Genre/FFFFFF/Skiing.png
new file mode 100644
index 0000000..46152ad
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Skiing.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Social_Political_Economics.png b/icons/default/EPGInfo/Genre/FFFFFF/Social_Political_Economics.png
new file mode 100644
index 0000000..e0a9809
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Social_Political_Economics.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Special Event.png b/icons/default/EPGInfo/Genre/FFFFFF/Special Event.png
new file mode 100644
index 0000000..bff666b
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Special Event.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Spiel.png b/icons/default/EPGInfo/Genre/FFFFFF/Spiel.png
new file mode 100644
index 0000000..6b7f12b
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Spiel.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Sport.png b/icons/default/EPGInfo/Genre/FFFFFF/Sport.png
new file mode 100644
index 0000000..a14e6b7
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Sport.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Sport_Magazin.png b/icons/default/EPGInfo/Genre/FFFFFF/Sport_Magazin.png
new file mode 100644
index 0000000..02e5ee4
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Sport_Magazin.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Stanley_Knife.png b/icons/default/EPGInfo/Genre/FFFFFF/Stanley_Knife.png
new file mode 100644
index 0000000..acf09cf
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Stanley_Knife.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Strikes.png b/icons/default/EPGInfo/Genre/FFFFFF/Strikes.png
new file mode 100644
index 0000000..e7d7659
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Strikes.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Stroller.png b/icons/default/EPGInfo/Genre/FFFFFF/Stroller.png
new file mode 100644
index 0000000..915e259
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Stroller.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Student.png b/icons/default/EPGInfo/Genre/FFFFFF/Student.png
new file mode 100644
index 0000000..d13f915
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Student.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Student_Filled.png b/icons/default/EPGInfo/Genre/FFFFFF/Student_Filled.png
new file mode 100644
index 0000000..c9d1b11
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Student_Filled.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Students2.png b/icons/default/EPGInfo/Genre/FFFFFF/Students2.png
new file mode 100644
index 0000000..5baaf28
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Students2.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Suitcase.png b/icons/default/EPGInfo/Genre/FFFFFF/Suitcase.png
new file mode 100644
index 0000000..00e2207
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Suitcase.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Swimming.png b/icons/default/EPGInfo/Genre/FFFFFF/Swimming.png
new file mode 100644
index 0000000..87fedf0
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Swimming.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Talk.png b/icons/default/EPGInfo/Genre/FFFFFF/Talk.png
new file mode 100644
index 0000000..c9f4120
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Talk.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Teams.png b/icons/default/EPGInfo/Genre/FFFFFF/Teams.png
new file mode 100644
index 0000000..f9ae9a1
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Teams.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Technology_Science.png b/icons/default/EPGInfo/Genre/FFFFFF/Technology_Science.png
new file mode 100644
index 0000000..5a8e067
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Technology_Science.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Teddybear.png b/icons/default/EPGInfo/Genre/FFFFFF/Teddybear.png
new file mode 100644
index 0000000..07b2d65
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Teddybear.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Temperature.png b/icons/default/EPGInfo/Genre/FFFFFF/Temperature.png
new file mode 100644
index 0000000..ed1da80
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Temperature.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Tennis.png b/icons/default/EPGInfo/Genre/FFFFFF/Tennis.png
new file mode 100644
index 0000000..533ad4c
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Tennis.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Test_Tube.png b/icons/default/EPGInfo/Genre/FFFFFF/Test_Tube.png
new file mode 100644
index 0000000..593def9
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Test_Tube.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Theatre_Masks.png b/icons/default/EPGInfo/Genre/FFFFFF/Theatre_Masks.png
new file mode 100644
index 0000000..3efe74e
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Theatre_Masks.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Thriller.png b/icons/default/EPGInfo/Genre/FFFFFF/Thriller.png
new file mode 100644
index 0000000..404f5a2
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Thriller.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Ticket.png b/icons/default/EPGInfo/Genre/FFFFFF/Ticket.png
new file mode 100644
index 0000000..dfd5ac2
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Ticket.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Treble_Clef.png b/icons/default/EPGInfo/Genre/FFFFFF/Treble_Clef.png
new file mode 100644
index 0000000..07a21d1
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Treble_Clef.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Tricycle.png b/icons/default/EPGInfo/Genre/FFFFFF/Tricycle.png
new file mode 100644
index 0000000..317a2b8
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Tricycle.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/University.png b/icons/default/EPGInfo/Genre/FFFFFF/University.png
new file mode 100644
index 0000000..12b0852
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/University.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Unpublished.png b/icons/default/EPGInfo/Genre/FFFFFF/Unpublished.png
new file mode 100644
index 0000000..165783a
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Unpublished.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Waypoint_Map.png b/icons/default/EPGInfo/Genre/FFFFFF/Waypoint_Map.png
new file mode 100644
index 0000000..7b564ba
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Waypoint_Map.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Weather.png b/icons/default/EPGInfo/Genre/FFFFFF/Weather.png
new file mode 100644
index 0000000..98877f6
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Weather.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Western.png b/icons/default/EPGInfo/Genre/FFFFFF/Western.png
new file mode 100644
index 0000000..e6c5351
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Western.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/World_Map.png b/icons/default/EPGInfo/Genre/FFFFFF/World_Map.png
new file mode 100644
index 0000000..d7b146e
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/World_Map.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Yoga.png b/icons/default/EPGInfo/Genre/FFFFFF/Yoga.png
new file mode 100644
index 0000000..bf277da
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Yoga.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/Zombie.png b/icons/default/EPGInfo/Genre/FFFFFF/Zombie.png
new file mode 100644
index 0000000..a6ac35e
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/Zombie.png differ
diff --git a/icons/default/EPGInfo/Genre/FFFFFF/unknown.png b/icons/default/EPGInfo/Genre/FFFFFF/unknown.png
new file mode 100644
index 0000000..eae9fba
Binary files /dev/null and b/icons/default/EPGInfo/Genre/FFFFFF/unknown.png differ
diff --git a/icons/default/EPGInfo/Genre/Fashion.png b/icons/default/EPGInfo/Genre/Fashion.png
new file mode 120000
index 0000000..de79b51
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Fashion.png
@@ -0,0 +1 @@
+A0A0A0/Shoe_Woman.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Film_Cinema.png b/icons/default/EPGInfo/Genre/Film_Cinema.png
new file mode 120000
index 0000000..4cdda5e
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Film_Cinema.png
@@ -0,0 +1 @@
+A0A0A0/Film.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Fine Arts.png b/icons/default/EPGInfo/Genre/Fine Arts.png
new file mode 120000
index 0000000..93d1aa6
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Fine Arts.png
@@ -0,0 +1 @@
+A0A0A0/Modern_Art.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Fitness_Health.png b/icons/default/EPGInfo/Genre/Fitness_Health.png
new file mode 120000
index 0000000..57c8b78
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Fitness_Health.png
@@ -0,0 +1 @@
+A0A0A0/Yoga.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Folk_Tradional Music.png b/icons/default/EPGInfo/Genre/Folk_Tradional Music.png
new file mode 120000
index 0000000..68540e1
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Folk_Tradional Music.png
@@ -0,0 +1 @@
+A0A0A0/Guitar.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Football_Soccer.png b/icons/default/EPGInfo/Genre/Football_Soccer.png
new file mode 120000
index 0000000..546b487
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Football_Soccer.png
@@ -0,0 +1 @@
+A0A0A0/Football.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Foreign Countries_Expeditions.png b/icons/default/EPGInfo/Genre/Foreign Countries_Expeditions.png
new file mode 120000
index 0000000..4a799e5
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Foreign Countries_Expeditions.png
@@ -0,0 +1 @@
+A0A0A0/World_Map.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Further Education.png b/icons/default/EPGInfo/Genre/Further Education.png
new file mode 120000
index 0000000..5fdd5d3
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Further Education.png
@@ -0,0 +1 @@
+A0A0A0/Diploma2.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Game Show_Quiz_Contest.png b/icons/default/EPGInfo/Genre/Game Show_Quiz_Contest.png
new file mode 120000
index 0000000..2909df8
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Game Show_Quiz_Contest.png
@@ -0,0 +1 @@
+A0A0A0/Spiel.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Gardening.png b/icons/default/EPGInfo/Genre/Gardening.png
new file mode 120000
index 0000000..28e0459
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Gardening.png
@@ -0,0 +1 @@
+A0A0A0/Bunch_Flowers.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Handicraft.png b/icons/default/EPGInfo/Genre/Handicraft.png
new file mode 120000
index 0000000..829eb70
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Handicraft.png
@@ -0,0 +1 @@
+A0A0A0/Stanley_Knife.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Informational_Educational_School Programme.png b/icons/default/EPGInfo/Genre/Informational_Educational_School Programme.png
new file mode 120000
index 0000000..aa50fc7
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Informational_Educational_School Programme.png
@@ -0,0 +1 @@
+A0A0A0/Student.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Jazz.png b/icons/default/EPGInfo/Genre/Jazz.png
new file mode 120000
index 0000000..732b6e4
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Jazz.png
@@ -0,0 +1 @@
+A0A0A0/Saxophone.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Languages.png b/icons/default/EPGInfo/Genre/Languages.png
new file mode 120000
index 0000000..3b83e82
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Languages.png
@@ -0,0 +1 @@
+A0A0A0/Literature.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Leisure_Hobbies.png b/icons/default/EPGInfo/Genre/Leisure_Hobbies.png
new file mode 120000
index 0000000..d3e4296
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Leisure_Hobbies.png
@@ -0,0 +1 @@
+A0A0A0/Bowling.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Literature.png b/icons/default/EPGInfo/Genre/Literature.png
new file mode 120000
index 0000000..c04d68f
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Literature.png
@@ -0,0 +1 @@
+A0A0A0/Books.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Live Broadcast.png b/icons/default/EPGInfo/Genre/Live Broadcast.png
new file mode 120000
index 0000000..9db3f5b
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Live Broadcast.png
@@ -0,0 +1 @@
+A0A0A0/Satellite_Sending_Signal.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Magazine_Report_Documentary.png b/icons/default/EPGInfo/Genre/Magazine_Report_Documentary.png
new file mode 120000
index 0000000..dff07a9
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Magazine_Report_Documentary.png
@@ -0,0 +1 @@
+A0A0A0/Dokumentation.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Martial Sports.png b/icons/default/EPGInfo/Genre/Martial Sports.png
new file mode 120000
index 0000000..a31371c
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Martial Sports.png
@@ -0,0 +1 @@
+A0A0A0/Boxing.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Medicine_Physiology_Psychology.png b/icons/default/EPGInfo/Genre/Medicine_Physiology_Psychology.png
new file mode 120000
index 0000000..cb43c52
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Medicine_Physiology_Psychology.png
@@ -0,0 +1 @@
+A0A0A0/Medical_Doctor.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Motor Sport.png b/icons/default/EPGInfo/Genre/Motor Sport.png
new file mode 120000
index 0000000..1666c41
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Motor Sport.png
@@ -0,0 +1 @@
+A0A0A0/Finish_Flag.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Motoring.png b/icons/default/EPGInfo/Genre/Motoring.png
new file mode 120000
index 0000000..5b333c0
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Motoring.png
@@ -0,0 +1 @@
+A0A0A0/Engine.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Movie_Drama.png b/icons/default/EPGInfo/Genre/Movie_Drama.png
new file mode 120000
index 0000000..5c89dcf
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Movie_Drama.png
@@ -0,0 +1 @@
+A0A0A0/Movie_Drama.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Music_Ballet_Dance.png b/icons/default/EPGInfo/Genre/Music_Ballet_Dance.png
new file mode 120000
index 0000000..9fa9ff8
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Music_Ballet_Dance.png
@@ -0,0 +1 @@
+A0A0A0/Music.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Musical_Opera.png b/icons/default/EPGInfo/Genre/Musical_Opera.png
new file mode 120000
index 0000000..a298b7e
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Musical_Opera.png
@@ -0,0 +1 @@
+A0A0A0/Theatre_Masks.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Nature_Animals_Environment.png b/icons/default/EPGInfo/Genre/Nature_Animals_Environment.png
new file mode 120000
index 0000000..089a2ea
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Nature_Animals_Environment.png
@@ -0,0 +1 @@
+A0A0A0/Hand_Planting.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/New Media.png b/icons/default/EPGInfo/Genre/New Media.png
new file mode 120000
index 0000000..7a31cf6
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/New Media.png
@@ -0,0 +1 @@
+A0A0A0/Online.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/News Magazine.png b/icons/default/EPGInfo/Genre/News Magazine.png
new file mode 120000
index 0000000..19dd1c1
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/News Magazine.png
@@ -0,0 +1 @@
+A0A0A0/Magazine.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/News_Current Affairs.png b/icons/default/EPGInfo/Genre/News_Current Affairs.png
new file mode 120000
index 0000000..62c4504
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/News_Current Affairs.png
@@ -0,0 +1 @@
+A0A0A0/Newspaper.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/News_Weather Report.png b/icons/default/EPGInfo/Genre/News_Weather Report.png
new file mode 120000
index 0000000..25b3ad8
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/News_Weather Report.png
@@ -0,0 +1 @@
+A0A0A0/Weather.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Original Language.png b/icons/default/EPGInfo/Genre/Original Language.png
new file mode 120000
index 0000000..3b83e82
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Original Language.png
@@ -0,0 +1 @@
+A0A0A0/Literature.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Performing Arts.png b/icons/default/EPGInfo/Genre/Performing Arts.png
new file mode 120000
index 0000000..8e28923
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Performing Arts.png
@@ -0,0 +1 @@
+A0A0A0/Performing Arts.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Popular Culture_Traditional Arts.png b/icons/default/EPGInfo/Genre/Popular Culture_Traditional Arts.png
new file mode 120000
index 0000000..9c1eb77
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Popular Culture_Traditional Arts.png
@@ -0,0 +1 @@
+A0A0A0/Popular Culture_Traditional Arts.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Pre-school Childrens Programme.png b/icons/default/EPGInfo/Genre/Pre-school Childrens Programme.png
new file mode 120000
index 0000000..95fb5d3
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Pre-school Childrens Programme.png
@@ -0,0 +1 @@
+A0A0A0/Teddybear.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Religion.png b/icons/default/EPGInfo/Genre/Religion.png
new file mode 120000
index 0000000..0d656f1
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Religion.png
@@ -0,0 +1 @@
+A0A0A0/Church.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Remarkable People.png b/icons/default/EPGInfo/Genre/Remarkable People.png
new file mode 120000
index 0000000..e07f474
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Remarkable People.png
@@ -0,0 +1 @@
+A0A0A0/Administrator2.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Rock_Pop.png b/icons/default/EPGInfo/Genre/Rock_Pop.png
new file mode 120000
index 0000000..0b1d7a0
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Rock_Pop.png
@@ -0,0 +1 @@
+A0A0A0/Rock.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Romance.png b/icons/default/EPGInfo/Genre/Romance.png
new file mode 120000
index 0000000..59ae1a7
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Romance.png
@@ -0,0 +1 @@
+A0A0A0/Roman.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Science Fiction_Fantasy_Horror.png b/icons/default/EPGInfo/Genre/Science Fiction_Fantasy_Horror.png
new file mode 120000
index 0000000..09098a2
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Science Fiction_Fantasy_Horror.png
@@ -0,0 +1 @@
+A0A0A0/SciFi_Fantasy_Horror.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Serious_Classical Music.png b/icons/default/EPGInfo/Genre/Serious_Classical Music.png
new file mode 120000
index 0000000..b2955b2
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Serious_Classical Music.png
@@ -0,0 +1 @@
+A0A0A0/Treble_Clef.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Serious_Classical_Religious_Historical Movie_Drama.png b/icons/default/EPGInfo/Genre/Serious_Classical_Religious_Historical Movie_Drama.png
new file mode 120000
index 0000000..81ea682
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Serious_Classical_Religious_Historical Movie_Drama.png
@@ -0,0 +1 @@
+A0A0A0/Serious_Classical_Religious_Historical Movie_Drama.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Show_Game Show.png b/icons/default/EPGInfo/Genre/Show_Game Show.png
new file mode 120000
index 0000000..2909df8
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Show_Game Show.png
@@ -0,0 +1 @@
+A0A0A0/Spiel.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Soap_Melodrama_Folkloric.png b/icons/default/EPGInfo/Genre/Soap_Melodrama_Folkloric.png
new file mode 120000
index 0000000..59ae1a7
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Soap_Melodrama_Folkloric.png
@@ -0,0 +1 @@
+A0A0A0/Roman.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Social_Political_Economics.png b/icons/default/EPGInfo/Genre/Social_Political_Economics.png
new file mode 120000
index 0000000..f95195c
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Social_Political_Economics.png
@@ -0,0 +1 @@
+A0A0A0/Social_Political_Economics.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Social_Spiritual Sciences.png b/icons/default/EPGInfo/Genre/Social_Spiritual Sciences.png
new file mode 120000
index 0000000..d38fcc7
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Social_Spiritual Sciences.png
@@ -0,0 +1 @@
+A0A0A0/Guru.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Special Event.png b/icons/default/EPGInfo/Genre/Special Event.png
new file mode 120000
index 0000000..4094abc
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Special Event.png
@@ -0,0 +1 @@
+A0A0A0/Special Event.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Sport Magazine.png b/icons/default/EPGInfo/Genre/Sport Magazine.png
new file mode 120000
index 0000000..d38ec4e
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Sport Magazine.png
@@ -0,0 +1 @@
+A0A0A0/Sport_Magazin.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Sports.png b/icons/default/EPGInfo/Genre/Sports.png
new file mode 120000
index 0000000..136bad3
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Sports.png
@@ -0,0 +1 @@
+A0A0A0/Sport.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Talk Show.png b/icons/default/EPGInfo/Genre/Talk Show.png
new file mode 120000
index 0000000..d9fbb43
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Talk Show.png
@@ -0,0 +1 @@
+A0A0A0/Talk.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Team Sports.png b/icons/default/EPGInfo/Genre/Team Sports.png
new file mode 120000
index 0000000..391f2a4
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Team Sports.png
@@ -0,0 +1 @@
+A0A0A0/Teams.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Technology_Natural Sciences.png b/icons/default/EPGInfo/Genre/Technology_Natural Sciences.png
new file mode 120000
index 0000000..f2a4c77
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Technology_Natural Sciences.png
@@ -0,0 +1 @@
+A0A0A0/Technology_Science.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Tennis_Squash.png b/icons/default/EPGInfo/Genre/Tennis_Squash.png
new file mode 120000
index 0000000..c64ee7d
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Tennis_Squash.png
@@ -0,0 +1 @@
+A0A0A0/Tennis.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Tourism_Travel.png b/icons/default/EPGInfo/Genre/Tourism_Travel.png
new file mode 120000
index 0000000..7a523b3
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Tourism_Travel.png
@@ -0,0 +1 @@
+A0A0A0/Suitcase.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Unpublished.png b/icons/default/EPGInfo/Genre/Unpublished.png
new file mode 120000
index 0000000..2549150
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Unpublished.png
@@ -0,0 +1 @@
+A0A0A0/Unpublished.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Variety Show.png b/icons/default/EPGInfo/Genre/Variety Show.png
new file mode 120000
index 0000000..0630b0b
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Variety Show.png
@@ -0,0 +1 @@
+A0A0A0/Komödie.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Water Sport.png b/icons/default/EPGInfo/Genre/Water Sport.png
new file mode 120000
index 0000000..7b7b40d
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Water Sport.png
@@ -0,0 +1 @@
+A0A0A0/Swimming.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/Winter Sports.png b/icons/default/EPGInfo/Genre/Winter Sports.png
new file mode 120000
index 0000000..eabf304
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/Winter Sports.png
@@ -0,0 +1 @@
+A0A0A0/Skiing.png
\ No newline at end of file
diff --git a/icons/default/EPGInfo/Genre/unknown.png b/icons/default/EPGInfo/Genre/unknown.png
new file mode 120000
index 0000000..4af8dee
--- /dev/null
+++ b/icons/default/EPGInfo/Genre/unknown.png
@@ -0,0 +1 @@
+A0A0A0/unknown.png
\ No newline at end of file
diff --git a/icons/default/changroup.png b/icons/default/changroup.png
new file mode 100644
index 0000000..27ba4ba
Binary files /dev/null and b/icons/default/changroup.png differ
diff --git a/icons/default/chart1.png b/icons/default/chart1.png
new file mode 100644
index 0000000..48d5d31
Binary files /dev/null and b/icons/default/chart1.png differ
diff --git a/icons/default/chart1b.png b/icons/default/chart1b.png
new file mode 120000
index 0000000..f68ee71
--- /dev/null
+++ b/icons/default/chart1b.png
@@ -0,0 +1 @@
+chart1.png
\ No newline at end of file
diff --git a/icons/default/chart2.png b/icons/default/chart2.png
new file mode 100644
index 0000000..b5182b0
Binary files /dev/null and b/icons/default/chart2.png differ
diff --git a/icons/default/chart2b.png b/icons/default/chart2b.png
new file mode 120000
index 0000000..5988e40
--- /dev/null
+++ b/icons/default/chart2b.png
@@ -0,0 +1 @@
+chart2.png
\ No newline at end of file
diff --git a/icons/default/chart3.png b/icons/default/chart3.png
new file mode 100644
index 0000000..9f31d64
Binary files /dev/null and b/icons/default/chart3.png differ
diff --git a/icons/default/chart3b.png b/icons/default/chart3b.png
new file mode 120000
index 0000000..7231b5e
--- /dev/null
+++ b/icons/default/chart3b.png
@@ -0,0 +1 @@
+chart3.png
\ No newline at end of file
diff --git a/icons/default/chart4.png b/icons/default/chart4.png
new file mode 100644
index 0000000..93dd130
Binary files /dev/null and b/icons/default/chart4.png differ
diff --git a/icons/default/chart4b.png b/icons/default/chart4b.png
new file mode 120000
index 0000000..53e4016
--- /dev/null
+++ b/icons/default/chart4b.png
@@ -0,0 +1 @@
+chart4.png
\ No newline at end of file
diff --git a/icons/default/chart5.png b/icons/default/chart5.png
new file mode 100644
index 0000000..3c6cce8
Binary files /dev/null and b/icons/default/chart5.png differ
diff --git a/icons/default/chart5b.png b/icons/default/chart5b.png
new file mode 120000
index 0000000..cc71490
--- /dev/null
+++ b/icons/default/chart5b.png
@@ -0,0 +1 @@
+chart5.png
\ No newline at end of file
diff --git a/icons/default/chart6.png b/icons/default/chart6.png
new file mode 100644
index 0000000..b040777
Binary files /dev/null and b/icons/default/chart6.png differ
diff --git a/icons/default/chart6b.png b/icons/default/chart6b.png
new file mode 120000
index 0000000..a6b217b
--- /dev/null
+++ b/icons/default/chart6b.png
@@ -0,0 +1 @@
+chart6.png
\ No newline at end of file
diff --git a/icons/default/chart7.png b/icons/default/chart7.png
new file mode 100644
index 0000000..d1882dc
Binary files /dev/null and b/icons/default/chart7.png differ
diff --git a/icons/default/chart7b.png b/icons/default/chart7b.png
new file mode 120000
index 0000000..a5db2d5
--- /dev/null
+++ b/icons/default/chart7b.png
@@ -0,0 +1 @@
+chart7.png
\ No newline at end of file
diff --git a/icons/default/crypted.png b/icons/default/crypted.png
new file mode 100644
index 0000000..440070a
Binary files /dev/null and b/icons/default/crypted.png differ
diff --git a/icons/default/data.png b/icons/default/data.png
new file mode 100644
index 0000000..e7009b5
Binary files /dev/null and b/icons/default/data.png differ
diff --git a/icons/default/extraIcons/Audio.png b/icons/default/extraIcons/Audio.png
new file mode 100644
index 0000000..fe638f8
Binary files /dev/null and b/icons/default/extraIcons/Audio.png differ
diff --git a/icons/default/extraIcons/AudioVideo.png b/icons/default/extraIcons/AudioVideo.png
new file mode 100644
index 0000000..cde79c4
Binary files /dev/null and b/icons/default/extraIcons/AudioVideo.png differ
diff --git a/icons/default/extraIcons/Ausschalten.png b/icons/default/extraIcons/Ausschalten.png
new file mode 100644
index 0000000..3cc99d6
Binary files /dev/null and b/icons/default/extraIcons/Ausschalten.png differ
diff --git a/icons/default/extraIcons/Info.png b/icons/default/extraIcons/Info.png
new file mode 100644
index 0000000..00fc89c
Binary files /dev/null and b/icons/default/extraIcons/Info.png differ
diff --git a/icons/default/extraIcons/PlayInfo.png b/icons/default/extraIcons/PlayInfo.png
new file mode 100644
index 0000000..2b8eb8d
Binary files /dev/null and b/icons/default/extraIcons/PlayInfo.png differ
diff --git a/icons/default/extraIcons/Playing.png b/icons/default/extraIcons/Playing.png
new file mode 100644
index 0000000..dda0751
Binary files /dev/null and b/icons/default/extraIcons/Playing.png differ
diff --git a/icons/default/folder.png b/icons/default/folder.png
new file mode 100644
index 0000000..ad0b65c
Binary files /dev/null and b/icons/default/folder.png differ
diff --git a/icons/default/forward.png b/icons/default/forward.png
new file mode 100644
index 0000000..a9082df
Binary files /dev/null and b/icons/default/forward.png differ
diff --git a/icons/default/forward_sel.png b/icons/default/forward_sel.png
new file mode 100644
index 0000000..90ea61c
Binary files /dev/null and b/icons/default/forward_sel.png differ
diff --git a/icons/default/hd.png b/icons/default/hd.png
new file mode 100644
index 0000000..4f9d502
Binary files /dev/null and b/icons/default/hd.png differ
diff --git a/icons/default/logo_background.png b/icons/default/logo_background.png
new file mode 100755
index 0000000..c407d97
Binary files /dev/null and b/icons/default/logo_background.png differ
diff --git a/icons/default/menuIcons/CAM.png b/icons/default/menuIcons/CAM.png
new file mode 100644
index 0000000..479b5e7
Binary files /dev/null and b/icons/default/menuIcons/CAM.png differ
diff --git a/icons/default/menuIcons/Channels.png b/icons/default/menuIcons/Channels.png
new file mode 100644
index 0000000..fc0e0e6
Binary files /dev/null and b/icons/default/menuIcons/Channels.png differ
diff --git a/icons/default/menuIcons/Commands.png b/icons/default/menuIcons/Commands.png
new file mode 100644
index 0000000..5046029
Binary files /dev/null and b/icons/default/menuIcons/Commands.png differ
diff --git a/icons/default/menuIcons/DVB.png b/icons/default/menuIcons/DVB.png
new file mode 100644
index 0000000..575f5a0
Binary files /dev/null and b/icons/default/menuIcons/DVB.png differ
diff --git a/icons/default/menuIcons/EPG.png b/icons/default/menuIcons/EPG.png
new file mode 100644
index 0000000..fb26278
Binary files /dev/null and b/icons/default/menuIcons/EPG.png differ
diff --git a/icons/default/menuIcons/LNB.png b/icons/default/menuIcons/LNB.png
new file mode 100644
index 0000000..e42523e
Binary files /dev/null and b/icons/default/menuIcons/LNB.png differ
diff --git a/icons/default/menuIcons/Miscellaneous.png b/icons/default/menuIcons/Miscellaneous.png
new file mode 100644
index 0000000..5685700
Binary files /dev/null and b/icons/default/menuIcons/Miscellaneous.png differ
diff --git a/icons/default/menuIcons/OSD.png b/icons/default/menuIcons/OSD.png
new file mode 100644
index 0000000..3dd6e0c
Binary files /dev/null and b/icons/default/menuIcons/OSD.png differ
diff --git a/icons/default/menuIcons/Plugins.png b/icons/default/menuIcons/Plugins.png
new file mode 100644
index 0000000..466ce92
Binary files /dev/null and b/icons/default/menuIcons/Plugins.png differ
diff --git a/icons/default/menuIcons/Recording.png b/icons/default/menuIcons/Recording.png
new file mode 100644
index 0000000..39bf4c5
Binary files /dev/null and b/icons/default/menuIcons/Recording.png differ
diff --git a/icons/default/menuIcons/Recordings.png b/icons/default/menuIcons/Recordings.png
new file mode 100644
index 0000000..fde8879
Binary files /dev/null and b/icons/default/menuIcons/Recordings.png differ
diff --git a/icons/default/menuIcons/RecsSortDate.png b/icons/default/menuIcons/RecsSortDate.png
new file mode 100644
index 0000000..d563cd9
Binary files /dev/null and b/icons/default/menuIcons/RecsSortDate.png differ
diff --git a/icons/default/menuIcons/RecsSortName.png b/icons/default/menuIcons/RecsSortName.png
new file mode 100644
index 0000000..daaf425
Binary files /dev/null and b/icons/default/menuIcons/RecsSortName.png differ
diff --git a/icons/default/menuIcons/Replay.png b/icons/default/menuIcons/Replay.png
new file mode 100644
index 0000000..f512fbe
Binary files /dev/null and b/icons/default/menuIcons/Replay.png differ
diff --git a/icons/default/menuIcons/Restart.png b/icons/default/menuIcons/Restart.png
new file mode 100644
index 0000000..fe0ae13
Binary files /dev/null and b/icons/default/menuIcons/Restart.png differ
diff --git a/icons/default/menuIcons/Schedule.png b/icons/default/menuIcons/Schedule.png
new file mode 100644
index 0000000..f3de8d7
Binary files /dev/null and b/icons/default/menuIcons/Schedule.png differ
diff --git a/icons/default/menuIcons/Setup.png b/icons/default/menuIcons/Setup.png
new file mode 100644
index 0000000..4d36a01
Binary files /dev/null and b/icons/default/menuIcons/Setup.png differ
diff --git a/icons/default/menuIcons/StopRecording.png b/icons/default/menuIcons/StopRecording.png
new file mode 100644
index 0000000..df5d125
Binary files /dev/null and b/icons/default/menuIcons/StopRecording.png differ
diff --git a/icons/default/menuIcons/StopReplay.png b/icons/default/menuIcons/StopReplay.png
new file mode 100644
index 0000000..117ceae
Binary files /dev/null and b/icons/default/menuIcons/StopReplay.png differ
diff --git a/icons/default/menuIcons/Timers.png b/icons/default/menuIcons/Timers.png
new file mode 100644
index 0000000..9c01dbd
Binary files /dev/null and b/icons/default/menuIcons/Timers.png differ
diff --git a/icons/default/menuIcons/blank.png b/icons/default/menuIcons/blank.png
new file mode 100644
index 0000000..d32037f
Binary files /dev/null and b/icons/default/menuIcons/blank.png differ
diff --git a/icons/default/menuIcons/vdrlogo_debian.png b/icons/default/menuIcons/vdrlogo_debian.png
new file mode 100644
index 0000000..eaf4745
Binary files /dev/null and b/icons/default/menuIcons/vdrlogo_debian.png differ
diff --git a/icons/default/menuIcons/vdrlogo_default.png b/icons/default/menuIcons/vdrlogo_default.png
new file mode 100644
index 0000000..ff68769
Binary files /dev/null and b/icons/default/menuIcons/vdrlogo_default.png differ
diff --git a/icons/default/menuIcons/vdrlogo_easyvdr.png b/icons/default/menuIcons/vdrlogo_easyvdr.png
new file mode 100644
index 0000000..6ea8718
Binary files /dev/null and b/icons/default/menuIcons/vdrlogo_easyvdr.png differ
diff --git a/icons/default/menuIcons/vdrlogo_gen2vdr.png b/icons/default/menuIcons/vdrlogo_gen2vdr.png
new file mode 100644
index 0000000..d0870e9
Binary files /dev/null and b/icons/default/menuIcons/vdrlogo_gen2vdr.png differ
diff --git a/icons/default/menuIcons/vdrlogo_shine.png b/icons/default/menuIcons/vdrlogo_shine.png
new file mode 100644
index 0000000..c6bb110
Binary files /dev/null and b/icons/default/menuIcons/vdrlogo_shine.png differ
diff --git a/icons/default/menuIcons/vdrlogo_xubuntu.png b/icons/default/menuIcons/vdrlogo_xubuntu.png
new file mode 100644
index 0000000..89f4eab
Binary files /dev/null and b/icons/default/menuIcons/vdrlogo_xubuntu.png differ
diff --git a/icons/default/menuIcons/vdrlogo_xubuntu2.png b/icons/default/menuIcons/vdrlogo_xubuntu2.png
new file mode 100644
index 0000000..e474e04
Binary files /dev/null and b/icons/default/menuIcons/vdrlogo_xubuntu2.png differ
diff --git a/icons/default/menuIcons/vdrlogo_yavdr.png b/icons/default/menuIcons/vdrlogo_yavdr.png
new file mode 100644
index 0000000..c26993d
Binary files /dev/null and b/icons/default/menuIcons/vdrlogo_yavdr.png differ
diff --git a/icons/default/message_error.png b/icons/default/message_error.png
new file mode 100644
index 0000000..2a35993
Binary files /dev/null and b/icons/default/message_error.png differ
diff --git a/icons/default/message_info.png b/icons/default/message_info.png
new file mode 100644
index 0000000..25c0074
Binary files /dev/null and b/icons/default/message_info.png differ
diff --git a/icons/default/message_status.png b/icons/default/message_status.png
new file mode 100644
index 0000000..675d90b
Binary files /dev/null and b/icons/default/message_status.png differ
diff --git a/icons/default/message_warning.png b/icons/default/message_warning.png
new file mode 100644
index 0000000..dc12925
Binary files /dev/null and b/icons/default/message_warning.png differ
diff --git a/icons/default/mute.png b/icons/default/mute.png
new file mode 100644
index 0000000..a5ef12d
Binary files /dev/null and b/icons/default/mute.png differ
diff --git a/icons/default/pause.png b/icons/default/pause.png
new file mode 100644
index 0000000..903bd9a
Binary files /dev/null and b/icons/default/pause.png differ
diff --git a/icons/default/pause_sel.png b/icons/default/pause_sel.png
new file mode 100644
index 0000000..dfea32b
Binary files /dev/null and b/icons/default/pause_sel.png differ
diff --git a/icons/default/play.png b/icons/default/play.png
new file mode 100644
index 0000000..f4f713e
Binary files /dev/null and b/icons/default/play.png differ
diff --git a/icons/default/play_sel.png b/icons/default/play_sel.png
new file mode 100644
index 0000000..814cf3a
Binary files /dev/null and b/icons/default/play_sel.png differ
diff --git a/icons/default/pluginIcons/admin.png b/icons/default/pluginIcons/admin.png
new file mode 100644
index 0000000..3fb7819
Binary files /dev/null and b/icons/default/pluginIcons/admin.png differ
diff --git a/icons/default/pluginIcons/arghdirector.png b/icons/default/pluginIcons/arghdirector.png
new file mode 100644
index 0000000..060d104
Binary files /dev/null and b/icons/default/pluginIcons/arghdirector.png differ
diff --git a/icons/default/pluginIcons/autostart.png b/icons/default/pluginIcons/autostart.png
new file mode 100644
index 0000000..76aed86
Binary files /dev/null and b/icons/default/pluginIcons/autostart.png differ
diff --git a/icons/default/pluginIcons/avahi4vdr.png b/icons/default/pluginIcons/avahi4vdr.png
new file mode 100644
index 0000000..2376c04
Binary files /dev/null and b/icons/default/pluginIcons/avahi4vdr.png differ
diff --git a/icons/default/pluginIcons/avards.png b/icons/default/pluginIcons/avards.png
new file mode 100644
index 0000000..3313af2
Binary files /dev/null and b/icons/default/pluginIcons/avards.png differ
diff --git a/icons/default/pluginIcons/block.png b/icons/default/pluginIcons/block.png
new file mode 100644
index 0000000..3f883b6
Binary files /dev/null and b/icons/default/pluginIcons/block.png differ
diff --git a/icons/default/pluginIcons/burn.png b/icons/default/pluginIcons/burn.png
new file mode 100644
index 0000000..4b4f71e
Binary files /dev/null and b/icons/default/pluginIcons/burn.png differ
diff --git a/icons/default/pluginIcons/cdplayer.png b/icons/default/pluginIcons/cdplayer.png
new file mode 100644
index 0000000..8f93bbf
Binary files /dev/null and b/icons/default/pluginIcons/cdplayer.png differ
diff --git a/icons/default/pluginIcons/chanman.png b/icons/default/pluginIcons/chanman.png
new file mode 100644
index 0000000..74467ba
Binary files /dev/null and b/icons/default/pluginIcons/chanman.png differ
diff --git a/icons/default/pluginIcons/check.png b/icons/default/pluginIcons/check.png
new file mode 100644
index 0000000..ace6f55
Binary files /dev/null and b/icons/default/pluginIcons/check.png differ
diff --git a/icons/default/pluginIcons/conflictcheckonly.png b/icons/default/pluginIcons/conflictcheckonly.png
new file mode 100644
index 0000000..2d22335
Binary files /dev/null and b/icons/default/pluginIcons/conflictcheckonly.png differ
diff --git a/icons/default/pluginIcons/ddci.png b/icons/default/pluginIcons/ddci.png
new file mode 100644
index 0000000..2990b99
Binary files /dev/null and b/icons/default/pluginIcons/ddci.png differ
diff --git a/icons/default/pluginIcons/devstatus.png b/icons/default/pluginIcons/devstatus.png
new file mode 100644
index 0000000..f6022ea
Binary files /dev/null and b/icons/default/pluginIcons/devstatus.png differ
diff --git a/icons/default/pluginIcons/dummydevice.png b/icons/default/pluginIcons/dummydevice.png
new file mode 100644
index 0000000..3a11a9a
Binary files /dev/null and b/icons/default/pluginIcons/dummydevice.png differ
diff --git a/icons/default/pluginIcons/duplicates.png b/icons/default/pluginIcons/duplicates.png
new file mode 100644
index 0000000..ae2f5a7
Binary files /dev/null and b/icons/default/pluginIcons/duplicates.png differ
diff --git a/icons/default/pluginIcons/dvbapi.png b/icons/default/pluginIcons/dvbapi.png
new file mode 100644
index 0000000..1f28a8b
Binary files /dev/null and b/icons/default/pluginIcons/dvbapi.png differ
diff --git a/icons/default/pluginIcons/dvbhddevice.png b/icons/default/pluginIcons/dvbhddevice.png
new file mode 100644
index 0000000..9bf7a56
Binary files /dev/null and b/icons/default/pluginIcons/dvbhddevice.png differ
diff --git a/icons/default/pluginIcons/dvbsddevice.png b/icons/default/pluginIcons/dvbsddevice.png
new file mode 100644
index 0000000..4664809
Binary files /dev/null and b/icons/default/pluginIcons/dvbsddevice.png differ
diff --git a/icons/default/pluginIcons/dvd.png b/icons/default/pluginIcons/dvd.png
new file mode 100644
index 0000000..22e70c1
Binary files /dev/null and b/icons/default/pluginIcons/dvd.png differ
diff --git a/icons/default/pluginIcons/dvdswitch.png b/icons/default/pluginIcons/dvdswitch.png
new file mode 100644
index 0000000..b938f41
Binary files /dev/null and b/icons/default/pluginIcons/dvdswitch.png differ
diff --git a/icons/default/pluginIcons/dynamite.png b/icons/default/pluginIcons/dynamite.png
new file mode 100644
index 0000000..bb14026
Binary files /dev/null and b/icons/default/pluginIcons/dynamite.png differ
diff --git a/icons/default/pluginIcons/eepg.png b/icons/default/pluginIcons/eepg.png
new file mode 100644
index 0000000..ef21b64
Binary files /dev/null and b/icons/default/pluginIcons/eepg.png differ
diff --git a/icons/default/pluginIcons/epg2vdr.png b/icons/default/pluginIcons/epg2vdr.png
new file mode 100644
index 0000000..6c9d1b2
Binary files /dev/null and b/icons/default/pluginIcons/epg2vdr.png differ
diff --git a/icons/default/pluginIcons/epgsearch.png b/icons/default/pluginIcons/epgsearch.png
new file mode 100644
index 0000000..7caf6c9
Binary files /dev/null and b/icons/default/pluginIcons/epgsearch.png differ
diff --git a/icons/default/pluginIcons/epgsearchonly.png b/icons/default/pluginIcons/epgsearchonly.png
new file mode 100644
index 0000000..7caf6c9
Binary files /dev/null and b/icons/default/pluginIcons/epgsearchonly.png differ
diff --git a/icons/default/pluginIcons/epgsync.png b/icons/default/pluginIcons/epgsync.png
new file mode 100644
index 0000000..ede3522
Binary files /dev/null and b/icons/default/pluginIcons/epgsync.png differ
diff --git a/icons/default/pluginIcons/externalplayer.png b/icons/default/pluginIcons/externalplayer.png
new file mode 100644
index 0000000..b818cb4
Binary files /dev/null and b/icons/default/pluginIcons/externalplayer.png differ
diff --git a/icons/default/pluginIcons/extrecmenu.png b/icons/default/pluginIcons/extrecmenu.png
new file mode 100644
index 0000000..97c03a5
Binary files /dev/null and b/icons/default/pluginIcons/extrecmenu.png differ
diff --git a/icons/default/pluginIcons/favorites.png b/icons/default/pluginIcons/favorites.png
new file mode 100644
index 0000000..d0d88ab
Binary files /dev/null and b/icons/default/pluginIcons/favorites.png differ
diff --git a/icons/default/pluginIcons/femon.png b/icons/default/pluginIcons/femon.png
new file mode 100644
index 0000000..51d55ea
Binary files /dev/null and b/icons/default/pluginIcons/femon.png differ
diff --git a/icons/default/pluginIcons/fepg.png b/icons/default/pluginIcons/fepg.png
new file mode 100644
index 0000000..e09a535
Binary files /dev/null and b/icons/default/pluginIcons/fepg.png differ
diff --git a/icons/default/pluginIcons/filebrowser.png b/icons/default/pluginIcons/filebrowser.png
new file mode 100644
index 0000000..e699c44
Binary files /dev/null and b/icons/default/pluginIcons/filebrowser.png differ
diff --git a/icons/default/pluginIcons/fritzbox.png b/icons/default/pluginIcons/fritzbox.png
new file mode 100644
index 0000000..21b84c1
Binary files /dev/null and b/icons/default/pluginIcons/fritzbox.png differ
diff --git a/icons/default/pluginIcons/graphlcd.png b/icons/default/pluginIcons/graphlcd.png
new file mode 100644
index 0000000..20f63a1
Binary files /dev/null and b/icons/default/pluginIcons/graphlcd.png differ
diff --git a/icons/default/pluginIcons/graphtft.png b/icons/default/pluginIcons/graphtft.png
new file mode 100644
index 0000000..84358ef
Binary files /dev/null and b/icons/default/pluginIcons/graphtft.png differ
diff --git a/icons/default/pluginIcons/image.png b/icons/default/pluginIcons/image.png
new file mode 100644
index 0000000..854c9ad
Binary files /dev/null and b/icons/default/pluginIcons/image.png differ
diff --git a/icons/default/pluginIcons/imonlcd.png b/icons/default/pluginIcons/imonlcd.png
new file mode 100644
index 0000000..ec27ce2
Binary files /dev/null and b/icons/default/pluginIcons/imonlcd.png differ
diff --git a/icons/default/pluginIcons/iptv.png b/icons/default/pluginIcons/iptv.png
new file mode 100644
index 0000000..ba03ba8
Binary files /dev/null and b/icons/default/pluginIcons/iptv.png differ
diff --git a/icons/default/pluginIcons/lcdproc.png b/icons/default/pluginIcons/lcdproc.png
new file mode 100644
index 0000000..36c7c62
Binary files /dev/null and b/icons/default/pluginIcons/lcdproc.png differ
diff --git a/icons/default/pluginIcons/mailbox.png b/icons/default/pluginIcons/mailbox.png
new file mode 100644
index 0000000..6296ea4
Binary files /dev/null and b/icons/default/pluginIcons/mailbox.png differ
diff --git a/icons/default/pluginIcons/makemkv.png b/icons/default/pluginIcons/makemkv.png
new file mode 100644
index 0000000..46db250
Binary files /dev/null and b/icons/default/pluginIcons/makemkv.png differ
diff --git a/icons/default/pluginIcons/markad.png b/icons/default/pluginIcons/markad.png
new file mode 100644
index 0000000..afded9f
Binary files /dev/null and b/icons/default/pluginIcons/markad.png differ
diff --git a/icons/default/pluginIcons/mlist.png b/icons/default/pluginIcons/mlist.png
new file mode 100644
index 0000000..aa912f4
Binary files /dev/null and b/icons/default/pluginIcons/mlist.png differ
diff --git a/icons/default/pluginIcons/music.png b/icons/default/pluginIcons/music.png
new file mode 100644
index 0000000..768102f
Binary files /dev/null and b/icons/default/pluginIcons/music.png differ
diff --git a/icons/default/pluginIcons/noepg.png b/icons/default/pluginIcons/noepg.png
new file mode 100644
index 0000000..50b83f6
Binary files /dev/null and b/icons/default/pluginIcons/noepg.png differ
diff --git a/icons/default/pluginIcons/nordlichtsepg.png b/icons/default/pluginIcons/nordlichtsepg.png
new file mode 100644
index 0000000..4189087
Binary files /dev/null and b/icons/default/pluginIcons/nordlichtsepg.png differ
diff --git a/icons/default/pluginIcons/osdteletext.png b/icons/default/pluginIcons/osdteletext.png
new file mode 100644
index 0000000..949c817
Binary files /dev/null and b/icons/default/pluginIcons/osdteletext.png differ
diff --git a/icons/default/pluginIcons/peer.png b/icons/default/pluginIcons/peer.png
new file mode 100644
index 0000000..e71dba3
Binary files /dev/null and b/icons/default/pluginIcons/peer.png differ
diff --git a/icons/default/pluginIcons/play.png b/icons/default/pluginIcons/play.png
new file mode 100644
index 0000000..09e219f
Binary files /dev/null and b/icons/default/pluginIcons/play.png differ
diff --git a/icons/default/pluginIcons/pvrinput.png b/icons/default/pluginIcons/pvrinput.png
new file mode 100644
index 0000000..0a0c8c0
Binary files /dev/null and b/icons/default/pluginIcons/pvrinput.png differ
diff --git a/icons/default/pluginIcons/quickepgsearch.png b/icons/default/pluginIcons/quickepgsearch.png
new file mode 100644
index 0000000..cb4188b
Binary files /dev/null and b/icons/default/pluginIcons/quickepgsearch.png differ
diff --git a/icons/default/pluginIcons/radio.png b/icons/default/pluginIcons/radio.png
new file mode 100644
index 0000000..8436b27
Binary files /dev/null and b/icons/default/pluginIcons/radio.png differ
diff --git a/icons/default/pluginIcons/remote.png b/icons/default/pluginIcons/remote.png
new file mode 100644
index 0000000..2cedc43
Binary files /dev/null and b/icons/default/pluginIcons/remote.png differ
diff --git a/icons/default/pluginIcons/remotetimers.png b/icons/default/pluginIcons/remotetimers.png
new file mode 100644
index 0000000..41a39ee
Binary files /dev/null and b/icons/default/pluginIcons/remotetimers.png differ
diff --git a/icons/default/pluginIcons/rssreader.png b/icons/default/pluginIcons/rssreader.png
new file mode 100644
index 0000000..d47b83c
Binary files /dev/null and b/icons/default/pluginIcons/rssreader.png differ
diff --git a/icons/default/pluginIcons/sc.png b/icons/default/pluginIcons/sc.png
new file mode 100644
index 0000000..712aa75
Binary files /dev/null and b/icons/default/pluginIcons/sc.png differ
diff --git a/icons/default/pluginIcons/screenshot.png b/icons/default/pluginIcons/screenshot.png
new file mode 100644
index 0000000..1afa67c
Binary files /dev/null and b/icons/default/pluginIcons/screenshot.png differ
diff --git a/icons/default/pluginIcons/seduatmo.png b/icons/default/pluginIcons/seduatmo.png
new file mode 100644
index 0000000..06fb76b
Binary files /dev/null and b/icons/default/pluginIcons/seduatmo.png differ
diff --git a/icons/default/pluginIcons/skyselectfeeds.png b/icons/default/pluginIcons/skyselectfeeds.png
new file mode 100644
index 0000000..c6c99ec
Binary files /dev/null and b/icons/default/pluginIcons/skyselectfeeds.png differ
diff --git a/icons/default/pluginIcons/sleeptimer.png b/icons/default/pluginIcons/sleeptimer.png
new file mode 100644
index 0000000..cb98c75
Binary files /dev/null and b/icons/default/pluginIcons/sleeptimer.png differ
diff --git a/icons/default/pluginIcons/softhddevice.png b/icons/default/pluginIcons/softhddevice.png
new file mode 100644
index 0000000..e3660a6
Binary files /dev/null and b/icons/default/pluginIcons/softhddevice.png differ
diff --git a/icons/default/pluginIcons/streamdev-server.png b/icons/default/pluginIcons/streamdev-server.png
new file mode 100644
index 0000000..b1cbfbb
Binary files /dev/null and b/icons/default/pluginIcons/streamdev-server.png differ
diff --git a/icons/default/pluginIcons/systeminfo.png b/icons/default/pluginIcons/systeminfo.png
new file mode 100644
index 0000000..e8e8be5
Binary files /dev/null and b/icons/default/pluginIcons/systeminfo.png differ
diff --git a/icons/default/pluginIcons/targavfd.png b/icons/default/pluginIcons/targavfd.png
new file mode 100644
index 0000000..ff09459
Binary files /dev/null and b/icons/default/pluginIcons/targavfd.png differ
diff --git a/icons/default/pluginIcons/trayopenng.png b/icons/default/pluginIcons/trayopenng.png
new file mode 100644
index 0000000..c73ae64
Binary files /dev/null and b/icons/default/pluginIcons/trayopenng.png differ
diff --git a/icons/default/pluginIcons/tvguide.png b/icons/default/pluginIcons/tvguide.png
new file mode 100644
index 0000000..d1d121f
Binary files /dev/null and b/icons/default/pluginIcons/tvguide.png differ
diff --git a/icons/default/pluginIcons/tvm2vdr.png b/icons/default/pluginIcons/tvm2vdr.png
new file mode 100644
index 0000000..3972def
Binary files /dev/null and b/icons/default/pluginIcons/tvm2vdr.png differ
diff --git a/icons/default/pluginIcons/tvscraper.png b/icons/default/pluginIcons/tvscraper.png
new file mode 100644
index 0000000..f21059d
Binary files /dev/null and b/icons/default/pluginIcons/tvscraper.png differ
diff --git a/icons/default/pluginIcons/undelete.png b/icons/default/pluginIcons/undelete.png
new file mode 100644
index 0000000..f6766fc
Binary files /dev/null and b/icons/default/pluginIcons/undelete.png differ
diff --git a/icons/default/pluginIcons/weatherng.png b/icons/default/pluginIcons/weatherng.png
new file mode 100644
index 0000000..c53431a
Binary files /dev/null and b/icons/default/pluginIcons/weatherng.png differ
diff --git a/icons/default/pluginIcons/xmltv2vdr.png b/icons/default/pluginIcons/xmltv2vdr.png
new file mode 100644
index 0000000..49c07c0
Binary files /dev/null and b/icons/default/pluginIcons/xmltv2vdr.png differ
diff --git a/icons/default/pluginIcons/yaepghg.png b/icons/default/pluginIcons/yaepghg.png
new file mode 100644
index 0000000..e2d17a1
Binary files /dev/null and b/icons/default/pluginIcons/yaepghg.png differ
diff --git a/icons/default/prev.png b/icons/default/prev.png
new file mode 100644
index 0000000..33c0bea
Binary files /dev/null and b/icons/default/prev.png differ
diff --git a/icons/default/prev_sel.png b/icons/default/prev_sel.png
new file mode 100644
index 0000000..9da51e0
Binary files /dev/null and b/icons/default/prev_sel.png differ
diff --git a/icons/default/radio.png b/icons/default/radio.png
new file mode 100644
index 0000000..1cede75
Binary files /dev/null and b/icons/default/radio.png differ
diff --git a/icons/default/recording.png b/icons/default/recording.png
new file mode 100644
index 0000000..a5323b5
Binary files /dev/null and b/icons/default/recording.png differ
diff --git a/icons/default/recording_cutted.png b/icons/default/recording_cutted.png
new file mode 100644
index 0000000..da59a9b
Binary files /dev/null and b/icons/default/recording_cutted.png differ
diff --git a/icons/default/recording_cutted_extra.png b/icons/default/recording_cutted_extra.png
new file mode 100644
index 0000000..e36c512
Binary files /dev/null and b/icons/default/recording_cutted_extra.png differ
diff --git a/icons/default/recording_new.png b/icons/default/recording_new.png
new file mode 100644
index 0000000..c19d019
Binary files /dev/null and b/icons/default/recording_new.png differ
diff --git a/icons/default/rewind.png b/icons/default/rewind.png
new file mode 100644
index 0000000..9bb2a6f
Binary files /dev/null and b/icons/default/rewind.png differ
diff --git a/icons/default/rewind_sel.png b/icons/default/rewind_sel.png
new file mode 100644
index 0000000..79e489d
Binary files /dev/null and b/icons/default/rewind_sel.png differ
diff --git a/icons/default/sd.png b/icons/default/sd.png
new file mode 100644
index 0000000..f778c1e
Binary files /dev/null and b/icons/default/sd.png differ
diff --git a/icons/default/skip.png b/icons/default/skip.png
new file mode 100644
index 0000000..47dcc94
Binary files /dev/null and b/icons/default/skip.png differ
diff --git a/icons/default/skip_sel.png b/icons/default/skip_sel.png
new file mode 100644
index 0000000..a25ec3d
Binary files /dev/null and b/icons/default/skip_sel.png differ
diff --git a/icons/default/text_arrowturn.png b/icons/default/text_arrowturn.png
new file mode 100644
index 0000000..ff60c83
Binary files /dev/null and b/icons/default/text_arrowturn.png differ
diff --git a/icons/default/text_arrowturn_cur.png b/icons/default/text_arrowturn_cur.png
new file mode 100644
index 0000000..ff60c83
Binary files /dev/null and b/icons/default/text_arrowturn_cur.png differ
diff --git a/icons/default/text_arrowturn_sel.png b/icons/default/text_arrowturn_sel.png
new file mode 100644
index 0000000..ff60c83
Binary files /dev/null and b/icons/default/text_arrowturn_sel.png differ
diff --git a/icons/default/text_new.png b/icons/default/text_new.png
new file mode 100644
index 0000000..b073dcb
Binary files /dev/null and b/icons/default/text_new.png differ
diff --git a/icons/default/text_new_cur.png b/icons/default/text_new_cur.png
new file mode 100644
index 0000000..b073dcb
Binary files /dev/null and b/icons/default/text_new_cur.png differ
diff --git a/icons/default/text_new_sel.png b/icons/default/text_new_sel.png
new file mode 100644
index 0000000..b073dcb
Binary files /dev/null and b/icons/default/text_new_sel.png differ
diff --git a/icons/default/text_rec.png b/icons/default/text_rec.png
new file mode 100644
index 0000000..123978f
Binary files /dev/null and b/icons/default/text_rec.png differ
diff --git a/icons/default/text_rec_cur.png b/icons/default/text_rec_cur.png
new file mode 100644
index 0000000..123978f
Binary files /dev/null and b/icons/default/text_rec_cur.png differ
diff --git a/icons/default/text_rec_sel.png b/icons/default/text_rec_sel.png
new file mode 100644
index 0000000..123978f
Binary files /dev/null and b/icons/default/text_rec_sel.png differ
diff --git a/icons/default/text_timer_full.png b/icons/default/text_timer_full.png
new file mode 100644
index 0000000..9c01dbd
Binary files /dev/null and b/icons/default/text_timer_full.png differ
diff --git a/icons/default/text_timer_full_cur.png b/icons/default/text_timer_full_cur.png
new file mode 100644
index 0000000..9c01dbd
Binary files /dev/null and b/icons/default/text_timer_full_cur.png differ
diff --git a/icons/default/text_timer_full_sel.png b/icons/default/text_timer_full_sel.png
new file mode 100644
index 0000000..9c01dbd
Binary files /dev/null and b/icons/default/text_timer_full_sel.png differ
diff --git a/icons/default/text_timer_partial.png b/icons/default/text_timer_partial.png
new file mode 100644
index 0000000..0c49eb6
Binary files /dev/null and b/icons/default/text_timer_partial.png differ
diff --git a/icons/default/text_timer_partial_cur.png b/icons/default/text_timer_partial_cur.png
new file mode 100644
index 0000000..0c49eb6
Binary files /dev/null and b/icons/default/text_timer_partial_cur.png differ
diff --git a/icons/default/text_timer_partial_sel.png b/icons/default/text_timer_partial_sel.png
new file mode 100644
index 0000000..0c49eb6
Binary files /dev/null and b/icons/default/text_timer_partial_sel.png differ
diff --git a/icons/default/text_vps.png b/icons/default/text_vps.png
new file mode 100644
index 0000000..7ec5a98
Binary files /dev/null and b/icons/default/text_vps.png differ
diff --git a/icons/default/text_vps_cur.png b/icons/default/text_vps_cur.png
new file mode 100644
index 0000000..7ec5a98
Binary files /dev/null and b/icons/default/text_vps_cur.png differ
diff --git a/icons/default/text_vps_sel.png b/icons/default/text_vps_sel.png
new file mode 100644
index 0000000..7ec5a98
Binary files /dev/null and b/icons/default/text_vps_sel.png differ
diff --git a/icons/default/timerActive.png b/icons/default/timerActive.png
new file mode 100644
index 0000000..0973e0c
Binary files /dev/null and b/icons/default/timerActive.png differ
diff --git a/icons/default/timerInactive.png b/icons/default/timerInactive.png
new file mode 100644
index 0000000..cafccb6
Binary files /dev/null and b/icons/default/timerInactive.png differ
diff --git a/icons/default/timerInactiveBig.png b/icons/default/timerInactiveBig.png
new file mode 100644
index 0000000..94d9b93
Binary files /dev/null and b/icons/default/timerInactiveBig.png differ
diff --git a/icons/default/timerRecording.png b/icons/default/timerRecording.png
new file mode 100644
index 0000000..b3ea838
Binary files /dev/null and b/icons/default/timerRecording.png differ
diff --git a/icons/default/timer_full.png b/icons/default/timer_full.png
new file mode 100644
index 0000000..9c01dbd
Binary files /dev/null and b/icons/default/timer_full.png differ
diff --git a/icons/default/timer_partial.png b/icons/default/timer_partial.png
new file mode 100644
index 0000000..d7374fc
Binary files /dev/null and b/icons/default/timer_partial.png differ
diff --git a/icons/default/topbar_timer.png b/icons/default/topbar_timer.png
new file mode 100644
index 0000000..b25c480
Binary files /dev/null and b/icons/default/topbar_timer.png differ
diff --git a/icons/default/topbar_timerconflict_high.png b/icons/default/topbar_timerconflict_high.png
new file mode 100644
index 0000000..956050f
Binary files /dev/null and b/icons/default/topbar_timerconflict_high.png differ
diff --git a/icons/default/topbar_timerconflict_low.png b/icons/default/topbar_timerconflict_low.png
new file mode 100644
index 0000000..695ae9f
Binary files /dev/null and b/icons/default/topbar_timerconflict_low.png differ
diff --git a/icons/default/tracks_ac3.png b/icons/default/tracks_ac3.png
new file mode 100644
index 0000000..78da703
Binary files /dev/null and b/icons/default/tracks_ac3.png differ
diff --git a/icons/default/tracks_stereo.png b/icons/default/tracks_stereo.png
new file mode 100644
index 0000000..9c3e3d9
Binary files /dev/null and b/icons/default/tracks_stereo.png differ
diff --git a/icons/default/tv.png b/icons/default/tv.png
new file mode 100644
index 0000000..9436a27
Binary files /dev/null and b/icons/default/tv.png differ
diff --git a/icons/default/uncrypted.png b/icons/default/uncrypted.png
new file mode 100644
index 0000000..f7652e6
Binary files /dev/null and b/icons/default/uncrypted.png differ
diff --git a/icons/default/unknown_asp.png b/icons/default/unknown_asp.png
new file mode 100644
index 0000000..426d951
Binary files /dev/null and b/icons/default/unknown_asp.png differ
diff --git a/icons/default/unknown_res.png b/icons/default/unknown_res.png
new file mode 100644
index 0000000..166115f
Binary files /dev/null and b/icons/default/unknown_res.png differ
diff --git a/icons/default/vps.png b/icons/default/vps.png
new file mode 100644
index 0000000..697697c
Binary files /dev/null and b/icons/default/vps.png differ
diff --git a/icons/default/widgets/active_timers.png b/icons/default/widgets/active_timers.png
new file mode 100644
index 0000000..8f31913
Binary files /dev/null and b/icons/default/widgets/active_timers.png differ
diff --git a/icons/default/widgets/clear-day.png b/icons/default/widgets/clear-day.png
new file mode 100644
index 0000000..2b06a14
Binary files /dev/null and b/icons/default/widgets/clear-day.png differ
diff --git a/icons/default/widgets/clear-night.png b/icons/default/widgets/clear-night.png
new file mode 100644
index 0000000..9bbe49f
Binary files /dev/null and b/icons/default/widgets/clear-night.png differ
diff --git a/icons/default/widgets/cloudy.png b/icons/default/widgets/cloudy.png
new file mode 100644
index 0000000..9870c7f
Binary files /dev/null and b/icons/default/widgets/cloudy.png differ
diff --git a/icons/default/widgets/command_output.png b/icons/default/widgets/command_output.png
new file mode 100644
index 0000000..2f36a18
Binary files /dev/null and b/icons/default/widgets/command_output.png differ
diff --git a/icons/default/widgets/dvb_devices.png b/icons/default/widgets/dvb_devices.png
new file mode 100644
index 0000000..575f5a0
Binary files /dev/null and b/icons/default/widgets/dvb_devices.png differ
diff --git a/icons/default/widgets/fog.png b/icons/default/widgets/fog.png
new file mode 100644
index 0000000..9bc88d2
Binary files /dev/null and b/icons/default/widgets/fog.png differ
diff --git a/icons/default/widgets/last_recordings.png b/icons/default/widgets/last_recordings.png
new file mode 100644
index 0000000..fde8879
Binary files /dev/null and b/icons/default/widgets/last_recordings.png differ
diff --git a/icons/default/widgets/partly-cloudy-day.png b/icons/default/widgets/partly-cloudy-day.png
new file mode 100644
index 0000000..b6df179
Binary files /dev/null and b/icons/default/widgets/partly-cloudy-day.png differ
diff --git a/icons/default/widgets/partly-cloudy-night.png b/icons/default/widgets/partly-cloudy-night.png
new file mode 100644
index 0000000..aa358fb
Binary files /dev/null and b/icons/default/widgets/partly-cloudy-night.png differ
diff --git a/icons/default/widgets/rain.png b/icons/default/widgets/rain.png
new file mode 100644
index 0000000..8275003
Binary files /dev/null and b/icons/default/widgets/rain.png differ
diff --git a/icons/default/widgets/sleet.png b/icons/default/widgets/sleet.png
new file mode 100644
index 0000000..1d99ae0
Binary files /dev/null and b/icons/default/widgets/sleet.png differ
diff --git a/icons/default/widgets/snow.png b/icons/default/widgets/snow.png
new file mode 100644
index 0000000..939e22f
Binary files /dev/null and b/icons/default/widgets/snow.png differ
diff --git a/icons/default/widgets/system_information.png b/icons/default/widgets/system_information.png
new file mode 100644
index 0000000..9a0dec4
Binary files /dev/null and b/icons/default/widgets/system_information.png differ
diff --git a/icons/default/widgets/system_updates.png b/icons/default/widgets/system_updates.png
new file mode 100644
index 0000000..02a424d
Binary files /dev/null and b/icons/default/widgets/system_updates.png differ
diff --git a/icons/default/widgets/temperatures.png b/icons/default/widgets/temperatures.png
new file mode 100644
index 0000000..a0c05fd
Binary files /dev/null and b/icons/default/widgets/temperatures.png differ
diff --git a/icons/default/widgets/thunderstorm.png b/icons/default/widgets/thunderstorm.png
new file mode 100644
index 0000000..4abf371
Binary files /dev/null and b/icons/default/widgets/thunderstorm.png differ
diff --git a/icons/default/widgets/timer_conflicts.png b/icons/default/widgets/timer_conflicts.png
new file mode 100644
index 0000000..c4d17d2
Binary files /dev/null and b/icons/default/widgets/timer_conflicts.png differ
diff --git a/icons/default/widgets/umbrella.png b/icons/default/widgets/umbrella.png
new file mode 100644
index 0000000..18deac1
Binary files /dev/null and b/icons/default/widgets/umbrella.png differ
diff --git a/icons/default/widgets/weather.png b/icons/default/widgets/weather.png
new file mode 100644
index 0000000..2898738
Binary files /dev/null and b/icons/default/widgets/weather.png differ
diff --git a/icons/default/widgets/wind.png b/icons/default/widgets/wind.png
new file mode 100644
index 0000000..d92ec15
Binary files /dev/null and b/icons/default/widgets/wind.png differ
diff --git a/icons/fnuanthraamber/logo_background.png b/icons/fnuanthraamber/logo_background.png
new file mode 120000
index 0000000..43b52e9
--- /dev/null
+++ b/icons/fnuanthraamber/logo_background.png
@@ -0,0 +1 @@
+../fnuanthrared/logo_background_white.png
\ No newline at end of file
diff --git a/icons/fnuanthraamber/recording_new.png b/icons/fnuanthraamber/recording_new.png
new file mode 120000
index 0000000..2622a95
--- /dev/null
+++ b/icons/fnuanthraamber/recording_new.png
@@ -0,0 +1 @@
+recording_new_amber.png
\ No newline at end of file
diff --git a/icons/fnuanthraamber/recording_new_amber.png b/icons/fnuanthraamber/recording_new_amber.png
new file mode 100644
index 0000000..2623c04
Binary files /dev/null and b/icons/fnuanthraamber/recording_new_amber.png differ
diff --git a/icons/fnuanthracutis/logo_background.png b/icons/fnuanthracutis/logo_background.png
new file mode 120000
index 0000000..43b52e9
--- /dev/null
+++ b/icons/fnuanthracutis/logo_background.png
@@ -0,0 +1 @@
+../fnuanthrared/logo_background_white.png
\ No newline at end of file
diff --git a/icons/fnuanthracutis/recording_new.png b/icons/fnuanthracutis/recording_new.png
new file mode 120000
index 0000000..5be82ac
--- /dev/null
+++ b/icons/fnuanthracutis/recording_new.png
@@ -0,0 +1 @@
+recording_new_cutis.png
\ No newline at end of file
diff --git a/icons/fnuanthracutis/recording_new_cutis.png b/icons/fnuanthracutis/recording_new_cutis.png
new file mode 100644
index 0000000..c95d406
Binary files /dev/null and b/icons/fnuanthracutis/recording_new_cutis.png differ
diff --git a/icons/fnuanthragreen/logo_background.png b/icons/fnuanthragreen/logo_background.png
new file mode 120000
index 0000000..43b52e9
--- /dev/null
+++ b/icons/fnuanthragreen/logo_background.png
@@ -0,0 +1 @@
+../fnuanthrared/logo_background_white.png
\ No newline at end of file
diff --git a/icons/fnuanthragreen/recording_new.png b/icons/fnuanthragreen/recording_new.png
new file mode 120000
index 0000000..43389c5
--- /dev/null
+++ b/icons/fnuanthragreen/recording_new.png
@@ -0,0 +1 @@
+recording_new_green.png
\ No newline at end of file
diff --git a/icons/fnuanthragreen/recording_new_green.png b/icons/fnuanthragreen/recording_new_green.png
new file mode 100644
index 0000000..4592f0f
Binary files /dev/null and b/icons/fnuanthragreen/recording_new_green.png differ
diff --git a/icons/fnuanthraivory/logo_background.png b/icons/fnuanthraivory/logo_background.png
new file mode 120000
index 0000000..43b52e9
--- /dev/null
+++ b/icons/fnuanthraivory/logo_background.png
@@ -0,0 +1 @@
+../fnuanthrared/logo_background_white.png
\ No newline at end of file
diff --git a/icons/fnuanthraivory/recording_new.png b/icons/fnuanthraivory/recording_new.png
new file mode 120000
index 0000000..aa6b50f
--- /dev/null
+++ b/icons/fnuanthraivory/recording_new.png
@@ -0,0 +1 @@
+recording_new_ivory.png
\ No newline at end of file
diff --git a/icons/fnuanthraivory/recording_new_ivory.png b/icons/fnuanthraivory/recording_new_ivory.png
new file mode 100644
index 0000000..8dce76f
Binary files /dev/null and b/icons/fnuanthraivory/recording_new_ivory.png differ
diff --git a/icons/fnuanthralilac/logo_background.png b/icons/fnuanthralilac/logo_background.png
new file mode 120000
index 0000000..43b52e9
--- /dev/null
+++ b/icons/fnuanthralilac/logo_background.png
@@ -0,0 +1 @@
+../fnuanthrared/logo_background_white.png
\ No newline at end of file
diff --git a/icons/fnuanthralilac/recording_new.png b/icons/fnuanthralilac/recording_new.png
new file mode 120000
index 0000000..49ba35a
--- /dev/null
+++ b/icons/fnuanthralilac/recording_new.png
@@ -0,0 +1 @@
+recording_new_lilac.png
\ No newline at end of file
diff --git a/icons/fnuanthralilac/recording_new_lilac.png b/icons/fnuanthralilac/recording_new_lilac.png
new file mode 100644
index 0000000..3f7cd34
Binary files /dev/null and b/icons/fnuanthralilac/recording_new_lilac.png differ
diff --git a/icons/fnuanthrared/logo_background.png b/icons/fnuanthrared/logo_background.png
new file mode 120000
index 0000000..e01df1c
--- /dev/null
+++ b/icons/fnuanthrared/logo_background.png
@@ -0,0 +1 @@
+logo_background_white.png
\ No newline at end of file
diff --git a/icons/fnuanthrared/logo_background_white.png b/icons/fnuanthrared/logo_background_white.png
new file mode 100644
index 0000000..c916321
Binary files /dev/null and b/icons/fnuanthrared/logo_background_white.png differ
diff --git a/icons/fnuanthrared/recording_new.png b/icons/fnuanthrared/recording_new.png
new file mode 120000
index 0000000..6a40fcb
--- /dev/null
+++ b/icons/fnuanthrared/recording_new.png
@@ -0,0 +1 @@
+recording_new_red.png
\ No newline at end of file
diff --git a/icons/fnuanthrared/recording_new_red.png b/icons/fnuanthrared/recording_new_red.png
new file mode 100644
index 0000000..90483de
Binary files /dev/null and b/icons/fnuanthrared/recording_new_red.png differ
diff --git a/icons/fnuanthrayablue/logo_background.png b/icons/fnuanthrayablue/logo_background.png
new file mode 120000
index 0000000..43b52e9
--- /dev/null
+++ b/icons/fnuanthrayablue/logo_background.png
@@ -0,0 +1 @@
+../fnuanthrared/logo_background_white.png
\ No newline at end of file
diff --git a/icons/fnuanthrayablue/recording_new.png b/icons/fnuanthrayablue/recording_new.png
new file mode 120000
index 0000000..90256f5
--- /dev/null
+++ b/icons/fnuanthrayablue/recording_new.png
@@ -0,0 +1 @@
+recording_new_yablue.png
\ No newline at end of file
diff --git a/icons/fnuanthrayablue/recording_new_yablue.png b/icons/fnuanthrayablue/recording_new_yablue.png
new file mode 100644
index 0000000..98f11df
Binary files /dev/null and b/icons/fnuanthrayablue/recording_new_yablue.png differ
diff --git a/imagecache.c b/imagecache.c
new file mode 100644
index 0000000..6160647
--- /dev/null
+++ b/imagecache.c
@@ -0,0 +1,83 @@
+#include "imagecache.h"
+#include "config.h"
+
+
+#include "displaychannel.h"
+#include "displaymenu.h"
+#include "displaymessage.h"
+#include "displayreplay.h"
+#include "displaytracks.h"
+#include "displayvolume.h"
+
+
+cImageCache::cImageCache() {
+ Overflow = false;
+}
+
+cImageCache::~cImageCache() {
+
+}
+
+void cImageCache::Create(void) {
+ for(int i = 0; i < MAX_IMAGE_CACHE; i++) {
+ CacheImage[i] = NULL;
+ CacheName[i] = "";
+ CacheWidth[i] = -1;
+ CacheHeight[i] = -1;
+ }
+
+ InsertIndex = 0;
+}
+
+void cImageCache::Clear(void) {
+ for(int i = 0; i < MAX_IMAGE_CACHE; i++) {
+ if( CacheImage[i] != NULL )
+ delete CacheImage[i];
+ }
+
+ InsertIndex = 0;
+}
+
+cImage* cImageCache::GetImage(std::string Name, int Width, int Height) {
+ //dsyslog("imagecache search for image %s Width %d Height %d", Name.c_str(), Width, Height);
+ for(int index = 0; index < MAX_IMAGE_CACHE; index++ ) {
+ //dsyslog("imagecache index %d image %s Width %d Height %d", index, CacheName[index].c_str(), CacheWidth[index], CacheHeight[index]);
+ if( CacheName[index] == Name && CacheWidth[index] == Width && CacheHeight[index] == Height )
+ return CacheImage[index];
+ }
+ return NULL;
+}
+
+void cImageCache::InsertImage(cImage *Image, std::string Name, int Width, int Height) {
+ CacheImage[InsertIndex] = Image;
+ CacheName[InsertIndex] = Name;
+ CacheWidth[InsertIndex] = Width;
+ CacheHeight[InsertIndex] = Height;
+
+ InsertIndex++;
+ if( InsertIndex >= MAX_IMAGE_CACHE ) {
+ isyslog("skinflatplus: imagecache overflow, increase MAX_IMAGE_CACHE");
+ InsertIndex = 0;
+ Overflow = true;
+ }
+}
+
+void cImageCache::PreLoadImage(void) {
+ uint32_t tick1 = GetMsTicks();
+
+ cFlatDisplayChannel DisplayChannel(false);
+ DisplayChannel.PreLoadImages();
+
+ cFlatDisplayMenu DisplayMenu;
+ DisplayMenu.PreLoadImages();
+
+ cFlatDisplayReplay DisplayReplay(false);
+ DisplayReplay.PreLoadImages();
+
+ cFlatDisplayVolume DisplayVolume;
+ DisplayVolume.PreLoadImages();
+
+ uint32_t tick2 = GetMsTicks();
+ dsyslog("skinflatplus imagecache pre load images time: %d ms", tick2 - tick1);
+ dsyslog("skinflatplus imagecache pre loaded images %d / %d", getCacheCount(), MAX_IMAGE_CACHE);
+}
diff --git a/imagecache.h b/imagecache.h
new file mode 100644
index 0000000..1cd03a5
--- /dev/null
+++ b/imagecache.h
@@ -0,0 +1,34 @@
+#pragma once
+#include <vdr/osd.h>
+#include <vdr/skins.h>
+#include <string>
+
+#define MAX_IMAGE_CACHE 999
+#define LOGO_PRE_CACHE 200
+// note MAX_LOGO_PRE_CACHE is used twice
+// one for displaychannel and one for menu
+// you must double the value for the real amount of pre cached logos
+
+class cImageCache {
+private:
+ cImage *CacheImage[MAX_IMAGE_CACHE];
+ std::string CacheName[MAX_IMAGE_CACHE];
+ int CacheWidth[MAX_IMAGE_CACHE];
+ int CacheHeight[MAX_IMAGE_CACHE];
+
+ int InsertIndex;
+ bool Overflow;
+public:
+ cImageCache();
+ ~cImageCache();
+
+ void Create(void);
+ void Clear(void);
+
+ int getCacheCount(void) { if(Overflow) return MAX_IMAGE_CACHE; return InsertIndex+1; }
+
+ cImage *GetImage(std::string Name, int Width, int Height);
+ void InsertImage(cImage *Image, std::string Name, int Width, int Height);
+
+ void PreLoadImage(void);
+};
diff --git a/imageloader.c b/imageloader.c
new file mode 100644
index 0000000..a5e3a91
--- /dev/null
+++ b/imageloader.c
@@ -0,0 +1,246 @@
+#include "imageloader.h"
+#include <math.h>
+#include <string>
+#include <dirent.h>
+#include <iostream>
+#include "flat.h"
+
+using namespace Magick;
+
+cImageLoader::cImageLoader() {
+ InitializeMagick(NULL);
+ logoExtension = "png";
+}
+
+cImageLoader::~cImageLoader() {
+}
+
+cImage* cImageLoader::LoadLogo(const char *logo, int width, int height) {
+ if( (width == 0) || (height==0) )
+ return NULL;
+ std::string logoLower = logo;
+ toLowerCase(logoLower);
+ cString File = cString::sprintf("%s/%s.%s", *Config.logoPath, logoLower.c_str(), *logoExtension);
+ #ifdef DEBUGIMAGELOADTIME
+ dsyslog("imageloader load logo %s", *File);
+ #endif
+
+ cImage *img;
+ #ifdef DEBUGIMAGELOADTIME
+ uint32_t tick1 = GetMsTicks();
+ #endif
+
+ img = imgCache.GetImage( *File, width, height );
+
+ #ifdef DEBUGIMAGELOADTIME
+ uint32_t tick2 = GetMsTicks();
+ dsyslog(" search in cache: %d ms", tick2 - tick1);
+ #endif
+ if( img != NULL )
+ return img;
+
+ #ifdef DEBUGIMAGELOADTIME
+ uint32_t tick3 = GetMsTicks();
+ #endif
+
+ bool success = LoadImage(File);
+
+ if( !success ) {
+ dsyslog("imageloader LoadLogo: %s could not be loaded", *File);
+ return NULL;
+ }
+ #ifdef DEBUGIMAGELOADTIME
+ uint32_t tick4 = GetMsTicks();
+ dsyslog(" load file from disk: %d ms", tick4 - tick3);
+ #endif
+
+ #ifdef DEBUGIMAGELOADTIME
+ uint32_t tick5 = GetMsTicks();
+ #endif
+
+ img = CreateImage(width, height);
+
+ if( img == NULL )
+ return NULL;
+
+ #ifdef DEBUGIMAGELOADTIME
+ uint32_t tick6 = GetMsTicks();
+ dsyslog(" scale logo: %d ms", tick6 - tick5);
+ #endif
+
+ imgCache.InsertImage(img, *File, width, height);
+ return img;
+}
+
+cImage* cImageLoader::LoadIcon(const char *cIcon, int width, int height, bool preserveAspect) {
+ if ((width == 0)||(height==0))
+ return NULL;
+
+ cString File = cString::sprintf("%s%s/%s.%s", *Config.iconPath, Setup.OSDTheme, cIcon, *logoExtension);
+
+ #ifdef DEBUGIMAGELOADTIME
+ dsyslog("imageloader load icon %s", *File);
+ #endif
+
+ cImage *img;
+
+ #ifdef DEBUGIMAGELOADTIME
+ uint32_t tick1 = GetMsTicks();
+ #endif
+
+ img = imgCache.GetImage( *File, width, height );
+
+ #ifdef DEBUGIMAGELOADTIME
+ uint32_t tick2 = GetMsTicks();
+ dsyslog(" search in cache: %d ms", tick2 - tick1);
+ #endif
+ if( img != NULL )
+ return img;
+
+ #ifdef DEBUGIMAGELOADTIME
+ uint32_t tick3 = GetMsTicks();
+ #endif
+
+ bool success = LoadImage(File);
+
+ #ifdef DEBUGIMAGELOADTIME
+ uint32_t tick4 = GetMsTicks();
+ dsyslog(" load file from disk: %d ms", tick4 - tick3);
+ #endif
+
+ if( !success ) {
+ File = cString::sprintf("%s%s/%s.%s", *Config.iconPath, "default", cIcon, *logoExtension);
+ #ifdef DEBUGIMAGELOADTIME
+ dsyslog("imageloader load icon %s", *File);
+ uint32_t tick5 = GetMsTicks();
+ #endif
+
+ img = imgCache.GetImage( *File, width, height );
+
+ #ifdef DEBUGIMAGELOADTIME
+ uint32_t tick6 = GetMsTicks();
+ dsyslog(" search in cache: %d ms", tick6 - tick5);
+ #endif
+ if( img != NULL )
+ return img;
+
+ #ifdef DEBUGIMAGELOADTIME
+ uint32_t tick7 = GetMsTicks();
+ #endif
+
+ success = LoadImage(File);
+
+ #ifdef DEBUGIMAGELOADTIME
+ uint32_t tick8 = GetMsTicks();
+ dsyslog(" load file from disk: %d ms", tick8 - tick7);
+ #endif
+
+ if( !success ) {
+ dsyslog("imageloader LoadIcon: %s could not be loaded", *File);
+ return NULL;
+ }
+ }
+ #ifdef DEBUGIMAGELOADTIME
+ uint32_t tick9 = GetMsTicks();
+ #endif
+
+ img = CreateImage(width, height);
+
+ #ifdef DEBUGIMAGELOADTIME
+ uint32_t tick10 = GetMsTicks();
+ dsyslog(" scale logo: %d ms", tick10 - tick9);
+ #endif
+ if( img == NULL )
+ return NULL;
+ imgCache.InsertImage(img, *File, width, height);
+ return img;
+}
+
+cImage* cImageLoader::LoadFile(const char *cFile, int width, int height, bool preserveAspect) {
+ if( (width == 0) || (height==0) )
+ return NULL;
+ cString File = cFile;
+ #ifdef DEBUGIMAGELOADTIME
+ dsyslog("imageloader load file %s", *File);
+ #endif
+
+ cImage *img;
+ #ifdef DEBUGIMAGELOADTIME
+ uint32_t tick1 = GetMsTicks();
+ #endif
+
+ img = imgCache.GetImage( *File, width, height );
+
+ #ifdef DEBUGIMAGELOADTIME
+ uint32_t tick2 = GetMsTicks();
+ dsyslog(" search in cache: %d ms", tick2 - tick1);
+ #endif
+ if( img != NULL )
+ return img;
+
+ #ifdef DEBUGIMAGELOADTIME
+ uint32_t tick3 = GetMsTicks();
+ #endif
+
+ bool success = LoadImage(File);
+
+ if( !success ) {
+ dsyslog("imageloader LoadFile: %s could not be loaded", *File);
+ return NULL;
+ }
+ #ifdef DEBUGIMAGELOADTIME
+ uint32_t tick4 = GetMsTicks();
+ dsyslog(" load file from disk: %d ms", tick4 - tick3);
+ #endif
+
+ #ifdef DEBUGIMAGELOADTIME
+ uint32_t tick5 = GetMsTicks();
+ #endif
+
+ img = CreateImage(width, height);
+
+ if( img == NULL )
+ return NULL;
+
+ #ifdef DEBUGIMAGELOADTIME
+ uint32_t tick6 = GetMsTicks();
+ dsyslog(" scale logo: %d ms", tick6 - tick5);
+ #endif
+
+ imgCache.InsertImage(img, *File, width, height);
+ return img;
+}
+
+void cImageLoader::toLowerCase(std::string &str) {
+ const int length = str.length();
+ for(int i=0; i < length; ++i) {
+ str[i] = std::tolower(str[i]);
+ }
+}
+
+bool cImageLoader::FileExits(const std::string& name) {
+ struct stat buffer;
+ return (stat (name.c_str(), &buffer) == 0);
+}
+
+bool cImageLoader::SearchRecordingPoster(cString recPath, cString &found) {
+ cString manualPoster = cString::sprintf("%s/cover_vdr.jpg", *recPath);
+ if (FileSize(*manualPoster) != -1) {
+ dsyslog("Poster found in %s/cover_vdr.jpg", *recPath);
+ found = manualPoster;
+ return true;
+ }
+ manualPoster = cString::sprintf("%s/../../../cover_vdr.jpg", *recPath);
+ if (FileSize(*manualPoster) != -1) {
+ dsyslog("Poster found in %s/../../../cover_vdr.jpg", *recPath);
+ found = manualPoster;
+ return true;
+ }
+ manualPoster = cString::sprintf("%s/../../cover_vdr.jpg", *recPath);
+ if (FileSize(*manualPoster) != -1) {
+ dsyslog("Poster found in %s/../../cover_vdr.jpg", *recPath);
+ found = manualPoster;
+ return true;
+ }
+ return false;
+}
diff --git a/imageloader.h b/imageloader.h
new file mode 100644
index 0000000..b340f9a
--- /dev/null
+++ b/imageloader.h
@@ -0,0 +1,30 @@
+#pragma once
+
+#define X_DISPLAY_MISSING
+
+
+#include <vdr/osd.h>
+#include <vdr/skins.h>
+
+#include <Magick++.h>
+#include "imagemagickwrapper.h"
+
+using namespace Magick;
+
+class cImageLoader : public cImageMagickWrapper {
+public:
+ cImageLoader();
+ ~cImageLoader();
+
+ cImage* LoadLogo(const char *logo, int width, int height);
+ cImage* LoadIcon(const char *cIcon, int width, int height, bool preserveAspect = true);
+ cImage* LoadFile(const char *cFile, int width, int height, bool preserveAspect = true);
+ bool FileExits(const std::string& name);
+ bool SearchRecordingPoster(cString recPath, cString &found);
+private:
+ int epgImageWidthLarge, epgImageHeightLarge;
+ int epgImageWidth, epgImageHeight;
+ cString logoExtension;
+
+ void toLowerCase(std::string &str);
+};
diff --git a/imagemagickwrapper.c b/imagemagickwrapper.c
new file mode 100644
index 0000000..22532b3
--- /dev/null
+++ b/imagemagickwrapper.c
@@ -0,0 +1,87 @@
+#include <string>
+#include <sstream>
+#include "imagemagickwrapper.h"
+#include "imagescaler.h"
+
+cImageMagickWrapper::cImageMagickWrapper() {
+ InitializeMagick(NULL);
+}
+
+cImageMagickWrapper::~cImageMagickWrapper() {
+}
+
+cImage *cImageMagickWrapper::CreateImage(int width, int height, bool preserveAspect) {
+ int w, h;
+ w = buffer.columns();
+ h = buffer.rows();
+ if (width == 0)
+ width = w;
+ if (height == 0)
+ height = h;
+ if (preserveAspect) {
+ unsigned scale_w = 1000 * width / w;
+ unsigned scale_h = 1000 * height / h;
+ if (scale_w > scale_h)
+ width = w * height / h;
+ else
+ height = h * width / w;
+ }
+ const PixelPacket *pixels = buffer.getConstPixels(0, 0, w, h);
+ cImage *image = new cImage(cSize(width, height));
+ tColor *imgData = (tColor *)image->Data();
+ if (w != width || h != height) {
+ ImageScaler scaler;
+ scaler.SetImageParameters(imgData, width, width, height, w, h);
+ for (const void *pixels_end = &pixels[w*h]; pixels < pixels_end; ++pixels)
+ scaler.PutSourcePixel(pixels->blue / ((MaxRGB + 1) / 256),
+ pixels->green / ((MaxRGB + 1) / 256),
+ pixels->red / ((MaxRGB + 1) / 256),
+ ~((unsigned char)(pixels->opacity / ((MaxRGB + 1) / 256))));
+ return image;
+ }
+ for (const void *pixels_end = &pixels[width*height]; pixels < pixels_end; ++pixels)
+ *imgData++ = ((~int(pixels->opacity / ((MaxRGB + 1) / 256)) << 24) |
+ (int(pixels->green / ((MaxRGB + 1) / 256)) << 8) |
+ (int(pixels->red / ((MaxRGB + 1) / 256)) << 16) |
+ (int(pixels->blue / ((MaxRGB + 1) / 256)) ));
+ return image;
+}
+
+cImage cImageMagickWrapper::CreateImageCopy() {
+ int w, h;
+ w = buffer.columns();
+ h = buffer.rows();
+ cImage image (cSize(w, h));
+ const PixelPacket *pixels = buffer.getConstPixels(0, 0, w, h);
+ for (int iy = 0; iy < h; ++iy) {
+ for (int ix = 0; ix < w; ++ix) {
+ tColor col = (~int(pixels->opacity * 255 / MaxRGB) << 24)
+ | (int(pixels->green * 255 / MaxRGB) << 8)
+ | (int(pixels->red * 255 / MaxRGB) << 16)
+ | (int(pixels->blue * 255 / MaxRGB) );
+ image.SetPixel(cPoint(ix, iy), col);
+ ++pixels;
+ }
+ }
+ return image;
+}
+
+bool cImageMagickWrapper::LoadImage(const char *fullpath) {
+ if ((fullpath == NULL) || (strlen(fullpath) < 5))
+ return false;
+ try {
+ buffer.read(fullpath);
+ } catch(...) {
+ return false;
+ }
+ return true;
+}
+
+Color cImageMagickWrapper::Argb2Color(tColor col) {
+ tIndex alpha = (col & 0xFF000000) >> 24;
+ tIndex red = (col & 0x00FF0000) >> 16;
+ tIndex green = (col & 0x0000FF00) >> 8;
+ tIndex blue = (col & 0x000000FF);
+ Color color(MaxRGB*red/255, MaxRGB*green/255, MaxRGB*blue/255, MaxRGB*(0xFF-alpha)/255);
+ return color;
+}
diff --git a/imagemagickwrapper.h b/imagemagickwrapper.h
new file mode 100644
index 0000000..9750a88
--- /dev/null
+++ b/imagemagickwrapper.h
@@ -0,0 +1,23 @@
+#ifndef __NOPACITY_IMAGEMAGICKWRAPPER_H
+#define __NOPACITY_IMAGEMAGICKWRAPPER_H
+
+#define X_DISPLAY_MISSING
+
+#include <Magick++.h>
+#include <vdr/osd.h>
+
+using namespace Magick;
+
+class cImageMagickWrapper {
+public:
+ cImageMagickWrapper();
+ ~cImageMagickWrapper();
+protected:
+ Image buffer;
+ Color Argb2Color(tColor col);
+ cImage *CreateImage(int width, int height, bool preserveAspect = true);
+ cImage CreateImageCopy(void);
+ bool LoadImage(const char *fullpath);
+};
+
+#endif
diff --git a/imagescaler.c b/imagescaler.c
new file mode 100644
index 0000000..cebe912
--- /dev/null
+++ b/imagescaler.c
@@ -0,0 +1,149 @@
+
+#include "imagescaler.h"
+
+#include <cstdlib>
+#include <cmath>
+
+ImageScaler::ImageScaler() :
+ m_memory(NULL),
+ m_hor_filters(NULL),
+ m_ver_filters(NULL),
+ m_buffer(NULL),
+ m_dst_image(NULL),
+ m_dst_stride(0),
+ m_dst_width(0),
+ m_dst_height(0),
+ m_src_width(0),
+ m_src_height(0),
+ m_src_x(0),
+ m_src_y(0),
+ m_dst_x(0),
+ m_dst_y(0) {
+}
+
+ImageScaler::~ImageScaler() {
+ if ( m_memory ) free( m_memory );
+}
+
+// sin(x)/(x)
+static float sincf( float x ) {
+ if ( fabsf(x) < 0.05f ) return 1.0f - (1.0f/6.0f)*x*x; // taylor series approximation to avoid 0/0
+ return sin(x)/x;
+}
+
+static void CalculateFilters( ImageScaler::Filter *filters, int dst_size, int src_size ) {
+ const float fc = dst_size >= src_size ? 1.0f : ((float) dst_size)/((float) src_size);
+
+ for (int i = 0; i < dst_size; i++) {
+ const int d = 2*dst_size; // sample position denominator
+ const int e = (2*i+1) * src_size - dst_size; // sample position enumerator
+ int offset = e / d; // truncated sample position
+ const float sub_offset = ((float) (e - offset*d)) / ((float) d); // exact sample position is (float) e/d = offset + sub_offset
+
+ // calculate filter coefficients
+ float h[4];
+ for (int j=0; j<4; j++) {
+ const float t = 3.14159265359f * (sub_offset+(1-j));
+ h[j] = sincf( fc * t ) * cosf( 0.25f * t ); // sinc-lowpass and cos-window
+ }
+
+ // ensure that filter does not reach out off image bounds:
+ while ( offset < 1 ) {
+ h[0] += h[1];
+ h[1] = h[2];
+ h[2] = h[3];
+ h[3] = 0.0f;
+ offset++;
+ }
+
+ while ( offset+3 > src_size ) {
+ h[3] += h[2];
+ h[2] = h[1];
+ h[1] = h[0];
+ h[0] = 0.0f;
+ offset--;
+ }
+
+ // coefficients are normalized to sum up to 2048
+ const float norm = 2048.0f / ( h[0] + h[1] + h[2] + h[3] );
+
+ offset--; // offset of fist used pixel
+
+ filters[i].m_offset = offset + 4; // store offset of first unused pixel
+
+ for (int j=0; j<4; j++) {
+ const float t = norm * h[j];
+ filters[i].m_coeff[(offset+j) & 3] = (int) ((t > 0.0f) ? (t+0.5f) : (t-0.5f)); // consider ring buffer index permutations
+ }
+ }
+
+ // set end marker
+ filters[dst_size].m_offset = (unsigned) -1;
+
+}
+
+void ImageScaler::SetImageParameters( unsigned *dst_image, unsigned dst_stride, unsigned dst_width, unsigned dst_height, unsigned src_width, unsigned src_height ) {
+ m_src_x = 0;
+ m_src_y = 0;
+ m_dst_x = 0;
+ m_dst_y = 0;
+
+ m_dst_image = dst_image;
+ m_dst_stride = dst_stride;
+
+ // if image dimensions do not change we can keep the old filter coefficients
+ if ( (src_width == m_src_width) && (src_height == m_src_height) && (dst_width == m_dst_width) && (dst_height == m_dst_height) ) return;
+
+ m_dst_width = dst_width;
+ m_dst_height = dst_height;
+ m_src_width = src_width;
+ m_src_height = src_height;
+
+ if ( m_memory ) free( m_memory );
+
+ const unsigned hor_filters_size = (m_dst_width + 1) * sizeof(Filter); // reserve one extra position for end marker
+ const unsigned ver_filters_size = (m_dst_height + 1) * sizeof(Filter);
+ const unsigned buffer_size = 4 * m_dst_width * sizeof(TmpPixel);
+
+ char *p = (char *) malloc( hor_filters_size + ver_filters_size + buffer_size );
+
+ m_memory = p;
+
+ m_hor_filters = (Filter *) p; p += hor_filters_size;
+ m_ver_filters = (Filter *) p; p += ver_filters_size;
+ m_buffer = (TmpPixel *) p;
+
+ CalculateFilters( m_hor_filters, m_dst_width , m_src_width );
+ CalculateFilters( m_ver_filters, m_dst_height, m_src_height );
+}
+
+// shift range to 0..255 and clamp overflows
+static unsigned shift_clamp( int x ) {
+ x = ( x + (1<<21) ) >> 22;
+ if ( x < 0 ) return 0;
+ if ( x > 255 ) return 255;
+ return x;
+}
+
+void ImageScaler::NextSourceLine() {
+ m_dst_x = 0;
+ m_src_x = 0;
+ m_src_y++;
+
+ while ( m_ver_filters[m_dst_y].m_offset == m_src_y ) {
+ const int h0 = m_ver_filters[m_dst_y].m_coeff[0];
+ const int h1 = m_ver_filters[m_dst_y].m_coeff[1];
+ const int h2 = m_ver_filters[m_dst_y].m_coeff[2];
+ const int h3 = m_ver_filters[m_dst_y].m_coeff[3];
+ const TmpPixel *src = m_buffer;
+ unsigned *dst = m_dst_image + m_dst_stride * m_dst_y;
+
+ for (unsigned i=0; i<m_dst_width; i++) {
+ const ImageScaler::TmpPixel t( src[0]*h0 + src[1]*h1 + src[2]*h2 + src[3]*h3 );
+ src += 4;
+ dst[i] = shift_clamp(t[0]) | (shift_clamp(t[1])<<8) | (shift_clamp(t[2])<<16) | (shift_clamp(t[3])<<24);
+ }
+
+ m_dst_y++;
+ }
+}
diff --git a/imagescaler.h b/imagescaler.h
new file mode 100644
index 0000000..f2de6ba
--- /dev/null
+++ b/imagescaler.h
@@ -0,0 +1,97 @@
+#ifndef _ImageScaler_h
+#define _ImageScaler_h
+
+/*!
+ * this class scales images consisting of 4 components (RGBA)
+ * to an arbitrary size using a 4-tap filter
+ */
+class ImageScaler {
+public:
+
+ struct Filter {
+ unsigned m_offset;
+ short m_coeff[4];
+ };
+
+ ImageScaler();
+ ~ImageScaler();
+
+ //! set destination image and source image size
+ void SetImageParameters( unsigned *dst_image, unsigned dst_stride, unsigned dst_width, unsigned dst_height, unsigned src_width, unsigned src_height );
+
+ /*! process one pixel of source image; destination image is written while input is processed
+ * SetImageParameters() must be called first
+ */
+ void PutSourcePixel( unsigned char c0, unsigned char c1, unsigned char c2, unsigned char c3 ) {
+ m_hbuf[ (m_src_x++) & 3 ].Set( c0, c1, c2, c3 );
+
+ TmpPixel *bp = m_buffer + 4 * m_dst_x + (m_src_y & 3);
+ const Filter *fh;
+
+ while ( (fh=m_hor_filters+m_dst_x)->m_offset == m_src_x ) {
+ *bp = m_hbuf[0]*fh->m_coeff[0] + m_hbuf[1]*fh->m_coeff[1] + m_hbuf[2]*fh->m_coeff[2] + m_hbuf[3]*fh->m_coeff[3];
+ m_dst_x++;
+ bp += 4;
+ }
+
+ if ( m_src_x == m_src_width ) NextSourceLine();
+ }
+
+private:
+
+ //! temporary image pixel class - a 4-element integer vector
+ class TmpPixel {
+ public:
+ TmpPixel() {
+ }
+
+ TmpPixel( int c0, int c1, int c2, int c3 ) {
+ Set(c0,c1,c2,c3);
+ }
+
+ void Set( int c0, int c1, int c2, int c3 ) {
+ m_comp[0] = c0;
+ m_comp[1] = c1;
+ m_comp[2] = c2;
+ m_comp[3] = c3;
+ }
+
+ TmpPixel operator*( int s ) const {
+ return TmpPixel( m_comp[0]*s, m_comp[1]*s, m_comp[2]*s, m_comp[3]*s );
+ }
+
+ TmpPixel operator+( const TmpPixel &x ) const {
+ return TmpPixel( m_comp[0] + x[0], m_comp[1] + x[1], m_comp[2] + x[2], m_comp[3] + x[3] );
+ }
+
+ // return component i=[0..3] - No range check!
+ int operator[](unsigned i) const {
+ return m_comp[i];
+ }
+
+ private:
+ int m_comp[4];
+ };
+
+ //! this is called whenever one input line is processed completely
+ void NextSourceLine();
+
+ TmpPixel m_hbuf[4]; //! ring buffer for 4 input pixels
+ char *m_memory; //! buffer container
+ Filter *m_hor_filters; //! buffer for horizontal filters (one for each output image column)
+ Filter *m_ver_filters; //! buffer for vertical filters (one for each output image row)
+ TmpPixel *m_buffer; //! buffer contains 4 horizontally filtered input lines, multiplexed
+ unsigned *m_dst_image; //! pointer to destination image
+ unsigned m_dst_stride; //! destination image stride
+ unsigned m_dst_width; //! destination image width
+ unsigned m_dst_height; //! destination image height
+ unsigned m_src_width; //! source image width
+ unsigned m_src_height; //! source image height
+ unsigned m_src_x; //! x position of next source image pixel
+ unsigned m_src_y; //! y position of source image line currently beeing processed
+ unsigned m_dst_x; //! x position of next destination image pixel
+ unsigned m_dst_y; //! x position of next destination image line
+};
+
+#endif // _ImageScaler_h
+
diff --git a/po/de_DE.po b/po/de_DE.po
new file mode 100644
index 0000000..0a1859d
--- /dev/null
+++ b/po/de_DE.po
@@ -0,0 +1,886 @@
+# VDR plugin language source file.
+# Copyright (C) 2008 Martin Schirrmacher <vdr.skinflat at schirrmacher.eu>
+# This file is distributed under the same license as the skinflat package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: vdr-skinflat 0.4.3\n"
+"Report-Msgid-Bugs-To: <see README>\n"
+"POT-Creation-Date: 2014-11-30 16:17+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"Language: de_DE\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-15\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "Disk"
+msgstr "Platte"
+
+msgid "free"
+msgstr "frei"
+
+msgid "occupied"
+msgstr "belegt"
+
+msgid "clock"
+msgstr "Uhr"
+
+msgid "Genre"
+msgstr "Kategorie"
+
+msgid "FSK"
+msgstr ""
+
+msgid "Video"
+msgstr "Video"
+
+msgid "Audio"
+msgstr "Audio"
+
+msgid "Subtitle"
+msgstr "Untertitel"
+
+msgid "timer not enabled"
+msgstr "Timer nicht aktiv"
+
+msgid "no recording info"
+msgstr "keine Aufnahme Informationen"
+
+msgid "name: "
+msgstr "Name: "
+
+msgid "first aired: "
+msgstr "Erstausstrahlung: "
+
+msgid "network: "
+msgstr "Sender: "
+
+msgid "genre: "
+msgstr "Genre: "
+
+msgid "rating: "
+msgstr "Wertung: "
+
+msgid "status: "
+msgstr "Status: "
+
+msgid "season number: "
+msgstr "Staffel: "
+
+msgid "episode number: "
+msgstr "Folge: "
+
+msgid "title: "
+msgstr "Titel: "
+
+msgid "original title: "
+msgstr "Originaltitel: "
+
+msgid "collection name: "
+msgstr "Sammlung Name:"
+
+msgid "release date: "
+msgstr "Erscheinungsdatum: "
+
+msgid "popularity: "
+msgstr "Beliebtheit: "
+
+msgid "vote average: "
+msgstr "durchsch. Wertung: "
+
+msgid "Description"
+msgstr "Beschreibung"
+
+msgid "Movie information"
+msgstr "Film Informationen"
+
+msgid "Series information"
+msgstr "Serien Informationen"
+
+msgid "Actors"
+msgstr "Schauspieler"
+
+msgid "Reruns"
+msgstr "Wiederholungen"
+
+msgid "Video information"
+msgstr "Video Informationen"
+
+msgid "Length"
+msgstr "L�nge"
+
+msgid "cutted"
+msgstr "geschnitten"
+
+msgid "Size"
+msgstr "Gr��e"
+
+msgid "format"
+msgstr "Format"
+
+msgid "bit rate"
+msgstr "Bitrate"
+
+msgid "additional information"
+msgstr "Zusatzinformationen"
+
+msgid "channel"
+msgstr "Kanal"
+
+msgid "search pattern"
+msgstr "Suchmuster"
+
+msgid "Recording information"
+msgstr "Aufnahme Informationen"
+
+msgid "DVB Devices"
+msgstr "DVB Ger�te"
+
+msgid "LiveTV"
+msgstr ""
+
+msgid "Unknown"
+msgstr "Unbekannt"
+
+msgid "recording"
+msgstr "Nimmt auf"
+
+msgid "not used"
+msgstr "Nicht verwendet"
+
+msgid "Active Timer"
+msgstr "Aktive Timer"
+
+msgid "no active timer"
+msgstr "Keine aktiven Timer"
+
+msgid "Last Recordings"
+msgstr "Letzte Aufnahmen"
+
+msgid "Timer Conflicts"
+msgstr "Timerkonflikte"
+
+msgid "no timer conflicts"
+msgstr "Keine Timerkonflikte"
+
+msgid "timer conflicts"
+msgstr "timerkonflikte"
+
+msgid "System Information"
+msgstr "Systeminformation"
+
+msgid "no information available please check the script"
+msgstr "Keine Informationen verf�gbar; Bitte Skript pr�fen"
+
+msgid "System Version"
+msgstr ""
+
+msgid "Kernel Version"
+msgstr ""
+
+msgid "Uptime"
+msgstr "L�uft"
+
+msgid "Load"
+msgstr "Last"
+
+msgid "Processes"
+msgstr "Prozesse"
+
+msgid "Memory Usage"
+msgstr "RAM-Nutzung"
+
+msgid "Swap Usage"
+msgstr "Swap-Nutzung"
+
+msgid "Root Usage"
+msgstr "Root-Nutzung"
+
+msgid "Video Usage"
+msgstr "Video-Nutzung"
+
+msgid "VDR CPU Usage"
+msgstr "VDR CPU"
+
+msgid "VDR MEM Usage"
+msgstr "VDR RAM-Nutzung"
+
+msgid "Temp CPU"
+msgstr "CPU-Temperatur"
+
+msgid "Temp GPU"
+msgstr "GPU-Temperatur"
+
+msgid "Temp PC-Case"
+msgstr "Geh�use-Temperatur"
+
+msgid "Temp MB"
+msgstr "MB-Temperatur"
+
+msgid "Updates"
+msgstr "Aktualisierungen"
+
+msgid "Security Updates"
+msgstr "Sicherheitsupdates"
+
+msgid "System Updates"
+msgstr "Systemupdates"
+
+msgid "Updatestatus not available please check the widget"
+msgstr "Updatestatus nicht vorhanden; Bitte Widget pr�fen"
+
+msgid "Temperatures"
+msgstr "Temperaturen"
+
+msgid "Temperatures not available please check the widget"
+msgstr "Temperaturen nicht vorhanden; Bitte Widget pr�fen"
+
+msgid "CPU"
+msgstr ""
+
+msgid "PC-Case"
+msgstr "Geh�use"
+
+msgid "MB"
+msgstr ""
+
+msgid "GPU"
+msgstr ""
+
+msgid "no title available"
+msgstr "Kein Titel vorhanden"
+
+msgid "no output available"
+msgstr "Keine Ausgabe vorhanden"
+
+msgid "Weather"
+msgstr "Wetter"
+
+msgid "Audio Tracks"
+msgstr "Tonspuren"
+
+msgid "Volume"
+msgstr "Lautst�rke"
+
+msgid "none"
+msgstr "keine"
+
+msgid "rect"
+msgstr "Eckig"
+
+msgid "round"
+msgstr "Rund"
+
+msgid "invert round"
+msgstr "Rund invertiert"
+
+msgid "rect + alpha blend"
+msgstr "Eckig + Transparent"
+
+msgid "round + alpha blend"
+msgstr "Rund + Transparent"
+
+msgid "invert round + alpha blend"
+msgstr "Rund invertiert + Transparent"
+
+msgid "small line + big line"
+msgstr "D�nne Linie + Dicke Linie"
+
+msgid "big line"
+msgstr "Dicke Linie"
+
+msgid "big line + outline"
+msgstr "Dicke Linie + Outline"
+
+msgid "small line + big line + dot"
+msgstr "D�nne Linie + Dicke Linie + Punkt"
+
+msgid "big line + dot"
+msgstr "Dicke Linie + Punkt"
+
+msgid "big line + outline + dot"
+msgstr "Dicke Linie + Outline + Punkt"
+
+msgid "small line + dot"
+msgstr "D�nne Linie + Punkt"
+
+msgid "outline + dot"
+msgstr "Outline + Punkt"
+
+msgid "small line + big line + alpha blend"
+msgstr "D�nne Linie + Dicke Linie + Transparenz"
+
+msgid "big line + alpha blend"
+msgstr "Dicke Linie + Transparenz"
+
+msgid "do not show"
+msgstr "nicht anzeigen"
+
+msgid "timer & recording menu"
+msgstr "Timer & Aufnahme Men�"
+
+msgid "always on the menu"
+msgstr "immer im Men�"
+
+msgid "always show"
+msgstr "immer anzeigen"
+
+msgid "VDR default"
+msgstr "VDR Standard"
+
+msgid "flatPlus long"
+msgstr "flatPlus Lang"
+
+msgid "flatPlus long + EPG"
+msgstr "flatPlus Lang + EPG"
+
+msgid "flatPlus short"
+msgstr "flatPlus Kurz"
+
+msgid "flatPlus short + EPG"
+msgstr "flatPlus Kurz + EPG"
+
+msgid "flatPlus short + Info"
+msgstr "flatPlus Kurz + Info"
+
+msgid "vertical"
+msgstr "vertikal"
+
+msgid "hoizontal"
+msgstr "horizontal"
+
+msgid "carriage return"
+msgstr "carriage return"
+
+msgid "left-right-left"
+msgstr "links-rechts-links"
+
+msgid "left line + rect bar"
+msgstr "Linie Links + Eckige Leiste"
+
+msgid "left line + round bar"
+msgstr "Linie Links + Runde Leiste"
+
+msgid "middle line + rect bar"
+msgstr "Mittellinie + Eckige Leiste"
+
+msgid "middle line + round bar"
+msgstr "Mittellinie + Runde Leiste"
+
+msgid "outline + rect bar"
+msgstr "Outline + Eckige Leiste"
+
+msgid "outline + round bar"
+msgstr "Outline + Runde Leiste"
+
+msgid "rect bar"
+msgstr "Eckige Leiste"
+
+msgid "round bar"
+msgstr "Runde Leiste"
+
+msgid "past / remaining"
+msgstr "vergangen / verbleibend"
+
+msgid "past"
+msgstr "vergangen"
+
+msgid "remaining"
+msgstr "verbleibend"
+
+msgid "short"
+msgstr "Kurz"
+
+msgid "long"
+msgstr "Lang"
+
+msgid "General settings"
+msgstr "Allgemeine Einstellungen"
+
+msgid "Channelinfo settings"
+msgstr "Kanalinfo Einstellungen"
+
+msgid "Menu settings"
+msgstr "Men� Einstellungen"
+
+msgid "Replay settings"
+msgstr "Wiedergabe Einstellungen"
+
+msgid "Volume settings"
+msgstr "Lautst�rke Einstellungen"
+
+msgid "Tracks settings"
+msgstr "Tonspur Einstellungen"
+
+msgid "TVScraper / scraper2vdr settings"
+msgstr "TVScraper / scraper2vdr Einstellungen"
+
+msgid "TVScraper / scraper2vdr not installed"
+msgstr "TVScraper / scraper2vdr nicht installiert"
+
+msgid "Main menu widgets settings"
+msgstr "Hauptmen�: Widget Einstellungen"
+
+msgid "configfile"
+msgstr "Konfigdatei"
+
+msgid "loaded"
+msgstr "geladen"
+
+msgid "saved settings in file:"
+msgstr "Einstellungen gespeichert in Datei:"
+
+msgid "no decorfiles found, check install"
+msgstr "keine Dekordateien gefunden, pr�fe Installation"
+
+msgid "Decorfile"
+msgstr "Dekordatei"
+
+msgid "no config-files found, check install"
+msgstr "keine Konfigdateien gefunden, pr�fe Installation"
+
+msgid "Press ok to load config file"
+msgstr "OK dr�cken um die Konfigdatei zu laden"
+
+msgid "Save current settings"
+msgstr "aktuelle Einstellungen abspeichern"
+
+msgid "press ok to save current settings"
+msgstr "OK dr�cken um die Einstellungen zu speichern"
+
+msgid "Show empty color-buttons"
+msgstr "Zeige leere Farbtasten"
+
+msgid "Show TopBar menu icons"
+msgstr "Zeige Men�symbole in Titelleiste"
+
+msgid "Diskusage show"
+msgstr "Plattenverbrauch anzeigen"
+
+msgid "Diskusage short display"
+msgstr "Plattenverbrauch: Kurze Anzeige"
+
+msgid "Diskusage free/occupied"
+msgstr "Plattenverbrauch: frei/belegt"
+
+msgid "OSD vertical margin"
+msgstr "OSD vertikaler Rand"
+
+msgid "OSD horizontal margin"
+msgstr "OSD horizontaler Rand"
+
+msgid "TopBar font size"
+msgstr "Titelleiste: Font Gr��e"
+
+msgid "TopBar show recording"
+msgstr "Titelleiste: Zeige Aufnahme"
+
+msgid "TopBar show conflicts"
+msgstr "Titelleiste: Zeige Konflikte"
+
+msgid "TopBar hide clock text"
+msgstr "Titelleiste: Verstecke Uhr Text"
+
+msgid "TopBar clock font scale"
+msgstr "Titelleiste: Uhr Skalierung"
+
+msgid "Conflicts min value for red"
+msgstr "Konflikte min. Wert f�r Rot"
+
+msgid "Message bottom offset"
+msgstr "Meldung unterer Abstand"
+
+msgid "Message color position"
+msgstr "Meldungsfarbe Position"
+
+msgid "Use Textscroller?"
+msgstr "Nutze Laufschrift?"
+
+msgid "Scroller step (in pixel)"
+msgstr "Laufschrift: Schrittweite (Pixel)"
+
+msgid "Scroller delay (in ms)"
+msgstr "Laufschrift: Verz�gerung (ms)"
+
+msgid "Scroller type"
+msgstr "Laufschrift: Typ"
+
+msgid "TopBar border by decor-file?"
+msgstr "Titelleiste: Rand aus Dekordatei?"
+
+msgid "TopBar border type"
+msgstr "Titelleiste: Rand Typ"
+
+msgid "TopBar border size"
+msgstr "Titelleiste: Rand Gr��e"
+
+msgid "Message border by decor-file?"
+msgstr "Meldung: Rand aus Dekordatei?"
+
+msgid "Message border type"
+msgstr "Meldung: Rand Typ"
+
+msgid "Message border size"
+msgstr "Meldung: Rand Gr��e"
+
+msgid "Button border by decor-file?"
+msgstr "Tasten: Rand aus Dekordatei?"
+
+msgid "Button border type"
+msgstr "Tasten: Rand Typ"
+
+msgid "Button border size"
+msgstr "Tasten: Rand Gr��e"
+
+msgid "Imagecache entries"
+msgstr "Bildercache Eintr�ge"
+
+msgid "Show Channelinfo icons"
+msgstr "Zeige Kanalinfo Logos"
+
+msgid "Show signal quality"
+msgstr "Zeige Signalqualit�t"
+
+msgid "Show weather widget"
+msgstr "Zeige Wetter Widget"
+
+msgid "Weather widget font size"
+msgstr "Wetter Widget Schriftgr��e"
+
+msgid "Colors for signal quality"
+msgstr "Farben f�r Signalqualit�t"
+
+msgid "Show resolution & aspect"
+msgstr "Zeige Aufl�sung & Bildformat"
+
+msgid "Show format (hd/sd)"
+msgstr "Zeige Format (HD/SD)"
+
+msgid "Show video/audio bitrate"
+msgstr "Zeige Video/Audio Bitrate"
+
+msgid "Simple aspect & format"
+msgstr "Aufl�sung & Bildformat Einfache Anzeige"
+
+msgid "program past/remaining time format"
+msgstr "Programm vergangen/verbleibend Format"
+
+msgid "Channelinfo border by decor-file?"
+msgstr "Kanalinfo: Rand aus Dekordatei?"
+
+msgid "Channelinfo border type"
+msgstr "Kanalinfo: Rand Typ"
+
+msgid "Channelinfo border size"
+msgstr "Kanalinfo: Rand Gr��e"
+
+msgid "Channelinfo EPG border by decor-file?"
+msgstr "Kanalinfo: EPG Rand aus Dekordatei?"
+
+msgid "Channelinfo EPG border type"
+msgstr "Kanalinfo: EPG Rand Typ"
+
+msgid "Channelinfo EPG border size"
+msgstr "Kanalinfo: EPG Rand Gr��e"
+
+msgid "Channelinfo progress by decor-file?"
+msgstr "Kanalinfo: Fortschritt aus Dekordatei?"
+
+msgid "Channelinfo progress type"
+msgstr "Kanalinfo: Fortschritt Typ"
+
+msgid "Channelinfo progress size"
+msgstr "Kanalinfo: Fortschritt Gr��e"
+
+msgid "Signalquality progress by decor-file?"
+msgstr "Signalpegelanzeige aus Dekordatei?"
+
+msgid "Signalquality progress type"
+msgstr "Signalpegelanzeige: Typ"
+
+msgid "Signalquality progress size"
+msgstr "Signalpegelanzeige: Gr��e"
+
+msgid "Menuitem padding"
+msgstr "Men�punkt Abstand"
+
+msgid "Show mainmenu item icons"
+msgstr "Zeige Symbole f�r Hauptmen�eintr�ge"
+
+msgid "Menu content fullsize background"
+msgstr "Men�: Inhalt voller Hintergrund"
+
+msgid "Show additional recording info"
+msgstr "Zeige Zusatzinfo bei Aufnahmen"
+
+msgid "Show additional EPG info"
+msgstr "Zeige Zusatzinfo bei EPG"
+
+msgid "Show reruns in EPG info"
+msgstr "Zeige Wiederholungen bei EPG"
+
+msgid "Menu draw background over the entire height"
+msgstr "Men�: Zeichne Hintergrund �ber gesamte H�he"
+
+msgid "Recording menu show recording count in title"
+msgstr "Aufnahmen: Anzahl der Aufnahmen in Titelleiste"
+
+msgid "Timer menu show timer count in title"
+msgstr "Timer: Anzahl der Timer in Titelleiste"
+
+msgid "Channel menu show channel count in title"
+msgstr "Kan�le: Anzahl der Kan�le in Titelleiste"
+
+msgid "Menu channel view"
+msgstr "Men�: Kanal Ansicht"
+
+msgid "Menu timer view"
+msgstr "Men�: Timer Ansicht"
+
+msgid "Menu event view"
+msgstr "Men�: Programm Ansicht"
+
+msgid "Menu recording view"
+msgstr "Men�: Aufzeichnungen Ansicht"
+
+msgid "Scrollbar by decor-file?"
+msgstr "Scrollbar aus Dekordatei?"
+
+msgid "Scrollbar type"
+msgstr "Scrollbar: Typ"
+
+msgid "Scrollbar size"
+msgstr "Scrollbar: Gr��e"
+
+msgid "Menuitem border by decor-file?"
+msgstr "Men�punkt: Rand aus Dekordatei?"
+
+msgid "Menuitem border type"
+msgstr "Men�punkt: Rand Typ"
+
+msgid "Menuitem border size"
+msgstr "Men�punkt: Rand Gr��e"
+
+msgid "Menucont. border by decor-file?"
+msgstr "Men�inhalt: Rand aus Dekordatei?"
+
+msgid "Menucont. border type"
+msgstr "Men�inhalt: Rand Typ"
+
+msgid "Menucont. border size"
+msgstr "Men�inhalt: Rand Gr��e"
+
+msgid "Menucont. head border by decor-file?"
+msgstr "Men�kopf: Rand aus Dekordatei?"
+
+msgid "Menucont. head border type"
+msgstr "Men�kopf: Rand Typ"
+
+msgid "Menucont. head border size"
+msgstr "Men�kopf: Rand Gr��e"
+
+msgid "Menuitem progress by decor-file?"
+msgstr "Men�punkt: Fortschritt aus Dekordatei?"
+
+msgid "Menuitem progress type"
+msgstr "Men�punkt: Fortschritt Typ"
+
+msgid "Menuitem progress size"
+msgstr "Men�item: Fortschritt Gr��e"
+
+msgid "Time seconds font scale"
+msgstr "Uhrzeit: Sekunden Skalierung"
+
+msgid "Dimm on pause?"
+msgstr "Dimmen bei Pause?"
+
+msgid "Dimm on pause delay"
+msgstr "Dimmen bei Pause Verz�gerung"
+
+msgid "Dimm on pause opaque"
+msgstr "Dimmen bei Pause Undurchsichtigkeit"
+
+msgid "Replay border by decor-file?"
+msgstr "Wiedergabe: Rand aus Dekordatei?"
+
+msgid "Replay border type"
+msgstr "Wiedergabe: Rand Typ"
+
+msgid "Replay border size"
+msgstr "Wiedergabe: Rand Gr��e"
+
+msgid "Replay progress by decor-file?"
+msgstr "Wiedergabe: Fortschritt aus Dekordatei?"
+
+msgid "Replay progress size"
+msgstr "Wiedergabe: Fortschritt Gr��e"
+
+msgid "Volume border by decor-file?"
+msgstr "Lautst�rke: Rand aus Dekordatei?"
+
+msgid "Volume border type"
+msgstr "Lautst�rke: Rand Typ"
+
+msgid "Volume border size"
+msgstr "Lautst�rke: Rand Gr��e"
+
+msgid "Volume progress by decor-file?"
+msgstr "Lautst�rke: Fortschritt aus Dekordatei?"
+
+msgid "Volume progress type"
+msgstr "Lautst�rke: Fortschritt Typ"
+
+msgid "Volume progress size"
+msgstr "Lautst�rke: Fortschritt Gr��e"
+
+msgid "Tracks border by decor-file?"
+msgstr "Tonspur: Rand aus Dekordatei?"
+
+msgid "Tracks border type"
+msgstr "Tonspur: Rand Typ"
+
+msgid "Tracks border size"
+msgstr "Tonspur: Rand Gr��e"
+
+msgid "TVScraper settings"
+msgstr "TVScraper: Einstellungen"
+
+msgid "Channelinfo show poster?"
+msgstr "Kanalinfo zeige Poster?"
+
+msgid "Channelinfo poster size"
+msgstr "Kanalinfo Poster Gr��e"
+
+msgid "Replayinfo show poster?"
+msgstr "Wiedergabeinfo: zeige Poster?"
+
+msgid "Replayinfo poster size"
+msgstr "Wiedergabeinfo: Poster Gr��e"
+
+msgid "EPG info show poster?"
+msgstr "EPG-Info: zeige Poster?"
+
+msgid "recording info show poster?"
+msgstr "Aufnahmeinfo: zeige Poster?"
+
+msgid "EPG info show actors?"
+msgstr "EPG-Info: Zeige Schauspieler?"
+
+msgid "recording info show actors?"
+msgstr "Aufnahmeinfo: Zeige Schauspieler?"
+
+msgid "Enable main menu widgets"
+msgstr "Hauptmen�-Widgets anzeigen"
+
+msgid "Main menu item scale"
+msgstr "Hauptmen� Widgets: Breite (%)"
+
+msgid "Widget weather"
+msgstr "Wetter-Widget"
+
+msgid "Widget weather: enable"
+msgstr "Wetter-Widget anzeigen"
+
+msgid "Widget weather: position"
+msgstr "Wetter-Widget: Position"
+
+msgid "Widget weather: show days"
+msgstr "Wetter-Widget: Zeige Tage"
+
+msgid "Widget weather: type"
+msgstr "Wetter-Widget: Typ"
+
+msgid "Widget DVB devices"
+msgstr "DVB Ger�te-Widget"
+
+msgid "Widget DVB devices: enable"
+msgstr "DVB Ger�te-Widget: Anzeigen"
+
+msgid "Widget DVB devices: position"
+msgstr "DVB Ger�te-Widget: Position"
+
+msgid "Widget DVB devices: don't show unknown"
+msgstr "DVB Ger�te-Widget: Unbekannt ausblenden"
+
+msgid "Widget DVB devices: don't show not used"
+msgstr "DVB Ger�te-Widget: Nicht verw. ausblenden"
+
+msgid "Widget active timer"
+msgstr "Aktive Timer-Widget"
+
+msgid "Widget active timer: enable"
+msgstr "Aktive Timer-Widget: Anzeigen"
+
+msgid "Widget active timer: position"
+msgstr "Aktive Timer-Widget: Position"
+
+msgid "Widget active timer: max show"
+msgstr "Aktive Timer-Widget: Zeige max."
+
+msgid "Widget active timer: hide if empty"
+msgstr "Aktive Timer-Widget: Verstecken wenn Leer"
+
+msgid "Widget last recordings"
+msgstr "Letzte Aufnahmen-Widget"
+
+msgid "Widget last recordings: enable"
+msgstr "Letzte Aufnahmen-Widget: Anzeigen"
+
+msgid "Widget last recordings: position"
+msgstr "Letzte Aufnahmen-Widget: Position"
+
+msgid "Widget last recordings: max show"
+msgstr "Letzte Aufnahmen-Widget: Zeige max."
+
+msgid "Widget timer conflicts"
+msgstr "Timerkonflikte-Widget"
+
+msgid "Widget timer conflicts: enable"
+msgstr "Timerkonflikte-Widget: Anzeigen"
+
+msgid "Widget timer conflicts: position"
+msgstr "Timerkonflikte-Widget: Position"
+
+msgid "Widget timer conflicts: hide if empty"
+msgstr "Timerkonflikte-Widget: Verstecken wenn Leer"
+
+msgid "Widget system information"
+msgstr "Systeminformation-Widget"
+
+msgid "Widget system information: enable"
+msgstr "Systeminformation-Widget: Anzeigen"
+
+msgid "Widget system information: position"
+msgstr "Systeminformation-Widget: Position"
+
+msgid "Widget system updates"
+msgstr "Systemupdates-Widget"
+
+msgid "Widget system updates: enable"
+msgstr "Systemupdates-Widget: Anzeigen"
+
+msgid "Widget system updates: position"
+msgstr "Systemupdates-Widget: Position"
+
+msgid "Widget system updates: hide if empty"
+msgstr "Systemupdates-Widget: Verstecken wenn Leer"
+
+msgid "Widget temperatures"
+msgstr "Temperaturen-Widget"
+
+msgid "Widget temperatures: enable"
+msgstr "Temperaturen-Widget: Anzeigen"
+
+msgid "Widget temperatures: position"
+msgstr "Temperaturen-Widget: Position"
+
+msgid "Widget custom commands"
+msgstr "Eigene Befehle-Widget"
+
+msgid "Widget custom commands: enable"
+msgstr "Eigene Befehle-Widget: Anzeigen"
+
+msgid "Widget custom commands: position"
+msgstr "Eigene Befehle-Widget: Position"
diff --git a/preview/Beige.png b/preview/Beige.png
new file mode 100644
index 0000000..bef0f65
Binary files /dev/null and b/preview/Beige.png differ
diff --git a/preview/Berry.png b/preview/Berry.png
new file mode 100644
index 0000000..55c2fc3
Binary files /dev/null and b/preview/Berry.png differ
diff --git a/preview/Blood.png b/preview/Blood.png
new file mode 100644
index 0000000..44b6018
Binary files /dev/null and b/preview/Blood.png differ
diff --git a/preview/Blue.png b/preview/Blue.png
new file mode 100644
index 0000000..bebac69
Binary files /dev/null and b/preview/Blue.png differ
diff --git a/preview/Cappuchino.png b/preview/Cappuchino.png
new file mode 100644
index 0000000..b043da9
Binary files /dev/null and b/preview/Cappuchino.png differ
diff --git a/preview/Chocolate.png b/preview/Chocolate.png
new file mode 100644
index 0000000..2adbbc3
Binary files /dev/null and b/preview/Chocolate.png differ
diff --git a/preview/Cyan.png b/preview/Cyan.png
new file mode 100644
index 0000000..010620d
Binary files /dev/null and b/preview/Cyan.png differ
diff --git a/preview/DeepBlue.png b/preview/DeepBlue.png
new file mode 100644
index 0000000..12b36c0
Binary files /dev/null and b/preview/DeepBlue.png differ
diff --git a/preview/Fog.png b/preview/Fog.png
new file mode 100644
index 0000000..b9c0b48
Binary files /dev/null and b/preview/Fog.png differ
diff --git a/preview/Grapefruit.png b/preview/Grapefruit.png
new file mode 100644
index 0000000..c2647b6
Binary files /dev/null and b/preview/Grapefruit.png differ
diff --git a/preview/Green.png b/preview/Green.png
new file mode 100644
index 0000000..ed3a2b8
Binary files /dev/null and b/preview/Green.png differ
diff --git a/preview/Green2.png b/preview/Green2.png
new file mode 100644
index 0000000..dd2e601
Binary files /dev/null and b/preview/Green2.png differ
diff --git a/preview/Grey.png b/preview/Grey.png
new file mode 100644
index 0000000..0841a90
Binary files /dev/null and b/preview/Grey.png differ
diff --git a/preview/HelloKitty.png b/preview/HelloKitty.png
new file mode 100644
index 0000000..5c54295
Binary files /dev/null and b/preview/HelloKitty.png differ
diff --git a/preview/HelloKitty2.png b/preview/HelloKitty2.png
new file mode 100644
index 0000000..547692b
Binary files /dev/null and b/preview/HelloKitty2.png differ
diff --git a/preview/Indigo.png b/preview/Indigo.png
new file mode 100644
index 0000000..3cc2df3
Binary files /dev/null and b/preview/Indigo.png differ
diff --git a/preview/LightBlue.png b/preview/LightBlue.png
new file mode 100644
index 0000000..07e8e60
Binary files /dev/null and b/preview/LightBlue.png differ
diff --git a/preview/LightGreen.png b/preview/LightGreen.png
new file mode 100644
index 0000000..661febb
Binary files /dev/null and b/preview/LightGreen.png differ
diff --git a/preview/Mint.png b/preview/Mint.png
new file mode 100644
index 0000000..f986135
Binary files /dev/null and b/preview/Mint.png differ
diff --git a/preview/Nuts.png b/preview/Nuts.png
new file mode 100644
index 0000000..20adbe7
Binary files /dev/null and b/preview/Nuts.png differ
diff --git a/preview/Olive.png b/preview/Olive.png
new file mode 100644
index 0000000..bdaedcf
Binary files /dev/null and b/preview/Olive.png differ
diff --git a/preview/Orange.png b/preview/Orange.png
new file mode 100644
index 0000000..3786a0c
Binary files /dev/null and b/preview/Orange.png differ
diff --git a/preview/Pflaume.png b/preview/Pflaume.png
new file mode 100644
index 0000000..c7febd5
Binary files /dev/null and b/preview/Pflaume.png differ
diff --git a/preview/Pumpkin.png b/preview/Pumpkin.png
new file mode 100644
index 0000000..016ee83
Binary files /dev/null and b/preview/Pumpkin.png differ
diff --git a/preview/Purple.png b/preview/Purple.png
new file mode 100644
index 0000000..21ff7d9
Binary files /dev/null and b/preview/Purple.png differ
diff --git a/preview/PurpleGrey.png b/preview/PurpleGrey.png
new file mode 100644
index 0000000..aed53ca
Binary files /dev/null and b/preview/PurpleGrey.png differ
diff --git a/preview/Rauchglas.png b/preview/Rauchglas.png
new file mode 100644
index 0000000..9b39cba
Binary files /dev/null and b/preview/Rauchglas.png differ
diff --git a/preview/Red.png b/preview/Red.png
new file mode 100644
index 0000000..1829c5c
Binary files /dev/null and b/preview/Red.png differ
diff --git a/preview/Terra.png b/preview/Terra.png
new file mode 100644
index 0000000..22c3168
Binary files /dev/null and b/preview/Terra.png differ
diff --git a/preview/White.png b/preview/White.png
new file mode 100644
index 0000000..d2bc1c2
Binary files /dev/null and b/preview/White.png differ
diff --git a/preview/XMAS.png b/preview/XMAS.png
new file mode 100644
index 0000000..3083f68
Binary files /dev/null and b/preview/XMAS.png differ
diff --git a/preview/Zitrone.png b/preview/Zitrone.png
new file mode 100644
index 0000000..5130336
Binary files /dev/null and b/preview/Zitrone.png differ
diff --git a/services/epgsearch.h b/services/epgsearch.h
new file mode 100644
index 0000000..de29299
--- /dev/null
+++ b/services/epgsearch.h
@@ -0,0 +1,167 @@
+/*
+Copyright (C) 2004-2007 Christian Wieninger
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+Or, point your browser to http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+
+The author can be reached at cwieninger at gmx.de
+
+The project's page is at http://winni.vdr-developer.org/epgsearch
+*/
+
+#ifndef EPGSEARCHSERVICES_INC
+#define EPGSEARCHSERVICES_INC
+
+// Added by Andreas Mair (mail _AT_ andreas _DOT_ vdr-developer _DOT_ org)
+#define EPGSEARCH_SEARCHRESULTS_SERVICE_STRING_ID "Epgsearch-searchresults-v1.0"
+#define EPGSEARCH_LASTCONFLICTINFO_SERVICE_STRING_ID "Epgsearch-lastconflictinfo-v1.0"
+
+#include <string>
+#include <list>
+#include <memory>
+#include <set>
+#include <vdr/osdbase.h>
+
+// Data structure for service "Epgsearch-search-v1.0"
+struct Epgsearch_search_v1_0
+{
+// in
+ char* query; // search term
+ int mode; // search mode (0=phrase, 1=and, 2=or, 3=regular expression)
+ int channelNr; // channel number to search in (0=any)
+ bool useTitle; // search in title
+ bool useSubTitle; // search in subtitle
+ bool useDescription; // search in description
+// out
+ cOsdMenu* pResultMenu; // pointer to the menu of results
+};
+
+// Data structure for service "Epgsearch-exttimeredit-v1.0"
+struct Epgsearch_exttimeredit_v1_0
+{
+// in
+ cTimer* timer; // pointer to the timer to edit
+ bool bNew; // flag that indicates, if this is a new timer or an existing one
+ const cEvent* event; // pointer to the event corresponding to this timer (may be NULL)
+// out
+ cOsdMenu* pTimerMenu; // pointer to the menu of results
+};
+
+// Data structure for service "Epgsearch-updatesearchtimers-v1.0"
+struct Epgsearch_updatesearchtimers_v1_0
+{
+// in
+ bool showMessage; // inform via osd when finished?
+};
+
+// Data structure for service "Epgsearch-osdmessage-v1.0"
+struct Epgsearch_osdmessage_v1_0
+{
+// in
+ char* message; // the message to display
+ eMessageType type;
+};
+
+// Data structure for service "EpgsearchMenu-v1.0"
+struct EpgSearchMenu_v1_0
+{
+// in
+// out
+ cOsdMenu* Menu; // pointer to the menu
+};
+
+// Data structure for service "Epgsearch-lastconflictinfo-v1.0"
+struct Epgsearch_lastconflictinfo_v1_0
+{
+// in
+// out
+ time_t nextConflict; // next conflict date, 0 if none
+ int relevantConflicts; // number of relevant conflicts
+ int totalConflicts; // total number of conflicts
+};
+
+// Data structure for service "Epgsearch-searchresults-v1.0"
+struct Epgsearch_searchresults_v1_0
+{
+// in
+ char* query; // search term
+ int mode; // search mode (0=phrase, 1=and, 2=or, 3=regular expression)
+ int channelNr; // channel number to search in (0=any)
+ bool useTitle; // search in title
+ bool useSubTitle; // search in subtitle
+ bool useDescription; // search in description
+// out
+
+ class cServiceSearchResult : public cListObject
+ {
+ public:
+ const cEvent* event;
+ cServiceSearchResult(const cEvent* Event) : event(Event) {}
+ };
+
+ cList<cServiceSearchResult>* pResultList; // pointer to the results
+};
+
+// Data structure for service "Epgsearch-switchtimer-v1.0"
+struct Epgsearch_switchtimer_v1_0
+{
+// in
+ const cEvent* event;
+ int mode; // mode (0=query existance, 1=add/modify, 2=delete)
+// in/out
+ int switchMinsBefore;
+ int announceOnly;
+// out
+ bool success; // result
+};
+
+// Data structures for service "Epgsearch-services-v1.0"
+class cServiceHandler
+{
+ public:
+ virtual std::list<std::string> SearchTimerList() = 0;
+ // returns a list of search timer entries in the same format as used in epgsearch.conf
+ virtual int AddSearchTimer(const std::string&) = 0;
+ // adds a new search timer and returns its ID (-1 on error)
+ virtual bool ModSearchTimer(const std::string&) = 0;
+ // edits an existing search timer and returns success
+ virtual bool DelSearchTimer(int) = 0;
+ // deletes search timer with given ID and returns success
+ virtual std::list<std::string> QuerySearchTimer(int) = 0;
+ // returns the search result of the searchtimer with given ID in the same format as used in SVDRP command 'QRYS' (->MANUAL)
+ virtual std::list<std::string> QuerySearch(std::string) = 0;
+ // returns the search result of the searchtimer with given settings in the same format as used in SVDRP command 'QRYS' (->MANUAL)
+ virtual std::list<std::string> ExtEPGInfoList() = 0;
+ // returns a list of extended EPG categories in the same format as used in epgsearchcats.conf
+ virtual std::list<std::string> ChanGrpList() = 0;
+ // returns a list of channel groups maintained by epgsearch
+ virtual std::list<std::string> BlackList() = 0;
+ // returns a list of blacklists in the same format as used in epgsearchblacklists.conf
+ virtual std::set<std::string> DirectoryList() = 0;
+ // List of all recording directories used in recordings, timers, search timers or in epgsearchdirs.conf
+ virtual ~cServiceHandler() {}
+ // Read a setup value
+ virtual std::string ReadSetupValue(const std::string& entry) = 0;
+ // Write a setup value
+ virtual bool WriteSetupValue(const std::string& entry, const std::string& value) = 0;
+};
+
+struct Epgsearch_services_v1_0
+{
+// in/out
+ std::auto_ptr<cServiceHandler> handler;
+};
+
+#endif
diff --git a/services/scraper2vdr.h b/services/scraper2vdr.h
new file mode 100644
index 0000000..703d077
--- /dev/null
+++ b/services/scraper2vdr.h
@@ -0,0 +1,194 @@
+#ifndef __SCRAPER2VDRSERVICES_H
+#define __SCRAPER2VDRSERVICES_H
+
+#include <vdr/epg.h>
+#include <vdr/recording.h>
+
+enum tvType {
+ tSeries,
+ tMovie,
+ tNone,
+};
+
+/*********************************************************************
+* Helper Structures
+*********************************************************************/
+class cTvMedia {
+public:
+ cTvMedia(void) {
+ path = "";
+ width = height = 0;
+ };
+ std::string path;
+ int width;
+ int height;
+};
+
+class cEpisode {
+public:
+ cEpisode(void) {
+ number = 0;
+ season = 0;
+ name = "";
+ firstAired = "";
+ guestStars = "";
+ overview = "";
+ rating = 0.0;
+ };
+ int number;
+ int season;
+ std::string name;
+ std::string firstAired;
+ std::string guestStars;
+ std::string overview;
+ float rating;
+ cTvMedia episodeImage;
+};
+
+class cActor {
+public:
+ cActor(void) {
+ name = "";
+ role = "";
+ };
+ std::string name;
+ std::string role;
+ cTvMedia actorThumb;
+};
+
+/*********************************************************************
+* Data Structures for Service Calls
+*********************************************************************/
+
+// Data structure for service "GetEventType"
+class ScraperGetEventType {
+public:
+ ScraperGetEventType(void) {
+ event = NULL;
+ recording = NULL;
+ type = tNone;
+ movieId = 0;
+ seriesId = 0;
+ episodeId = 0;
+ };
+// in
+ const cEvent *event; // check type for this event
+ const cRecording *recording; // or for this recording
+//out
+ tvType type; //typeSeries or typeMovie
+ int movieId;
+ int seriesId;
+ int episodeId;
+};
+
+//Data structure for full series and episode information
+class cMovie {
+public:
+ cMovie(void) {
+ title = "";
+ originalTitle = "";
+ tagline = "";
+ overview = "";
+ adult = false;
+ collectionName = "";
+ budget = 0;
+ revenue = 0;
+ genres = "";
+ homepage = "";
+ releaseDate = "";
+ runtime = 0;
+ popularity = 0.0;
+ voteAverage = 0.0;
+ };
+//IN
+ int movieId; // movieId fetched from ScraperGetEventType
+//OUT
+ std::string title;
+ std::string originalTitle;
+ std::string tagline;
+ std::string overview;
+ bool adult;
+ std::string collectionName;
+ int budget;
+ int revenue;
+ std::string genres;
+ std::string homepage;
+ std::string releaseDate;
+ int runtime;
+ float popularity;
+ float voteAverage;
+ cTvMedia poster;
+ cTvMedia fanart;
+ cTvMedia collectionPoster;
+ cTvMedia collectionFanart;
+ std::vector<cActor> actors;
+};
+
+//Data structure for full series and episode information
+class cSeries {
+public:
+ cSeries(void) {
+ seriesId = 0;
+ episodeId = 0;
+ name = "";
+ overview = "";
+ firstAired = "";
+ network = "";
+ genre = "";
+ rating = 0.0;
+ status = "";
+ };
+//IN
+ int seriesId; // seriesId fetched from ScraperGetEventType
+ int episodeId; // episodeId fetched from ScraperGetEventType
+//OUT
+ std::string name;
+ std::string overview;
+ std::string firstAired;
+ std::string network;
+ std::string genre;
+ float rating;
+ std::string status;
+ cEpisode episode;
+ std::vector<cActor> actors;
+ std::vector<cTvMedia> posters;
+ std::vector<cTvMedia> banners;
+ std::vector<cTvMedia> fanarts;
+ cTvMedia seasonPoster;
+};
+
+// Data structure for service "GetPosterBanner"
+class ScraperGetPosterBanner {
+public:
+ ScraperGetPosterBanner(void) {
+ type = tNone;
+ };
+// in
+ const cEvent *event; // check type for this event
+//out
+ tvType type; //typeSeries or typeMovie
+ cTvMedia poster;
+ cTvMedia banner;
+};
+
+// Data structure for service "GetPoster"
+class ScraperGetPoster {
+public:
+// in
+ const cEvent *event; // check type for this event
+ const cRecording *recording; // or for this recording
+//out
+ cTvMedia poster;
+};
+
+// Data structure for service "GetPosterThumb"
+class ScraperGetPosterThumb {
+public:
+// in
+ const cEvent *event; // check type for this event
+ const cRecording *recording; // or for this recording
+//out
+ cTvMedia poster;
+};
+
+#endif //__SCRAPER2VDRSERVICES_H
\ No newline at end of file
diff --git a/setup.c b/setup.c
new file mode 100644
index 0000000..b9f8f58
--- /dev/null
+++ b/setup.c
@@ -0,0 +1,1370 @@
+#include "setup.h"
+
+cStringList Bordertypes;
+cStringList DiskUsages;
+cStringList Progresstypes;
+cStringList MenuChannelViews;
+cStringList MenuTimerViews;
+cStringList MenuEventViews;
+cStringList MenuRecordingViews;
+cStringList DecorDescriptions;
+cStringList ConfigFiles;
+cStringList MessageColorPositions;
+cStringList ScrollerTypes;
+cStringList ScrollBarTypes;
+cStringList DiskUsageFree;
+cStringList ChannelTimeLefts;
+cStringList WeatherTypes;
+
+int ConfigFileSelection;
+
+cFlatSetup::cFlatSetup(void) {
+ SetupConfig = Config;
+ ItemLastSel = -1;
+ Setup();
+}
+
+cFlatSetup::~cFlatSetup() {
+
+}
+
+void cFlatSetup::Setup(void) {
+ Clear();
+ Bordertypes.Clear();
+ Progresstypes.Clear();
+
+ Bordertypes.Clear();
+ Bordertypes.Append( strdup(tr("none")) );
+ Bordertypes.Append( strdup(tr("rect")) );
+ Bordertypes.Append( strdup(tr("round")) );
+ Bordertypes.Append( strdup(tr("invert round")) );
+ Bordertypes.Append( strdup(tr("rect + alpha blend")) );
+ Bordertypes.Append( strdup(tr("round + alpha blend")) );
+ Bordertypes.Append( strdup(tr("invert round + alpha blend")) );
+
+ Progresstypes.Clear();
+ Progresstypes.Append( strdup(tr("small line + big line")) );
+ Progresstypes.Append( strdup(tr("big line")) );
+ Progresstypes.Append( strdup(tr("big line + outline")) );
+ Progresstypes.Append( strdup(tr("small line + big line + dot")) );
+ Progresstypes.Append( strdup(tr("big line + dot")) );
+ Progresstypes.Append( strdup(tr("big line + outline + dot")) );
+ Progresstypes.Append( strdup(tr("small line + dot")) );
+ Progresstypes.Append( strdup(tr("outline + dot")) );
+ Progresstypes.Append( strdup(tr("small line + big line + alpha blend")) );
+ Progresstypes.Append( strdup(tr("big line + alpha blend")) );
+
+ DiskUsages.Clear();
+ DiskUsages.Append( strdup(tr("do not show")) );
+ DiskUsages.Append( strdup(tr("timer & recording menu")) );
+ DiskUsages.Append( strdup(tr("always on the menu")) );
+ DiskUsages.Append( strdup(tr("always show")) );
+
+ DiskUsageFree.Clear();
+ DiskUsageFree.Append( strdup(tr("occupied")) );
+ DiskUsageFree.Append( strdup(tr("free")) );
+
+ MenuChannelViews.Clear();
+ MenuChannelViews.Append( strdup(tr("VDR default")) );
+ MenuChannelViews.Append( strdup(tr("flatPlus long")) );
+ MenuChannelViews.Append( strdup(tr("flatPlus long + EPG")) );
+ MenuChannelViews.Append( strdup(tr("flatPlus short")) );
+ MenuChannelViews.Append( strdup(tr("flatPlus short + EPG")) );
+
+ MenuTimerViews.Clear();
+ MenuTimerViews.Append( strdup(tr("VDR default")) );
+ MenuTimerViews.Append( strdup(tr("flatPlus long")) );
+ MenuTimerViews.Append( strdup(tr("flatPlus short")) );
+ MenuTimerViews.Append( strdup(tr("flatPlus short + EPG")) );
+
+ MenuEventViews.Clear();
+ MenuEventViews.Append( strdup(tr("VDR default")) );
+ MenuEventViews.Append( strdup(tr("flatPlus long")) );
+ MenuEventViews.Append( strdup(tr("flatPlus short")) );
+ MenuEventViews.Append( strdup(tr("flatPlus short + EPG")) );
+
+ MenuRecordingViews.Clear();
+ MenuRecordingViews.Append( strdup(tr("VDR default")) );
+ MenuRecordingViews.Append( strdup(tr("flatPlus long")) );
+ MenuRecordingViews.Append( strdup(tr("flatPlus short")) );
+ MenuRecordingViews.Append( strdup(tr("flatPlus short + Info")) );
+
+ MessageColorPositions.Clear();
+ MessageColorPositions.Append( strdup(tr("vertical")) );
+ MessageColorPositions.Append( strdup(tr("hoizontal")) );
+
+ ScrollerTypes.Clear();
+ ScrollerTypes.Append( strdup( tr("carriage return")) );
+ ScrollerTypes.Append( strdup( tr("left-right-left")) );
+
+ ScrollBarTypes.Clear();
+ ScrollBarTypes.Append( strdup( tr("left line + rect bar")) );
+ ScrollBarTypes.Append( strdup( tr("left line + round bar")) );
+ ScrollBarTypes.Append( strdup( tr("middle line + rect bar")) );
+ ScrollBarTypes.Append( strdup( tr("middle line + round bar")) );
+ ScrollBarTypes.Append( strdup( tr("outline + rect bar")) );
+ ScrollBarTypes.Append( strdup( tr("outline + round bar")) );
+ ScrollBarTypes.Append( strdup( tr("rect bar")) );
+ ScrollBarTypes.Append( strdup( tr("round bar")) );
+
+ ChannelTimeLefts.Clear();
+ ChannelTimeLefts.Append( strdup( tr("past / remaining")) );
+ ChannelTimeLefts.Append( strdup( tr("past")) );
+ ChannelTimeLefts.Append( strdup( tr("remaining")) );
+
+ WeatherTypes.Clear();
+ WeatherTypes.Append( strdup( tr("short")) );
+ WeatherTypes.Append( strdup( tr("long")) );
+
+ Add(new cOsdItem(tr("General settings"), osUnknown, true));
+ Add(new cOsdItem(tr("Channelinfo settings"), osUnknown, true));
+ Add(new cOsdItem(tr("Menu settings"), osUnknown, true));
+ Add(new cOsdItem(tr("Replay settings"), osUnknown, true));
+ Add(new cOsdItem(tr("Volume settings"), osUnknown, true));
+ Add(new cOsdItem(tr("Tracks settings"), osUnknown, true));
+
+ // first try scraper2vdr
+ static cPlugin *pScraper = cPluginManager::GetPlugin("scraper2vdr");
+ if( !pScraper ) // if it doesn't exit, try tvscraper
+ pScraper = cPluginManager::GetPlugin("tvscraper");
+ if( pScraper )
+ Add(new cOsdItem(tr("TVScraper / scraper2vdr settings"), osUnknown, true));
+ else
+ Add(new cOsdItem(tr("TVScraper / scraper2vdr not installed"), osUnknown, false));
+
+ Add(new cOsdItem(tr("Main menu widgets settings"), osUnknown, true));
+
+ if( ItemLastSel >= 0 ) {
+ SetCurrent(Get(ItemLastSel));
+ ItemLastSel = -1;
+ }
+
+ Display();
+}
+
+eOSState cFlatSetup::ProcessKey(eKeys Key) {
+ bool hadSubMenu = HasSubMenu();
+ eOSState state = cMenuSetupPage::ProcessKey(Key);
+ if (hadSubMenu && Key == kOk)
+ Store();
+ if (!hadSubMenu && (state == osUnknown || Key == kOk)) {
+ if ((Key == kOk && !hadSubMenu)) {
+ const char* ItemText = Get(Current())->Text();
+ if (strcmp(ItemText, tr("General settings")) == 0)
+ state = AddSubMenu(new cFlatSetupGeneral(&SetupConfig));
+ if (strcmp(ItemText, tr("Channelinfo settings")) == 0)
+ state = AddSubMenu(new cFlatSetupChannelInfo(&SetupConfig));
+ if (strcmp(ItemText, tr("Menu settings")) == 0)
+ state = AddSubMenu(new cFlatSetupMenu(&SetupConfig));
+ if (strcmp(ItemText, tr("Replay settings")) == 0)
+ state = AddSubMenu(new cFlatSetupReplay(&SetupConfig));
+ if (strcmp(ItemText, tr("Volume settings")) == 0)
+ state = AddSubMenu(new cFlatSetupVolume(&SetupConfig));
+ if (strcmp(ItemText, tr("Tracks settings")) == 0)
+ state = AddSubMenu(new cFlatSetupTracks(&SetupConfig));
+ if (strcmp(ItemText, tr("TVScraper / scraper2vdr settings")) == 0)
+ state = AddSubMenu(new cFlatSetupTvsraper(&SetupConfig));
+ if (strcmp(ItemText, tr("Main menu widgets settings")) == 0)
+ state = AddSubMenu(new cFlatSetupMMWidget(&SetupConfig));
+ }
+ }
+ return state;
+}
+
+void cFlatSetup::Store(void) {
+ Config = SetupConfig;
+ SetupStore("decorBorderChannelByTheme", Config.decorBorderChannelByTheme);
+ SetupStore("decorBorderChannelTypeUser", Config.decorBorderChannelTypeUser);
+ SetupStore("decorBorderChannelSizeUser", Config.decorBorderChannelSizeUser);
+ SetupStore("decorBorderChannelEPGByTheme", Config.decorBorderChannelEPGByTheme);
+ SetupStore("decorBorderChannelEPGTypeUser", Config.decorBorderChannelEPGTypeUser);
+ SetupStore("decorBorderChannelEPGSizeUser", Config.decorBorderChannelEPGSizeUser);
+ SetupStore("decorBorderTopBarByTheme", Config.decorBorderTopBarByTheme);
+ SetupStore("decorBorderTopBarTypeUser", Config.decorBorderTopBarTypeUser);
+ SetupStore("decorBorderTopBarSizeUser", Config.decorBorderTopBarSizeUser);
+ SetupStore("decorBorderMessageByTheme", Config.decorBorderMessageByTheme);
+ SetupStore("decorBorderMessageTypeUser", Config.decorBorderMessageTypeUser);
+ SetupStore("decorBorderMessageSizeUser", Config.decorBorderMessageSizeUser);
+ SetupStore("decorBorderVolumeByTheme", Config.decorBorderVolumeByTheme);
+ SetupStore("decorBorderVolumeTypeUser", Config.decorBorderVolumeTypeUser);
+ SetupStore("decorBorderVolumeSizeUser", Config.decorBorderVolumeSizeUser);
+ SetupStore("decorBorderTrackByTheme", Config.decorBorderTrackByTheme);
+ SetupStore("decorBorderTrackTypeUser", Config.decorBorderTrackTypeUser);
+ SetupStore("decorBorderTrackSizeUser", Config.decorBorderTrackSizeUser);
+ SetupStore("decorBorderReplayByTheme", Config.decorBorderReplayByTheme);
+ SetupStore("decorBorderReplayTypeUser", Config.decorBorderReplayTypeUser);
+ SetupStore("decorBorderReplaySizeUser", Config.decorBorderReplaySizeUser);
+ SetupStore("decorBorderMenuItemByTheme", Config.decorBorderMenuItemByTheme);
+ SetupStore("decorBorderMenuItemTypeUser", Config.decorBorderMenuItemTypeUser);
+ SetupStore("decorBorderMenuItemSizeUser", Config.decorBorderMenuItemSizeUser);
+ SetupStore("decorBorderMenuContentHeadByTheme", Config.decorBorderMenuContentHeadByTheme);
+ SetupStore("decorBorderMenuContentHeadTypeUser", Config.decorBorderMenuContentHeadTypeUser);
+ SetupStore("decorBorderMenuContentHeadSizeUser", Config.decorBorderMenuContentHeadSizeUser);
+ SetupStore("decorBorderMenuContentByTheme", Config.decorBorderMenuContentByTheme);
+ SetupStore("decorBorderMenuContentTypeUser", Config.decorBorderMenuContentTypeUser);
+ SetupStore("decorBorderMenuContentSizeUser", Config.decorBorderMenuContentSizeUser);
+ SetupStore("decorBorderButtonByTheme", Config.decorBorderButtonByTheme);
+ SetupStore("decorBorderButtonTypeUser", Config.decorBorderButtonTypeUser);
+ SetupStore("decorBorderButtonSizeUser", Config.decorBorderButtonSizeUser);
+ SetupStore("decorProgressChannelByTheme", Config.decorProgressChannelByTheme);
+ SetupStore("decorProgressChannelTypeUser", Config.decorProgressChannelTypeUser);
+ SetupStore("decorProgressChannelSizeUser", Config.decorProgressChannelSizeUser);
+ SetupStore("decorProgressVolumeByTheme", Config.decorProgressVolumeByTheme);
+ SetupStore("decorProgressVolumeTypeUser", Config.decorProgressVolumeTypeUser);
+ SetupStore("decorProgressVolumeSizeUser", Config.decorProgressVolumeSizeUser);
+ SetupStore("decorProgressMenuItemByTheme", Config.decorProgressMenuItemByTheme);
+ SetupStore("decorProgressMenuItemTypeUser", Config.decorProgressMenuItemTypeUser);
+ SetupStore("decorProgressMenuItemSizeUser", Config.decorProgressMenuItemSizeUser);
+ SetupStore("decorProgressReplayByTheme", Config.decorProgressReplayByTheme);
+ SetupStore("decorProgressReplayTypeUser", Config.decorProgressReplayTypeUser);
+ SetupStore("decorProgressReplaySizeUser", Config.decorProgressReplaySizeUser);
+ SetupStore("decorProgressSignalByTheme", Config.decorProgressSignalByTheme);
+ SetupStore("decorProgressSignalTypeUser", Config.decorProgressSignalTypeUser);
+ SetupStore("decorProgressSignalSizeUser", Config.decorProgressSignalSizeUser);
+ SetupStore("decorScrollBarByTheme", Config.decorScrollBarByTheme);
+ SetupStore("decorScrollBarTypeUser", Config.decorScrollBarTypeUser);
+ SetupStore("decorScrollBarSizeUser", Config.decorScrollBarSizeUser);
+ SetupStore("ButtonsShowEmpty", Config.ButtonsShowEmpty);
+ SetupStore("ChannelIconsShow", Config.ChannelIconsShow);
+ SetupStore("SignalQualityShow", Config.SignalQualityShow);
+ SetupStore("DiskUsageShow", Config.DiskUsageShow);
+ SetupStore("MenuItemPadding", Config.MenuItemPadding);
+ SetupStore("marginOsdVer", Config.marginOsdVer);
+ SetupStore("marginOsdHor", Config.marginOsdHor);
+ SetupStore("TopBarFontSize", dtoa(Config.TopBarFontSize));
+ SetupStore("MessageOffset", Config.MessageOffset);
+ SetupStore("MenuContentFullSize", Config.MenuContentFullSize);
+ SetupStore("ChannelResolutionAspectShow", Config.ChannelResolutionAspectShow);
+ SetupStore("ChannelFormatShow", Config.ChannelFormatShow);
+ SetupStore("RecordingResolutionAspectShow", Config.RecordingResolutionAspectShow);
+ SetupStore("RecordingFormatShow", Config.RecordingFormatShow);
+ SetupStore("RecordingAdditionalInfoShow", Config.RecordingAdditionalInfoShow);
+ SetupStore("EpgAdditionalInfoShow", Config.EpgAdditionalInfoShow);
+ SetupStore("TopBarRecordingShow", Config.TopBarRecordingShow);
+ SetupStore("MenuItemIconsShow", Config.MenuItemIconsShow);
+ SetupStore("TopBarMenuIconShow", Config.TopBarMenuIconShow);
+ SetupStore("DecorIndex", Config.DecorIndex);
+ SetupStore("MainMenuItemScale", dtoa(Config.MainMenuItemScale));
+ SetupStore("MenuChannelView", Config.MenuChannelView);
+ SetupStore("MenuTimerView", Config.MenuTimerView);
+ SetupStore("MenuEventView", Config.MenuEventView);
+ SetupStore("MenuRecordingView", Config.MenuRecordingView);
+ SetupStore("ChannelSimpleAspectFormat", Config.ChannelSimpleAspectFormat);
+ SetupStore("RecordingSimpleAspectFormat", Config.RecordingSimpleAspectFormat);
+ SetupStore("MenuItemRecordingClearPercent", Config.MenuItemRecordingClearPercent);
+ SetupStore("MenuItemRecordingShowFolderDate", Config.MenuItemRecordingShowFolderDate);
+ SetupStore("MenuItemParseTilde", Config.MenuItemParseTilde);
+ SetupStore("TopBarRecConflictsShow", Config.TopBarRecConflictsShow);
+ SetupStore("TopBarRecConflictsHigh", Config.TopBarRecConflictsHigh);
+ SetupStore("SignalQualityUseColors", Config.SignalQualityUseColors);
+ SetupStore("TVScraperChanInfoShowPoster", Config.TVScraperChanInfoShowPoster);
+ SetupStore("TVScraperChanInfoPosterSize", dtoa(Config.TVScraperChanInfoPosterSize));
+ SetupStore("TVScraperEPGInfoShowPoster", Config.TVScraperEPGInfoShowPoster);
+ SetupStore("TVScraperRecInfoShowPoster", Config.TVScraperEPGInfoShowPoster);
+ SetupStore("EpgRerunsShow", Config.EpgRerunsShow);
+ SetupStore("TVScraperEPGInfoShowActors", Config.TVScraperEPGInfoShowActors);
+ SetupStore("TVScraperRecInfoShowActors", Config.TVScraperRecInfoShowActors);
+ SetupStore("MessageColorPosition", Config.MessageColorPosition);
+ SetupStore("ScrollerEnable", Config.ScrollerEnable);
+ SetupStore("ScrollerStep", Config.ScrollerStep);
+ SetupStore("ScrollerDelay", Config.ScrollerDelay);
+ SetupStore("ScrollerType", Config.ScrollerType);
+ SetupStore("DiskUsageShort", Config.DiskUsageShort);
+ SetupStore("DiskUsageFree", Config.DiskUsageFree);
+ SetupStore("TopBarFontClockScale", dtoa(Config.TopBarFontClockScale));
+ SetupStore("TimeSecsScale", dtoa(Config.TimeSecsScale));
+ SetupStore("ChannelBitrateShow", Config.ChannelBitrateShow);
+ SetupStore("ChannelBitrateShowCalcInterval", Config.ChannelBitrateShowCalcInterval);
+ SetupStore("TopBarHideClockText", Config.TopBarHideClockText);
+ SetupStore("ChannelTimeLeft", Config.ChannelTimeLeft);
+ SetupStore("MenuFullOsd", Config.MenuFullOsd);
+ SetupStore("MenuRecordingShowCount", Config.MenuRecordingShowCount);
+ SetupStore("MenuTimerShowCount", Config.MenuTimerShowCount);
+ SetupStore("MenuChannelShowCount", Config.MenuChannelShowCount);
+ SetupStore("ShortRecordingCount", Config.ShortRecordingCount);
+ SetupStore("MainMenuWidgetsEnable", Config.MainMenuWidgetsEnable);
+ SetupStore("MainMenuWidgetDVBDevicesShow", Config.MainMenuWidgetDVBDevicesShow);
+ SetupStore("MainMenuWidgetDVBDevicesPosition", Config.MainMenuWidgetDVBDevicesPosition);
+ SetupStore("MainMenuWidgetActiveTimerShow", Config.MainMenuWidgetActiveTimerShow);
+ SetupStore("MainMenuWidgetActiveTimerPosition", Config.MainMenuWidgetActiveTimerPosition);
+ SetupStore("MainMenuWidgetActiveTimerMaxCount", Config.MainMenuWidgetActiveTimerMaxCount);
+ SetupStore("MainMenuWidgetActiveTimerHideEmpty", Config.MainMenuWidgetActiveTimerHideEmpty);
+ SetupStore("MainMenuWidgetLastRecShow", Config.MainMenuWidgetLastRecShow);
+ SetupStore("MainMenuWidgetLastRecPosition", Config.MainMenuWidgetLastRecPosition);
+ SetupStore("MainMenuWidgetLastRecMaxCount", Config.MainMenuWidgetLastRecMaxCount);
+ SetupStore("MainMenuWidgetTimerConflictsShow", Config.MainMenuWidgetTimerConflictsShow);
+ SetupStore("MainMenuWidgetTimerConflictsPosition", Config.MainMenuWidgetTimerConflictsPosition);
+ SetupStore("MainMenuWidgetTimerConflictsHideEmpty", Config.MainMenuWidgetTimerConflictsHideEmpty);
+ SetupStore("MainMenuWidgetSystemInfoShow", Config.MainMenuWidgetSystemInfoShow);
+ SetupStore("MainMenuWidgetSystemInfoPosition", Config.MainMenuWidgetSystemInfoPosition);
+ SetupStore("MainMenuWidgetSystemUpdatesShow", Config.MainMenuWidgetSystemUpdatesShow);
+ SetupStore("MainMenuWidgetSystemUpdatesPosition", Config.MainMenuWidgetSystemUpdatesPosition);
+ SetupStore("MainMenuWidgetSystemUpdatesHideIfZero", Config.MainMenuWidgetSystemUpdatesHideIfZero);
+ SetupStore("MainMenuWidgetTemperaturesShow", Config.MainMenuWidgetTemperaturesShow);
+ SetupStore("MainMenuWidgetTemperaturesPosition", Config.MainMenuWidgetTemperaturesPosition);
+ SetupStore("MainMenuWidgetCommandShow", Config.MainMenuWidgetCommandShow);
+ SetupStore("MainMenuWidgetCommandPosition", Config.MainMenuWidgetCommandPosition);
+ SetupStore("MainMenuWidgetWeatherShow", Config.MainMenuWidgetWeatherShow);
+ SetupStore("MainMenuWidgetWeatherPosition", Config.MainMenuWidgetWeatherPosition);
+ SetupStore("MainMenuWidgetWeatherDays", Config.MainMenuWidgetWeatherDays);
+ SetupStore("MainMenuWidgetWeatherType", Config.MainMenuWidgetWeatherType);
+ SetupStore("ChannelWeatherShow", Config.ChannelWeatherShow);
+ SetupStore("PlaybackWeatherShow", Config.PlaybackWeatherShow);
+ SetupStore("WeatherFontSize", dtoa(Config.WeatherFontSize));
+ SetupStore("TVScraperReplayInfoShowPoster", Config.TVScraperReplayInfoShowPoster);
+ SetupStore("TVScraperReplayInfoPosterSize", dtoa(Config.TVScraperReplayInfoPosterSize));
+ SetupStore("MainMenuWidgetDVBDevicesDiscardUnknown", Config.MainMenuWidgetDVBDevicesDiscardUnknown);
+ SetupStore("MainMenuWidgetDVBDevicesDiscardNotUsed", Config.MainMenuWidgetDVBDevicesDiscardNotUsed);
+ SetupStore("RecordingDimmOnPause", Config.RecordingDimmOnPause);
+ SetupStore("RecordingDimmOnPauseDelay", Config.RecordingDimmOnPauseDelay);
+ SetupStore("RecordingDimmOnPauseOpaque", Config.RecordingDimmOnPauseOpaque);
+
+ Config.Init();
+}
+
+void cFlatSetupGeneral::LoadConfigFile(void) {
+ cString Filename = cString::sprintf("%s/configs/%s", cPlugin::ConfigDirectory(PLUGIN_NAME_I18N), ConfigFiles[ConfigFileSelection]);
+
+ FILE *f = fopen(Filename, "r");
+ if( f ) {
+ int line = 0;
+ char *s;
+ cReadLine ReadLine;
+ while( (s = ReadLine.Read(f)) != NULL ) {
+ line++;
+ char *p = strchr(s, '#');
+ if (p)
+ *p = 0;
+ s = stripspace(skipspace(s));
+ if (!isempty(s)) {
+ char *n = s;
+ char *v = strchr(s, '=');
+ if (v) {
+ *v++ = 0;
+ n = stripspace(skipspace(n));
+ v = stripspace(skipspace(v));
+ bool success = SetupParse(n, v);
+ if( !success )
+ dsyslog("flatplus: failed to load config: %s with value: %s", n, v);
+ }
+ }
+ }
+ } else
+ dsyslog("flatplus: failed to load config: file <%s> not found", *Filename);
+ cString msg = cString::sprintf("%s %s %s", tr("configfile"), ConfigFiles[ConfigFileSelection], tr("loaded"));
+ Skins.Message(mtInfo, msg);
+}
+
+bool cFlatSetupGeneral::SetupParse(const char *Name, const char *Value) {
+ if (strcmp(Name, "decorBorderChannelByTheme") == 0) SetupConfig->decorBorderChannelByTheme = atoi(Value);
+ else if (strcmp(Name, "decorBorderChannelTypeUser") == 0) SetupConfig->decorBorderChannelTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderChannelSizeUser") == 0) SetupConfig->decorBorderChannelSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderChannelEPGByTheme") == 0) SetupConfig->decorBorderChannelEPGByTheme = atoi(Value);
+ else if (strcmp(Name, "decorBorderChannelEPGTypeUser") == 0) SetupConfig->decorBorderChannelEPGTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderChannelEPGSizeUser") == 0) SetupConfig->decorBorderChannelEPGSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderTopBarByTheme") == 0) SetupConfig->decorBorderTopBarByTheme = atoi(Value);
+ else if (strcmp(Name, "decorBorderTopBarTypeUser") == 0) SetupConfig->decorBorderTopBarTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderTopBarSizeUser") == 0) SetupConfig->decorBorderTopBarSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderMessageByTheme") == 0) SetupConfig->decorBorderMessageByTheme = atoi(Value);
+ else if (strcmp(Name, "decorBorderMessageTypeUser") == 0) SetupConfig->decorBorderMessageTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderMessageSizeUser") == 0) SetupConfig->decorBorderMessageSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderVolumeByTheme") == 0) SetupConfig->decorBorderVolumeByTheme = atoi(Value);
+ else if (strcmp(Name, "decorBorderVolumeTypeUser") == 0) SetupConfig->decorBorderVolumeTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderVolumeSizeUser") == 0) SetupConfig->decorBorderVolumeSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderTrackByTheme") == 0) SetupConfig->decorBorderTrackByTheme = atoi(Value);
+ else if (strcmp(Name, "decorBorderTrackTypeUser") == 0) SetupConfig->decorBorderTrackTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderTrackSizeUser") == 0) SetupConfig->decorBorderTrackSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderReplayByTheme") == 0) SetupConfig->decorBorderReplayByTheme = atoi(Value);
+ else if (strcmp(Name, "decorBorderReplayTypeUser") == 0) SetupConfig->decorBorderReplayTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderReplaySizeUser") == 0) SetupConfig->decorBorderReplaySizeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderMenuItemByTheme") == 0) SetupConfig->decorBorderMenuItemByTheme = atoi(Value);
+ else if (strcmp(Name, "decorBorderMenuItemTypeUser") == 0) SetupConfig->decorBorderMenuItemTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderMenuItemSizeUser") == 0) SetupConfig->decorBorderMenuItemSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderMenuContentHeadByTheme") == 0) SetupConfig->decorBorderMenuContentHeadByTheme = atoi(Value);
+ else if (strcmp(Name, "decorBorderMenuContentHeadTypeUser") == 0) SetupConfig->decorBorderMenuContentHeadTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderMenuContentHeadSizeUser") == 0) SetupConfig->decorBorderMenuContentHeadSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderMenuContentByTheme") == 0) SetupConfig->decorBorderMenuContentByTheme = atoi(Value);
+ else if (strcmp(Name, "decorBorderMenuContentTypeUser") == 0) SetupConfig->decorBorderMenuContentTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderMenuContentSizeUser") == 0) SetupConfig->decorBorderMenuContentSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderButtonByTheme") == 0) SetupConfig->decorBorderButtonByTheme = atoi(Value);
+ else if (strcmp(Name, "decorBorderButtonTypeUser") == 0) SetupConfig->decorBorderButtonTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorBorderButtonSizeUser") == 0) SetupConfig->decorBorderButtonSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorProgressChannelByTheme") == 0) SetupConfig->decorProgressChannelByTheme = atoi(Value);
+ else if (strcmp(Name, "decorProgressChannelTypeUser") == 0) SetupConfig->decorProgressChannelTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorProgressChannelSizeUser") == 0) SetupConfig->decorProgressChannelSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorProgressVolumeByTheme") == 0) SetupConfig->decorProgressVolumeByTheme = atoi(Value);
+ else if (strcmp(Name, "decorProgressVolumeTypeUser") == 0) SetupConfig->decorProgressVolumeTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorProgressVolumeSizeUser") == 0) SetupConfig->decorProgressVolumeSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorProgressMenuItemByTheme") == 0) SetupConfig->decorProgressMenuItemByTheme = atoi(Value);
+ else if (strcmp(Name, "decorProgressMenuItemTypeUser") == 0) SetupConfig->decorProgressMenuItemTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorProgressMenuItemSizeUser") == 0) SetupConfig->decorProgressMenuItemSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorProgressReplayByTheme") == 0) SetupConfig->decorProgressReplayByTheme = atoi(Value);
+ else if (strcmp(Name, "decorProgressReplayTypeUser") == 0) SetupConfig->decorProgressReplayTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorProgressReplaySizeUser") == 0) SetupConfig->decorProgressReplaySizeUser = atoi(Value);
+ else if (strcmp(Name, "decorProgressSignalByTheme") == 0) SetupConfig->decorProgressSignalByTheme = atoi(Value);
+ else if (strcmp(Name, "decorProgressSignalTypeUser") == 0) SetupConfig->decorProgressSignalTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorProgressSignalSizeUser") == 0) SetupConfig->decorProgressSignalSizeUser = atoi(Value);
+ else if (strcmp(Name, "decorScrollBarByTheme") == 0) SetupConfig->decorScrollBarByTheme = atoi(Value);
+ else if (strcmp(Name, "decorScrollBarTypeUser") == 0) SetupConfig->decorScrollBarTypeUser = atoi(Value);
+ else if (strcmp(Name, "decorScrollBarSizeUser") == 0) SetupConfig->decorScrollBarSizeUser = atoi(Value);
+ else if (strcmp(Name, "ButtonsShowEmpty") == 0) SetupConfig->ButtonsShowEmpty = atoi(Value);
+ else if (strcmp(Name, "ChannelIconsShow") == 0) SetupConfig->ChannelIconsShow = atoi(Value);
+ else if (strcmp(Name, "SignalQualityShow") == 0) SetupConfig->SignalQualityShow = atoi(Value);
+ else if (strcmp(Name, "DiskUsageShow") == 0) SetupConfig->DiskUsageShow = atoi(Value);
+ else if (strcmp(Name, "MenuItemPadding") == 0) SetupConfig->MenuItemPadding = atoi(Value);
+ else if (strcmp(Name, "marginOsdVer") == 0) SetupConfig->marginOsdVer = atoi(Value);
+ else if (strcmp(Name, "marginOsdHor") == 0) SetupConfig->marginOsdHor = atoi(Value);
+ else if (strcmp(Name, "MessageOffset") == 0) SetupConfig->MessageOffset = atoi(Value);
+ else if (strcmp(Name, "TopBarFontSize") == 0) SetupConfig->TopBarFontSize = atod(Value);
+ else if (strcmp(Name, "MenuContentFullSize") == 0) SetupConfig->MenuContentFullSize = atoi(Value);
+ else if (strcmp(Name, "ChannelResolutionAspectShow") == 0) SetupConfig->ChannelResolutionAspectShow = atoi(Value);
+ else if (strcmp(Name, "ChannelFormatShow") == 0) SetupConfig->ChannelFormatShow = atoi(Value);
+ else if (strcmp(Name, "RecordingResolutionAspectShow") == 0) SetupConfig->RecordingResolutionAspectShow = atoi(Value);
+ else if (strcmp(Name, "RecordingFormatShow") == 0) SetupConfig->RecordingFormatShow = atoi(Value);
+ else if (strcmp(Name, "RecordingAdditionalInfoShow") == 0) SetupConfig->RecordingAdditionalInfoShow = atoi(Value);
+ else if (strcmp(Name, "EpgAdditionalInfoShow") == 0) SetupConfig->EpgAdditionalInfoShow = atoi(Value);
+ else if (strcmp(Name, "TopBarRecordingShow") == 0) SetupConfig->TopBarRecordingShow = atoi(Value);
+ else if (strcmp(Name, "MenuItemIconsShow") == 0) SetupConfig->MenuItemIconsShow = atoi(Value);
+ else if (strcmp(Name, "TopBarMenuIconShow") == 0) SetupConfig->TopBarMenuIconShow = atoi(Value);
+ else if (strcmp(Name, "DecorIndex") == 0) SetupConfig->DecorIndex = atoi(Value);
+ else if (strcmp(Name, "MainMenuItemScale") == 0) SetupConfig->MainMenuItemScale = atod(Value);
+ else if (strcmp(Name, "MenuChannelView") == 0) SetupConfig->MenuChannelView = atoi(Value);
+ else if (strcmp(Name, "MenuTimerView") == 0) SetupConfig->MenuTimerView = atoi(Value);
+ else if (strcmp(Name, "MenuEventView") == 0) SetupConfig->MenuEventView = atoi(Value);
+ else if (strcmp(Name, "MenuRecordingView") == 0) SetupConfig->MenuRecordingView = atoi(Value);
+ else if (strcmp(Name, "ChannelSimpleAspectFormat") == 0) SetupConfig->ChannelSimpleAspectFormat = atoi(Value);
+ else if (strcmp(Name, "RecordingSimpleAspectFormat") == 0) SetupConfig->RecordingSimpleAspectFormat = atoi(Value);
+ else if (strcmp(Name, "MenuItemRecordingClearPercent") == 0) SetupConfig->MenuItemRecordingClearPercent = atoi(Value);
+ else if (strcmp(Name, "MenuItemRecordingShowFolderDate") == 0) SetupConfig->MenuItemRecordingShowFolderDate = atoi(Value);
+ else if (strcmp(Name, "MenuItemParseTilde") == 0) SetupConfig->MenuItemParseTilde = atoi(Value);
+ else if (strcmp(Name, "TopBarRecConflictsShow") == 0) SetupConfig->TopBarRecConflictsShow = atoi(Value);
+ else if (strcmp(Name, "TopBarRecConflictsHigh") == 0) SetupConfig->TopBarRecConflictsHigh = atoi(Value);
+ else if (strcmp(Name, "SignalQualityUseColors") == 0) SetupConfig->SignalQualityUseColors = atoi(Value);
+ else if (strcmp(Name, "TVScraperChanInfoShowPoster") == 0) SetupConfig->TVScraperChanInfoShowPoster = atoi(Value);
+ else if (strcmp(Name, "TVScraperChanInfoPosterSize") == 0) SetupConfig->TVScraperChanInfoPosterSize = atod(Value);
+ else if (strcmp(Name, "TVScraperEPGInfoShowPoster") == 0) SetupConfig->TVScraperEPGInfoShowPoster = atoi(Value);
+ else if (strcmp(Name, "TVScraperRecInfoShowPoster") == 0) SetupConfig->TVScraperRecInfoShowPoster = atoi(Value);
+ else if (strcmp(Name, "EpgRerunsShow") == 0) SetupConfig->EpgRerunsShow = atoi(Value);
+ else if (strcmp(Name, "TVScraperEPGInfoShowActors") == 0) SetupConfig->TVScraperEPGInfoShowActors = atoi(Value);
+ else if (strcmp(Name, "TVScraperRecInfoShowActors") == 0) SetupConfig->TVScraperRecInfoShowActors = atoi(Value);
+ else if (strcmp(Name, "MessageColorPosition") == 0) SetupConfig->MessageColorPosition = atoi(Value);
+ else if (strcmp(Name, "ScrollerEnable") == 0) SetupConfig->ScrollerEnable = atoi(Value);
+ else if (strcmp(Name, "ScrollerStep") == 0) SetupConfig->ScrollerStep = atoi(Value);
+ else if (strcmp(Name, "ScrollerDelay") == 0) SetupConfig->ScrollerDelay = atoi(Value);
+ else if (strcmp(Name, "ScrollerType") == 0) SetupConfig->ScrollerType = atoi(Value);
+ else if (strcmp(Name, "DiskUsageShort") == 0) SetupConfig->DiskUsageShort = atoi(Value);
+ else if (strcmp(Name, "DiskUsageFree") == 0) SetupConfig->DiskUsageFree = atoi(Value);
+ else if (strcmp(Name, "ChannelBitrateShow") == 0) SetupConfig->ChannelBitrateShow = atoi(Value);
+ else if (strcmp(Name, "TopBarFontClockScale") == 0) SetupConfig->TopBarFontClockScale = atod(Value);
+ else if (strcmp(Name, "TimeSecsScale") == 0) SetupConfig->TimeSecsScale = atod(Value);
+ else if (strcmp(Name, "ChannelBitrateShowCalcInterval") == 0) SetupConfig->ChannelBitrateShowCalcInterval = atoi(Value);
+ else if (strcmp(Name, "TopBarHideClockText") == 0) SetupConfig->TopBarHideClockText = atoi(Value);
+ else if (strcmp(Name, "ChannelTimeLeft") == 0) SetupConfig->ChannelTimeLeft = atoi(Value);
+ else if (strcmp(Name, "MenuFullOsd") == 0) SetupConfig->MenuFullOsd = atoi(Value);
+ else if (strcmp(Name, "MenuRecordingShowCount") == 0) SetupConfig->MenuRecordingShowCount = atoi(Value);
+ else if (strcmp(Name, "MenuTimerShowCount") == 0) SetupConfig->MenuTimerShowCount = atoi(Value);
+ else if (strcmp(Name, "MenuChannelShowCount") == 0) SetupConfig->MenuChannelShowCount = atoi(Value);
+ else if (strcmp(Name, "ShortRecordingCount") == 0) SetupConfig->ShortRecordingCount = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetsEnable") == 0) SetupConfig->MainMenuWidgetsEnable = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetDVBDevicesShow") == 0) SetupConfig->MainMenuWidgetDVBDevicesShow = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetDVBDevicesPosition") == 0) SetupConfig->MainMenuWidgetDVBDevicesPosition = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetActiveTimerShow") == 0) SetupConfig->MainMenuWidgetActiveTimerShow = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetActiveTimerPosition") == 0) SetupConfig->MainMenuWidgetActiveTimerPosition = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetActiveTimerMaxCount") == 0) SetupConfig->MainMenuWidgetActiveTimerMaxCount = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetActiveTimerHideEmpty") == 0) SetupConfig->MainMenuWidgetActiveTimerHideEmpty = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetLastRecShow") == 0) SetupConfig->MainMenuWidgetLastRecShow = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetLastRecPosition") == 0) SetupConfig->MainMenuWidgetLastRecPosition = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetLastRecMaxCount") == 0) SetupConfig->MainMenuWidgetLastRecMaxCount = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetTimerConflictsShow") == 0) SetupConfig->MainMenuWidgetTimerConflictsShow = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetTimerConflictsPosition") == 0) SetupConfig->MainMenuWidgetTimerConflictsPosition = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetTimerConflictsHideEmpty") == 0)SetupConfig->MainMenuWidgetTimerConflictsHideEmpty = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetSystemInfoShow") == 0) SetupConfig->MainMenuWidgetSystemInfoShow = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetSystemInfoPosition") == 0) SetupConfig->MainMenuWidgetSystemInfoPosition = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetSystemUpdatesShow") == 0) SetupConfig->MainMenuWidgetSystemUpdatesShow = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetSystemUpdatesPosition") == 0) SetupConfig->MainMenuWidgetSystemUpdatesPosition = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetSystemUpdatesHideIfZero") == 0)SetupConfig->MainMenuWidgetSystemUpdatesHideIfZero = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetTemperaturesShow") == 0) SetupConfig->MainMenuWidgetTemperaturesShow = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetTemperaturesPosition") == 0) SetupConfig->MainMenuWidgetTemperaturesPosition = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetCommandShow") == 0) SetupConfig->MainMenuWidgetCommandShow = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetCommandPosition") == 0) SetupConfig->MainMenuWidgetCommandPosition = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetWeatherShow") == 0) SetupConfig->MainMenuWidgetWeatherShow = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetWeatherPosition") == 0) SetupConfig->MainMenuWidgetWeatherPosition = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetWeatherDays") == 0) SetupConfig->MainMenuWidgetWeatherDays = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetWeatherType") == 0) SetupConfig->MainMenuWidgetWeatherType = atoi(Value);
+ else if (strcmp(Name, "ChannelWeatherShow") == 0) SetupConfig->ChannelWeatherShow = atoi(Value);
+ else if (strcmp(Name, "PlaybackWeatherShow") == 0) SetupConfig->PlaybackWeatherShow = atoi(Value);
+ else if (strcmp(Name, "WeatherFontSize") == 0) SetupConfig->WeatherFontSize = atod(Value);
+ else if (strcmp(Name, "TVScraperReplayInfoShowPoster") == 0) SetupConfig->TVScraperReplayInfoShowPoster = atoi(Value);
+ else if (strcmp(Name, "TVScraperReplayInfoPosterSize") == 0) SetupConfig->TVScraperReplayInfoPosterSize = atod(Value);
+ else if (strcmp(Name, "MainMenuWidgetDVBDevicesDiscardUnknown") == 0) SetupConfig->MainMenuWidgetDVBDevicesDiscardUnknown = atoi(Value);
+ else if (strcmp(Name, "MainMenuWidgetDVBDevicesDiscardNotUsed") == 0) SetupConfig->MainMenuWidgetDVBDevicesDiscardNotUsed = atoi(Value);
+ else if (strcmp(Name, "RecordingDimmOnPause") == 0) SetupConfig->RecordingDimmOnPause = atoi(Value);
+ else if (strcmp(Name, "RecordingDimmOnPauseDelay") == 0) SetupConfig->RecordingDimmOnPauseDelay = atoi(Value);
+ else if (strcmp(Name, "RecordingDimmOnPauseOpaque") == 0) SetupConfig->RecordingDimmOnPauseOpaque = atoi(Value);
+ else return false;
+
+ return true;
+}
+
+void cFlatSetupGeneral::SaveCurrentSettings(void) {
+ time_t t;
+ time(&t);
+ tm *tm = localtime(&t);
+ char time[32];
+ strftime(time, sizeof(time)-1, "%d.%m.%Y_%H:%M", tm);
+ cString File = time;
+ cString Filename = cString::sprintf("%s/configs/%s", PLUGINRESOURCEPATH, *File);
+
+ // if file exist remove it
+ if( access( Filename, F_OK ) != -1 ) {
+ remove(Filename);
+ }
+
+ Config.Store("decorBorderChannelByTheme", SetupConfig->decorBorderChannelByTheme, *Filename);
+ Config.Store("decorBorderChannelTypeUser", SetupConfig->decorBorderChannelTypeUser, *Filename);
+ Config.Store("decorBorderChannelSizeUser", SetupConfig->decorBorderChannelSizeUser, *Filename);
+ Config.Store("decorBorderChannelEPGByTheme", SetupConfig->decorBorderChannelEPGByTheme, *Filename);
+ Config.Store("decorBorderChannelEPGTypeUser", SetupConfig->decorBorderChannelEPGTypeUser, *Filename);
+ Config.Store("decorBorderChannelEPGSizeUser", SetupConfig->decorBorderChannelEPGSizeUser, *Filename);
+ Config.Store("decorBorderTopBarByTheme", SetupConfig->decorBorderTopBarByTheme, *Filename);
+ Config.Store("decorBorderTopBarTypeUser", SetupConfig->decorBorderTopBarTypeUser, *Filename);
+ Config.Store("decorBorderTopBarSizeUser", SetupConfig->decorBorderTopBarSizeUser, *Filename);
+ Config.Store("decorBorderMessageByTheme", SetupConfig->decorBorderMessageByTheme, *Filename);
+ Config.Store("decorBorderMessageTypeUser", SetupConfig->decorBorderMessageTypeUser, *Filename);
+ Config.Store("decorBorderMessageSizeUser", SetupConfig->decorBorderMessageSizeUser, *Filename);
+ Config.Store("decorBorderVolumeByTheme", SetupConfig->decorBorderVolumeByTheme, *Filename);
+ Config.Store("decorBorderVolumeTypeUser", SetupConfig->decorBorderVolumeTypeUser, *Filename);
+ Config.Store("decorBorderVolumeSizeUser", SetupConfig->decorBorderVolumeSizeUser, *Filename);
+ Config.Store("decorBorderTrackByTheme", SetupConfig->decorBorderTrackByTheme, *Filename);
+ Config.Store("decorBorderTrackTypeUser", SetupConfig->decorBorderTrackTypeUser, *Filename);
+ Config.Store("decorBorderTrackSizeUser", SetupConfig->decorBorderTrackSizeUser, *Filename);
+ Config.Store("decorBorderReplayByTheme", SetupConfig->decorBorderReplayByTheme, *Filename);
+ Config.Store("decorBorderReplayTypeUser", SetupConfig->decorBorderReplayTypeUser, *Filename);
+ Config.Store("decorBorderReplaySizeUser", SetupConfig->decorBorderReplaySizeUser, *Filename);
+ Config.Store("decorBorderMenuItemByTheme", SetupConfig->decorBorderMenuItemByTheme, *Filename);
+ Config.Store("decorBorderMenuItemTypeUser", SetupConfig->decorBorderMenuItemTypeUser, *Filename);
+ Config.Store("decorBorderMenuItemSizeUser", SetupConfig->decorBorderMenuItemSizeUser, *Filename);
+ Config.Store("decorBorderMenuContentHeadByTheme", SetupConfig->decorBorderMenuContentHeadByTheme, *Filename);
+ Config.Store("decorBorderMenuContentHeadTypeUser", SetupConfig->decorBorderMenuContentHeadTypeUser, *Filename);
+ Config.Store("decorBorderMenuContentHeadSizeUser", SetupConfig->decorBorderMenuContentHeadSizeUser, *Filename);
+ Config.Store("decorBorderMenuContentByTheme", SetupConfig->decorBorderMenuContentByTheme, *Filename);
+ Config.Store("decorBorderMenuContentTypeUser", SetupConfig->decorBorderMenuContentTypeUser, *Filename);
+ Config.Store("decorBorderMenuContentSizeUser", SetupConfig->decorBorderMenuContentSizeUser, *Filename);
+ Config.Store("decorBorderButtonByTheme", SetupConfig->decorBorderButtonByTheme, *Filename);
+ Config.Store("decorBorderButtonTypeUser", SetupConfig->decorBorderButtonTypeUser, *Filename);
+ Config.Store("decorBorderButtonSizeUser", SetupConfig->decorBorderButtonSizeUser, *Filename);
+ Config.Store("decorProgressChannelByTheme", SetupConfig->decorProgressChannelByTheme, *Filename);
+ Config.Store("decorProgressChannelTypeUser", SetupConfig->decorProgressChannelTypeUser, *Filename);
+ Config.Store("decorProgressChannelSizeUser", SetupConfig->decorProgressChannelSizeUser, *Filename);
+ Config.Store("decorProgressVolumeByTheme", SetupConfig->decorProgressVolumeByTheme, *Filename);
+ Config.Store("decorProgressVolumeTypeUser", SetupConfig->decorProgressVolumeTypeUser, *Filename);
+ Config.Store("decorProgressVolumeSizeUser", SetupConfig->decorProgressVolumeSizeUser, *Filename);
+ Config.Store("decorProgressMenuItemByTheme", SetupConfig->decorProgressMenuItemByTheme, *Filename);
+ Config.Store("decorProgressMenuItemTypeUser", SetupConfig->decorProgressMenuItemTypeUser, *Filename);
+ Config.Store("decorProgressMenuItemSizeUser", SetupConfig->decorProgressMenuItemSizeUser, *Filename);
+ Config.Store("decorProgressReplayByTheme", SetupConfig->decorProgressReplayByTheme, *Filename);
+ Config.Store("decorProgressReplayTypeUser", SetupConfig->decorProgressReplayTypeUser, *Filename);
+ Config.Store("decorProgressReplaySizeUser", SetupConfig->decorProgressReplaySizeUser, *Filename);
+ Config.Store("decorProgressSignalByTheme", SetupConfig->decorProgressSignalByTheme, *Filename);
+ Config.Store("decorProgressSignalTypeUser", SetupConfig->decorProgressSignalTypeUser, *Filename);
+ Config.Store("decorProgressSignalSizeUser", SetupConfig->decorProgressSignalSizeUser, *Filename);
+ Config.Store("decorScrollBarByTheme", SetupConfig->decorScrollBarByTheme, *Filename);
+ Config.Store("decorScrollBarTypeUser", SetupConfig->decorScrollBarTypeUser, *Filename);
+ Config.Store("decorScrollBarSizeUser", SetupConfig->decorScrollBarSizeUser, *Filename);
+ Config.Store("ButtonsShowEmpty", SetupConfig->ButtonsShowEmpty, *Filename);
+ Config.Store("ChannelIconsShow", SetupConfig->ChannelIconsShow, *Filename);
+ Config.Store("SignalQualityShow", SetupConfig->SignalQualityShow, *Filename);
+ Config.Store("DiskUsageShow", SetupConfig->DiskUsageShow, *Filename);
+ Config.Store("MenuItemPadding", SetupConfig->MenuItemPadding, *Filename);
+ Config.Store("marginOsdVer", SetupConfig->marginOsdVer, *Filename);
+ Config.Store("marginOsdHor", SetupConfig->marginOsdHor, *Filename);
+ Config.Store("TopBarFontSize", dtoa(Config.TopBarFontSize), *Filename);
+ Config.Store("MessageOffset", SetupConfig->MessageOffset, *Filename);
+ Config.Store("MenuContentFullSize", SetupConfig->MenuContentFullSize, *Filename);
+ Config.Store("ChannelResolutionAspectShow", SetupConfig->ChannelResolutionAspectShow, *Filename);
+ Config.Store("ChannelFormatShow", SetupConfig->ChannelFormatShow, *Filename);
+ Config.Store("RecordingResolutionAspectShow", SetupConfig->RecordingResolutionAspectShow, *Filename);
+ Config.Store("RecordingFormatShow", SetupConfig->RecordingFormatShow, *Filename);
+ Config.Store("RecordingAdditionalInfoShow", SetupConfig->RecordingAdditionalInfoShow, *Filename);
+ Config.Store("EpgAdditionalInfoShow", SetupConfig->EpgAdditionalInfoShow, *Filename);
+ Config.Store("TopBarRecordingShow", SetupConfig->TopBarRecordingShow, *Filename);
+ Config.Store("MenuItemIconsShow", SetupConfig->MenuItemIconsShow, *Filename);
+ Config.Store("TopBarMenuIconShow", SetupConfig->TopBarMenuIconShow, *Filename);
+ Config.Store("DecorIndex", SetupConfig->DecorIndex, *Filename);
+ Config.Store("MainMenuItemScale", dtoa(Config.MainMenuItemScale), *Filename);
+ Config.Store("MenuChannelView", SetupConfig->MenuChannelView, *Filename);
+ Config.Store("MenuTimerView", SetupConfig->MenuTimerView, *Filename);
+ Config.Store("MenuEventView", SetupConfig->MenuEventView, *Filename);
+ Config.Store("MenuRecordingView", SetupConfig->MenuRecordingView, *Filename);
+ Config.Store("ChannelSimpleAspectFormat", SetupConfig->ChannelSimpleAspectFormat, *Filename);
+ Config.Store("RecordingSimpleAspectFormat", SetupConfig->RecordingSimpleAspectFormat, *Filename);
+ Config.Store("MenuItemRecordingClearPercent", SetupConfig->MenuItemRecordingClearPercent, *Filename);
+ Config.Store("MenuItemRecordingShowFolderDate", SetupConfig->MenuItemRecordingShowFolderDate, *Filename);
+ Config.Store("MenuItemParseTilde", SetupConfig->MenuItemParseTilde, *Filename);
+ Config.Store("TopBarRecConflictsShow", SetupConfig->TopBarRecConflictsShow, *Filename);
+ Config.Store("TopBarRecConflictsHigh", SetupConfig->TopBarRecConflictsHigh, *Filename);
+ Config.Store("SignalQualityUseColors", SetupConfig->SignalQualityUseColors, *Filename);
+ Config.Store("TVScraperChanInfoShowPoster", SetupConfig->TVScraperChanInfoShowPoster, *Filename);
+ Config.Store("TVScraperChanInfoPosterSize", dtoa(Config.TVScraperChanInfoPosterSize), *Filename);
+ Config.Store("TVScraperEPGInfoShowPoster", SetupConfig->TVScraperEPGInfoShowPoster, *Filename);
+ Config.Store("TVScraperRecInfoShowPoster", SetupConfig->TVScraperEPGInfoShowPoster, *Filename);
+ Config.Store("EpgRerunsShow", SetupConfig->EpgRerunsShow, *Filename);
+ Config.Store("TVScraperEPGInfoShowActors", SetupConfig->TVScraperEPGInfoShowActors, *Filename);
+ Config.Store("TVScraperRecInfoShowActors", SetupConfig->TVScraperRecInfoShowActors, *Filename);
+ Config.Store("MessageColorPosition", SetupConfig->MessageColorPosition, *Filename);
+ Config.Store("ScrollerEnable", SetupConfig->ScrollerEnable, *Filename);
+ Config.Store("ScrollerStep", SetupConfig->ScrollerStep, *Filename);
+ Config.Store("ScrollerDelay", SetupConfig->ScrollerDelay, *Filename);
+ Config.Store("ScrollerType", SetupConfig->ScrollerType, *Filename);
+ Config.Store("DiskUsageShort", SetupConfig->DiskUsageShort, *Filename);
+ Config.Store("DiskUsageFree", SetupConfig->DiskUsageFree, *Filename);
+ Config.Store("TopBarFontClockScale", dtoa(Config.TopBarFontClockScale), *Filename);
+ Config.Store("TimeSecsScale", dtoa(Config.TimeSecsScale), *Filename);
+ Config.Store("ChannelBitrateShow", SetupConfig->ChannelBitrateShow, *Filename);
+ Config.Store("ChannelBitrateShowCalcInterval", SetupConfig->ChannelBitrateShowCalcInterval, *Filename);
+ Config.Store("TopBarHideClockText", SetupConfig->TopBarHideClockText, *Filename);
+ Config.Store("ChannelTimeLeft", SetupConfig->ChannelTimeLeft, *Filename);
+ Config.Store("MenuFullOsd", SetupConfig->MenuFullOsd, *Filename);
+ Config.Store("MenuRecordingShowCount", SetupConfig->MenuRecordingShowCount, *Filename);
+ Config.Store("MenuTimerShowCount", SetupConfig->MenuTimerShowCount, *Filename);
+ Config.Store("MenuChannelShowCount", SetupConfig->MenuChannelShowCount, *Filename);
+ Config.Store("ShortRecordingCount", SetupConfig->ShortRecordingCount, *Filename);
+
+ Config.Store("MainMenuWidgetsEnable", SetupConfig->MainMenuWidgetsEnable, *Filename);
+ Config.Store("MainMenuWidgetDVBDevicesShow", SetupConfig->MainMenuWidgetDVBDevicesShow, *Filename);
+ Config.Store("MainMenuWidgetDVBDevicesPosition", SetupConfig->MainMenuWidgetDVBDevicesPosition, *Filename);
+ Config.Store("MainMenuWidgetActiveTimerShow", SetupConfig->MainMenuWidgetActiveTimerShow, *Filename);
+ Config.Store("MainMenuWidgetActiveTimerPosition", SetupConfig->MainMenuWidgetActiveTimerPosition, *Filename);
+ Config.Store("MainMenuWidgetActiveTimerMaxCount", SetupConfig->MainMenuWidgetActiveTimerMaxCount, *Filename);
+ Config.Store("MainMenuWidgetActiveTimerHideEmpty", SetupConfig->MainMenuWidgetActiveTimerHideEmpty, *Filename);
+ Config.Store("MainMenuWidgetLastRecShow", SetupConfig->MainMenuWidgetLastRecShow, *Filename);
+ Config.Store("MainMenuWidgetLastRecPosition", SetupConfig->MainMenuWidgetLastRecPosition, *Filename);
+ Config.Store("MainMenuWidgetLastRecMaxCount", SetupConfig->MainMenuWidgetLastRecMaxCount, *Filename);
+ Config.Store("MainMenuWidgetTimerConflictsShow", SetupConfig->MainMenuWidgetTimerConflictsShow, *Filename);
+ Config.Store("MainMenuWidgetTimerConflictsPosition", SetupConfig->MainMenuWidgetTimerConflictsPosition, *Filename);
+ Config.Store("MainMenuWidgetTimerConflictsHideEmpty", SetupConfig->MainMenuWidgetTimerConflictsHideEmpty, *Filename);
+ Config.Store("MainMenuWidgetSystemInfoShow", SetupConfig->MainMenuWidgetSystemInfoShow, *Filename);
+ Config.Store("MainMenuWidgetSystemInfoPosition", SetupConfig->MainMenuWidgetSystemInfoPosition, *Filename);
+ Config.Store("MainMenuWidgetSystemUpdatesShow", SetupConfig->MainMenuWidgetSystemUpdatesShow, *Filename);
+ Config.Store("MainMenuWidgetSystemUpdatesPosition", SetupConfig->MainMenuWidgetSystemUpdatesPosition, *Filename);
+ Config.Store("MainMenuWidgetSystemUpdatesHideIfZero", SetupConfig->MainMenuWidgetSystemUpdatesHideIfZero, *Filename);
+ Config.Store("MainMenuWidgetTemperaturesShow", SetupConfig->MainMenuWidgetTemperaturesShow, *Filename);
+ Config.Store("MainMenuWidgetTemperaturesPosition", SetupConfig->MainMenuWidgetTemperaturesPosition, *Filename);
+ Config.Store("MainMenuWidgetCommandShow", SetupConfig->MainMenuWidgetCommandShow, *Filename);
+ Config.Store("MainMenuWidgetCommandPosition", SetupConfig->MainMenuWidgetCommandPosition, *Filename);
+ Config.Store("MainMenuWidgetWeatherShow", SetupConfig->MainMenuWidgetWeatherShow, *Filename);
+ Config.Store("MainMenuWidgetWeatherPosition", SetupConfig->MainMenuWidgetWeatherPosition, *Filename);
+ Config.Store("MainMenuWidgetWeatherDays", SetupConfig->MainMenuWidgetWeatherDays, *Filename);
+ Config.Store("MainMenuWidgetWeatherType", SetupConfig->MainMenuWidgetWeatherType, *Filename);
+ Config.Store("ChannelWeatherShow", SetupConfig->ChannelWeatherShow, *Filename);
+ Config.Store("PlaybackWeatherShow", SetupConfig->PlaybackWeatherShow, *Filename);
+ Config.Store("WeatherFontSize", dtoa(Config.WeatherFontSize), *Filename);
+ Config.Store("TVScraperReplayInfoShowPoster", SetupConfig->TVScraperReplayInfoShowPoster, *Filename);
+ Config.Store("TVScraperReplayInfoPosterSize", dtoa(Config.TVScraperReplayInfoPosterSize), *Filename);
+ Config.Store("MainMenuWidgetDVBDevicesDiscardUnknown", SetupConfig->MainMenuWidgetDVBDevicesDiscardUnknown, *Filename);
+ Config.Store("MainMenuWidgetDVBDevicesDiscardNotUsed", SetupConfig->MainMenuWidgetDVBDevicesDiscardNotUsed, *Filename);
+ Config.Store("RecordingDimmOnPause", SetupConfig->RecordingDimmOnPause, *Filename);
+ Config.Store("RecordingDimmOnPauseDelay", SetupConfig->RecordingDimmOnPauseDelay, *Filename);
+ Config.Store("RecordingDimmOnPauseOpaque", SetupConfig->RecordingDimmOnPauseOpaque, *Filename);
+
+ cString msg = cString::sprintf("%s %s", tr("saved settings in file:"), *File);
+ Skins.Message(mtInfo, msg);
+}
+//------------------------------------------------------------------------------------------------------------------
+
+cMenuSetupSubMenu::cMenuSetupSubMenu(const char* Title, cFlatConfig* data) : cOsdMenu(Title, 35) {
+ SetupConfig = data;
+ ItemLastSel = -1;
+}
+
+cOsdItem *cMenuSetupSubMenu::InfoItem(const char *label, const char *value) {
+ cOsdItem *item;
+ item = new cOsdItem(cString::sprintf("%s: %s", label, value));
+ item->SetSelectable(false);
+ return item;
+}
+
+// General Settings
+cFlatSetupGeneral::cFlatSetupGeneral(cFlatConfig* data) : cMenuSetupSubMenu(tr("General settings"), data) {
+ Setup();
+}
+
+void cFlatSetupGeneral::Setup(void) {
+ Clear();
+
+ DecorDescriptions.Clear();
+ SetupConfig->DecorDescriptions( DecorDescriptions );
+ if( SetupConfig->DecorIndex < 0 || SetupConfig->DecorIndex > DecorDescriptions.Size() )
+ SetupConfig->DecorIndex = 0;
+
+ if( DecorDescriptions.Size() == 0 ) {
+ esyslog("skinflatplus: no decor files found, please check your installation!");
+ Add(new cOsdItem(tr("no decorfiles found, check install"), osUnknown, false));
+ } else
+ Add(new cMenuEditStraItem(tr("Decorfile"), &SetupConfig->DecorIndex, DecorDescriptions.Size(), &DecorDescriptions[0]));
+
+ ConfigFiles.Clear();
+ SetupConfig->GetConfigFiles( ConfigFiles );
+ for(int i = 0; i < ConfigFiles.Size(); i++)
+ dsyslog("ConfigFile: %s", ConfigFiles[i]);
+
+ ConfigFileSelection = 0;
+ if( ConfigFiles.Size() == 0 ) {
+ esyslog("skinflatplus: no config files found, please check your installation!");
+ Add(new cOsdItem(tr("no config-files found, check install"), osUnknown, false));
+ } else
+ Add(new cMenuEditStraItem(tr("Press ok to load config file"), &ConfigFileSelection, ConfigFiles.Size(), &ConfigFiles[0]));
+
+ cString saveSettings = cString::sprintf("%s:\t%s", tr("Save current settings"), tr("press ok to save current settings"));
+ Add(new cOsdItem(saveSettings, osUnknown, true));
+
+ Add(new cMenuEditBoolItem(tr("Show empty color-buttons"), &SetupConfig->ButtonsShowEmpty));
+ Add(new cMenuEditBoolItem(tr("Show TopBar menu icons"), &SetupConfig->TopBarMenuIconShow));
+ Add(new cMenuEditStraItem(tr("Diskusage show"), &SetupConfig->DiskUsageShow, DiskUsages.Size(), &DiskUsages[0]));
+ Add(new cMenuEditBoolItem(tr("Diskusage short display"), &SetupConfig->DiskUsageShort));
+ Add(new cMenuEditStraItem(tr("Diskusage free/occupied"), &SetupConfig->DiskUsageFree, DiskUsageFree.Size(), &DiskUsageFree[0]));
+ Add(new cMenuEditIntItem(tr("OSD vertical margin"), &SetupConfig->marginOsdVer));
+ Add(new cMenuEditIntItem(tr("OSD horizontal margin"), &SetupConfig->marginOsdHor));
+ Add(new cMenuEditPrcItem(tr("TopBar font size"), &SetupConfig->TopBarFontSize, 0.01, 0.2, 1));
+ Add(new cMenuEditBoolItem(tr("TopBar show recording"), &SetupConfig->TopBarRecordingShow));
+ Add(new cMenuEditBoolItem(tr("TopBar show conflicts"), &SetupConfig->TopBarRecConflictsShow));
+ Add(new cMenuEditBoolItem(tr("TopBar hide clock text"), &SetupConfig->TopBarHideClockText));
+ Add(new cMenuEditPrcItem(tr("TopBar clock font scale"), &SetupConfig->TopBarFontClockScale, 0.005, 0.02, 1));
+ Add(new cMenuEditIntItem(tr("Conflicts min value for red"), &SetupConfig->TopBarRecConflictsHigh));
+ Add(new cMenuEditIntItem(tr("Message bottom offset"), &SetupConfig->MessageOffset));
+ Add(new cMenuEditStraItem(tr("Message color position"), &SetupConfig->MessageColorPosition, MessageColorPositions.Size(), &MessageColorPositions[0]));
+
+ Add(new cMenuEditBoolItem(tr("Use Textscroller?"), &SetupConfig->ScrollerEnable));
+ if( SetupConfig->ScrollerEnable ) {
+ Add(new cMenuEditIntItem(tr("Scroller step (in pixel)"), &SetupConfig->ScrollerStep));
+ Add(new cMenuEditIntItem(tr("Scroller delay (in ms)"), &SetupConfig->ScrollerDelay));
+ Add(new cMenuEditStraItem(tr("Scroller type"), &SetupConfig->ScrollerType, ScrollerTypes.Size(), &ScrollerTypes[0]));
+ } else {
+ cString step = cString::sprintf("%s:\t%d", tr("Scroller step (in pixel)"), SetupConfig->ScrollerStep);
+ Add(new cOsdItem(step, osUnknown, false));
+ cString delay = cString::sprintf("%s:\t%d", tr("Scroller delay (in ms)"), SetupConfig->ScrollerDelay);
+ Add(new cOsdItem(delay, osUnknown, false));
+ cString type = cString::sprintf("%s:\t%s", tr("Scroller type"), ScrollerTypes[SetupConfig->ScrollerType]);
+ Add(new cOsdItem(type, osUnknown, false));
+ }
+
+ Add(new cMenuEditBoolItem(tr("TopBar border by decor-file?"), &SetupConfig->decorBorderTopBarByTheme));
+ if( SetupConfig->decorBorderTopBarByTheme ) {
+ cString type = cString::sprintf("%s:\t%s", tr("TopBar border type"), Bordertypes[SetupConfig->decorBorderTopBarTypeTheme]);
+ Add(new cOsdItem(type, osUnknown, false));
+ cString size = cString::sprintf("%s:\t%d", tr("TopBar border size"), SetupConfig->decorBorderTopBarSizeTheme);
+ Add(new cOsdItem(size, osUnknown, false));
+ } else {
+ Add(new cMenuEditStraItem(tr("TopBar border type"), &SetupConfig->decorBorderTopBarTypeUser, Bordertypes.Size(), &Bordertypes[0]));
+ Add(new cMenuEditIntItem(tr("TopBar border size"), &SetupConfig->decorBorderTopBarSizeUser));
+ }
+
+ Add(new cMenuEditBoolItem(tr("Message border by decor-file?"), &SetupConfig->decorBorderMessageByTheme));
+ if( SetupConfig->decorBorderMessageByTheme ) {
+ cString type = cString::sprintf("%s:\t%s", tr("Message border type"), Bordertypes[SetupConfig->decorBorderMessageTypeTheme]);
+ Add(new cOsdItem(type, osUnknown, false));
+ cString size = cString::sprintf("%s:\t%d", tr("Message border size"), SetupConfig->decorBorderMessageSizeTheme);
+ Add(new cOsdItem(size, osUnknown, false));
+ } else {
+ Add(new cMenuEditStraItem(tr("Message border type"), &SetupConfig->decorBorderMessageTypeUser, Bordertypes.Size(), &Bordertypes[0]));
+ Add(new cMenuEditIntItem(tr("Message border size"), &SetupConfig->decorBorderMessageSizeUser));
+ }
+
+ Add(new cMenuEditBoolItem(tr("Button border by decor-file?"), &SetupConfig->decorBorderButtonByTheme));
+ if( SetupConfig->decorBorderButtonByTheme ) {
+ cString type = cString::sprintf("%s:\t%s", tr("Button border type"), Bordertypes[SetupConfig->decorBorderButtonTypeTheme]);
+ Add(new cOsdItem(type, osUnknown, false));
+ cString size = cString::sprintf("%s:\t%d", tr("Button border size"), SetupConfig->decorBorderButtonSizeTheme);
+ Add(new cOsdItem(size, osUnknown, false));
+ } else {
+ Add(new cMenuEditStraItem(tr("Button border type"), &SetupConfig->decorBorderButtonTypeUser, Bordertypes.Size(), &Bordertypes[0]));
+ Add(new cMenuEditIntItem(tr("Button border size"), &SetupConfig->decorBorderButtonSizeUser));
+ }
+
+ cString ImageCache = cString::sprintf("%s:\t%d / %d", tr("Imagecache entries"), imgCache.getCacheCount(), MAX_IMAGE_CACHE);
+ Add(new cOsdItem(ImageCache, osUnknown, true));
+
+ if( ItemLastSel >= 0 ) {
+ SetCurrent(Get(ItemLastSel));
+ ItemLastSel = -1;
+ }
+
+ Display();
+}
+
+eOSState cFlatSetupGeneral::ProcessKey(eKeys Key) {
+ eOSState state = cOsdMenu::ProcessKey(Key);
+ if (state == osUnknown) {
+ switch (Key) {
+ case kOk:
+ {
+ const char* ItemText = Get(Current())->Text();
+ if( strstr(ItemText, tr("Save current settings")) != NULL ) {
+ SaveCurrentSettings();
+ return osUnknown;
+ } else if( strstr(ItemText, tr("Press ok to load config file")) != NULL ) {
+ LoadConfigFile();
+ return osBack;
+ } else {
+ return osBack;
+ }
+ }
+ default:
+ break;
+ }
+ }
+ if( Key == kLeft || Key == kRight ) {
+ const char* ItemText = Get(Current())->Text();
+ if( strstr(ItemText, tr("TopBar border by decor-file?")) != NULL ||
+ strstr(ItemText, tr("Message border by decor-file?")) != NULL ||
+ strstr(ItemText, tr("Use Textscroller?")) != NULL ||
+ strstr(ItemText, tr("Button border by decor-file?")) != NULL
+ ) {
+ ItemLastSel = Current();
+ Setup();
+ }
+ }
+ return state;
+}
+
+// Channel Info Settings
+cFlatSetupChannelInfo::cFlatSetupChannelInfo(cFlatConfig* data) : cMenuSetupSubMenu(tr("Channelinfo settings"), data) {
+ Setup();
+}
+
+void cFlatSetupChannelInfo::Setup(void) {
+ Clear();
+
+ Add(new cMenuEditBoolItem(tr("Show Channelinfo icons"), &SetupConfig->ChannelIconsShow));
+ Add(new cMenuEditBoolItem(tr("Show signal quality"), &SetupConfig->SignalQualityShow));
+ Add(new cMenuEditBoolItem(tr("Show weather widget"), &SetupConfig->ChannelWeatherShow));
+ Add(new cMenuEditPrcItem(tr("Weather widget font size"), &SetupConfig->WeatherFontSize, 0.01, 0.2, 1));
+ Add(new cMenuEditBoolItem(tr("Colors for signal quality"), &SetupConfig->SignalQualityUseColors));
+ Add(new cMenuEditBoolItem(tr("Show resolution & aspect"), &SetupConfig->ChannelResolutionAspectShow));
+ Add(new cMenuEditBoolItem(tr("Show format (hd/sd)"), &SetupConfig->ChannelFormatShow));
+ Add(new cMenuEditBoolItem(tr("Show video/audio bitrate"), &SetupConfig->ChannelBitrateShow));
+ Add(new cMenuEditBoolItem(tr("Simple aspect & format"), &SetupConfig->ChannelSimpleAspectFormat));
+ Add(new cMenuEditStraItem(tr("program past/remaining time format"), &SetupConfig->ChannelTimeLeft, ChannelTimeLefts.Size(), &ChannelTimeLefts[0]));
+
+ Add(new cMenuEditBoolItem(tr("Channelinfo border by decor-file?"), &SetupConfig->decorBorderChannelByTheme));
+ if( SetupConfig->decorBorderChannelByTheme ) {
+ cString type = cString::sprintf("%s:\t%s", tr("Channelinfo border type"), Bordertypes[SetupConfig->decorBorderChannelTypeTheme]);
+ Add(new cOsdItem(type, osUnknown, false));
+ cString size = cString::sprintf("%s:\t%d", tr("Channelinfo border size"), SetupConfig->decorBorderChannelSizeTheme);
+ Add(new cOsdItem(size, osUnknown, false));
+ } else {
+ Add(new cMenuEditStraItem(tr("Channelinfo border type"), &SetupConfig->decorBorderChannelTypeUser, Bordertypes.Size(), &Bordertypes[0]));
+ Add(new cMenuEditIntItem(tr("Channelinfo border size"), &SetupConfig->decorBorderChannelSizeUser));
+ }
+
+ Add(new cMenuEditBoolItem(tr("Channelinfo EPG border by decor-file?"), &SetupConfig->decorBorderChannelEPGByTheme));
+ if( SetupConfig->decorBorderChannelEPGByTheme ) {
+ cString type = cString::sprintf("%s:\t%s", tr("Channelinfo EPG border type"), Bordertypes[SetupConfig->decorBorderChannelEPGTypeTheme]);
+ Add(new cOsdItem(type, osUnknown, false));
+ cString size = cString::sprintf("%s:\t%d", tr("Channelinfo EPG border size"), SetupConfig->decorBorderChannelEPGSizeTheme);
+ Add(new cOsdItem(size, osUnknown, false));
+ } else {
+ Add(new cMenuEditStraItem(tr("Channelinfo EPG border type"), &SetupConfig->decorBorderChannelEPGTypeUser, Bordertypes.Size(), &Bordertypes[0]));
+ Add(new cMenuEditIntItem(tr("Channelinfo EPG border size"), &SetupConfig->decorBorderChannelEPGSizeUser));
+ }
+
+ Add(new cMenuEditBoolItem(tr("Channelinfo progress by decor-file?"), &SetupConfig->decorProgressChannelByTheme));
+ if( SetupConfig->decorProgressChannelByTheme ) {
+ cString type = cString::sprintf("%s:\t%s", tr("Channelinfo progress type"), Progresstypes[SetupConfig->decorProgressChannelTypeTheme]);
+ Add(new cOsdItem(type, osUnknown, false));
+ cString size = cString::sprintf("%s:\t%d", tr("Channelinfo progress size"), SetupConfig->decorProgressChannelSizeTheme);
+ Add(new cOsdItem(size, osUnknown, false));
+ } else {
+ Add(new cMenuEditStraItem(tr("Channelinfo progress type"), &SetupConfig->decorProgressChannelTypeUser, Progresstypes.Size(), &Progresstypes[0]));
+ Add(new cMenuEditIntItem(tr("Channelinfo progress size"), &SetupConfig->decorProgressChannelSizeUser));
+ }
+
+ Add(new cMenuEditBoolItem(tr("Signalquality progress by decor-file?"), &SetupConfig->decorProgressSignalByTheme));
+ if( SetupConfig->decorProgressSignalByTheme ) {
+ cString type = cString::sprintf("%s:\t%s", tr("Signalquality progress type"), Progresstypes[SetupConfig->decorProgressSignalTypeTheme]);
+ Add(new cOsdItem(type, osUnknown, false));
+ cString size = cString::sprintf("%s:\t%d", tr("Signalquality progress size"), SetupConfig->decorProgressSignalSizeTheme);
+ Add(new cOsdItem(size, osUnknown, false));
+ } else {
+ Add(new cMenuEditStraItem(tr("Signalquality progress type"), &SetupConfig->decorProgressSignalTypeUser, Progresstypes.Size(), &Progresstypes[0]));
+ Add(new cMenuEditIntItem(tr("Signalquality progress size"), &SetupConfig->decorProgressSignalSizeUser));
+ }
+
+ if( ItemLastSel >= 0 ) {
+ SetCurrent(Get(ItemLastSel));
+ ItemLastSel = -1;
+ }
+
+ Display();
+}
+
+eOSState cFlatSetupChannelInfo::ProcessKey(eKeys Key) {
+ eOSState state = cOsdMenu::ProcessKey(Key);
+ if (state == osUnknown) {
+ switch (Key) {
+ case kOk:
+ return osBack;
+ default:
+ break;
+ }
+ }
+ if( Key == kLeft || Key == kRight ) {
+ const char* ItemText = Get(Current())->Text();
+ if( strstr(ItemText, tr("Channelinfo border by decor-file?")) != NULL ||
+ strstr(ItemText, tr("Channelinfo EPG border by decor-file?")) != NULL ||
+ strstr(ItemText, tr("Channelinfo progress by decor-file?")) != NULL ||
+ strstr(ItemText, tr("Signalquality progress by decor-file?")) != NULL
+ ) {
+ ItemLastSel = Current();
+ Setup();
+ }
+ }
+ return state;
+}
+
+// Menu Settings
+cFlatSetupMenu::cFlatSetupMenu(cFlatConfig* data) : cMenuSetupSubMenu(tr("Menu settings"), data) {
+ Setup();
+}
+
+void cFlatSetupMenu::Setup(void) {
+ Clear();
+
+ Add(new cMenuEditIntItem(tr("Menuitem padding"), &SetupConfig->MenuItemPadding));
+ Add(new cMenuEditBoolItem(tr("Show mainmenu item icons"), &SetupConfig->MenuItemIconsShow));
+ Add(new cMenuEditBoolItem(tr("Menu content fullsize background"), &SetupConfig->MenuContentFullSize));
+ Add(new cMenuEditBoolItem(tr("Show additional recording info"), &SetupConfig->RecordingAdditionalInfoShow));
+ Add(new cMenuEditBoolItem(tr("Show additional EPG info"), &SetupConfig->EpgAdditionalInfoShow));
+ Add(new cMenuEditBoolItem(tr("Show reruns in EPG info"), &SetupConfig->EpgRerunsShow));
+ Add(new cMenuEditBoolItem(tr("Menu draw background over the entire height"), &SetupConfig->MenuFullOsd));
+
+ Add(new cMenuEditBoolItem(tr("Recording menu show recording count in title"), &SetupConfig->MenuRecordingShowCount));
+ Add(new cMenuEditBoolItem(tr("Timer menu show timer count in title"), &SetupConfig->MenuTimerShowCount));
+ Add(new cMenuEditBoolItem(tr("Channel menu show channel count in title"), &SetupConfig->MenuChannelShowCount));
+
+ Add(new cMenuEditStraItem(tr("Menu channel view"), &SetupConfig->MenuChannelView, MenuChannelViews.Size(), &MenuChannelViews[0]));
+ Add(new cMenuEditStraItem(tr("Menu timer view"), &SetupConfig->MenuTimerView, MenuTimerViews.Size(), &MenuTimerViews[0]));
+ Add(new cMenuEditStraItem(tr("Menu event view"), &SetupConfig->MenuEventView, MenuEventViews.Size(), &MenuEventViews[0]));
+ Add(new cMenuEditStraItem(tr("Menu recording view"), &SetupConfig->MenuRecordingView, MenuRecordingViews.Size(), &MenuRecordingViews[0]));
+
+ Add(new cMenuEditBoolItem(tr("Scrollbar by decor-file?"), &SetupConfig->decorScrollBarByTheme));
+ if( SetupConfig->decorScrollBarByTheme ) {
+ cString type = cString::sprintf("%s:\t%s", tr("Scrollbar type"), ScrollBarTypes[SetupConfig->decorScrollBarTypeTheme]);
+ Add(new cOsdItem(type, osUnknown, false));
+ cString size = cString::sprintf("%s:\t%d", tr("Scrollbar size"), SetupConfig->decorScrollBarSizeTheme);
+ Add(new cOsdItem(size, osUnknown, false));
+ } else {
+ Add(new cMenuEditStraItem(tr("Scrollbar type"), &SetupConfig->decorScrollBarTypeUser, ScrollBarTypes.Size(), &ScrollBarTypes[0]));
+ Add(new cMenuEditIntItem(tr("Scrollbar size"), &SetupConfig->decorScrollBarSizeUser));
+ }
+
+ Add(new cMenuEditBoolItem(tr("Menuitem border by decor-file?"), &SetupConfig->decorBorderMenuItemByTheme));
+ if( SetupConfig->decorBorderMenuItemByTheme ) {
+ cString type = cString::sprintf("%s:\t%s", tr("Menuitem border type"), Bordertypes[SetupConfig->decorBorderMenuItemTypeTheme]);
+ Add(new cOsdItem(type, osUnknown, false));
+ cString size = cString::sprintf("%s:\t%d", tr("Menuitem border size"), SetupConfig->decorBorderMenuItemSizeTheme);
+ Add(new cOsdItem(size, osUnknown, false));
+ } else {
+ Add(new cMenuEditStraItem(tr("Menuitem border type"), &SetupConfig->decorBorderMenuItemTypeUser, Bordertypes.Size(), &Bordertypes[0]));
+ Add(new cMenuEditIntItem(tr("Menuitem border size"), &SetupConfig->decorBorderMenuItemSizeUser));
+ }
+
+ Add(new cMenuEditBoolItem(tr("Menucont. border by decor-file?"), &SetupConfig->decorBorderMenuContentByTheme));
+ if( SetupConfig->decorBorderMenuContentByTheme ) {
+ cString type = cString::sprintf("%s:\t%s", tr("Menucont. border type"), Bordertypes[SetupConfig->decorBorderMenuContentTypeTheme]);
+ Add(new cOsdItem(type, osUnknown, false));
+ cString size = cString::sprintf("%s:\t%d", tr("Menucont. border size"), SetupConfig->decorBorderMenuContentSizeTheme);
+ Add(new cOsdItem(size, osUnknown, false));
+ } else {
+ Add(new cMenuEditStraItem(tr("Menucont. border type"), &SetupConfig->decorBorderMenuContentTypeUser, Bordertypes.Size(), &Bordertypes[0]));
+ Add(new cMenuEditIntItem(tr("Menucont. border size"), &SetupConfig->decorBorderMenuContentSizeUser));
+ }
+
+ Add(new cMenuEditBoolItem(tr("Menucont. head border by decor-file?"), &SetupConfig->decorBorderMenuContentHeadByTheme));
+ if( SetupConfig->decorBorderMenuContentHeadByTheme ) {
+ cString type = cString::sprintf("%s:\t%s", tr("Menucont. head border type"), Bordertypes[SetupConfig->decorBorderMenuContentHeadTypeTheme]);
+ Add(new cOsdItem(type, osUnknown, false));
+ cString size = cString::sprintf("%s:\t%d", tr("Menucont. head border size"), SetupConfig->decorBorderMenuContentHeadSizeTheme);
+ Add(new cOsdItem(size, osUnknown, false));
+ } else {
+ Add(new cMenuEditStraItem(tr("Menucont. head border type"), &SetupConfig->decorBorderMenuContentHeadTypeUser, Bordertypes.Size(), &Bordertypes[0]));
+ Add(new cMenuEditIntItem(tr("Menucont. head border size"), &SetupConfig->decorBorderMenuContentHeadSizeUser));
+ }
+
+ Add(new cMenuEditBoolItem(tr("Menuitem progress by decor-file?"), &SetupConfig->decorProgressMenuItemByTheme));
+ if( SetupConfig->decorProgressMenuItemByTheme ) {
+ cString type = cString::sprintf("%s:\t%s", tr("Menuitem progress type"), Progresstypes[SetupConfig->decorProgressMenuItemTypeTheme]);
+ Add(new cOsdItem(type, osUnknown, false));
+ cString size = cString::sprintf("%s:\t%d", tr("Menuitem progress size"), SetupConfig->decorProgressMenuItemSizeTheme);
+ Add(new cOsdItem(size, osUnknown, false));
+ } else {
+ Add(new cMenuEditStraItem(tr("Menuitem progress type"), &SetupConfig->decorProgressMenuItemTypeUser, Progresstypes.Size(), &Progresstypes[0]));
+ Add(new cMenuEditIntItem(tr("Menuitem progress size"), &SetupConfig->decorProgressMenuItemSizeUser));
+ }
+
+ if( ItemLastSel >= 0 ) {
+ SetCurrent(Get(ItemLastSel));
+ ItemLastSel = -1;
+ }
+
+ Display();
+}
+
+eOSState cFlatSetupMenu::ProcessKey(eKeys Key) {
+ eOSState state = cOsdMenu::ProcessKey(Key);
+ if (state == osUnknown) {
+ switch (Key) {
+ case kOk:
+ return osBack;
+ default:
+ break;
+ }
+ }
+ if( Key == kLeft || Key == kRight ) {
+ const char* ItemText = Get(Current())->Text();
+ if( strstr(ItemText, tr("Menuitem border by decor-file?")) != NULL ||
+ strstr(ItemText, tr("Menucont. border by decor-file?")) != NULL ||
+ strstr(ItemText, tr("Menucont. head border by decor-file?")) != NULL ||
+ strstr(ItemText, tr("Menuitem progress by decor-file?")) != NULL ||
+ strstr(ItemText, tr("Scrollbar by decor-file?")) != NULL
+ ) {
+ ItemLastSel = Current();
+ Setup();
+ }
+ }
+ return state;
+}
+
+// Replay Settings
+cFlatSetupReplay::cFlatSetupReplay(cFlatConfig* data) : cMenuSetupSubMenu(tr("Replay settings"), data) {
+ Setup();
+}
+
+void cFlatSetupReplay::Setup(void) {
+ Clear();
+
+ Add(new cMenuEditBoolItem(tr("Show resolution & aspect"), &SetupConfig->RecordingResolutionAspectShow));
+ Add(new cMenuEditBoolItem(tr("Show format (hd/sd)"), &SetupConfig->RecordingFormatShow));
+ Add(new cMenuEditBoolItem(tr("Simple aspect & format"), &SetupConfig->RecordingSimpleAspectFormat));
+ Add(new cMenuEditPrcItem(tr("Time seconds font scale"), &SetupConfig->TimeSecsScale, 0.003, 0.01, 1));
+ Add(new cMenuEditBoolItem(tr("Show weather widget"), &SetupConfig->PlaybackWeatherShow));
+
+ Add(new cMenuEditBoolItem(tr("Dimm on pause?"), &SetupConfig->RecordingDimmOnPause));
+ if( SetupConfig->RecordingDimmOnPause ) {
+ Add(new cMenuEditIntItem(tr("Dimm on pause delay"), &SetupConfig->RecordingDimmOnPauseDelay));
+ Add(new cMenuEditIntItem(tr("Dimm on pause opaque"), &SetupConfig->RecordingDimmOnPauseOpaque));
+ } else {
+ cString type = cString::sprintf("%s:\t%d", tr("Dimm on pause delay"), SetupConfig->RecordingDimmOnPauseDelay);
+ Add(new cOsdItem(type, osUnknown, false));
+ cString size = cString::sprintf("%s:\t%d", tr("Dimm on pause opaque"), SetupConfig->RecordingDimmOnPauseOpaque);
+ Add(new cOsdItem(size, osUnknown, false));
+ }
+ Add(new cMenuEditBoolItem(tr("Replay border by decor-file?"), &SetupConfig->decorBorderReplayByTheme));
+ if( SetupConfig->decorBorderReplayByTheme ) {
+ cString type = cString::sprintf("%s:\t%s", tr("Replay border type"), Bordertypes[SetupConfig->decorBorderReplayTypeTheme]);
+ Add(new cOsdItem(type, osUnknown, false));
+ cString size = cString::sprintf("%s:\t%d", tr("Replay border size"), SetupConfig->decorBorderReplaySizeTheme);
+ Add(new cOsdItem(size, osUnknown, false));
+ } else {
+ Add(new cMenuEditStraItem(tr("Replay border type"), &SetupConfig->decorBorderReplayTypeUser, Bordertypes.Size(), &Bordertypes[0]));
+ Add(new cMenuEditIntItem(tr("Replay border size"), &SetupConfig->decorBorderReplaySizeUser));
+ }
+
+ Add(new cMenuEditBoolItem(tr("Replay progress by decor-file?"), &SetupConfig->decorProgressReplayByTheme));
+ if( SetupConfig->decorProgressReplayByTheme ) {
+ cString size = cString::sprintf("%s:\t%d", tr("Replay progress size"), SetupConfig->decorProgressReplaySizeTheme);
+ Add(new cOsdItem(size, osUnknown, false));
+ } else {
+ Add(new cMenuEditIntItem(tr("Replay progress size"), &SetupConfig->decorProgressReplaySizeUser));
+ }
+
+ if( ItemLastSel >= 0 ) {
+ SetCurrent(Get(ItemLastSel));
+ ItemLastSel = -1;
+ }
+
+ Display();
+}
+
+eOSState cFlatSetupReplay::ProcessKey(eKeys Key) {
+ eOSState state = cOsdMenu::ProcessKey(Key);
+ if (state == osUnknown) {
+ switch (Key) {
+ case kOk:
+ return osBack;
+ default:
+ break;
+ }
+ }
+ if( Key == kLeft || Key == kRight ) {
+ const char* ItemText = Get(Current())->Text();
+ if( strstr(ItemText, tr("Replay border by decor-file?")) != NULL ||
+ strstr(ItemText, tr("Replay progress by decor-file?")) != NULL ||
+ strstr(ItemText, tr("Dimm on pause?")) != NULL
+ ) {
+ ItemLastSel = Current();
+ Setup();
+ }
+ }
+ return state;
+}
+
+// Volume Settings
+cFlatSetupVolume::cFlatSetupVolume(cFlatConfig* data) : cMenuSetupSubMenu(tr("Volume settings"), data) {
+ Setup();
+}
+
+void cFlatSetupVolume::Setup(void) {
+ Clear();
+
+ Add(new cMenuEditBoolItem(tr("Volume border by decor-file?"), &SetupConfig->decorBorderVolumeByTheme));
+ if( SetupConfig->decorBorderVolumeByTheme ) {
+ cString type = cString::sprintf("%s:\t%s", tr("Volume border type"), Bordertypes[SetupConfig->decorBorderVolumeTypeTheme]);
+ Add(new cOsdItem(type, osUnknown, false));
+ cString size = cString::sprintf("%s:\t%d", tr("Volume border size"), SetupConfig->decorBorderVolumeSizeTheme);
+ Add(new cOsdItem(size, osUnknown, false));
+ } else {
+ Add(new cMenuEditStraItem(tr("Volume border type"), &SetupConfig->decorBorderVolumeTypeUser, Bordertypes.Size(), &Bordertypes[0]));
+ Add(new cMenuEditIntItem(tr("Volume border size"), &SetupConfig->decorBorderVolumeSizeUser));
+ }
+
+ Add(new cMenuEditBoolItem(tr("Volume progress by decor-file?"), &SetupConfig->decorProgressVolumeByTheme));
+ if( SetupConfig->decorProgressVolumeByTheme ) {
+ cString type = cString::sprintf("%s:\t%s", tr("Volume progress type"), Progresstypes[SetupConfig->decorProgressVolumeTypeTheme]);
+ Add(new cOsdItem(type, osUnknown, false));
+ cString size = cString::sprintf("%s:\t%d", tr("Volume progress size"), SetupConfig->decorProgressVolumeSizeTheme);
+ Add(new cOsdItem(size, osUnknown, false));
+ } else {
+ Add(new cMenuEditStraItem(tr("Volume progress type"), &SetupConfig->decorProgressVolumeTypeUser, Progresstypes.Size(), &Progresstypes[0]));
+ Add(new cMenuEditIntItem(tr("Volume progress size"), &SetupConfig->decorProgressVolumeSizeUser));
+ }
+
+ if( ItemLastSel >= 0 ) {
+ SetCurrent(Get(ItemLastSel));
+ ItemLastSel = -1;
+ }
+
+ Display();
+}
+
+eOSState cFlatSetupVolume::ProcessKey(eKeys Key) {
+ eOSState state = cOsdMenu::ProcessKey(Key);
+ if (state == osUnknown) {
+ switch (Key) {
+ case kOk:
+ return osBack;
+ default:
+ break;
+ }
+ }
+ if( Key == kLeft || Key == kRight ) {
+ const char* ItemText = Get(Current())->Text();
+ if( strstr(ItemText, tr("Volume border by decor-file?")) != NULL ||
+ strstr(ItemText, tr("Volume progress by decor-file?")) != NULL
+ ) {
+ ItemLastSel = Current();
+ Setup();
+ }
+ }
+ return state;
+}
+
+// Tracks Settings
+cFlatSetupTracks::cFlatSetupTracks(cFlatConfig* data) : cMenuSetupSubMenu(tr("Tracks settings"), data) {
+ Setup();
+}
+
+void cFlatSetupTracks::Setup(void) {
+ Clear();
+
+ Add(new cMenuEditBoolItem(tr("Tracks border by decor-file?"), &SetupConfig->decorBorderTrackByTheme));
+ if( SetupConfig->decorBorderTrackByTheme ) {
+ cString type = cString::sprintf("%s:\t%s", tr("Tracks border type"), Bordertypes[SetupConfig->decorBorderTrackTypeTheme]);
+ Add(new cOsdItem(type, osUnknown, false));
+ cString size = cString::sprintf("%s:\t%d", tr("Tracks border size"), SetupConfig->decorBorderTrackSizeTheme);
+ Add(new cOsdItem(size, osUnknown, false));
+ } else {
+ Add(new cMenuEditStraItem(tr("Tracks border type"), &SetupConfig->decorBorderTrackTypeUser, Bordertypes.Size(), &Bordertypes[0]));
+ Add(new cMenuEditIntItem(tr("Tracks border size"), &SetupConfig->decorBorderTrackSizeUser));
+ }
+
+ if( ItemLastSel >= 0 ) {
+ SetCurrent(Get(ItemLastSel));
+ ItemLastSel = -1;
+ }
+
+ Display();
+}
+
+eOSState cFlatSetupTracks::ProcessKey(eKeys Key) {
+ eOSState state = cOsdMenu::ProcessKey(Key);
+ if (state == osUnknown) {
+ switch (Key) {
+ case kOk:
+ return osBack;
+ default:
+ break;
+ }
+ }
+ if( Key == kLeft || Key == kRight ) {
+ const char* ItemText = Get(Current())->Text();
+ if( strstr(ItemText, tr("Tracks border by decor-file?")) != NULL
+ ) {
+ ItemLastSel = Current();
+ Setup();
+ }
+ }
+ return state;
+}
+
+// TVScraper Settings
+cFlatSetupTvsraper::cFlatSetupTvsraper(cFlatConfig* data) : cMenuSetupSubMenu(tr("TVScraper settings"), data) {
+ Setup();
+}
+
+void cFlatSetupTvsraper::Setup(void) {
+ Clear();
+
+ Add(new cMenuEditBoolItem(tr("Channelinfo show poster?"), &SetupConfig->TVScraperChanInfoShowPoster));
+ Add(new cMenuEditPrcItem(tr("Channelinfo poster size"), &SetupConfig->TVScraperChanInfoPosterSize, 0.004, 0.015, 2));
+ Add(new cMenuEditBoolItem(tr("Replayinfo show poster?"), &SetupConfig->TVScraperReplayInfoShowPoster));
+ Add(new cMenuEditPrcItem(tr("Replayinfo poster size"), &SetupConfig->TVScraperReplayInfoPosterSize, 0.004, 0.015, 2));
+ Add(new cMenuEditBoolItem(tr("EPG info show poster?"), &SetupConfig->TVScraperEPGInfoShowPoster));
+ Add(new cMenuEditBoolItem(tr("recording info show poster?"), &SetupConfig->TVScraperRecInfoShowPoster));
+ Add(new cMenuEditBoolItem(tr("EPG info show actors?"), &SetupConfig->TVScraperEPGInfoShowActors));
+ Add(new cMenuEditBoolItem(tr("recording info show actors?"), &SetupConfig->TVScraperRecInfoShowActors));
+
+ if( ItemLastSel >= 0 ) {
+ SetCurrent(Get(ItemLastSel));
+ ItemLastSel = -1;
+ }
+
+ Display();
+}
+
+eOSState cFlatSetupTvsraper::ProcessKey(eKeys Key) {
+ eOSState state = cOsdMenu::ProcessKey(Key);
+ if (state == osUnknown) {
+ switch (Key) {
+ case kOk:
+ return osBack;
+ default:
+ break;
+ }
+ }
+ return state;
+}
+
+// Main Menu Widgets Settings
+cFlatSetupMMWidget::cFlatSetupMMWidget(cFlatConfig* data) : cMenuSetupSubMenu(tr("Main menu widgets settings"), data) {
+ Setup();
+}
+
+void cFlatSetupMMWidget::Setup(void) {
+ Clear();
+
+ Add(new cMenuEditBoolItem(tr("Enable main menu widgets"), &SetupConfig->MainMenuWidgetsEnable));
+ if( SetupConfig->MainMenuWidgetsEnable ) {
+ Add(new cMenuEditPrcItem(tr("Main menu item scale"), &SetupConfig->MainMenuItemScale, 0.3, 0.7, 0));
+
+ Add(new cOsdItem(tr("Widget weather"), osUnknown, false));
+ Add(new cMenuEditBoolItem(tr("Widget weather: enable"), &SetupConfig->MainMenuWidgetWeatherShow));
+ if( SetupConfig->MainMenuWidgetWeatherShow ) {
+ Add(new cMenuEditIntItem(tr("Widget weather: position"), &SetupConfig->MainMenuWidgetWeatherPosition));
+ Add(new cMenuEditIntItem(tr("Widget weather: show days"), &SetupConfig->MainMenuWidgetWeatherDays));
+ Add(new cMenuEditStraItem(tr("Widget weather: type"), &SetupConfig->MainMenuWidgetWeatherType, WeatherTypes.Size(), &WeatherTypes[0]));
+ }
+
+ Add(new cOsdItem(tr("Widget DVB devices"), osUnknown, false));
+ Add(new cMenuEditBoolItem(tr("Widget DVB devices: enable"), &SetupConfig->MainMenuWidgetDVBDevicesShow));
+ if( SetupConfig->MainMenuWidgetDVBDevicesShow ) {
+ Add(new cMenuEditIntItem(tr("Widget DVB devices: position"), &SetupConfig->MainMenuWidgetDVBDevicesPosition));
+ Add(new cMenuEditBoolItem(tr("Widget DVB devices: don't show unknown"), &SetupConfig->MainMenuWidgetDVBDevicesDiscardUnknown));
+ Add(new cMenuEditBoolItem(tr("Widget DVB devices: don't show not used"), &SetupConfig->MainMenuWidgetDVBDevicesDiscardNotUsed));
+ }
+
+ Add(new cOsdItem(tr("Widget active timer"), osUnknown, false));
+ Add(new cMenuEditBoolItem(tr("Widget active timer: enable"), &SetupConfig->MainMenuWidgetActiveTimerShow));
+ if( SetupConfig->MainMenuWidgetActiveTimerShow ) {
+ Add(new cMenuEditIntItem(tr("Widget active timer: position"), &SetupConfig->MainMenuWidgetActiveTimerPosition));
+ Add(new cMenuEditIntItem(tr("Widget active timer: max show"), &SetupConfig->MainMenuWidgetActiveTimerMaxCount));
+ Add(new cMenuEditBoolItem(tr("Widget active timer: hide if empty"), &SetupConfig->MainMenuWidgetActiveTimerHideEmpty));
+ }
+
+ Add(new cOsdItem(tr("Widget last recordings"), osUnknown, false));
+ Add(new cMenuEditBoolItem(tr("Widget last recordings: enable"), &SetupConfig->MainMenuWidgetLastRecShow));
+ if( SetupConfig->MainMenuWidgetLastRecShow ) {
+ Add(new cMenuEditIntItem(tr("Widget last recordings: position"), &SetupConfig->MainMenuWidgetLastRecPosition));
+ Add(new cMenuEditIntItem(tr("Widget last recordings: max show"), &SetupConfig->MainMenuWidgetLastRecMaxCount));
+ }
+
+ Add(new cOsdItem(tr("Widget timer conflicts"), osUnknown, false));
+ Add(new cMenuEditBoolItem(tr("Widget timer conflicts: enable"), &SetupConfig->MainMenuWidgetTimerConflictsShow));
+ if( SetupConfig->MainMenuWidgetTimerConflictsShow ) {
+ Add(new cMenuEditIntItem(tr("Widget timer conflicts: position"), &SetupConfig->MainMenuWidgetTimerConflictsPosition));
+ Add(new cMenuEditBoolItem(tr("Widget timer conflicts: hide if empty"), &SetupConfig->MainMenuWidgetTimerConflictsHideEmpty));
+ }
+
+ Add(new cOsdItem(tr("Widget system information"), osUnknown, false));
+ Add(new cMenuEditBoolItem(tr("Widget system information: enable"), &SetupConfig->MainMenuWidgetSystemInfoShow));
+ if( SetupConfig->MainMenuWidgetSystemInfoShow ) {
+ Add(new cMenuEditIntItem(tr("Widget system information: position"), &SetupConfig->MainMenuWidgetSystemInfoPosition));
+ }
+
+ Add(new cOsdItem(tr("Widget system updates"), osUnknown, false));
+ Add(new cMenuEditBoolItem(tr("Widget system updates: enable"), &SetupConfig->MainMenuWidgetSystemUpdatesShow));
+ if( SetupConfig->MainMenuWidgetSystemUpdatesShow ) {
+ Add(new cMenuEditIntItem(tr("Widget system updates: position"), &SetupConfig->MainMenuWidgetSystemUpdatesPosition));
+ Add(new cMenuEditBoolItem(tr("Widget system updates: hide if empty"), &SetupConfig->MainMenuWidgetSystemUpdatesHideIfZero));
+ }
+
+ Add(new cOsdItem(tr("Widget temperatures"), osUnknown, false));
+ Add(new cMenuEditBoolItem(tr("Widget temperatures: enable"), &SetupConfig->MainMenuWidgetTemperaturesShow));
+ if( SetupConfig->MainMenuWidgetTemperaturesShow ) {
+ Add(new cMenuEditIntItem(tr("Widget temperatures: position"), &SetupConfig->MainMenuWidgetTemperaturesPosition));
+ }
+
+ Add(new cOsdItem(tr("Widget custom commands"), osUnknown, false));
+ Add(new cMenuEditBoolItem(tr("Widget custom commands: enable"), &SetupConfig->MainMenuWidgetCommandShow));
+ if( SetupConfig->MainMenuWidgetCommandShow ) {
+ Add(new cMenuEditIntItem(tr("Widget custom commands: position"), &SetupConfig->MainMenuWidgetCommandPosition));
+ }
+ }
+
+ if( ItemLastSel >= 0 ) {
+ SetCurrent(Get(ItemLastSel));
+ ItemLastSel = -1;
+ }
+
+ Display();
+}
+
+eOSState cFlatSetupMMWidget::ProcessKey(eKeys Key) {
+ eOSState state = cOsdMenu::ProcessKey(Key);
+ if (state == osUnknown) {
+ switch (Key) {
+ case kOk:
+ return osBack;
+ default:
+ break;
+ }
+ }
+ if( Key == kLeft || Key == kRight ) {
+ const char* ItemText = Get(Current())->Text();
+ if( strstr(ItemText, tr("Enable main menu widgets")) != NULL ||
+ strstr(ItemText, tr("Widget weather: enable")) != NULL ||
+ strstr(ItemText, tr("Widget DVB devices: enable")) != NULL ||
+ strstr(ItemText, tr("Widget active timer: enable")) != NULL ||
+ strstr(ItemText, tr("Widget last recordings: enable")) != NULL ||
+ strstr(ItemText, tr("Widget timer conflicts: enable")) != NULL ||
+ strstr(ItemText, tr("Widget system information: enable")) != NULL ||
+ strstr(ItemText, tr("Widget system updates: enable")) != NULL ||
+ strstr(ItemText, tr("Widget temperatures: enable")) != NULL ||
+ strstr(ItemText, tr("Widget custom commands: enable")) != NULL
+ ) {
+ ItemLastSel = Current();
+ Setup();
+ }
+ }
+ return state;
+}
diff --git a/setup.h b/setup.h
new file mode 100644
index 0000000..042a62c
--- /dev/null
+++ b/setup.h
@@ -0,0 +1,98 @@
+#pragma once
+
+#include <vdr/menu.h>
+#include <vdr/tools.h>
+#include "config.h"
+#include "services/scraper2vdr.h"
+
+class cFlatSetup : public cMenuSetupPage {
+ public:
+ cFlatSetup(void);
+ virtual ~cFlatSetup();
+ private:
+ cFlatConfig SetupConfig;
+
+ int ItemLastSel;
+ void Setup(void);
+ protected:
+ virtual void Store(void);
+ virtual eOSState ProcessKey(eKeys Key);
+};
+
+class cMenuSetupSubMenu : public cOsdMenu {
+ protected:
+ cFlatConfig *SetupConfig;
+ virtual void Setup(void) = 0;
+ cOsdItem *InfoItem(const char *label, const char *value);
+ int ItemLastSel;
+ public:
+ cMenuSetupSubMenu(const char *Title, cFlatConfig *data);
+};
+
+class cFlatSetupGeneral : public cMenuSetupSubMenu {
+ private:
+ protected:
+ void Setup(void);
+ void SaveCurrentSettings(void);
+ void LoadConfigFile(void);
+ bool SetupParse(const char *Name, const char *Value);
+ public:
+ cFlatSetupGeneral(cFlatConfig *data);
+ virtual eOSState ProcessKey(eKeys Key);
+};
+
+class cFlatSetupChannelInfo : public cMenuSetupSubMenu {
+ protected:
+ void Setup(void);
+ public:
+ cFlatSetupChannelInfo(cFlatConfig *data);
+ virtual eOSState ProcessKey(eKeys Key);
+};
+
+class cFlatSetupMenu : public cMenuSetupSubMenu {
+ protected:
+ void Setup(void);
+ public:
+ cFlatSetupMenu(cFlatConfig *data);
+ virtual eOSState ProcessKey(eKeys Key);
+};
+
+class cFlatSetupReplay : public cMenuSetupSubMenu {
+ protected:
+ void Setup(void);
+ public:
+ cFlatSetupReplay(cFlatConfig *data);
+ virtual eOSState ProcessKey(eKeys Key);
+};
+
+class cFlatSetupVolume : public cMenuSetupSubMenu {
+ protected:
+ void Setup(void);
+ public:
+ cFlatSetupVolume(cFlatConfig *data);
+ virtual eOSState ProcessKey(eKeys Key);
+};
+
+class cFlatSetupTracks : public cMenuSetupSubMenu {
+ protected:
+ void Setup(void);
+ public:
+ cFlatSetupTracks(cFlatConfig *data);
+ virtual eOSState ProcessKey(eKeys Key);
+};
+
+class cFlatSetupTvsraper : public cMenuSetupSubMenu {
+ protected:
+ void Setup(void);
+ public:
+ cFlatSetupTvsraper(cFlatConfig *data);
+ virtual eOSState ProcessKey(eKeys Key);
+};
+
+class cFlatSetupMMWidget : public cMenuSetupSubMenu {
+ protected:
+ void Setup(void);
+ public:
+ cFlatSetupMMWidget(cFlatConfig *data);
+ virtual eOSState ProcessKey(eKeys Key);
+};
diff --git a/skinflatplus.c b/skinflatplus.c
new file mode 100644
index 0000000..cfd2a6c
--- /dev/null
+++ b/skinflatplus.c
@@ -0,0 +1,140 @@
+/*
+ * skinflat.c: A plugin for the Video Disk Recorder
+ *
+ * See the README file for copyright information and how to reach the author.
+ *
+ * $Id$
+ */
+#include <getopt.h>
+#include <vdr/plugin.h>
+
+#if defined(APIVERSNUM) && APIVERSNUM < 10734
+#error "VDR-1.7.34 API version or greater is required!"
+#endif
+
+#include "flat.h"
+#include "setup.h"
+#include "imageloader.h"
+
+static const char *VERSION = "0.4.3";
+static const char *DESCRIPTION = "skin flatplus";
+
+class cPluginFlat : public cPlugin {
+ private:
+ cFlat *flat;
+ public:
+ cPluginFlat(void);
+ virtual ~cPluginFlat();
+ virtual const char *Version(void) { return VERSION; }
+ virtual const char *Description(void) { return DESCRIPTION; }
+ virtual const char *CommandLineHelp(void);
+ virtual bool ProcessArgs(int argc, char *argv[]);
+ virtual bool Initialize(void);
+ virtual bool Start(void);
+ virtual void Stop(void);
+ virtual void Housekeeping(void);
+ virtual void MainThreadHook(void);
+ virtual cString Active(void);
+ virtual time_t WakeupTime(void);
+ virtual const char *MainMenuEntry(void) {return NULL;}
+ virtual cOsdObject *MainMenuAction(void);
+ virtual cMenuSetupPage *SetupMenu(void);
+ virtual bool SetupParse(const char *Name, const char *Value);
+ virtual bool Service(const char *Id, void *Data = NULL);
+ virtual const char **SVDRPHelpPages(void);
+ virtual cString SVDRPCommand(const char *Command, const char *Option, int &ReplyCode);
+};
+
+cPluginFlat::cPluginFlat(void) {
+ flat = NULL;
+}
+
+cPluginFlat::~cPluginFlat() {
+}
+
+const char *cPluginFlat::CommandLineHelp(void) {
+ return " -l <LOGOPATH>, --logopath=<LOGOPATH> Set directory where Channel Logos are stored.\n";
+}
+
+bool cPluginFlat::ProcessArgs(int argc, char *argv[]) {
+ // Implement command line argument processing here if applicable.
+ static const struct option long_options[] = {
+ { "logopath", required_argument, NULL, 'l' },
+ { NULL }
+ };
+
+ int c;
+ while ((c = getopt_long(argc, argv, "l:", long_options, NULL)) != -1) {
+ switch (c) {
+ case 'l':
+ Config.SetLogoPath(cString(optarg));
+ break;
+ default:
+ return false;
+ }
+ }
+ return true;
+}
+
+bool cPluginFlat::Initialize(void) {
+ Config.Init();
+ return true;
+}
+
+bool cPluginFlat::Start(void) {
+ if (!cOsdProvider::SupportsTrueColor()) {
+ esyslog("skinflatplus: No TrueColor OSD found! Aborting!");
+ return false;
+ } else
+ dsyslog("skinflatplus: TrueColor OSD found");
+
+ imgCache.Create();
+ imgCache.PreLoadImage();
+
+ flat = new cFlat;
+ return flat;
+}
+
+void cPluginFlat::Stop(void) {
+ imgCache.Clear();
+}
+
+void cPluginFlat::Housekeeping(void) {
+}
+
+void cPluginFlat::MainThreadHook(void) {
+}
+
+cString cPluginFlat::Active(void) {
+ return NULL;
+}
+
+time_t cPluginFlat::WakeupTime(void) {
+ return 0;
+}
+
+cOsdObject *cPluginFlat::MainMenuAction(void) {
+ return NULL;
+}
+
+cMenuSetupPage *cPluginFlat::SetupMenu(void) {
+ return new cFlatSetup();
+}
+
+bool cPluginFlat::SetupParse(const char *Name, const char *Value) {
+ return Config.SetupParse(Name, Value);
+}
+
+bool cPluginFlat::Service(const char *Id, void *Data) {
+ return false;
+}
+
+const char **cPluginFlat::SVDRPHelpPages(void) {
+ return NULL;
+}
+
+cString cPluginFlat::SVDRPCommand(const char *Command, const char *Option, int &ReplyCode) {
+ return NULL;
+}
+
+VDRPLUGINCREATOR(cPluginFlat); // Don't touch this!
diff --git a/textscroller.c b/textscroller.c
new file mode 100644
index 0000000..37cf31f
--- /dev/null
+++ b/textscroller.c
@@ -0,0 +1,196 @@
+#include "textscroller.h"
+
+void cTextScroll::SetText(const char *text, cRect position, tColor colorFg, tColor colorBg, cFont *font, tColor colorExtraTextFg) {
+ if( Osd == NULL )
+ return;
+
+ Text = text;
+
+ Font = font;
+ Position = position;
+
+ ColorFg = colorFg; ColorBg = colorBg; ColorExtraTextFg = colorExtraTextFg;
+ cRect drawPort(0, 0, font->Width(Text.c_str()), Position.Height());
+
+ if( Osd && Pixmap )
+ Osd->DestroyPixmap(Pixmap);
+
+ Pixmap = Osd->CreatePixmap(Layer, Position, drawPort);
+ dsyslog("skinflatplus: TextScrollerPixmap left: %d top: %d width: %d height: %d", Position.Left(), Position.Top(), Position.Width(), Position.Height());
+ dsyslog("skinflatplus: TextScrollerPixmap drawPort left: %d top: %d width: %d height: %d", drawPort.Left(), drawPort.Top(), drawPort.Width(), drawPort.Height());
+ Pixmap->Fill( colorBg );
+ Draw();
+}
+
+void cTextScroll::UpdateViewPortWidth(int w) {
+ cRect viewPort = Pixmap->ViewPort();
+ viewPort.SetWidth(viewPort.Width() - w);
+ Pixmap->SetViewPort(viewPort);
+}
+
+void cTextScroll::Reset(void) {
+ if( !Pixmap )
+ return;
+
+ Pixmap->SetDrawPortPoint(cPoint(0, 0));
+ waitSteps = WAITSTEPS;
+}
+
+void cTextScroll::Draw(void) {
+ if( !Pixmap )
+ return;
+
+ if( ColorExtraTextFg ) {
+ std::string tilde = Text;
+ size_t found = tilde.find(" ~ ");
+ size_t found2 = tilde.find("~");
+ if( found != std::string::npos ) {
+ std::string first = tilde.substr(0, found);
+ std::string second = tilde.substr(found +2, tilde.length() );
+
+ Pixmap->DrawText(cPoint(0, 0), first.c_str(), ColorFg, ColorBg, Font);
+ int l = Font->Width( first.c_str() );
+ Pixmap->DrawText(cPoint(l, 0), second.c_str(), ColorExtraTextFg, ColorBg, Font);
+ } else if ( found2 != std::string::npos ) {
+ std::string first = tilde.substr(0, found2);
+ std::string second = tilde.substr(found2 +1, tilde.length() );
+
+ Pixmap->DrawText(cPoint(0, 0), first.c_str(), ColorFg, ColorBg, Font);
+ int l = Font->Width( first.c_str() );
+ l += Font->Width("X");
+ Pixmap->DrawText(cPoint(l, 0), second.c_str(), ColorExtraTextFg, ColorBg, Font);
+ } else
+ Pixmap->DrawText(cPoint(0, 0), Text.c_str(), ColorFg, ColorBg, Font);
+ } else {
+ Pixmap->DrawText(cPoint(0, 0), Text.c_str(), ColorFg, ColorBg, Font);
+ }
+}
+
+void cTextScroll::DoStep(void) {
+ if( !Pixmap )
+ return;
+
+ // wait at the beginning for better read
+ if( waitSteps > 0 ) {
+ waitSteps--;
+ return;
+ }
+ // wait after return to the front
+ if( ResetX ) {
+ ResetX = false;
+ Pixmap->SetDrawPortPoint(cPoint(0, 0));
+ waitSteps = WAITSTEPS;
+ return;
+ }
+
+ int drawPortX = Pixmap->DrawPort().X();
+
+ if( isReserveStep )
+ drawPortX += PixelsPerStep;
+ else
+ drawPortX -= PixelsPerStep;
+
+ int maxX = Pixmap->DrawPort().Width() - Pixmap->ViewPort().Width();
+ maxX *= -1;
+
+ if( ScrollType == 0 ) {
+ if( drawPortX <= maxX ) {
+ drawPortX += PixelsPerStep;
+ ResetX = true;
+ waitSteps = WAITSTEPS;
+ }
+ } else if( ScrollType == 1 ) {
+ if( drawPortX <= maxX ) {
+ isReserveStep = true;
+ waitSteps = WAITSTEPS;
+ } else if( drawPortX > 0 ) {
+ isReserveStep = false;
+ waitSteps = WAITSTEPS;
+ }
+ }
+
+ Pixmap->SetDrawPortPoint(cPoint(drawPortX, 0));
+}
+
+cTextScrollers::cTextScrollers() {
+ Layer = 2;
+}
+
+cTextScrollers::~cTextScrollers() {
+}
+
+void cTextScrollers::Clear(void) {
+ Cancel(-1);
+ while( Active() )
+ cCondWait::SleepMs(10);
+
+ std::vector<cTextScroll *>::iterator it;
+ for( it = Scrollers.begin(); it != Scrollers.end(); it++) {
+ delete *it;
+ }
+
+ Scrollers.clear();
+}
+
+void cTextScrollers::AddScroller(const char *text, cRect position, tColor colorFg, tColor colorBg, cFont *font, tColor ColorExtraTextFg) {
+ Cancel(-1);
+ while( Active() )
+ cCondWait::SleepMs(10);
+
+ Scrollers.push_back( new cTextScroll(Osd, scrollType, scrollStep, (int)((double)WAITDELAY / (double)scrollDelay), Layer) );
+ Scrollers.back()->SetText(text, position, colorFg, colorBg, font, ColorExtraTextFg);
+
+ StartScrolling();
+}
+
+void cTextScrollers::UpdateViewPortWidth(int w) {
+ std::vector<cTextScroll *>::iterator it;
+ for( it = Scrollers.begin(); it != Scrollers.end(); it++) {
+ cPixmap::Lock();
+ (*it)->UpdateViewPortWidth(w);
+ cPixmap::Unlock();
+ }
+}
+
+void cTextScrollers::StartScrolling(void) {
+ if( !Running() && Scrollers.size() > 0 ) {
+ Start();
+ }
+}
+
+void cTextScrollers::Action(void) {
+ // wait 1 second so the osd is finished
+ for(int i = 0; i < 100 && Running(); i++ ) {
+ cCondWait::SleepMs(10);
+ }
+
+ if( !Running() )
+ return;
+
+ std::vector<cTextScroll *>::iterator it;
+ for( it = Scrollers.begin(); it != Scrollers.end(); it++) {
+ if( !Running() )
+ return;
+ cPixmap::Lock();
+ (*it)->Reset();
+ cPixmap::Unlock();
+ }
+
+ while( Running() ) {
+ if (Running())
+ cCondWait::SleepMs(scrollDelay);
+
+ std::vector<cTextScroll *>::iterator it;
+ for( it = Scrollers.begin(); it != Scrollers.end(); it++) {
+ if( !Running() )
+ return;
+ cPixmap::Lock();
+ (*it)->DoStep();
+ cPixmap::Unlock();
+ }
+
+ if( Running() )
+ Osd->Flush();
+ }
+}
+
diff --git a/textscroller.h b/textscroller.h
new file mode 100644
index 0000000..f3cab67
--- /dev/null
+++ b/textscroller.h
@@ -0,0 +1,90 @@
+#pragma once
+
+#include <list>
+#include "flat.h"
+#include <string.h>
+#include <vdr/thread.h>
+
+#define WAITDELAY 1000 // in ms
+
+class cTextScroll
+{
+private:
+ cRect Position;
+
+ tColor ColorFg, ColorExtraTextFg, ColorBg;
+ std::string Text;
+ cFont *Font;
+ cPixmap *Pixmap;
+ cOsd *Osd;
+ int Layer;
+ int PixelsPerStep;
+ int WAITSTEPS, waitSteps;
+ bool isReserveStep;
+ bool ResetX;
+ int ScrollType;
+public:
+ cTextScroll(cOsd *osd, int type, int pixels, int waitsteps, int layer) {
+ Font = NULL;
+ Pixmap = NULL;
+ Osd = osd;
+ Layer = layer;
+ PixelsPerStep = pixels;
+ ScrollType = type;
+ isReserveStep = false;
+ WAITSTEPS = waitsteps;
+ ResetX = false;
+ }
+ cTextScroll(cOsd *osd, int type, int pixels, int waitsteps) {
+ Font = NULL;
+ Pixmap = NULL;
+ Osd = osd;
+ Layer = 2;
+ PixelsPerStep = pixels;
+ ScrollType = type;
+ isReserveStep = false;
+ WAITSTEPS = waitsteps;
+ ResetX = false;
+ }
+
+ ~cTextScroll() {
+ if( Pixmap ) {
+ Osd->DestroyPixmap(Pixmap);
+ Pixmap = NULL;
+ }
+ }
+
+ void UpdateViewPortWidth(int w);
+ void Reset(void);
+
+ void SetText(const char *text, cRect position, tColor colorFg, tColor colorBg, cFont *font, tColor ColorExtraTextFg = 0);
+ void DoStep(void);
+ void Draw(void);
+
+};
+
+class cTextScrollers : public cThread
+{
+private:
+ std::vector<cTextScroll *> Scrollers;
+
+ cOsd *Osd;
+ int scrollStep, scrollDelay;
+ int scrollType;
+ int Layer;
+ virtual void Action(void);
+ void StartScrolling(void);
+public:
+ cTextScrollers();
+ ~cTextScrollers();
+
+ void Clear(void);
+ void SetOsd(cOsd *osd) { Osd = osd;}
+ void SetPixmapLayer(int layer) { Layer = layer; }
+ void SetScrollStep(int step) { scrollStep = step; }
+ void SetScrollDelay(int delay) { scrollDelay = delay; }
+ void SetScrollType(int type) { scrollType = type; }
+ void AddScroller(const char *text, cRect position, tColor colorFg, tColor colorBg, cFont *font, tColor ColorExtraTextFg = 0);
+ void UpdateViewPortWidth(int w);
+ bool isActive(void) { return Active(); }
+};
diff --git a/themes/flatPlus-MVBeige.theme b/themes/flatPlus-MVBeige.theme
new file mode 100644
index 0000000..0e78815
--- /dev/null
+++ b/themes/flatPlus-MVBeige.theme
@@ -0,0 +1,118 @@
+Description = MV Beige
+clrTopBarBg = C5101010
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FFCCA550
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5101010
+clrTopBarBorderFg = C5101010
+clrTopBarBorderBg = C5101010
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5101010
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5101010
+clrButtonBg = C5101010
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5101010
+clrButtonBorderBg = C5101010
+clrMessageBg = C5101010
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5101010
+clrMessageBorderBg = C5101010
+clrChannelBg = C5101010
+clrChannelFontTitle = FFCCA550
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FFCCA550
+clrChannelProgressBg = C5101010
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5101010
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5101010
+clrChannelBorderFg = C5101010
+clrChannelBorderBg = C5101010
+clrChannelEPGBorderFg = C5101010
+clrChannelEPGBorderBg = C5101010
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5101010
+clrItemBg = C5101010
+clrItemFont = FFCCA550
+clrItemCurrentBg = E0CCA550
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5101010
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FFCCA550
+clrScrollbarBg = C5101010
+clrMenuEventBg = C5101010
+clrMenuEventFontTitle = FFCCA550
+clrMenuEventTitleLine = FFEFC873
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5101010
+clrMenuRecFontTitle = FFCCA550
+clrMenuRecTitleLine = FFEFC873
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5101010
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5101010
+clrMenuContentHeadBorderBg = C5101010
+clrMenuContentBorderFg = C5101010
+clrMenuContentBorderBg = C5101010
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5101010
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C5CCA550
+clrMenuItemBorderFg = C5101010
+clrMenuItemBorderBg = C5101010
+clrMenuItemSelableBorderFg = C5101010
+clrMenuItemSelableBorderBg = C5101010
+clrMenuItemCurrentBorderFg = E1CCA550
+clrMenuItemCurrentBorderBg = E1CCA550
+clrMenuItemExtraTextFont = FFCCA550
+clrMenuItemExtraTextCurrentFont = FF101010
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5101010
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FFCCA550
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FFCCA550
+clrReplayProgressBg = C5101010
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FFCCA550
+clrReplayBorderFg = C5101010
+clrReplayBorderBg = C5101010
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5101010
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5101010
+clrTrackItemSelableBorderBg = C5101010
+clrTrackItemCurrentBg = E0CCA550
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E1CCA550
+clrTrackItemCurrentBorderBg = E1CCA550
+clrVolumeBg = C5101010
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FFCCA550
+clrVolumeProgressBg = C5101010
+clrVolumeBorderFg = C5101010
+clrVolumeBorderBg = C5101010
diff --git a/themes/flatPlus-MVBerry.theme b/themes/flatPlus-MVBerry.theme
new file mode 100644
index 0000000..1c4d372
--- /dev/null
+++ b/themes/flatPlus-MVBerry.theme
@@ -0,0 +1,118 @@
+Description = MV Berry
+clrTopBarBg = C5101010
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FFA61D4D
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5101010
+clrTopBarBorderFg = C5101010
+clrTopBarBorderBg = C5101010
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5101010
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5101010
+clrButtonBg = C5101010
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5101010
+clrButtonBorderBg = C5101010
+clrMessageBg = C5101010
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5101010
+clrMessageBorderBg = C5101010
+clrChannelBg = C5101010
+clrChannelFontTitle = FFA61D4D
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FFA61D4D
+clrChannelProgressBg = C5101010
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5101010
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5101010
+clrChannelBorderFg = C5101010
+clrChannelBorderBg = C5101010
+clrChannelEPGBorderFg = C5101010
+clrChannelEPGBorderBg = C5101010
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5101010
+clrItemBg = C5101010
+clrItemFont = FFA61D4D
+clrItemCurrentBg = E0A61D4D
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5101010
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FFA61D4D
+clrScrollbarBg = C5101010
+clrMenuEventBg = C5101010
+clrMenuEventFontTitle = FFA61D4D
+clrMenuEventTitleLine = FFC94070
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5101010
+clrMenuRecFontTitle = FFA61D4D
+clrMenuRecTitleLine = FFC94070
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5101010
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5101010
+clrMenuContentHeadBorderBg = C5101010
+clrMenuContentBorderFg = C5101010
+clrMenuContentBorderBg = C5101010
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5101010
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C5A61D4D
+clrMenuItemBorderFg = C5101010
+clrMenuItemBorderBg = C5101010
+clrMenuItemSelableBorderFg = C5101010
+clrMenuItemSelableBorderBg = C5101010
+clrMenuItemCurrentBorderFg = E1A61D4D
+clrMenuItemCurrentBorderBg = E1A61D4D
+clrMenuItemExtraTextFont = FFA61D4D
+clrMenuItemExtraTextCurrentFont = FF101010
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5101010
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FFA61D4D
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FFA61D4D
+clrReplayProgressBg = C5101010
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FFA61D4D
+clrReplayBorderFg = C5101010
+clrReplayBorderBg = C5101010
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5101010
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5101010
+clrTrackItemSelableBorderBg = C5101010
+clrTrackItemCurrentBg = E0A61D4D
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E1A61D4D
+clrTrackItemCurrentBorderBg = E1A61D4D
+clrVolumeBg = C5101010
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FFA61D4D
+clrVolumeProgressBg = C5101010
+clrVolumeBorderFg = C5101010
+clrVolumeBorderBg = C5101010
diff --git a/themes/flatPlus-MVBlood.theme b/themes/flatPlus-MVBlood.theme
new file mode 100644
index 0000000..21e82b4
--- /dev/null
+++ b/themes/flatPlus-MVBlood.theme
@@ -0,0 +1,118 @@
+Description = MV Blood
+clrTopBarBg = C5221111
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FF911D10
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5221111
+clrTopBarBorderFg = C5221111
+clrTopBarBorderBg = C5221111
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5221111
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5221111
+clrButtonBg = C5221111
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5221111
+clrButtonBorderBg = C5221111
+clrMessageBg = C5221111
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5221111
+clrMessageBorderBg = C5221111
+clrChannelBg = C5221111
+clrChannelFontTitle = FF911D10
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FF911D10
+clrChannelProgressBg = C5221111
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5221111
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5221111
+clrChannelBorderFg = C5221111
+clrChannelBorderBg = C5221111
+clrChannelEPGBorderFg = C5221111
+clrChannelEPGBorderBg = C5221111
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5221111
+clrItemBg = C5221111
+clrItemFont = FF911D10
+clrItemCurrentBg = E0911D10
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5221111
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FF911D10
+clrScrollbarBg = C5221111
+clrMenuEventBg = C5221111
+clrMenuEventFontTitle = FF911D10
+clrMenuEventTitleLine = FFB44033
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5221111
+clrMenuRecFontTitle = FF911D10
+clrMenuRecTitleLine = FFB44033
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5221111
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5221111
+clrMenuContentHeadBorderBg = C5221111
+clrMenuContentBorderFg = C5221111
+clrMenuContentBorderBg = C5221111
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5221111
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C5911D10
+clrMenuItemBorderFg = C5221111
+clrMenuItemBorderBg = C5221111
+clrMenuItemSelableBorderFg = C5221111
+clrMenuItemSelableBorderBg = C5221111
+clrMenuItemCurrentBorderFg = E1911D10
+clrMenuItemCurrentBorderBg = E1911D10
+clrMenuItemExtraTextFont = FF911D10
+clrMenuItemExtraTextCurrentFont = FF221111
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5221111
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF911D10
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FF911D10
+clrReplayProgressBg = C5221111
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF911D10
+clrReplayBorderFg = C5221111
+clrReplayBorderBg = C5221111
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5221111
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5221111
+clrTrackItemSelableBorderBg = C5221111
+clrTrackItemCurrentBg = E0911D10
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E1911D10
+clrTrackItemCurrentBorderBg = E1911D10
+clrVolumeBg = C5221111
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FF911D10
+clrVolumeProgressBg = C5221111
+clrVolumeBorderFg = C5221111
+clrVolumeBorderBg = C5221111
diff --git a/themes/flatPlus-MVBlue.theme b/themes/flatPlus-MVBlue.theme
new file mode 100644
index 0000000..b4f2aad
--- /dev/null
+++ b/themes/flatPlus-MVBlue.theme
@@ -0,0 +1,118 @@
+Description = MV Blue
+clrTopBarBg = C5101010
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FF0050EF
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5101010
+clrTopBarBorderFg = C5101010
+clrTopBarBorderBg = C5101010
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5101010
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5101010
+clrButtonBg = C5101010
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5101010
+clrButtonBorderBg = C5101010
+clrMessageBg = C5101010
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5101010
+clrMessageBorderBg = C5101010
+clrChannelBg = C5101010
+clrChannelFontTitle = FF0050EF
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FF0050EF
+clrChannelProgressBg = C5101010
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5101010
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5101010
+clrChannelBorderFg = C5101010
+clrChannelBorderBg = C5101010
+clrChannelEPGBorderFg = C5101010
+clrChannelEPGBorderBg = C5101010
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5101010
+clrItemBg = C5101010
+clrItemFont = FF0050EF
+clrItemCurrentBg = E00050EF
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5101010
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FF0050EF
+clrScrollbarBg = C5101010
+clrMenuEventBg = C5101010
+clrMenuEventFontTitle = FF0050EF
+clrMenuEventTitleLine = FF1060FF
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5101010
+clrMenuRecFontTitle = FF0050EF
+clrMenuRecTitleLine = FF1060FF
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5101010
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5101010
+clrMenuContentHeadBorderBg = C5101010
+clrMenuContentBorderFg = C5101010
+clrMenuContentBorderBg = C5101010
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5101010
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C50050EF
+clrMenuItemBorderFg = C5101010
+clrMenuItemBorderBg = C5101010
+clrMenuItemSelableBorderFg = C5101010
+clrMenuItemSelableBorderBg = C5101010
+clrMenuItemCurrentBorderFg = E10050EF
+clrMenuItemCurrentBorderBg = E10050EF
+clrMenuItemExtraTextFont = FF0050EF
+clrMenuItemExtraTextCurrentFont = FF101010
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5101010
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF0050EF
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FF0050EF
+clrReplayProgressBg = C5101010
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF0050EF
+clrReplayBorderFg = C5101010
+clrReplayBorderBg = C5101010
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5101010
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5101010
+clrTrackItemSelableBorderBg = C5101010
+clrTrackItemCurrentBg = E00050EF
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E10050EF
+clrTrackItemCurrentBorderBg = E10050EF
+clrVolumeBg = C5101010
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FF0050EF
+clrVolumeProgressBg = C5101010
+clrVolumeBorderFg = C5101010
+clrVolumeBorderBg = C5101010
diff --git a/themes/flatPlus-MVCappuchino.theme b/themes/flatPlus-MVCappuchino.theme
new file mode 100644
index 0000000..6ebb9c7
--- /dev/null
+++ b/themes/flatPlus-MVCappuchino.theme
@@ -0,0 +1,118 @@
+Description = MV Cappuchino
+clrTopBarBg = C5101010
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FF87794E
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5101010
+clrTopBarBorderFg = C5101010
+clrTopBarBorderBg = C5101010
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5101010
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5101010
+clrButtonBg = C5101010
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5101010
+clrButtonBorderBg = C5101010
+clrMessageBg = C5101010
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5101010
+clrMessageBorderBg = C5101010
+clrChannelBg = C5101010
+clrChannelFontTitle = FF87794E
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FF87794E
+clrChannelProgressBg = C5101010
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5101010
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5101010
+clrChannelBorderFg = C5101010
+clrChannelBorderBg = C5101010
+clrChannelEPGBorderFg = C5101010
+clrChannelEPGBorderBg = C5101010
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5101010
+clrItemBg = C5101010
+clrItemFont = FF87794E
+clrItemCurrentBg = E087794E
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5101010
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FF87794E
+clrScrollbarBg = C5101010
+clrMenuEventBg = C5101010
+clrMenuEventFontTitle = FF87794E
+clrMenuEventTitleLine = FFAA9C71
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5101010
+clrMenuRecFontTitle = FF87794E
+clrMenuRecTitleLine = FFAA9C71
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5101010
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5101010
+clrMenuContentHeadBorderBg = C5101010
+clrMenuContentBorderFg = C5101010
+clrMenuContentBorderBg = C5101010
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5101010
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C587794E
+clrMenuItemBorderFg = C5101010
+clrMenuItemBorderBg = C5101010
+clrMenuItemSelableBorderFg = C5101010
+clrMenuItemSelableBorderBg = C5101010
+clrMenuItemCurrentBorderFg = E187794E
+clrMenuItemCurrentBorderBg = E187794E
+clrMenuItemExtraTextFont = FF87794E
+clrMenuItemExtraTextCurrentFont = FF101010
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5101010
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF87794E
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FF87794E
+clrReplayProgressBg = C5101010
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF87794E
+clrReplayBorderFg = C5101010
+clrReplayBorderBg = C5101010
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5101010
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5101010
+clrTrackItemSelableBorderBg = C5101010
+clrTrackItemCurrentBg = E087794E
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E187794E
+clrTrackItemCurrentBorderBg = E187794E
+clrVolumeBg = C5101010
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FF87794E
+clrVolumeProgressBg = C5101010
+clrVolumeBorderFg = C5101010
+clrVolumeBorderBg = C5101010
diff --git a/themes/flatPlus-MVChocolate.theme b/themes/flatPlus-MVChocolate.theme
new file mode 100644
index 0000000..ac48160
--- /dev/null
+++ b/themes/flatPlus-MVChocolate.theme
@@ -0,0 +1,118 @@
+Description = MV Chocolate
+clrTopBarBg = C5101010
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FF825A2C
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5101010
+clrTopBarBorderFg = C5101010
+clrTopBarBorderBg = C5101010
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5101010
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5101010
+clrButtonBg = C5101010
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5101010
+clrButtonBorderBg = C5101010
+clrMessageBg = C5101010
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5101010
+clrMessageBorderBg = C5101010
+clrChannelBg = C5101010
+clrChannelFontTitle = FF825A2C
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FF825A2C
+clrChannelProgressBg = C5101010
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5101010
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5101010
+clrChannelBorderFg = C5101010
+clrChannelBorderBg = C5101010
+clrChannelEPGBorderFg = C5101010
+clrChannelEPGBorderBg = C5101010
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5101010
+clrItemBg = C5101010
+clrItemFont = FF825A2C
+clrItemCurrentBg = E0825A2C
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5101010
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FF825A2C
+clrScrollbarBg = C5101010
+clrMenuEventBg = C5101010
+clrMenuEventFontTitle = FF825A2C
+clrMenuEventTitleLine = FFA57D4F
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5101010
+clrMenuRecFontTitle = FF825A2C
+clrMenuRecTitleLine = FFA57D4F
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5101010
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5101010
+clrMenuContentHeadBorderBg = C5101010
+clrMenuContentBorderFg = C5101010
+clrMenuContentBorderBg = C5101010
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5101010
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C5825A2C
+clrMenuItemBorderFg = C5101010
+clrMenuItemBorderBg = C5101010
+clrMenuItemSelableBorderFg = C5101010
+clrMenuItemSelableBorderBg = C5101010
+clrMenuItemCurrentBorderFg = E1825A2C
+clrMenuItemCurrentBorderBg = E1825A2C
+clrMenuItemExtraTextFont = FF825A2C
+clrMenuItemExtraTextCurrentFont = FF101010
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5101010
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF825A2C
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FF825A2C
+clrReplayProgressBg = C5101010
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF825A2C
+clrReplayBorderFg = C5101010
+clrReplayBorderBg = C5101010
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5101010
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5101010
+clrTrackItemSelableBorderBg = C5101010
+clrTrackItemCurrentBg = E0825A2C
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E1825A2C
+clrTrackItemCurrentBorderBg = E1825A2C
+clrVolumeBg = C5101010
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FF825A2C
+clrVolumeProgressBg = C5101010
+clrVolumeBorderFg = C5101010
+clrVolumeBorderBg = C5101010
diff --git a/themes/flatPlus-MVCyan.theme b/themes/flatPlus-MVCyan.theme
new file mode 100644
index 0000000..8bcbd52
--- /dev/null
+++ b/themes/flatPlus-MVCyan.theme
@@ -0,0 +1,118 @@
+Description = MV Cyan
+clrTopBarBg = C5101010
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FF149BAF
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5101010
+clrTopBarBorderFg = C5101010
+clrTopBarBorderBg = C5101010
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5101010
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5101010
+clrButtonBg = C5101010
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5101010
+clrButtonBorderBg = C5101010
+clrMessageBg = C5101010
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5101010
+clrMessageBorderBg = C5101010
+clrChannelBg = C5101010
+clrChannelFontTitle = FF149BAF
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FF149BAF
+clrChannelProgressBg = C5101010
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5101010
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5101010
+clrChannelBorderFg = C5101010
+clrChannelBorderBg = C5101010
+clrChannelEPGBorderFg = C5101010
+clrChannelEPGBorderBg = C5101010
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5101010
+clrItemBg = C5101010
+clrItemFont = FF149BAF
+clrItemCurrentBg = E0149BAF
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5101010
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FF149BAF
+clrScrollbarBg = C5101010
+clrMenuEventBg = C5101010
+clrMenuEventFontTitle = FF149BAF
+clrMenuEventTitleLine = FF37BED2
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5101010
+clrMenuRecFontTitle = FF149BAF
+clrMenuRecTitleLine = FF37BED2
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5101010
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5101010
+clrMenuContentHeadBorderBg = C5101010
+clrMenuContentBorderFg = C5101010
+clrMenuContentBorderBg = C5101010
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5101010
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C5149BAF
+clrMenuItemBorderFg = C5101010
+clrMenuItemBorderBg = C5101010
+clrMenuItemSelableBorderFg = C5101010
+clrMenuItemSelableBorderBg = C5101010
+clrMenuItemCurrentBorderFg = E1149BAF
+clrMenuItemCurrentBorderBg = E1149BAF
+clrMenuItemExtraTextFont = FF149BAF
+clrMenuItemExtraTextCurrentFont = FF101010
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5101010
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF149BAF
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FF149BAF
+clrReplayProgressBg = C5101010
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF149BAF
+clrReplayBorderFg = C5101010
+clrReplayBorderBg = C5101010
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5101010
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5101010
+clrTrackItemSelableBorderBg = C5101010
+clrTrackItemCurrentBg = E0149BAF
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E1149BAF
+clrTrackItemCurrentBorderBg = E1149BAF
+clrVolumeBg = C5101010
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FF149BAF
+clrVolumeProgressBg = C5101010
+clrVolumeBorderFg = C5101010
+clrVolumeBorderBg = C5101010
diff --git a/themes/flatPlus-MVDeepBlue.theme b/themes/flatPlus-MVDeepBlue.theme
new file mode 100644
index 0000000..98fcaab
--- /dev/null
+++ b/themes/flatPlus-MVDeepBlue.theme
@@ -0,0 +1,118 @@
+Description = MV DeepBlue
+clrTopBarBg = C5101030
+clrTopBarFont = FFDDDDEE
+clrTopBarTimeFont = FF0545DF
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5101030
+clrTopBarBorderFg = C5101030
+clrTopBarBorderBg = C5101030
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5101030
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5101030
+clrButtonBg = C5101030
+clrButtonFont = FFDDDDEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5101030
+clrButtonBorderBg = C5101030
+clrMessageBg = C5101030
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5101030
+clrMessageBorderBg = C5101030
+clrChannelBg = C5101030
+clrChannelFontTitle = FF0545DF
+clrChannelFontEpg = FFDDDDEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FF0545DF
+clrChannelProgressBg = C5101030
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5101030
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5101030
+clrChannelBorderFg = C5101030
+clrChannelBorderBg = C5101030
+clrChannelEPGBorderFg = C5101030
+clrChannelEPGBorderBg = C5101030
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5101030
+clrItemBg = C5101030
+clrItemFont = FF0545DF
+clrItemCurrentBg = E00545DF
+clrItemCurrentFont = FFDDDDEE
+clrItemSelableBg = C5101030
+clrItemSelableFont = FFDDDDEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FF0545DF
+clrScrollbarBg = C5101030
+clrMenuEventBg = C5101030
+clrMenuEventFontTitle = FF0545DF
+clrMenuEventTitleLine = FF2565FF
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5101030
+clrMenuRecFontTitle = FF0545DF
+clrMenuRecTitleLine = FF2565FF
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5101030
+clrMenuTextFont = FFDDDDEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5101030
+clrMenuContentHeadBorderBg = C5101030
+clrMenuContentBorderFg = C5101030
+clrMenuContentBorderBg = C5101030
+clrMenuItemProgressFg = FFDDDDEE
+clrMenuItemProgressBarFg = FFDDDDEE
+clrMenuItemProgressBg = C5101030
+clrMenuItemCurProgressFg = FFDDDDEE
+clrMenuItemCurProgressBarFg = FFDDDDEE
+clrMenuItemCurProgressBg = C50545DF
+clrMenuItemBorderFg = C5101030
+clrMenuItemBorderBg = C5101030
+clrMenuItemSelableBorderFg = C5101030
+clrMenuItemSelableBorderBg = C5101030
+clrMenuItemCurrentBorderFg = E10545DF
+clrMenuItemCurrentBorderBg = E10545DF
+clrMenuItemExtraTextFont = FF0545DF
+clrMenuItemExtraTextCurrentFont = FF101030
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5101030
+clrReplayFont = FFDDDDEE
+clrReplayFontSpeed = FF0545DF
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FF0545DF
+clrReplayProgressBg = C5101030
+clrReplayMarkFg = FFDDDDEE
+clrReplayMarkCurrentFg = FF0545DF
+clrReplayBorderFg = C5101030
+clrReplayBorderBg = C5101030
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFDDDDEE
+clrTrackItemSelableBg = C5101030
+clrTrackItemSelableFont = FFDDDDEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5101030
+clrTrackItemSelableBorderBg = C5101030
+clrTrackItemCurrentBg = E00545DF
+clrTrackItemCurrentFont = FFDDDDEE
+clrTrackItemCurrentBorderFg = E10545DF
+clrTrackItemCurrentBorderBg = E10545DF
+clrVolumeBg = C5101030
+clrVolumeFont = FFDDDDEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FF0545DF
+clrVolumeProgressBg = C5101030
+clrVolumeBorderFg = C5101030
+clrVolumeBorderBg = C5101030
diff --git a/themes/flatPlus-MVFog.theme b/themes/flatPlus-MVFog.theme
new file mode 100644
index 0000000..e4c5f78
--- /dev/null
+++ b/themes/flatPlus-MVFog.theme
@@ -0,0 +1,118 @@
+Description = MV Fog
+clrTopBarBg = A0DEDEDE
+clrTopBarFont = FF445867
+clrTopBarTimeFont = FFDEDEDE
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = A0DEDEDE
+clrTopBarBorderFg = C5DEDEDE
+clrTopBarBorderBg = A0DEDEDE
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = A0DEDEDE
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = A0DEDEDE
+clrButtonBg = A0DEDEDE
+clrButtonFont = FF445867
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5DEDEDE
+clrButtonBorderBg = A0DEDEDE
+clrMessageBg = A0DEDEDE
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5DEDEDE
+clrMessageBorderBg = A0DEDEDE
+clrChannelBg = A0DEDEDE
+clrChannelFontTitle = FFDEDEDE
+clrChannelFontEpg = FF445867
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FFDEDEDE
+clrChannelProgressBg = A0DEDEDE
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = A0DEDEDE
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = A0DEDEDE
+clrChannelBorderFg = C5DEDEDE
+clrChannelBorderBg = A0DEDEDE
+clrChannelEPGBorderFg = C5DEDEDE
+clrChannelEPGBorderBg = A0DEDEDE
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = A0DEDEDE
+clrItemBg = A0DEDEDE
+clrItemFont = FFDEDEDE
+clrItemCurrentBg = E0DEDEDE
+clrItemCurrentFont = FFDEDEDE
+clrItemSelableBg = A0DEDEDE
+clrItemSelableFont = FF445867
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FFDEDEDE
+clrScrollbarBg = A0DEDEDE
+clrMenuEventBg = A0DEDEDE
+clrMenuEventFontTitle = FF111111
+clrMenuEventTitleLine = FF343434
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = A0DEDEDE
+clrMenuRecFontTitle = FF111111
+clrMenuRecTitleLine = FF343434
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = A0DEDEDE
+clrMenuTextFont = FF445867
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5DEDEDE
+clrMenuContentHeadBorderBg = A0DEDEDE
+clrMenuContentBorderFg = C5DEDEDE
+clrMenuContentBorderBg = A0DEDEDE
+clrMenuItemProgressFg = FF445867
+clrMenuItemProgressBarFg = FF445867
+clrMenuItemProgressBg = A0DEDEDE
+clrMenuItemCurProgressFg = FF445867
+clrMenuItemCurProgressBarFg = FF445867
+clrMenuItemCurProgressBg = A0DEDEDE
+clrMenuItemBorderFg = C5DEDEDE
+clrMenuItemBorderBg = A0DEDEDE
+clrMenuItemSelableBorderFg = C5DEDEDE
+clrMenuItemSelableBorderBg = A0DEDEDE
+clrMenuItemCurrentBorderFg = EDEDEDE1
+clrMenuItemCurrentBorderBg = EDEDEDE1
+clrMenuItemExtraTextFont = FFDEDEDE
+clrMenuItemExtraTextCurrentFont = FFDEDEDE
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = A0DEDEDE
+clrReplayFont = FF445867
+clrReplayFontSpeed = FFDEDEDE
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FFDEDEDE
+clrReplayProgressBg = A0DEDEDE
+clrReplayMarkFg = FF445867
+clrReplayMarkCurrentFg = FFDEDEDE
+clrReplayBorderFg = C5DEDEDE
+clrReplayBorderBg = A0DEDEDE
+clrTrackItemBg = A0555555
+clrTrackItemFont = FF445867
+clrTrackItemSelableBg = A0DEDEDE
+clrTrackItemSelableFont = FF445867
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = A0555555
+clrTrackItemSelableBorderFg = C5DEDEDE
+clrTrackItemSelableBorderBg = A0DEDEDE
+clrTrackItemCurrentBg = E0DEDEDE
+clrTrackItemCurrentFont = FF445867
+clrTrackItemCurrentBorderFg = EDEDEDE1
+clrTrackItemCurrentBorderBg = EDEDEDE1
+clrVolumeBg = A0DEDEDE
+clrVolumeFont = FF445867
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FFDEDEDE
+clrVolumeProgressBg = A0DEDEDE
+clrVolumeBorderFg = C5DEDEDE
+clrVolumeBorderBg = A0DEDEDE
diff --git a/themes/flatPlus-MVGrapefruit.theme b/themes/flatPlus-MVGrapefruit.theme
new file mode 100644
index 0000000..e160ebd
--- /dev/null
+++ b/themes/flatPlus-MVGrapefruit.theme
@@ -0,0 +1,118 @@
+Description = MV Grapefruit
+clrTopBarBg = C5101010
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FFC3461B
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5101010
+clrTopBarBorderFg = C5101010
+clrTopBarBorderBg = C5101010
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5101010
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5101010
+clrButtonBg = C5101010
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5101010
+clrButtonBorderBg = C5101010
+clrMessageBg = C5101010
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5101010
+clrMessageBorderBg = C5101010
+clrChannelBg = C5101010
+clrChannelFontTitle = FFC3461B
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FFC3461B
+clrChannelProgressBg = C5101010
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5101010
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5101010
+clrChannelBorderFg = C5101010
+clrChannelBorderBg = C5101010
+clrChannelEPGBorderFg = C5101010
+clrChannelEPGBorderBg = C5101010
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5101010
+clrItemBg = C5101010
+clrItemFont = FFC3461B
+clrItemCurrentBg = E0C3461B
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5101010
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FFC3461B
+clrScrollbarBg = C5101010
+clrMenuEventBg = C5101010
+clrMenuEventFontTitle = FFC3461B
+clrMenuEventTitleLine = FFE6693E
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5101010
+clrMenuRecFontTitle = FFC3461B
+clrMenuRecTitleLine = FFE6693E
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5101010
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5101010
+clrMenuContentHeadBorderBg = C5101010
+clrMenuContentBorderFg = C5101010
+clrMenuContentBorderBg = C5101010
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5101010
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C5C3461B
+clrMenuItemBorderFg = C5101010
+clrMenuItemBorderBg = C5101010
+clrMenuItemSelableBorderFg = C5101010
+clrMenuItemSelableBorderBg = C5101010
+clrMenuItemCurrentBorderFg = E1C3461B
+clrMenuItemCurrentBorderBg = E1C3461B
+clrMenuItemExtraTextFont = FFC3461B
+clrMenuItemExtraTextCurrentFont = FF101010
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5101010
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FFC3461B
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FFC3461B
+clrReplayProgressBg = C5101010
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FFC3461B
+clrReplayBorderFg = C5101010
+clrReplayBorderBg = C5101010
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5101010
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5101010
+clrTrackItemSelableBorderBg = C5101010
+clrTrackItemCurrentBg = E0C3461B
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E1C3461B
+clrTrackItemCurrentBorderBg = E1C3461B
+clrVolumeBg = C5101010
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FFC3461B
+clrVolumeProgressBg = C5101010
+clrVolumeBorderFg = C5101010
+clrVolumeBorderBg = C5101010
diff --git a/themes/flatPlus-MVGreen.theme b/themes/flatPlus-MVGreen.theme
new file mode 100644
index 0000000..29516de
--- /dev/null
+++ b/themes/flatPlus-MVGreen.theme
@@ -0,0 +1,118 @@
+Description = MV Green
+clrTopBarBg = C5101010
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FF008A00
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5101010
+clrTopBarBorderFg = C5101010
+clrTopBarBorderBg = C5101010
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5101010
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5101010
+clrButtonBg = C5101010
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5101010
+clrButtonBorderBg = C5101010
+clrMessageBg = C5101010
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5101010
+clrMessageBorderBg = C5101010
+clrChannelBg = C5101010
+clrChannelFontTitle = FF008A00
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FF008A00
+clrChannelProgressBg = C5101010
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5101010
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5101010
+clrChannelBorderFg = C5101010
+clrChannelBorderBg = C5101010
+clrChannelEPGBorderFg = C5101010
+clrChannelEPGBorderBg = C5101010
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5101010
+clrItemBg = C5101010
+clrItemFont = FF008A00
+clrItemCurrentBg = E0008A00
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5101010
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FF008A00
+clrScrollbarBg = C5101010
+clrMenuEventBg = C5101010
+clrMenuEventFontTitle = FF018A01
+clrMenuEventTitleLine = FF23C323
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5101010
+clrMenuRecFontTitle = FF018A01
+clrMenuRecTitleLine = FF23C323
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5101010
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5101010
+clrMenuContentHeadBorderBg = C5101010
+clrMenuContentBorderFg = C5101010
+clrMenuContentBorderBg = C5101010
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5101010
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C5008A00
+clrMenuItemBorderFg = C5101010
+clrMenuItemBorderBg = C5101010
+clrMenuItemSelableBorderFg = C5101010
+clrMenuItemSelableBorderBg = C5101010
+clrMenuItemCurrentBorderFg = E1008A00
+clrMenuItemCurrentBorderBg = E1008A00
+clrMenuItemExtraTextFont = FF008B00
+clrMenuItemExtraTextCurrentFont = FF111111
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5101010
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF008A00
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FF008A00
+clrReplayProgressBg = C5101010
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF008A00
+clrReplayBorderFg = C5101010
+clrReplayBorderBg = C5101010
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5101010
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5101010
+clrTrackItemSelableBorderBg = C5101010
+clrTrackItemCurrentBg = E0008A00
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E1008A00
+clrTrackItemCurrentBorderBg = E1008A00
+clrVolumeBg = C5101010
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FF008A00
+clrVolumeProgressBg = C5101010
+clrVolumeBorderFg = C5101010
+clrVolumeBorderBg = C5101010
diff --git a/themes/flatPlus-MVGreen2.theme b/themes/flatPlus-MVGreen2.theme
new file mode 100644
index 0000000..6673008
--- /dev/null
+++ b/themes/flatPlus-MVGreen2.theme
@@ -0,0 +1,118 @@
+Description = MV Green 2
+clrTopBarBg = C5112211
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FF008A00
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5112211
+clrTopBarBorderFg = C5112211
+clrTopBarBorderBg = C5112211
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5112211
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5112211
+clrButtonBg = C5112211
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5112211
+clrButtonBorderBg = C5112211
+clrMessageBg = C5112211
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5112211
+clrMessageBorderBg = C5112211
+clrChannelBg = C5112211
+clrChannelFontTitle = FF008A00
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FF008A00
+clrChannelProgressBg = C5112211
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5112211
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5112211
+clrChannelBorderFg = C5112211
+clrChannelBorderBg = C5112211
+clrChannelEPGBorderFg = C5112211
+clrChannelEPGBorderBg = C5112211
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5112211
+clrItemBg = C5112211
+clrItemFont = FF008A00
+clrItemCurrentBg = E0008A00
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5112211
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FF008A00
+clrScrollbarBg = C5112211
+clrMenuEventBg = C5112211
+clrMenuEventFontTitle = FF008A00
+clrMenuEventTitleLine = FF23AD23
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5112211
+clrMenuRecFontTitle = FF008A00
+clrMenuRecTitleLine = FF23AD23
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5112211
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5112211
+clrMenuContentHeadBorderBg = C5112211
+clrMenuContentBorderFg = C5112211
+clrMenuContentBorderBg = C5112211
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5112211
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C5008A00
+clrMenuItemBorderFg = C5112211
+clrMenuItemBorderBg = C5112211
+clrMenuItemSelableBorderFg = C5112211
+clrMenuItemSelableBorderBg = C5112211
+clrMenuItemCurrentBorderFg = E1008A00
+clrMenuItemCurrentBorderBg = E1008A00
+clrMenuItemExtraTextFont = FF008A00
+clrMenuItemExtraTextCurrentFont = FF112211
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5112211
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF008A00
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FF008A00
+clrReplayProgressBg = C5112211
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF008A00
+clrReplayBorderFg = C5112211
+clrReplayBorderBg = C5112211
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5112211
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5112211
+clrTrackItemSelableBorderBg = C5112211
+clrTrackItemCurrentBg = E0008A00
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E1008A00
+clrTrackItemCurrentBorderBg = E1008A00
+clrVolumeBg = C5112211
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FF008A00
+clrVolumeProgressBg = C5112211
+clrVolumeBorderFg = C5112211
+clrVolumeBorderBg = C5112211
diff --git a/themes/flatPlus-MVGrey.theme b/themes/flatPlus-MVGrey.theme
new file mode 100644
index 0000000..30506e5
--- /dev/null
+++ b/themes/flatPlus-MVGrey.theme
@@ -0,0 +1,118 @@
+Description = MV Grey
+clrTopBarBg = C5101010
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FF647687
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5101010
+clrTopBarBorderFg = C5101010
+clrTopBarBorderBg = C5101010
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5101010
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5101010
+clrButtonBg = C5101010
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5101010
+clrButtonBorderBg = C5101010
+clrMessageBg = C5101010
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5101010
+clrMessageBorderBg = C5101010
+clrChannelBg = C5101010
+clrChannelFontTitle = FF647687
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FF647687
+clrChannelProgressBg = C5101010
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5101010
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5101010
+clrChannelBorderFg = C5101010
+clrChannelBorderBg = C5101010
+clrChannelEPGBorderFg = C5101010
+clrChannelEPGBorderBg = C5101010
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5101010
+clrItemBg = C5101010
+clrItemFont = FF647687
+clrItemCurrentBg = E0647687
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5101010
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FF647687
+clrScrollbarBg = C5101010
+clrMenuEventBg = C5101010
+clrMenuEventFontTitle = FF647687
+clrMenuEventTitleLine = FF8799AA
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5101010
+clrMenuRecFontTitle = FF647687
+clrMenuRecTitleLine = FF8799AA
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5101010
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5101010
+clrMenuContentHeadBorderBg = C5101010
+clrMenuContentBorderFg = C5101010
+clrMenuContentBorderBg = C5101010
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5101010
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C5647687
+clrMenuItemBorderFg = C5101010
+clrMenuItemBorderBg = C5101010
+clrMenuItemSelableBorderFg = C5101010
+clrMenuItemSelableBorderBg = C5101010
+clrMenuItemCurrentBorderFg = E1647687
+clrMenuItemCurrentBorderBg = E1647687
+clrMenuItemExtraTextFont = FF647687
+clrMenuItemExtraTextCurrentFont = FF101010
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5101010
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF647687
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FF647687
+clrReplayProgressBg = C5101010
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF647687
+clrReplayBorderFg = C5101010
+clrReplayBorderBg = C5101010
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5101010
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5101010
+clrTrackItemSelableBorderBg = C5101010
+clrTrackItemCurrentBg = E0647687
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E1647687
+clrTrackItemCurrentBorderBg = E1647687
+clrVolumeBg = C5101010
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FF647687
+clrVolumeProgressBg = C5101010
+clrVolumeBorderFg = C5101010
+clrVolumeBorderBg = C5101010
diff --git a/themes/flatPlus-MVHelloKitty.theme b/themes/flatPlus-MVHelloKitty.theme
new file mode 100644
index 0000000..c68da83
--- /dev/null
+++ b/themes/flatPlus-MVHelloKitty.theme
@@ -0,0 +1,118 @@
+Description = MV HelloKitty
+clrTopBarBg = C5101010
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FFF472D0
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5101010
+clrTopBarBorderFg = C5101010
+clrTopBarBorderBg = C5101010
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5101010
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5101010
+clrButtonBg = C5101010
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5101010
+clrButtonBorderBg = C5101010
+clrMessageBg = C5101010
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5101010
+clrMessageBorderBg = C5101010
+clrChannelBg = C5101010
+clrChannelFontTitle = FFF472D0
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FFF472D0
+clrChannelProgressBg = C5101010
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5101010
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5101010
+clrChannelBorderFg = C5101010
+clrChannelBorderBg = C5101010
+clrChannelEPGBorderFg = C5101010
+clrChannelEPGBorderBg = C5101010
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5101010
+clrItemBg = C5101010
+clrItemFont = FFF472D0
+clrItemCurrentBg = E0F472D0
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5101010
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FFF472D0
+clrScrollbarBg = C5101010
+clrMenuEventBg = C5101010
+clrMenuEventFontTitle = FFF472D0
+clrMenuEventTitleLine = FFFF7DDB
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5101010
+clrMenuRecFontTitle = FFF472D0
+clrMenuRecTitleLine = FFFF7DDB
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5101010
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5101010
+clrMenuContentHeadBorderBg = C5101010
+clrMenuContentBorderFg = C5101010
+clrMenuContentBorderBg = C5101010
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5101010
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C5F472D0
+clrMenuItemBorderFg = C5101010
+clrMenuItemBorderBg = C5101010
+clrMenuItemSelableBorderFg = C5101010
+clrMenuItemSelableBorderBg = C5101010
+clrMenuItemCurrentBorderFg = E1F472D0
+clrMenuItemCurrentBorderBg = E1F472D0
+clrMenuItemExtraTextFont = FFF472D0
+clrMenuItemExtraTextCurrentFont = FF101010
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5101010
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FFF472D0
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FFF472D0
+clrReplayProgressBg = C5101010
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FFF472D0
+clrReplayBorderFg = C5101010
+clrReplayBorderBg = C5101010
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5101010
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5101010
+clrTrackItemSelableBorderBg = C5101010
+clrTrackItemCurrentBg = E0F472D0
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E1F472D0
+clrTrackItemCurrentBorderBg = E1F472D0
+clrVolumeBg = C5101010
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FFF472D0
+clrVolumeProgressBg = C5101010
+clrVolumeBorderFg = C5101010
+clrVolumeBorderBg = C5101010
diff --git a/themes/flatPlus-MVHelloKitty2.theme b/themes/flatPlus-MVHelloKitty2.theme
new file mode 100644
index 0000000..9dcc59c
--- /dev/null
+++ b/themes/flatPlus-MVHelloKitty2.theme
@@ -0,0 +1,118 @@
+Description = MV HelloKitty 2
+clrTopBarBg = C5FF80F0
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FFF472D0
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5FF80F0
+clrTopBarBorderFg = C5FF80F0
+clrTopBarBorderBg = C5FF80F0
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5FF80F0
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5FF80F0
+clrButtonBg = C5FF80F0
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5FF80F0
+clrButtonBorderBg = C5FF80F0
+clrMessageBg = C5FF80F0
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5FF80F0
+clrMessageBorderBg = C5FF80F0
+clrChannelBg = C5FF80F0
+clrChannelFontTitle = FFF472D0
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FFF472D0
+clrChannelProgressBg = C5FF80F0
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5FF80F0
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5FF80F0
+clrChannelBorderFg = C5FF80F0
+clrChannelBorderBg = C5FF80F0
+clrChannelEPGBorderFg = C5FF80F0
+clrChannelEPGBorderBg = C5FF80F0
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5FF80F0
+clrItemBg = C5FF80F0
+clrItemFont = FFF472D0
+clrItemCurrentBg = E0F472D0
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5FF80F0
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FFF472D0
+clrScrollbarBg = C5FF80F0
+clrMenuEventBg = C5FF80F0
+clrMenuEventFontTitle = FFF472D0
+clrMenuEventTitleLine = FFFF7DDB
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5FF80F0
+clrMenuRecFontTitle = FFF472D0
+clrMenuRecTitleLine = FFFF7DDB
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5FF80F0
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5FF80F0
+clrMenuContentHeadBorderBg = C5FF80F0
+clrMenuContentBorderFg = C5FF80F0
+clrMenuContentBorderBg = C5FF80F0
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5FF80F0
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C5F472D0
+clrMenuItemBorderFg = C5FF80F0
+clrMenuItemBorderBg = C5FF80F0
+clrMenuItemSelableBorderFg = C5FF80F0
+clrMenuItemSelableBorderBg = C5FF80F0
+clrMenuItemCurrentBorderFg = E1F472D0
+clrMenuItemCurrentBorderBg = E1F472D0
+clrMenuItemExtraTextFont = FFF472D0
+clrMenuItemExtraTextCurrentFont = FFFF80F0
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5FF80F0
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FFF472D0
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FFF472D0
+clrReplayProgressBg = C5FF80F0
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FFF472D0
+clrReplayBorderFg = C5FF80F0
+clrReplayBorderBg = C5FF80F0
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5FF80F0
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5FF80F0
+clrTrackItemSelableBorderBg = C5FF80F0
+clrTrackItemCurrentBg = E0F472D0
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E1F472D0
+clrTrackItemCurrentBorderBg = E1F472D0
+clrVolumeBg = C5FF80F0
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FFF472D0
+clrVolumeProgressBg = C5FF80F0
+clrVolumeBorderFg = C5FF80F0
+clrVolumeBorderBg = C5FF80F0
diff --git a/themes/flatPlus-MVIndigo.theme b/themes/flatPlus-MVIndigo.theme
new file mode 100644
index 0000000..ea3dd39
--- /dev/null
+++ b/themes/flatPlus-MVIndigo.theme
@@ -0,0 +1,118 @@
+Description = MV Indigo
+clrTopBarBg = C5101010
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FF3F51B5
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5101010
+clrTopBarBorderFg = C5101010
+clrTopBarBorderBg = C5101010
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5101010
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5101010
+clrButtonBg = C5101010
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5101010
+clrButtonBorderBg = C5101010
+clrMessageBg = C5101010
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5101010
+clrMessageBorderBg = C5101010
+clrChannelBg = C5101010
+clrChannelFontTitle = FF3F51B5
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FF3F51B5
+clrChannelProgressBg = C5101010
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5101010
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5101010
+clrChannelBorderFg = C5101010
+clrChannelBorderBg = C5101010
+clrChannelEPGBorderFg = C5101010
+clrChannelEPGBorderBg = C5101010
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5101010
+clrItemBg = C5101010
+clrItemFont = FF3F51B5
+clrItemCurrentBg = E03F51B5
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5101010
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FF3F51B5
+clrScrollbarBg = C5101010
+clrMenuEventBg = C5101010
+clrMenuEventFontTitle = FF3F51B5
+clrMenuEventTitleLine = FF6274D8
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5101010
+clrMenuRecFontTitle = FF3F51B5
+clrMenuRecTitleLine = FF6274D8
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5101010
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5101010
+clrMenuContentHeadBorderBg = C5101010
+clrMenuContentBorderFg = C5101010
+clrMenuContentBorderBg = C5101010
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5101010
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C53F51B5
+clrMenuItemBorderFg = C5101010
+clrMenuItemBorderBg = C5101010
+clrMenuItemSelableBorderFg = C5101010
+clrMenuItemSelableBorderBg = C5101010
+clrMenuItemCurrentBorderFg = E13F51B5
+clrMenuItemCurrentBorderBg = E13F51B5
+clrMenuItemExtraTextFont = FF3F51B5
+clrMenuItemExtraTextCurrentFont = FF101010
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5101010
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF3F51B5
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FF3F51B5
+clrReplayProgressBg = C5101010
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF3F51B5
+clrReplayBorderFg = C5101010
+clrReplayBorderBg = C5101010
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5101010
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5101010
+clrTrackItemSelableBorderBg = C5101010
+clrTrackItemCurrentBg = E03F51B5
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E13F51B5
+clrTrackItemCurrentBorderBg = E13F51B5
+clrVolumeBg = C5101010
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FF3F51B5
+clrVolumeProgressBg = C5101010
+clrVolumeBorderFg = C5101010
+clrVolumeBorderBg = C5101010
diff --git a/themes/flatPlus-MVLightBlue.theme b/themes/flatPlus-MVLightBlue.theme
new file mode 100644
index 0000000..9549758
--- /dev/null
+++ b/themes/flatPlus-MVLightBlue.theme
@@ -0,0 +1,118 @@
+Description = MV LightBlue
+clrTopBarBg = C5101010
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FF1BA1E2
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5101010
+clrTopBarBorderFg = C5101010
+clrTopBarBorderBg = C5101010
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5101010
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5101010
+clrButtonBg = C5101010
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5101010
+clrButtonBorderBg = C5101010
+clrMessageBg = C5101010
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5101010
+clrMessageBorderBg = C5101010
+clrChannelBg = C5101010
+clrChannelFontTitle = FF1BA1E2
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FF1BA1E2
+clrChannelProgressBg = C5101010
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5101010
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5101010
+clrChannelBorderFg = C5101010
+clrChannelBorderBg = C5101010
+clrChannelEPGBorderFg = C5101010
+clrChannelEPGBorderBg = C5101010
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5101010
+clrItemBg = C5101010
+clrItemFont = FF1BA1E2
+clrItemCurrentBg = E01BA1E2
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5101010
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FF1BA1E2
+clrScrollbarBg = C5101010
+clrMenuEventBg = C5101010
+clrMenuEventFontTitle = FF1BA1E2
+clrMenuEventTitleLine = FF38BEFF
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5101010
+clrMenuRecFontTitle = FF1BA1E2
+clrMenuRecTitleLine = FF38BEFF
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5101010
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5101010
+clrMenuContentHeadBorderBg = C5101010
+clrMenuContentBorderFg = C5101010
+clrMenuContentBorderBg = C5101010
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5101010
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C51BA1E2
+clrMenuItemBorderFg = C5101010
+clrMenuItemBorderBg = C5101010
+clrMenuItemSelableBorderFg = C5101010
+clrMenuItemSelableBorderBg = C5101010
+clrMenuItemCurrentBorderFg = E11BA1E2
+clrMenuItemCurrentBorderBg = E11BA1E2
+clrMenuItemExtraTextFont = FF1BA1E2
+clrMenuItemExtraTextCurrentFont = FF101010
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5101010
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF1BA1E2
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FF1BA1E2
+clrReplayProgressBg = C5101010
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF1BA1E2
+clrReplayBorderFg = C5101010
+clrReplayBorderBg = C5101010
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5101010
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5101010
+clrTrackItemSelableBorderBg = C5101010
+clrTrackItemCurrentBg = E01BA1E2
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E11BA1E2
+clrTrackItemCurrentBorderBg = E11BA1E2
+clrVolumeBg = C5101010
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FF1BA1E2
+clrVolumeProgressBg = C5101010
+clrVolumeBorderFg = C5101010
+clrVolumeBorderBg = C5101010
diff --git a/themes/flatPlus-MVLightGreen.theme b/themes/flatPlus-MVLightGreen.theme
new file mode 100644
index 0000000..dc69340
--- /dev/null
+++ b/themes/flatPlus-MVLightGreen.theme
@@ -0,0 +1,118 @@
+Description = MV LightGreen
+clrTopBarBg = C5101010
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FF70AD11
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5101010
+clrTopBarBorderFg = C5101010
+clrTopBarBorderBg = C5101010
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5101010
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5101010
+clrButtonBg = C5101010
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5101010
+clrButtonBorderBg = C5101010
+clrMessageBg = C5101010
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5101010
+clrMessageBorderBg = C5101010
+clrChannelBg = C5101010
+clrChannelFontTitle = FF70AD11
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FF70AD11
+clrChannelProgressBg = C5101010
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5101010
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5101010
+clrChannelBorderFg = C5101010
+clrChannelBorderBg = C5101010
+clrChannelEPGBorderFg = C5101010
+clrChannelEPGBorderBg = C5101010
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5101010
+clrItemBg = C5101010
+clrItemFont = FF70AD11
+clrItemCurrentBg = E070AD11
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5101010
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FF70AD11
+clrScrollbarBg = C5101010
+clrMenuEventBg = C5101010
+clrMenuEventFontTitle = FF70AD11
+clrMenuEventTitleLine = FF93D034
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5101010
+clrMenuRecFontTitle = FF70AD11
+clrMenuRecTitleLine = FF93D034
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5101010
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5101010
+clrMenuContentHeadBorderBg = C5101010
+clrMenuContentBorderFg = C5101010
+clrMenuContentBorderBg = C5101010
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5101010
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C570AD11
+clrMenuItemBorderFg = C5101010
+clrMenuItemBorderBg = C5101010
+clrMenuItemSelableBorderFg = C5101010
+clrMenuItemSelableBorderBg = C5101010
+clrMenuItemCurrentBorderFg = E170AD11
+clrMenuItemCurrentBorderBg = E170AD11
+clrMenuItemExtraTextFont = FF70AD11
+clrMenuItemExtraTextCurrentFont = FF101010
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5101010
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF70AD11
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FF70AD11
+clrReplayProgressBg = C5101010
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF70AD11
+clrReplayBorderFg = C5101010
+clrReplayBorderBg = C5101010
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5101010
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5101010
+clrTrackItemSelableBorderBg = C5101010
+clrTrackItemCurrentBg = E070AD11
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E170AD11
+clrTrackItemCurrentBorderBg = E170AD11
+clrVolumeBg = C5101010
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FF70AD11
+clrVolumeProgressBg = C5101010
+clrVolumeBorderFg = C5101010
+clrVolumeBorderBg = C5101010
diff --git a/themes/flatPlus-MVMint.theme b/themes/flatPlus-MVMint.theme
new file mode 100644
index 0000000..907bbb3
--- /dev/null
+++ b/themes/flatPlus-MVMint.theme
@@ -0,0 +1,118 @@
+Description = MV Mint
+clrTopBarBg = C5101010
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FFA4C400
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5101010
+clrTopBarBorderFg = C5101010
+clrTopBarBorderBg = C5101010
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5101010
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5101010
+clrButtonBg = C5101010
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5101010
+clrButtonBorderBg = C5101010
+clrMessageBg = C5101010
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5101010
+clrMessageBorderBg = C5101010
+clrChannelBg = C5101010
+clrChannelFontTitle = FFA4C400
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FFA4C400
+clrChannelProgressBg = C5101010
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5101010
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5101010
+clrChannelBorderFg = C5101010
+clrChannelBorderBg = C5101010
+clrChannelEPGBorderFg = C5101010
+clrChannelEPGBorderBg = C5101010
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5101010
+clrItemBg = C5101010
+clrItemFont = FFA4C400
+clrItemCurrentBg = E0A4C400
+clrItemCurrentFont = FF101010
+clrItemSelableBg = C5101010
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FFA4C400
+clrScrollbarBg = C5101010
+clrMenuEventBg = C5101010
+clrMenuEventFontTitle = FFA4C400
+clrMenuEventTitleLine = FFC7E723
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5101010
+clrMenuRecFontTitle = FFA4C400
+clrMenuRecTitleLine = FFC7E723
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5101010
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5101010
+clrMenuContentHeadBorderBg = C5101010
+clrMenuContentBorderFg = C5101010
+clrMenuContentBorderBg = C5101010
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5101010
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C5A4C400
+clrMenuItemBorderFg = C5101010
+clrMenuItemBorderBg = C5101010
+clrMenuItemSelableBorderFg = C5101010
+clrMenuItemSelableBorderBg = C5101010
+clrMenuItemCurrentBorderFg = E1A4C400
+clrMenuItemCurrentBorderBg = E1A4C400
+clrMenuItemExtraTextFont = FFA4C400
+clrMenuItemExtraTextCurrentFont = FF101010
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5101010
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FFA4C400
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FFA4C400
+clrReplayProgressBg = C5101010
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FFA4C400
+clrReplayBorderFg = C5101010
+clrReplayBorderBg = C5101010
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5101010
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5101010
+clrTrackItemSelableBorderBg = C5101010
+clrTrackItemCurrentBg = E0A4C400
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E1A4C400
+clrTrackItemCurrentBorderBg = E1A4C400
+clrVolumeBg = C5101010
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FFA4C400
+clrVolumeProgressBg = C5101010
+clrVolumeBorderFg = C5101010
+clrVolumeBorderBg = C5101010
diff --git a/themes/flatPlus-MVNuts.theme b/themes/flatPlus-MVNuts.theme
new file mode 100644
index 0000000..822d111
--- /dev/null
+++ b/themes/flatPlus-MVNuts.theme
@@ -0,0 +1,118 @@
+Description = MV Nuts
+clrTopBarBg = C5101010
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FFBF9217
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5101010
+clrTopBarBorderFg = C5101010
+clrTopBarBorderBg = C5101010
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5101010
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5101010
+clrButtonBg = C5101010
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5101010
+clrButtonBorderBg = C5101010
+clrMessageBg = C5101010
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5101010
+clrMessageBorderBg = C5101010
+clrChannelBg = C5101010
+clrChannelFontTitle = FFBF9217
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FFBF9217
+clrChannelProgressBg = C5101010
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5101010
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5101010
+clrChannelBorderFg = C5101010
+clrChannelBorderBg = C5101010
+clrChannelEPGBorderFg = C5101010
+clrChannelEPGBorderBg = C5101010
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5101010
+clrItemBg = C5101010
+clrItemFont = FFBF9217
+clrItemCurrentBg = E0BF9217
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5101010
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FFBF9217
+clrScrollbarBg = C5101010
+clrMenuEventBg = C5101010
+clrMenuEventFontTitle = FFBF9217
+clrMenuEventTitleLine = FFE2B53A
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5101010
+clrMenuRecFontTitle = FFBF9217
+clrMenuRecTitleLine = FFE2B53A
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5101010
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5101010
+clrMenuContentHeadBorderBg = C5101010
+clrMenuContentBorderFg = C5101010
+clrMenuContentBorderBg = C5101010
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5101010
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C5BF9217
+clrMenuItemBorderFg = C5101010
+clrMenuItemBorderBg = C5101010
+clrMenuItemSelableBorderFg = C5101010
+clrMenuItemSelableBorderBg = C5101010
+clrMenuItemCurrentBorderFg = E1BF9217
+clrMenuItemCurrentBorderBg = E1BF9217
+clrMenuItemExtraTextFont = FFBF9217
+clrMenuItemExtraTextCurrentFont = FF101010
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5101010
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FFBF9217
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FFBF9217
+clrReplayProgressBg = C5101010
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FFBF9217
+clrReplayBorderFg = C5101010
+clrReplayBorderBg = C5101010
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5101010
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5101010
+clrTrackItemSelableBorderBg = C5101010
+clrTrackItemCurrentBg = E0BF9217
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E1BF9217
+clrTrackItemCurrentBorderBg = E1BF9217
+clrVolumeBg = C5101010
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FFBF9217
+clrVolumeProgressBg = C5101010
+clrVolumeBorderFg = C5101010
+clrVolumeBorderBg = C5101010
diff --git a/themes/flatPlus-MVOlive.theme b/themes/flatPlus-MVOlive.theme
new file mode 100644
index 0000000..dd4ff69
--- /dev/null
+++ b/themes/flatPlus-MVOlive.theme
@@ -0,0 +1,118 @@
+Description = MV Olive
+clrTopBarBg = C5101010
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FF6D8764
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5101010
+clrTopBarBorderFg = C5101010
+clrTopBarBorderBg = C5101010
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5101010
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5101010
+clrButtonBg = C5101010
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5101010
+clrButtonBorderBg = C5101010
+clrMessageBg = C5101010
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5101010
+clrMessageBorderBg = C5101010
+clrChannelBg = C5101010
+clrChannelFontTitle = FF6D8764
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FF6D8764
+clrChannelProgressBg = C5101010
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5101010
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5101010
+clrChannelBorderFg = C5101010
+clrChannelBorderBg = C5101010
+clrChannelEPGBorderFg = C5101010
+clrChannelEPGBorderBg = C5101010
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5101010
+clrItemBg = C5101010
+clrItemFont = FF6D8764
+clrItemCurrentBg = E06D8764
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5101010
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FF6D8764
+clrScrollbarBg = C5101010
+clrMenuEventBg = C5101010
+clrMenuEventFontTitle = FF6D8764
+clrMenuEventTitleLine = FF90AA87
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5101010
+clrMenuRecFontTitle = FF6D8764
+clrMenuRecTitleLine = FF90AA87
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5101010
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5101010
+clrMenuContentHeadBorderBg = C5101010
+clrMenuContentBorderFg = C5101010
+clrMenuContentBorderBg = C5101010
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5101010
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C56D8764
+clrMenuItemBorderFg = C5101010
+clrMenuItemBorderBg = C5101010
+clrMenuItemSelableBorderFg = C5101010
+clrMenuItemSelableBorderBg = C5101010
+clrMenuItemCurrentBorderFg = E16D8764
+clrMenuItemCurrentBorderBg = E16D8764
+clrMenuItemExtraTextFont = FF6D8764
+clrMenuItemExtraTextCurrentFont = FF101010
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5101010
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF6D8764
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FF6D8764
+clrReplayProgressBg = C5101010
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF6D8764
+clrReplayBorderFg = C5101010
+clrReplayBorderBg = C5101010
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5101010
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5101010
+clrTrackItemSelableBorderBg = C5101010
+clrTrackItemCurrentBg = E06D8764
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E16D8764
+clrTrackItemCurrentBorderBg = E16D8764
+clrVolumeBg = C5101010
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FF6D8764
+clrVolumeProgressBg = C5101010
+clrVolumeBorderFg = C5101010
+clrVolumeBorderBg = C5101010
diff --git a/themes/flatPlus-MVOrange.theme b/themes/flatPlus-MVOrange.theme
new file mode 100644
index 0000000..3a547f9
--- /dev/null
+++ b/themes/flatPlus-MVOrange.theme
@@ -0,0 +1,118 @@
+Description = MV Orange
+clrTopBarBg = C5101010
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FFF0A30A
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5101010
+clrTopBarBorderFg = C5101010
+clrTopBarBorderBg = C5101010
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5101010
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5101010
+clrButtonBg = C5101010
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5101010
+clrButtonBorderBg = C5101010
+clrMessageBg = C5101010
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5101010
+clrMessageBorderBg = C5101010
+clrChannelBg = C5101010
+clrChannelFontTitle = FFF0A30A
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FFF0A30A
+clrChannelProgressBg = C5101010
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5101010
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5101010
+clrChannelBorderFg = C5101010
+clrChannelBorderBg = C5101010
+clrChannelEPGBorderFg = C5101010
+clrChannelEPGBorderBg = C5101010
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5101010
+clrItemBg = C5101010
+clrItemFont = FFF0A30A
+clrItemCurrentBg = E0F0A30A
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5101010
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FFF0A30A
+clrScrollbarBg = C5101010
+clrMenuEventBg = C5101010
+clrMenuEventFontTitle = FFF0A30A
+clrMenuEventTitleLine = FFFFB219
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5101010
+clrMenuRecFontTitle = FFF0A30A
+clrMenuRecTitleLine = FFFFB219
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5101010
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5101010
+clrMenuContentHeadBorderBg = C5101010
+clrMenuContentBorderFg = C5101010
+clrMenuContentBorderBg = C5101010
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5101010
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C5F0A30A
+clrMenuItemBorderFg = C5101010
+clrMenuItemBorderBg = C5101010
+clrMenuItemSelableBorderFg = C5101010
+clrMenuItemSelableBorderBg = C5101010
+clrMenuItemCurrentBorderFg = E1F0A30A
+clrMenuItemCurrentBorderBg = E1F0A30A
+clrMenuItemExtraTextFont = FFF0A30A
+clrMenuItemExtraTextCurrentFont = FF101010
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5101010
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FFF0A30A
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FFF0A30A
+clrReplayProgressBg = C5101010
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FFF0A30A
+clrReplayBorderFg = C5101010
+clrReplayBorderBg = C5101010
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5101010
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5101010
+clrTrackItemSelableBorderBg = C5101010
+clrTrackItemCurrentBg = E0F0A30A
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E1F0A30A
+clrTrackItemCurrentBorderBg = E1F0A30A
+clrVolumeBg = C5101010
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FFF0A30A
+clrVolumeProgressBg = C5101010
+clrVolumeBorderFg = C5101010
+clrVolumeBorderBg = C5101010
diff --git a/themes/flatPlus-MVPflaume.theme b/themes/flatPlus-MVPflaume.theme
new file mode 100644
index 0000000..ae1021d
--- /dev/null
+++ b/themes/flatPlus-MVPflaume.theme
@@ -0,0 +1,118 @@
+Description = MV Pflaume
+clrTopBarBg = C5101010
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FF6A00FF
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5101010
+clrTopBarBorderFg = C5101010
+clrTopBarBorderBg = C5101010
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5101010
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5101010
+clrButtonBg = C5101010
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5101010
+clrButtonBorderBg = C5101010
+clrMessageBg = C5101010
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5101010
+clrMessageBorderBg = C5101010
+clrChannelBg = C5101010
+clrChannelFontTitle = FF6A00FF
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FF6A00FF
+clrChannelProgressBg = C5101010
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5101010
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5101010
+clrChannelBorderFg = C5101010
+clrChannelBorderBg = C5101010
+clrChannelEPGBorderFg = C5101010
+clrChannelEPGBorderBg = C5101010
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5101010
+clrItemBg = C5101010
+clrItemFont = FF6A00FF
+clrItemCurrentBg = E06A00FF
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5101010
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FF6A00FF
+clrScrollbarBg = C5101010
+clrMenuEventBg = C5101010
+clrMenuEventFontTitle = FF6A00FF
+clrMenuEventTitleLine = FF6A00FF
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5101010
+clrMenuRecFontTitle = FF6A00FF
+clrMenuRecTitleLine = FF6A00FF
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5101010
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5101010
+clrMenuContentHeadBorderBg = C5101010
+clrMenuContentBorderFg = C5101010
+clrMenuContentBorderBg = C5101010
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5101010
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C56A00FF
+clrMenuItemBorderFg = C5101010
+clrMenuItemBorderBg = C5101010
+clrMenuItemSelableBorderFg = C5101010
+clrMenuItemSelableBorderBg = C5101010
+clrMenuItemCurrentBorderFg = E16A00FF
+clrMenuItemCurrentBorderBg = E16A00FF
+clrMenuItemExtraTextFont = FF6A00FF
+clrMenuItemExtraTextCurrentFont = FF101010
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5101010
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF6A00FF
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FF6A00FF
+clrReplayProgressBg = C5101010
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF6A00FF
+clrReplayBorderFg = C5101010
+clrReplayBorderBg = C5101010
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5101010
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5101010
+clrTrackItemSelableBorderBg = C5101010
+clrTrackItemCurrentBg = E06A00FF
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E16A00FF
+clrTrackItemCurrentBorderBg = E16A00FF
+clrVolumeBg = C5101010
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FF6A00FF
+clrVolumeProgressBg = C5101010
+clrVolumeBorderFg = C5101010
+clrVolumeBorderBg = C5101010
diff --git a/themes/flatPlus-MVPumpkin.theme b/themes/flatPlus-MVPumpkin.theme
new file mode 100644
index 0000000..efb322e
--- /dev/null
+++ b/themes/flatPlus-MVPumpkin.theme
@@ -0,0 +1,118 @@
+Description = MV Pumpkin
+clrTopBarBg = C5101010
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FFF0A30A
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5101010
+clrTopBarBorderFg = C5101010
+clrTopBarBorderBg = C5101010
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5101010
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5101010
+clrButtonBg = C5101010
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5101010
+clrButtonBorderBg = C5101010
+clrMessageBg = C5101010
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5101010
+clrMessageBorderBg = C5101010
+clrChannelBg = C5101010
+clrChannelFontTitle = FFF0A30A
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FFF0A30A
+clrChannelProgressBg = C5101010
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5101010
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5101010
+clrChannelBorderFg = C5101010
+clrChannelBorderBg = C5101010
+clrChannelEPGBorderFg = C5101010
+clrChannelEPGBorderBg = C5101010
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5101010
+clrItemBg = C5101010
+clrItemFont = FFF0A30A
+clrItemCurrentBg = E0F0A30A
+clrItemCurrentFont = FF101010
+clrItemSelableBg = C5101010
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FFF0A30A
+clrScrollbarBg = C5101010
+clrMenuEventBg = C5101010
+clrMenuEventFontTitle = FFF0A30A
+clrMenuEventTitleLine = FFFFB219
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5101010
+clrMenuRecFontTitle = FFF0A30A
+clrMenuRecTitleLine = FFFFB219
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5101010
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5101010
+clrMenuContentHeadBorderBg = C5101010
+clrMenuContentBorderFg = C5101010
+clrMenuContentBorderBg = C5101010
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5101010
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C5F0A30A
+clrMenuItemBorderFg = C5101010
+clrMenuItemBorderBg = C5101010
+clrMenuItemSelableBorderFg = C5101010
+clrMenuItemSelableBorderBg = C5101010
+clrMenuItemCurrentBorderFg = E1F0A30A
+clrMenuItemCurrentBorderBg = E1F0A30A
+clrMenuItemExtraTextFont = FFF0A30A
+clrMenuItemExtraTextCurrentFont = FF101010
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5101010
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FFF0A30A
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FFF0A30A
+clrReplayProgressBg = C5101010
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FFF0A30A
+clrReplayBorderFg = C5101010
+clrReplayBorderBg = C5101010
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5101010
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5101010
+clrTrackItemSelableBorderBg = C5101010
+clrTrackItemCurrentBg = E0F0A30A
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E1F0A30A
+clrTrackItemCurrentBorderBg = E1F0A30A
+clrVolumeBg = C5101010
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FFF0A30A
+clrVolumeProgressBg = C5101010
+clrVolumeBorderFg = C5101010
+clrVolumeBorderBg = C5101010
diff --git a/themes/flatPlus-MVPurple.theme b/themes/flatPlus-MVPurple.theme
new file mode 100644
index 0000000..f12ce5f
--- /dev/null
+++ b/themes/flatPlus-MVPurple.theme
@@ -0,0 +1,118 @@
+Description = MV Purple
+clrTopBarBg = C5101010
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FF6C0AAB
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5101010
+clrTopBarBorderFg = C5101010
+clrTopBarBorderBg = C5101010
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5101010
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5101010
+clrButtonBg = C5101010
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5101010
+clrButtonBorderBg = C5101010
+clrMessageBg = C5101010
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5101010
+clrMessageBorderBg = C5101010
+clrChannelBg = C5101010
+clrChannelFontTitle = FF6C0AAB
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FF6C0AAB
+clrChannelProgressBg = C5101010
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5101010
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5101010
+clrChannelBorderFg = C5101010
+clrChannelBorderBg = C5101010
+clrChannelEPGBorderFg = C5101010
+clrChannelEPGBorderBg = C5101010
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5101010
+clrItemBg = C5101010
+clrItemFont = FF6C0AAB
+clrItemCurrentBg = E06C0AAB
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5101010
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FF6C0AAB
+clrScrollbarBg = C5101010
+clrMenuEventBg = C5101010
+clrMenuEventFontTitle = FF6C0AAB
+clrMenuEventTitleLine = FF8F2DCE
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5101010
+clrMenuRecFontTitle = FF6C0AAB
+clrMenuRecTitleLine = FF8F2DCE
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5101010
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5101010
+clrMenuContentHeadBorderBg = C5101010
+clrMenuContentBorderFg = C5101010
+clrMenuContentBorderBg = C5101010
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5101010
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C56C0AAB
+clrMenuItemBorderFg = C5101010
+clrMenuItemBorderBg = C5101010
+clrMenuItemSelableBorderFg = C5101010
+clrMenuItemSelableBorderBg = C5101010
+clrMenuItemCurrentBorderFg = E16C0AAB
+clrMenuItemCurrentBorderBg = E16C0AAB
+clrMenuItemExtraTextFont = FF6C0AAB
+clrMenuItemExtraTextCurrentFont = FF101010
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5101010
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF6C0AAB
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FF6C0AAB
+clrReplayProgressBg = C5101010
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF6C0AAB
+clrReplayBorderFg = C5101010
+clrReplayBorderBg = C5101010
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5101010
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5101010
+clrTrackItemSelableBorderBg = C5101010
+clrTrackItemCurrentBg = E06C0AAB
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E16C0AAB
+clrTrackItemCurrentBorderBg = E16C0AAB
+clrVolumeBg = C5101010
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FF6C0AAB
+clrVolumeProgressBg = C5101010
+clrVolumeBorderFg = C5101010
+clrVolumeBorderBg = C5101010
diff --git a/themes/flatPlus-MVPurpleGrey.theme b/themes/flatPlus-MVPurpleGrey.theme
new file mode 100644
index 0000000..f0b25a9
--- /dev/null
+++ b/themes/flatPlus-MVPurpleGrey.theme
@@ -0,0 +1,118 @@
+Description = MV PurpleGrey
+clrTopBarBg = C5101010
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FF76608A
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5101010
+clrTopBarBorderFg = C5101010
+clrTopBarBorderBg = C5101010
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5101010
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5101010
+clrButtonBg = C5101010
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5101010
+clrButtonBorderBg = C5101010
+clrMessageBg = C5101010
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5101010
+clrMessageBorderBg = C5101010
+clrChannelBg = C5101010
+clrChannelFontTitle = FF76608A
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FF76608A
+clrChannelProgressBg = C5101010
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5101010
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5101010
+clrChannelBorderFg = C5101010
+clrChannelBorderBg = C5101010
+clrChannelEPGBorderFg = C5101010
+clrChannelEPGBorderBg = C5101010
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5101010
+clrItemBg = C5101010
+clrItemFont = FF76608A
+clrItemCurrentBg = E076608A
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5101010
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FF76608A
+clrScrollbarBg = C5101010
+clrMenuEventBg = C5101010
+clrMenuEventFontTitle = FF76608A
+clrMenuEventTitleLine = FF9983AD
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5101010
+clrMenuRecFontTitle = FF76608A
+clrMenuRecTitleLine = FF9983AD
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5101010
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5101010
+clrMenuContentHeadBorderBg = C5101010
+clrMenuContentBorderFg = C5101010
+clrMenuContentBorderBg = C5101010
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5101010
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C576608A
+clrMenuItemBorderFg = C5101010
+clrMenuItemBorderBg = C5101010
+clrMenuItemSelableBorderFg = C5101010
+clrMenuItemSelableBorderBg = C5101010
+clrMenuItemCurrentBorderFg = E176608A
+clrMenuItemCurrentBorderBg = E176608A
+clrMenuItemExtraTextFont = FF76608A
+clrMenuItemExtraTextCurrentFont = FF101010
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5101010
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF76608A
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FF76608A
+clrReplayProgressBg = C5101010
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF76608A
+clrReplayBorderFg = C5101010
+clrReplayBorderBg = C5101010
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5101010
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5101010
+clrTrackItemSelableBorderBg = C5101010
+clrTrackItemCurrentBg = E076608A
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E176608A
+clrTrackItemCurrentBorderBg = E176608A
+clrVolumeBg = C5101010
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FF76608A
+clrVolumeProgressBg = C5101010
+clrVolumeBorderFg = C5101010
+clrVolumeBorderBg = C5101010
diff --git a/themes/flatPlus-MVRauchglas.theme b/themes/flatPlus-MVRauchglas.theme
new file mode 100644
index 0000000..e872e70
--- /dev/null
+++ b/themes/flatPlus-MVRauchglas.theme
@@ -0,0 +1,118 @@
+Description = MV Rauchglas
+clrTopBarBg = C5200F02
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FF825A2C
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5200F02
+clrTopBarBorderFg = C5200F02
+clrTopBarBorderBg = C5200F02
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5200F02
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5200F02
+clrButtonBg = C5200F02
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5200F02
+clrButtonBorderBg = C5200F02
+clrMessageBg = C5200F02
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5200F02
+clrMessageBorderBg = C5200F02
+clrChannelBg = C5200F02
+clrChannelFontTitle = FF825A2C
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FF825A2C
+clrChannelProgressBg = C5200F02
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5200F02
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5200F02
+clrChannelBorderFg = C5200F02
+clrChannelBorderBg = C5200F02
+clrChannelEPGBorderFg = C5200F02
+clrChannelEPGBorderBg = C5200F02
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5200F02
+clrItemBg = C5200F02
+clrItemFont = FF825A2C
+clrItemCurrentBg = E0825A2C
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5200F02
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FF825A2C
+clrScrollbarBg = C5200F02
+clrMenuEventBg = C5200F02
+clrMenuEventFontTitle = FF825A2C
+clrMenuEventTitleLine = FFA57D4F
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5200F02
+clrMenuRecFontTitle = FF825A2C
+clrMenuRecTitleLine = FFA57D4F
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5200F02
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5200F02
+clrMenuContentHeadBorderBg = C5200F02
+clrMenuContentBorderFg = C5200F02
+clrMenuContentBorderBg = C5200F02
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5200F02
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C5825A2C
+clrMenuItemBorderFg = C5200F02
+clrMenuItemBorderBg = C5200F02
+clrMenuItemSelableBorderFg = C5200F02
+clrMenuItemSelableBorderBg = C5200F02
+clrMenuItemCurrentBorderFg = E1825A2C
+clrMenuItemCurrentBorderBg = E1825A2C
+clrMenuItemExtraTextFont = FF825A2C
+clrMenuItemExtraTextCurrentFont = FF200F02
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5200F02
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF825A2C
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FF825A2C
+clrReplayProgressBg = C5200F02
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF825A2C
+clrReplayBorderFg = C5200F02
+clrReplayBorderBg = C5200F02
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5200F02
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5200F02
+clrTrackItemSelableBorderBg = C5200F02
+clrTrackItemCurrentBg = E0825A2C
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E1825A2C
+clrTrackItemCurrentBorderBg = E1825A2C
+clrVolumeBg = C5200F02
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FF825A2C
+clrVolumeProgressBg = C5200F02
+clrVolumeBorderFg = C5200F02
+clrVolumeBorderBg = C5200F02
diff --git a/themes/flatPlus-MVRed.theme b/themes/flatPlus-MVRed.theme
new file mode 100644
index 0000000..d00644f
--- /dev/null
+++ b/themes/flatPlus-MVRed.theme
@@ -0,0 +1,118 @@
+Description = MV Red
+clrTopBarBg = C5101010
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FFE51400
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5101010
+clrTopBarBorderFg = C5101010
+clrTopBarBorderBg = C5101010
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5101010
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5101010
+clrButtonBg = C5101010
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5101010
+clrButtonBorderBg = C5101010
+clrMessageBg = C5101010
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5101010
+clrMessageBorderBg = C5101010
+clrChannelBg = C5101010
+clrChannelFontTitle = FFE51400
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FFE51400
+clrChannelProgressBg = C5101010
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5101010
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5101010
+clrChannelBorderFg = C5101010
+clrChannelBorderBg = C5101010
+clrChannelEPGBorderFg = C5101010
+clrChannelEPGBorderBg = C5101010
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5101010
+clrItemBg = C5101010
+clrItemFont = FFE51400
+clrItemCurrentBg = E0E51400
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5101010
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FFE51400
+clrScrollbarBg = C5101010
+clrMenuEventBg = C5101010
+clrMenuEventFontTitle = FFE51400
+clrMenuEventTitleLine = FFFF2E1A
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5101010
+clrMenuRecFontTitle = FFE51400
+clrMenuRecTitleLine = FFFF2E1A
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5101010
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5101010
+clrMenuContentHeadBorderBg = C5101010
+clrMenuContentBorderFg = C5101010
+clrMenuContentBorderBg = C5101010
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5101010
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C5E51400
+clrMenuItemBorderFg = C5101010
+clrMenuItemBorderBg = C5101010
+clrMenuItemSelableBorderFg = C5101010
+clrMenuItemSelableBorderBg = C5101010
+clrMenuItemCurrentBorderFg = E1E51400
+clrMenuItemCurrentBorderBg = E1E51400
+clrMenuItemExtraTextFont = FFE51400
+clrMenuItemExtraTextCurrentFont = FF101010
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5101010
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FFE51400
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FFE51400
+clrReplayProgressBg = C5101010
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FFE51400
+clrReplayBorderFg = C5101010
+clrReplayBorderBg = C5101010
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5101010
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5101010
+clrTrackItemSelableBorderBg = C5101010
+clrTrackItemCurrentBg = E0E51400
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E1E51400
+clrTrackItemCurrentBorderBg = E1E51400
+clrVolumeBg = C5101010
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FFE51400
+clrVolumeProgressBg = C5101010
+clrVolumeBorderFg = C5101010
+clrVolumeBorderBg = C5101010
diff --git a/themes/flatPlus-MVTerra.theme b/themes/flatPlus-MVTerra.theme
new file mode 100644
index 0000000..5aca9c1
--- /dev/null
+++ b/themes/flatPlus-MVTerra.theme
@@ -0,0 +1,118 @@
+Description = MV Terra
+clrTopBarBg = C5101010
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FF7A3B3F
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5101010
+clrTopBarBorderFg = C5101010
+clrTopBarBorderBg = C5101010
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5101010
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5101010
+clrButtonBg = C5101010
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5101010
+clrButtonBorderBg = C5101010
+clrMessageBg = C5101010
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5101010
+clrMessageBorderBg = C5101010
+clrChannelBg = C5101010
+clrChannelFontTitle = FF7A3B3F
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FF7A3B3F
+clrChannelProgressBg = C5101010
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5101010
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5101010
+clrChannelBorderFg = C5101010
+clrChannelBorderBg = C5101010
+clrChannelEPGBorderFg = C5101010
+clrChannelEPGBorderBg = C5101010
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5101010
+clrItemBg = C5101010
+clrItemFont = FF7A3B3F
+clrItemCurrentBg = E07A3B3F
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5101010
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FF7A3B3F
+clrScrollbarBg = C5101010
+clrMenuEventBg = C5101010
+clrMenuEventFontTitle = FF7A3B3F
+clrMenuEventTitleLine = FF9D5E62
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5101010
+clrMenuRecFontTitle = FF7A3B3F
+clrMenuRecTitleLine = FF9D5E62
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5101010
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5101010
+clrMenuContentHeadBorderBg = C5101010
+clrMenuContentBorderFg = C5101010
+clrMenuContentBorderBg = C5101010
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5101010
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C57A3B3F
+clrMenuItemBorderFg = C5101010
+clrMenuItemBorderBg = C5101010
+clrMenuItemSelableBorderFg = C5101010
+clrMenuItemSelableBorderBg = C5101010
+clrMenuItemCurrentBorderFg = E17A3B3F
+clrMenuItemCurrentBorderBg = E17A3B3F
+clrMenuItemExtraTextFont = FF7A3B3F
+clrMenuItemExtraTextCurrentFont = FF101010
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5101010
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF7A3B3F
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FF7A3B3F
+clrReplayProgressBg = C5101010
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF7A3B3F
+clrReplayBorderFg = C5101010
+clrReplayBorderBg = C5101010
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5101010
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5101010
+clrTrackItemSelableBorderBg = C5101010
+clrTrackItemCurrentBg = E07A3B3F
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E17A3B3F
+clrTrackItemCurrentBorderBg = E17A3B3F
+clrVolumeBg = C5101010
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FF7A3B3F
+clrVolumeProgressBg = C5101010
+clrVolumeBorderFg = C5101010
+clrVolumeBorderBg = C5101010
diff --git a/themes/flatPlus-MVWhite.theme b/themes/flatPlus-MVWhite.theme
new file mode 100644
index 0000000..be7405d
--- /dev/null
+++ b/themes/flatPlus-MVWhite.theme
@@ -0,0 +1,118 @@
+Description = MV White
+clrTopBarBg = C5101010
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FFFFFFFF
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5101010
+clrTopBarBorderFg = C5101010
+clrTopBarBorderBg = C5101010
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5101010
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5101010
+clrButtonBg = C5101010
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5101010
+clrButtonBorderBg = C5101010
+clrMessageBg = C5101010
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5101010
+clrMessageBorderBg = C5101010
+clrChannelBg = C5101010
+clrChannelFontTitle = FFFFFFFF
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FFFFFFFF
+clrChannelProgressBg = C5101010
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5101010
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5101010
+clrChannelBorderFg = C5101010
+clrChannelBorderBg = C5101010
+clrChannelEPGBorderFg = C5101010
+clrChannelEPGBorderBg = C5101010
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5101010
+clrItemBg = C5101010
+clrItemFont = FFFFFFFF
+clrItemCurrentBg = B0FFFFFF
+clrItemCurrentFont = FF404040
+clrItemSelableBg = C5101010
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FFFFFFFF
+clrScrollbarBg = C5101010
+clrMenuEventBg = C5101010
+clrMenuEventFontTitle = FFFFFFFF
+clrMenuEventTitleLine = FFFFFFFF
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5101010
+clrMenuRecFontTitle = FFFFFFFF
+clrMenuRecTitleLine = FFFFFFFF
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5101010
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5101010
+clrMenuContentHeadBorderBg = C5101010
+clrMenuContentBorderFg = C5101010
+clrMenuContentBorderBg = C5101010
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5101010
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C5FFFFFF
+clrMenuItemBorderFg = C5101010
+clrMenuItemBorderBg = C5101010
+clrMenuItemSelableBorderFg = C5101010
+clrMenuItemSelableBorderBg = C5101010
+clrMenuItemCurrentBorderFg = E1FFFFFF
+clrMenuItemCurrentBorderBg = E1FFFFFF
+clrMenuItemExtraTextFont = FFFFFFFF
+clrMenuItemExtraTextCurrentFont = FF101010
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5101010
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FFFFFFFF
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FFFFFFFF
+clrReplayProgressBg = C5101010
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FFFFFFFF
+clrReplayBorderFg = C5101010
+clrReplayBorderBg = C5101010
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5101010
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5101010
+clrTrackItemSelableBorderBg = C5101010
+clrTrackItemCurrentBg = B0FFFFFF
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E1FFFFFF
+clrTrackItemCurrentBorderBg = E1FFFFFF
+clrVolumeBg = C5101010
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FFFFFFFF
+clrVolumeProgressBg = C5101010
+clrVolumeBorderFg = C5101010
+clrVolumeBorderBg = C5101010
diff --git a/themes/flatPlus-MVXMAS.theme b/themes/flatPlus-MVXMAS.theme
new file mode 100644
index 0000000..eb32bb2
--- /dev/null
+++ b/themes/flatPlus-MVXMAS.theme
@@ -0,0 +1,118 @@
+Description = MV XMAS
+clrTopBarBg = C5114511
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FFCC1111
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = C5114511
+clrTopBarBorderFg = C5114511
+clrTopBarBorderBg = C5114511
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = C5114511
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = C5114511
+clrButtonBg = C5114511
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C5114511
+clrButtonBorderBg = C5114511
+clrMessageBg = C5114511
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C5114511
+clrMessageBorderBg = C5114511
+clrChannelBg = C5114511
+clrChannelFontTitle = FFCC1111
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FFCC1111
+clrChannelProgressBg = C5114511
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = C5114511
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = C5114511
+clrChannelBorderFg = C5114511
+clrChannelBorderBg = C5114511
+clrChannelEPGBorderFg = C5114511
+clrChannelEPGBorderBg = C5114511
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = C5114511
+clrItemBg = C5114511
+clrItemFont = FFCC1111
+clrItemCurrentBg = E0CC1111
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = C5114511
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FFCC1111
+clrScrollbarBg = C5114511
+clrMenuEventBg = C5114511
+clrMenuEventFontTitle = FFCC1111
+clrMenuEventTitleLine = FFEF3434
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = C5114511
+clrMenuRecFontTitle = FFCC1111
+clrMenuRecTitleLine = FFEF3434
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = C5114511
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C5114511
+clrMenuContentHeadBorderBg = C5114511
+clrMenuContentBorderFg = C5114511
+clrMenuContentBorderBg = C5114511
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = C5114511
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = C5CC1111
+clrMenuItemBorderFg = C5114511
+clrMenuItemBorderBg = C5114511
+clrMenuItemSelableBorderFg = C5114511
+clrMenuItemSelableBorderBg = C5114511
+clrMenuItemCurrentBorderFg = E1CC1111
+clrMenuItemCurrentBorderBg = E1CC1111
+clrMenuItemExtraTextFont = FFCC1111
+clrMenuItemExtraTextCurrentFont = FF114511
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = C5114511
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FFCC1111
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FFCC1111
+clrReplayProgressBg = C5114511
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FFCC1111
+clrReplayBorderFg = C5114511
+clrReplayBorderBg = C5114511
+clrTrackItemBg = C5555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = C5114511
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = C5555555
+clrTrackItemSelableBorderFg = C5114511
+clrTrackItemSelableBorderBg = C5114511
+clrTrackItemCurrentBg = E0CC1111
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = E1CC1111
+clrTrackItemCurrentBorderBg = E1CC1111
+clrVolumeBg = C5114511
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FFCC1111
+clrVolumeProgressBg = C5114511
+clrVolumeBorderFg = C5114511
+clrVolumeBorderBg = C5114511
diff --git a/themes/flatPlus-MVZitrone.theme b/themes/flatPlus-MVZitrone.theme
new file mode 100644
index 0000000..c1839cc
--- /dev/null
+++ b/themes/flatPlus-MVZitrone.theme
@@ -0,0 +1,118 @@
+Description = MV Zitrone
+clrTopBarBg = A088881A
+clrTopBarFont = FFFFFFAA
+clrTopBarTimeFont = FFEEEE0F
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFCC1111
+clrTopBarRecordingActiveBg = A088881A
+clrTopBarBorderFg = C588881A
+clrTopBarBorderBg = A088881A
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = A088881A
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = A088881A
+clrButtonBg = A088881A
+clrButtonFont = FFFFFFAA
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = C588881A
+clrButtonBorderBg = A088881A
+clrMessageBg = A088881A
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = C588881A
+clrMessageBorderBg = A088881A
+clrChannelBg = A088881A
+clrChannelFontTitle = FFEEEE0F
+clrChannelFontEpg = FFFFFFAA
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FFEEEE0F
+clrChannelProgressBg = A088881A
+clrChannelRecordingPresentFg = FFCC1111
+clrChannelRecordingPresentBg = A088881A
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = A088881A
+clrChannelBorderFg = C588881A
+clrChannelBorderBg = A088881A
+clrChannelEPGBorderFg = C588881A
+clrChannelEPGBorderBg = A088881A
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFA0A0A0
+clrChannelSignalProgressBg = A088881A
+clrItemBg = A088881A
+clrItemFont = FFEEEE0F
+clrItemCurrentBg = E0EEEE0F
+clrItemCurrentFont = FFFFFFAA
+clrItemSelableBg = A088881A
+clrItemSelableFont = FFFFFFAA
+clrScrollbarFg = C5A0A0A0
+clrScrollbarBarFg = FFEEEE0F
+clrScrollbarBg = A088881A
+clrMenuEventBg = A088881A
+clrMenuEventFontTitle = FFEEEE0F
+clrMenuEventTitleLine = FFFFFF20
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = A088881A
+clrMenuRecFontTitle = FFEEEE0F
+clrMenuRecTitleLine = FFFFFF20
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = A088881A
+clrMenuTextFont = FFFFFFAA
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = C588881A
+clrMenuContentHeadBorderBg = A088881A
+clrMenuContentBorderFg = C588881A
+clrMenuContentBorderBg = A088881A
+clrMenuItemProgressFg = FFFFFFAA
+clrMenuItemProgressBarFg = FFFFFFAA
+clrMenuItemProgressBg = A088881A
+clrMenuItemCurProgressFg = FFFFFFAA
+clrMenuItemCurProgressBarFg = FFFFFFAA
+clrMenuItemCurProgressBg = A0EEEE0F
+clrMenuItemBorderFg = C588881A
+clrMenuItemBorderBg = A088881A
+clrMenuItemSelableBorderFg = C588881A
+clrMenuItemSelableBorderBg = A088881A
+clrMenuItemCurrentBorderFg = E1EEEE0F
+clrMenuItemCurrentBorderBg = E1EEEE0F
+clrMenuItemExtraTextFont = FFEEEE0F
+clrMenuItemExtraTextCurrentFont = FF88881A
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFF5050
+clrReplayBg = A088881A
+clrReplayFont = FFFFFFAA
+clrReplayFontSpeed = FFEEEE0F
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FFEEEE0F
+clrReplayProgressBg = A088881A
+clrReplayMarkFg = FFFFFFAA
+clrReplayMarkCurrentFg = FFEEEE0F
+clrReplayBorderFg = C588881A
+clrReplayBorderBg = A088881A
+clrTrackItemBg = A0555555
+clrTrackItemFont = FFFFFFAA
+clrTrackItemSelableBg = A088881A
+clrTrackItemSelableFont = FFFFFFAA
+clrTrackItemBorderFg = C5555555
+clrTrackItemBorderBg = A0555555
+clrTrackItemSelableBorderFg = C588881A
+clrTrackItemSelableBorderBg = A088881A
+clrTrackItemCurrentBg = E0EEEE0F
+clrTrackItemCurrentFont = FFFFFFAA
+clrTrackItemCurrentBorderFg = E1EEEE0F
+clrTrackItemCurrentBorderBg = E1EEEE0F
+clrVolumeBg = A088881A
+clrVolumeFont = FFFFFFAA
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FFEEEE0F
+clrVolumeProgressBg = A088881A
+clrVolumeBorderFg = C588881A
+clrVolumeBorderBg = A088881A
diff --git a/themes/flatPlus-default.theme b/themes/flatPlus-default.theme
new file mode 100644
index 0000000..1a70dd9
--- /dev/null
+++ b/themes/flatPlus-default.theme
@@ -0,0 +1,118 @@
+Description = Default
+clrTopBarBg = F0202020
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FFEEEEEE
+clrTopBarDateFont = FF909090
+clrTopBarBorderFg = F0202020
+clrTopBarBorderBg = F0202020
+clrTopBarRecordingActiveFg = FF880000
+clrTopBarRecordingActiveBg = F0202020
+clrTopBarConflictLowFg = FFBBBB00
+clrTopBarConflictLowBg = F0202020
+clrTopBarConflictHighFg = FF880000
+clrTopBarConflictHighBg = F0202020
+clrButtonBg = F0202020
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFBB0000
+clrButtonGreen = FF00BB00
+clrButtonYellow = FFBBBB00
+clrButtonBlue = FF0000BB
+clrButtonBorderFg = F0202020
+clrButtonBorderBg = F0202020
+clrMessageBg = F0202020
+clrMessageFont = FFEEEEEE
+clrMessageStatus = FF0000FF
+clrMessageInfo = FF009900
+clrMessageWarning = FFBBBB00
+clrMessageError = FFBB0000
+clrMessageBorderFg = F0202020
+clrMessageBorderBg = F0202020
+clrChannelBg = F0202020
+clrChannelFontTitle = FF03A9F4
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FF909090
+clrChannelProgressFg = FF03A9F4
+clrChannelProgressBarFg = FF03A9F4
+clrChannelProgressBg = F0202020
+clrChannelBorderFg = F003A9F4
+clrChannelBorderBg = F003A9F4
+clrChannelEPGBorderFg = F003A9F4
+clrChannelEPGBorderBg = F003A9F4
+clrChannelSignalFont = FF909090
+clrChannelSignalProgressFg = FF909090
+clrChannelSignalProgressBarFg = FF909090
+clrChannelSignalProgressBg = F0202020
+clrChannelRecordingPresentFg = FFAA0000
+clrChannelRecordingPresentBg = F0202020
+clrChannelRecordingFollowFg = FF909090
+clrChannelRecordingFollowBg = F0202020
+clrItemBg = F0909090
+clrItemFont = FFEEEEEE
+clrItemCurrentBg = F003A9F4
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = F0202020
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = FF03A9F4
+clrScrollbarBarFg = FF03A9F4
+clrScrollbarBg = F0202020
+clrMenuEventBg = F0202020
+clrMenuEventFontTitle = FF03A9F4
+clrMenuEventTitleLine = FF03A9F4
+clrMenuEventFontInfo = FFEEEEEE
+clrMenuRecBg = F0202020
+clrMenuRecFontTitle = FF03A9F4
+clrMenuRecTitleLine = FF03A9F4
+clrMenuRecFontInfo = FFEEEEEE
+clrMenuTextBg = F0202020
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFEEEEEE
+clrMenuContentHeadBorderFg = F003A9F4
+clrMenuContentHeadBorderBg = F003A9F4
+clrMenuContentBorderFg = F003A9F4
+clrMenuContentBorderBg = F003A9F4
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = F0202020
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = F003A9F4
+clrMenuItemBorderFg = F0909090
+clrMenuItemBorderBg = F0909090
+clrMenuItemSelableBorderFg = F0202020
+clrMenuItemSelableBorderBg = F0202020
+clrMenuItemCurrentBorderFg = F003A9F4
+clrMenuItemCurrentBorderBg = F003A9F4
+clrMenuTimerItemDisabledFont = FF909090
+clrMenuTimerItemRecordingFont = FFEEEEEE
+clrMenuItemExtraTextFont = FF909090
+clrMenuItemExtraTextCurrentFont = FF909090
+clrReplayBg = F0202020
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF03A9F4
+clrReplayProgressFg = FFEEEEEE
+clrReplayProgressBarFg = FFEEEEEE
+clrReplayProgressBarCurFg = FF03A9F4
+clrReplayProgressBg = F0202020
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF03A9F4
+clrReplayBorderFg = F0202020
+clrReplayBorderBg = F0202020
+clrTrackItemBg = F0909090
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = F0202020
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemCurrentBg = F003A9F4
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemBorderFg = F0909090
+clrTrackItemBorderBg = F0909090
+clrTrackItemSelableBorderFg = F0202020
+clrTrackItemSelableBorderBg = F0202020
+clrTrackItemCurrentBorderFg = F003A9F4
+clrTrackItemCurrentBorderBg = F003A9F4
+clrVolumeBg = F0202020
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF03A9F4
+clrVolumeProgressBarFg = FF03A9F4
+clrVolumeProgressBg = F0202020
+clrVolumeBorderFg = F0202020
+clrVolumeBorderBg = F0202020
diff --git a/themes/flatPlus-default_DeepOrange.theme b/themes/flatPlus-default_DeepOrange.theme
new file mode 100644
index 0000000..4c371b9
--- /dev/null
+++ b/themes/flatPlus-default_DeepOrange.theme
@@ -0,0 +1,118 @@
+Description = Default - DeepOrange
+clrTopBarBg = F0202020
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FFEEEEEE
+clrTopBarDateFont = FF909090
+clrTopBarBorderFg = F0202020
+clrTopBarBorderBg = F0202020
+clrTopBarRecordingActiveFg = FF880000
+clrTopBarRecordingActiveBg = F0202020
+clrTopBarConflictLowFg = FFBBBB00
+clrTopBarConflictLowBg = F0202020
+clrTopBarConflictHighFg = FF880000
+clrTopBarConflictHighBg = F0202020
+clrButtonBg = F0202020
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFBB0000
+clrButtonGreen = FF00BB00
+clrButtonYellow = FFBBBB00
+clrButtonBlue = FF0000BB
+clrButtonBorderFg = F0202020
+clrButtonBorderBg = F0202020
+clrMessageBg = F0202020
+clrMessageFont = FFEEEEEE
+clrMessageStatus = FF0000FF
+clrMessageInfo = FF009900
+clrMessageWarning = FFBBBB00
+clrMessageError = FFBB0000
+clrMessageBorderFg = F0202020
+clrMessageBorderBg = F0202020
+clrChannelBg = F0202020
+clrChannelFontTitle = FFFF5722
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FF909090
+clrChannelProgressFg = FFFF5722
+clrChannelProgressBarFg = FFFF5722
+clrChannelProgressBg = F0202020
+clrChannelBorderFg = F0FF5722
+clrChannelBorderBg = F0FF5722
+clrChannelEPGBorderFg = F0FF5722
+clrChannelEPGBorderBg = F0FF5722
+clrChannelSignalFont = FF909090
+clrChannelSignalProgressFg = FF909090
+clrChannelSignalProgressBarFg = FF909090
+clrChannelSignalProgressBg = F0202020
+clrChannelRecordingPresentFg = FFAA0000
+clrChannelRecordingPresentBg = F0202020
+clrChannelRecordingFollowFg = FF909090
+clrChannelRecordingFollowBg = F0202020
+clrItemBg = F0909090
+clrItemFont = FFEEEEEE
+clrItemCurrentBg = F0FF5722
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = F0202020
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = FFFF5722
+clrScrollbarBarFg = FFFF5722
+clrScrollbarBg = F0202020
+clrMenuEventBg = F0202020
+clrMenuEventFontTitle = FFFF5722
+clrMenuEventTitleLine = FFFF5722
+clrMenuEventFontInfo = FFEEEEEE
+clrMenuRecBg = F0202020
+clrMenuRecFontTitle = FFFF5722
+clrMenuRecTitleLine = FFFF5722
+clrMenuRecFontInfo = FFEEEEEE
+clrMenuTextBg = F0202020
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFEEEEEE
+clrMenuContentHeadBorderFg = F0FF5722
+clrMenuContentHeadBorderBg = F0FF5722
+clrMenuContentBorderFg = F0FF5722
+clrMenuContentBorderBg = F0FF5722
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = F0202020
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = F0FF5722
+clrMenuItemBorderFg = F0909090
+clrMenuItemBorderBg = F0909090
+clrMenuItemSelableBorderFg = F0202020
+clrMenuItemSelableBorderBg = F0202020
+clrMenuItemCurrentBorderFg = F0FF5722
+clrMenuItemCurrentBorderBg = F0FF5722
+clrMenuTimerItemDisabledFont = FF909090
+clrMenuTimerItemRecordingFont = FFEEEEEE
+clrMenuItemExtraTextFont = FF909090
+clrMenuItemExtraTextCurrentFont = FF909090
+clrReplayBg = F0202020
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FFFF5722
+clrReplayProgressFg = FFEEEEEE
+clrReplayProgressBarFg = FFEEEEEE
+clrReplayProgressBarCurFg = FFFF5722
+clrReplayProgressBg = F0202020
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FFFF5722
+clrReplayBorderFg = F0202020
+clrReplayBorderBg = F0202020
+clrTrackItemBg = F0909090
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = F0202020
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemCurrentBg = F0FF5722
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemBorderFg = F0909090
+clrTrackItemBorderBg = F0909090
+clrTrackItemSelableBorderFg = F0202020
+clrTrackItemSelableBorderBg = F0202020
+clrTrackItemCurrentBorderFg = F0FF5722
+clrTrackItemCurrentBorderBg = F0FF5722
+clrVolumeBg = F0202020
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FFFF5722
+clrVolumeProgressBarFg = FFFF5722
+clrVolumeProgressBg = F0202020
+clrVolumeBorderFg = F0202020
+clrVolumeBorderBg = F0202020
diff --git a/themes/flatPlus-default_DeepPurple.theme b/themes/flatPlus-default_DeepPurple.theme
new file mode 100644
index 0000000..b21c529
--- /dev/null
+++ b/themes/flatPlus-default_DeepPurple.theme
@@ -0,0 +1,118 @@
+Description = Default - DeepPurple
+clrTopBarBg = F0202020
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FFEEEEEE
+clrTopBarDateFont = FF909090
+clrTopBarBorderFg = F0202020
+clrTopBarBorderBg = F0202020
+clrTopBarRecordingActiveFg = FF880000
+clrTopBarRecordingActiveBg = F0202020
+clrTopBarConflictLowFg = FFBBBB00
+clrTopBarConflictLowBg = F0202020
+clrTopBarConflictHighFg = FF880000
+clrTopBarConflictHighBg = F0202020
+clrButtonBg = F0202020
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFBB0000
+clrButtonGreen = FF00BB00
+clrButtonYellow = FFBBBB00
+clrButtonBlue = FF0000BB
+clrButtonBorderFg = F0202020
+clrButtonBorderBg = F0202020
+clrMessageBg = F0202020
+clrMessageFont = FFEEEEEE
+clrMessageStatus = FF0000FF
+clrMessageInfo = FF009900
+clrMessageWarning = FFBBBB00
+clrMessageError = FFBB0000
+clrMessageBorderFg = F0202020
+clrMessageBorderBg = F0202020
+clrChannelBg = F0202020
+clrChannelFontTitle = FF673ab7
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FF909090
+clrChannelProgressFg = FF673ab7
+clrChannelProgressBarFg = FF673ab7
+clrChannelProgressBg = F0202020
+clrChannelBorderFg = F0673ab7
+clrChannelBorderBg = F0673ab7
+clrChannelEPGBorderFg = F0673ab7
+clrChannelEPGBorderBg = F0673ab7
+clrChannelSignalFont = FF909090
+clrChannelSignalProgressFg = FF909090
+clrChannelSignalProgressBarFg = FF909090
+clrChannelSignalProgressBg = F0202020
+clrChannelRecordingPresentFg = FFAA0000
+clrChannelRecordingPresentBg = F0202020
+clrChannelRecordingFollowFg = FF909090
+clrChannelRecordingFollowBg = F0202020
+clrItemBg = F0909090
+clrItemFont = FFEEEEEE
+clrItemCurrentBg = F0673ab7
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = F0202020
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = FF673ab7
+clrScrollbarBarFg = FF673ab7
+clrScrollbarBg = F0202020
+clrMenuEventBg = F0202020
+clrMenuEventFontTitle = FF673ab7
+clrMenuEventTitleLine = FF673ab7
+clrMenuEventFontInfo = FFEEEEEE
+clrMenuRecBg = F0202020
+clrMenuRecFontTitle = FF673ab7
+clrMenuRecTitleLine = FF673ab7
+clrMenuRecFontInfo = FFEEEEEE
+clrMenuTextBg = F0202020
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFEEEEEE
+clrMenuContentHeadBorderFg = F0673ab7
+clrMenuContentHeadBorderBg = F0673ab7
+clrMenuContentBorderFg = F0673ab7
+clrMenuContentBorderBg = F0673ab7
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = F0202020
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = F0673ab7
+clrMenuItemBorderFg = F0909090
+clrMenuItemBorderBg = F0909090
+clrMenuItemSelableBorderFg = F0202020
+clrMenuItemSelableBorderBg = F0202020
+clrMenuItemCurrentBorderFg = F0673ab7
+clrMenuItemCurrentBorderBg = F0673ab7
+clrMenuTimerItemDisabledFont = FF909090
+clrMenuTimerItemRecordingFont = FFEEEEEE
+clrMenuItemExtraTextFont = FF909090
+clrMenuItemExtraTextCurrentFont = FF909090
+clrReplayBg = F0202020
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF673ab7
+clrReplayProgressFg = FFEEEEEE
+clrReplayProgressBarFg = FFEEEEEE
+clrReplayProgressBarCurFg = FF673ab7
+clrReplayProgressBg = F0202020
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF673ab7
+clrReplayBorderFg = F0202020
+clrReplayBorderBg = F0202020
+clrTrackItemBg = F0909090
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = F0202020
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemCurrentBg = F0673ab7
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemBorderFg = F0909090
+clrTrackItemBorderBg = F0909090
+clrTrackItemSelableBorderFg = F0202020
+clrTrackItemSelableBorderBg = F0202020
+clrTrackItemCurrentBorderFg = F0673ab7
+clrTrackItemCurrentBorderBg = F0673ab7
+clrVolumeBg = F0202020
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF673ab7
+clrVolumeProgressBarFg = FF673ab7
+clrVolumeProgressBg = F0202020
+clrVolumeBorderFg = F0202020
+clrVolumeBorderBg = F0202020
diff --git a/themes/flatPlus-default_Indigo.theme b/themes/flatPlus-default_Indigo.theme
new file mode 100644
index 0000000..db5b73f
--- /dev/null
+++ b/themes/flatPlus-default_Indigo.theme
@@ -0,0 +1,118 @@
+Description = Default - Indigo
+clrTopBarBg = F0202020
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FFEEEEEE
+clrTopBarDateFont = FF909090
+clrTopBarBorderFg = F0202020
+clrTopBarBorderBg = F0202020
+clrTopBarRecordingActiveFg = FF880000
+clrTopBarRecordingActiveBg = F0202020
+clrTopBarConflictLowFg = FFBBBB00
+clrTopBarConflictLowBg = F0202020
+clrTopBarConflictHighFg = FF880000
+clrTopBarConflictHighBg = F0202020
+clrButtonBg = F0202020
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFBB0000
+clrButtonGreen = FF00BB00
+clrButtonYellow = FFBBBB00
+clrButtonBlue = FF0000BB
+clrButtonBorderFg = F0202020
+clrButtonBorderBg = F0202020
+clrMessageBg = F0202020
+clrMessageFont = FFEEEEEE
+clrMessageStatus = FF0000FF
+clrMessageInfo = FF009900
+clrMessageWarning = FFBBBB00
+clrMessageError = FFBB0000
+clrMessageBorderFg = F0202020
+clrMessageBorderBg = F0202020
+clrChannelBg = F0202020
+clrChannelFontTitle = FF3f51b5
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FF909090
+clrChannelProgressFg = FF3f51b5
+clrChannelProgressBarFg = FF3f51b5
+clrChannelProgressBg = F0202020
+clrChannelBorderFg = F03f51b5
+clrChannelBorderBg = F03f51b5
+clrChannelEPGBorderFg = F03f51b5
+clrChannelEPGBorderBg = F03f51b5
+clrChannelSignalFont = FF909090
+clrChannelSignalProgressFg = FF909090
+clrChannelSignalProgressBarFg = FF909090
+clrChannelSignalProgressBg = F0202020
+clrChannelRecordingPresentFg = FFAA0000
+clrChannelRecordingPresentBg = F0202020
+clrChannelRecordingFollowFg = FF909090
+clrChannelRecordingFollowBg = F0202020
+clrItemBg = F0909090
+clrItemFont = FFEEEEEE
+clrItemCurrentBg = F03f51b5
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = F0202020
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = FF3f51b5
+clrScrollbarBarFg = FF3f51b5
+clrScrollbarBg = F0202020
+clrMenuEventBg = F0202020
+clrMenuEventFontTitle = FF3f51b5
+clrMenuEventTitleLine = FF3f51b5
+clrMenuEventFontInfo = FFEEEEEE
+clrMenuRecBg = F0202020
+clrMenuRecFontTitle = FF3f51b5
+clrMenuRecTitleLine = FF3f51b5
+clrMenuRecFontInfo = FFEEEEEE
+clrMenuTextBg = F0202020
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFEEEEEE
+clrMenuContentHeadBorderFg = F03f51b5
+clrMenuContentHeadBorderBg = F03f51b5
+clrMenuContentBorderFg = F03f51b5
+clrMenuContentBorderBg = F03f51b5
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = F0202020
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = F03f51b5
+clrMenuItemBorderFg = F0909090
+clrMenuItemBorderBg = F0909090
+clrMenuItemSelableBorderFg = F0202020
+clrMenuItemSelableBorderBg = F0202020
+clrMenuItemCurrentBorderFg = F03f51b5
+clrMenuItemCurrentBorderBg = F03f51b5
+clrMenuTimerItemDisabledFont = FF909090
+clrMenuTimerItemRecordingFont = FFEEEEEE
+clrMenuItemExtraTextFont = FF909090
+clrMenuItemExtraTextCurrentFont = FF909090
+clrReplayBg = F0202020
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF3f51b5
+clrReplayProgressFg = FFEEEEEE
+clrReplayProgressBarFg = FFEEEEEE
+clrReplayProgressBarCurFg = FF3f51b5
+clrReplayProgressBg = F0202020
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF3f51b5
+clrReplayBorderFg = F0202020
+clrReplayBorderBg = F0202020
+clrTrackItemBg = F0909090
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = F0202020
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemCurrentBg = F03f51b5
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemBorderFg = F0909090
+clrTrackItemBorderBg = F0909090
+clrTrackItemSelableBorderFg = F0202020
+clrTrackItemSelableBorderBg = F0202020
+clrTrackItemCurrentBorderFg = F03f51b5
+clrTrackItemCurrentBorderBg = F03f51b5
+clrVolumeBg = F0202020
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF3f51b5
+clrVolumeProgressBarFg = FF3f51b5
+clrVolumeProgressBg = F0202020
+clrVolumeBorderFg = F0202020
+clrVolumeBorderBg = F0202020
diff --git a/themes/flatPlus-default_Red.theme b/themes/flatPlus-default_Red.theme
new file mode 100644
index 0000000..7dc52a8
--- /dev/null
+++ b/themes/flatPlus-default_Red.theme
@@ -0,0 +1,118 @@
+Description = Default - Red
+clrTopBarBg = F0202020
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FFEEEEEE
+clrTopBarDateFont = FF909090
+clrTopBarBorderFg = F0202020
+clrTopBarBorderBg = F0202020
+clrTopBarRecordingActiveFg = FF880000
+clrTopBarRecordingActiveBg = F0202020
+clrTopBarConflictLowFg = FFBBBB00
+clrTopBarConflictLowBg = F0202020
+clrTopBarConflictHighFg = FF880000
+clrTopBarConflictHighBg = F0202020
+clrButtonBg = F0202020
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFBB0000
+clrButtonGreen = FF00BB00
+clrButtonYellow = FFBBBB00
+clrButtonBlue = FF0000BB
+clrButtonBorderFg = F0202020
+clrButtonBorderBg = F0202020
+clrMessageBg = F0202020
+clrMessageFont = FFEEEEEE
+clrMessageStatus = FF0000FF
+clrMessageInfo = FF009900
+clrMessageWarning = FFBBBB00
+clrMessageError = FFBB0000
+clrMessageBorderFg = F0202020
+clrMessageBorderBg = F0202020
+clrChannelBg = F0202020
+clrChannelFontTitle = FFf44336
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FF909090
+clrChannelProgressFg = FFf44336
+clrChannelProgressBarFg = FFf44336
+clrChannelProgressBg = F0202020
+clrChannelBorderFg = F0f44336
+clrChannelBorderBg = F0f44336
+clrChannelEPGBorderFg = F0f44336
+clrChannelEPGBorderBg = F0f44336
+clrChannelSignalFont = FF909090
+clrChannelSignalProgressFg = FF909090
+clrChannelSignalProgressBarFg = FF909090
+clrChannelSignalProgressBg = F0202020
+clrChannelRecordingPresentFg = FFAA0000
+clrChannelRecordingPresentBg = F0202020
+clrChannelRecordingFollowFg = FF909090
+clrChannelRecordingFollowBg = F0202020
+clrItemBg = F0909090
+clrItemFont = FFEEEEEE
+clrItemCurrentBg = F0f44336
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = F0202020
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = FFf44336
+clrScrollbarBarFg = FFf44336
+clrScrollbarBg = F0202020
+clrMenuEventBg = F0202020
+clrMenuEventFontTitle = FFf44336
+clrMenuEventTitleLine = FFf44336
+clrMenuEventFontInfo = FFEEEEEE
+clrMenuRecBg = F0202020
+clrMenuRecFontTitle = FFf44336
+clrMenuRecTitleLine = FFf44336
+clrMenuRecFontInfo = FFEEEEEE
+clrMenuTextBg = F0202020
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFEEEEEE
+clrMenuContentHeadBorderFg = F0f44336
+clrMenuContentHeadBorderBg = F0f44336
+clrMenuContentBorderFg = F0f44336
+clrMenuContentBorderBg = F0f44336
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = F0202020
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = F0f44336
+clrMenuItemBorderFg = F0909090
+clrMenuItemBorderBg = F0909090
+clrMenuItemSelableBorderFg = F0202020
+clrMenuItemSelableBorderBg = F0202020
+clrMenuItemCurrentBorderFg = F0f44336
+clrMenuItemCurrentBorderBg = F0f44336
+clrMenuTimerItemDisabledFont = FF909090
+clrMenuTimerItemRecordingFont = FFEEEEEE
+clrMenuItemExtraTextFont = FF909090
+clrMenuItemExtraTextCurrentFont = FF909090
+clrReplayBg = F0202020
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FFf44336
+clrReplayProgressFg = FFEEEEEE
+clrReplayProgressBarFg = FFEEEEEE
+clrReplayProgressBarCurFg = FFf44336
+clrReplayProgressBg = F0202020
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FFf44336
+clrReplayBorderFg = F0202020
+clrReplayBorderBg = F0202020
+clrTrackItemBg = F0909090
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = F0202020
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemCurrentBg = F0f44336
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemBorderFg = F0909090
+clrTrackItemBorderBg = F0909090
+clrTrackItemSelableBorderFg = F0202020
+clrTrackItemSelableBorderBg = F0202020
+clrTrackItemCurrentBorderFg = F0f44336
+clrTrackItemCurrentBorderBg = F0f44336
+clrVolumeBg = F0202020
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FFf44336
+clrVolumeProgressBarFg = FFf44336
+clrVolumeProgressBg = F0202020
+clrVolumeBorderFg = F0202020
+clrVolumeBorderBg = F0202020
diff --git a/themes/flatPlus-default_Teal.theme b/themes/flatPlus-default_Teal.theme
new file mode 100644
index 0000000..e6ee4b1
--- /dev/null
+++ b/themes/flatPlus-default_Teal.theme
@@ -0,0 +1,118 @@
+Description = Default - Teal
+clrTopBarBg = F0202020
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FFEEEEEE
+clrTopBarDateFont = FF909090
+clrTopBarBorderFg = F0202020
+clrTopBarBorderBg = F0202020
+clrTopBarRecordingActiveFg = FF880000
+clrTopBarRecordingActiveBg = F0202020
+clrTopBarConflictLowFg = FFBBBB00
+clrTopBarConflictLowBg = F0202020
+clrTopBarConflictHighFg = FF880000
+clrTopBarConflictHighBg = F0202020
+clrButtonBg = F0202020
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFBB0000
+clrButtonGreen = FF00BB00
+clrButtonYellow = FFBBBB00
+clrButtonBlue = FF0000BB
+clrButtonBorderFg = F0202020
+clrButtonBorderBg = F0202020
+clrMessageBg = F0202020
+clrMessageFont = FFEEEEEE
+clrMessageStatus = FF0000FF
+clrMessageInfo = FF009900
+clrMessageWarning = FFBBBB00
+clrMessageError = FFBB0000
+clrMessageBorderFg = F0202020
+clrMessageBorderBg = F0202020
+clrChannelBg = F0202020
+clrChannelFontTitle = FF009688
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FF909090
+clrChannelProgressFg = FF009688
+clrChannelProgressBarFg = FF009688
+clrChannelProgressBg = F0202020
+clrChannelBorderFg = F0009688
+clrChannelBorderBg = F0009688
+clrChannelEPGBorderFg = F0009688
+clrChannelEPGBorderBg = F0009688
+clrChannelSignalFont = FF909090
+clrChannelSignalProgressFg = FF909090
+clrChannelSignalProgressBarFg = FF909090
+clrChannelSignalProgressBg = F0202020
+clrChannelRecordingPresentFg = FFAA0000
+clrChannelRecordingPresentBg = F0202020
+clrChannelRecordingFollowFg = FF909090
+clrChannelRecordingFollowBg = F0202020
+clrItemBg = F0909090
+clrItemFont = FFEEEEEE
+clrItemCurrentBg = F0009688
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = F0202020
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = FF009688
+clrScrollbarBarFg = FF009688
+clrScrollbarBg = F0202020
+clrMenuEventBg = F0202020
+clrMenuEventFontTitle = FF009688
+clrMenuEventTitleLine = FF009688
+clrMenuEventFontInfo = FFEEEEEE
+clrMenuRecBg = F0202020
+clrMenuRecFontTitle = FF009688
+clrMenuRecTitleLine = FF009688
+clrMenuRecFontInfo = FFEEEEEE
+clrMenuTextBg = F0202020
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFEEEEEE
+clrMenuContentHeadBorderFg = F0009688
+clrMenuContentHeadBorderBg = F0009688
+clrMenuContentBorderFg = F0009688
+clrMenuContentBorderBg = F0009688
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = F0202020
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = F0009688
+clrMenuItemBorderFg = F0909090
+clrMenuItemBorderBg = F0909090
+clrMenuItemSelableBorderFg = F0202020
+clrMenuItemSelableBorderBg = F0202020
+clrMenuItemCurrentBorderFg = F0009688
+clrMenuItemCurrentBorderBg = F0009688
+clrMenuTimerItemDisabledFont = FF909090
+clrMenuTimerItemRecordingFont = FFEEEEEE
+clrMenuItemExtraTextFont = FF909090
+clrMenuItemExtraTextCurrentFont = FF909090
+clrReplayBg = F0202020
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF009688
+clrReplayProgressFg = FFEEEEEE
+clrReplayProgressBarFg = FFEEEEEE
+clrReplayProgressBarCurFg = FF009688
+clrReplayProgressBg = F0202020
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF009688
+clrReplayBorderFg = F0202020
+clrReplayBorderBg = F0202020
+clrTrackItemBg = F0909090
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = F0202020
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemCurrentBg = F0009688
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemBorderFg = F0909090
+clrTrackItemBorderBg = F0909090
+clrTrackItemSelableBorderFg = F0202020
+clrTrackItemSelableBorderBg = F0202020
+clrTrackItemCurrentBorderFg = F0009688
+clrTrackItemCurrentBorderBg = F0009688
+clrVolumeBg = F0202020
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF009688
+clrVolumeProgressBarFg = FF009688
+clrVolumeProgressBg = F0202020
+clrVolumeBorderFg = F0202020
+clrVolumeBorderBg = F0202020
diff --git a/themes/flatPlus-fnuanthraamber.theme b/themes/flatPlus-fnuanthraamber.theme
new file mode 100644
index 0000000..f4956f7
--- /dev/null
+++ b/themes/flatPlus-fnuanthraamber.theme
@@ -0,0 +1,118 @@
+Description = fnu anthra.amber
+clrTopBarBg = BF000000
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FFEEEEEE
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFBC0000
+clrTopBarRecordingActiveBg = BF000000
+clrTopBarBorderFg = BF000000
+clrTopBarBorderBg = BF000000
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = BF000000
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = BF000000
+clrButtonBg = BF000000
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = BF000000
+clrButtonBorderBg = BF000000
+clrMessageBg = BF000000
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = BF000000
+clrMessageBorderBg = BF000000
+clrChannelBg = BF000000
+clrChannelFontTitle = FFEEEEEE
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FFFFBF00
+clrChannelProgressBg = BF000000
+clrChannelRecordingPresentFg = FFFFBF00
+clrChannelRecordingPresentBg = BF000000
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = BF000000
+clrChannelBorderFg = BF000000
+clrChannelBorderBg = BF000000
+clrChannelEPGBorderFg = BF000000
+clrChannelEPGBorderBg = BF000000
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFb89c50
+clrChannelSignalProgressBg = BF000000
+clrItemBg = BF000000
+clrItemFont = FF404040
+clrItemCurrentBg = BF404040
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = BF000000
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = D8A0A0A0
+clrScrollbarBarFg = FFFFBF00
+clrScrollbarBg = BF000000
+clrMenuEventBg = BF000000
+clrMenuEventFontTitle = FFFFBF00
+clrMenuEventTitleLine = FF808080
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = BF000000
+clrMenuRecFontTitle = FFFFBF00
+clrMenuRecTitleLine = FF808080
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = BF000000
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = BF000000
+clrMenuContentHeadBorderBg = BF000000
+clrMenuContentBorderFg = BF000000
+clrMenuContentBorderBg = BF000000
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = BF000000
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = BF404040
+clrMenuItemBorderFg = BF000000
+clrMenuItemBorderBg = BF000000
+clrMenuItemSelableBorderFg = BF000000
+clrMenuItemSelableBorderBg = BF000000
+clrMenuItemCurrentBorderFg = BF404040
+clrMenuItemCurrentBorderBg = BF404040
+clrMenuItemExtraTextFont = FFA0A0A0
+clrMenuItemExtraTextCurrentFont = FFA0A0A0
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFFFBF00
+clrReplayBg = BF000000
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF404040
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FFFFBF00
+clrReplayProgressBg = BF000000
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF404040
+clrReplayBorderFg = BF000000
+clrReplayBorderBg = BF000000
+clrTrackItemBg = D8555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = BF000000
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = D8555555
+clrTrackItemBorderBg = D8555555
+clrTrackItemSelableBorderFg = BF000000
+clrTrackItemSelableBorderBg = BF000000
+clrTrackItemCurrentBg = BF404040
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = BF404040
+clrTrackItemCurrentBorderBg = BF404040
+clrVolumeBg = BF000000
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FF404040
+clrVolumeProgressBg = BF000000
+clrVolumeBorderFg = BF000000
+clrVolumeBorderBg = BF000000
diff --git a/themes/flatPlus-fnuanthracutis.theme b/themes/flatPlus-fnuanthracutis.theme
new file mode 100644
index 0000000..6bb8147
--- /dev/null
+++ b/themes/flatPlus-fnuanthracutis.theme
@@ -0,0 +1,118 @@
+Description = fnu anthra.cutis
+clrTopBarBg = BF000000
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FFEEEEEE
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFBC0000
+clrTopBarRecordingActiveBg = BF000000
+clrTopBarBorderFg = BF000000
+clrTopBarBorderBg = BF000000
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = BF000000
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = BF000000
+clrButtonBg = BF000000
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = BF000000
+clrButtonBorderBg = BF000000
+clrMessageBg = BF000000
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = BF000000
+clrMessageBorderBg = BF000000
+clrChannelBg = BF000000
+clrChannelFontTitle = FFEEEEEE
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FFF88F68
+clrChannelProgressBg = BF000000
+clrChannelRecordingPresentFg = FFF88F68
+clrChannelRecordingPresentBg = BF000000
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = BF000000
+clrChannelBorderFg = BF000000
+clrChannelBorderBg = BF000000
+clrChannelEPGBorderFg = BF000000
+clrChannelEPGBorderBg = BF000000
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFD57A59
+clrChannelSignalProgressBg = BF000000
+clrItemBg = BF000000
+clrItemFont = FF404040
+clrItemCurrentBg = BF404040
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = BF000000
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = D8A0A0A0
+clrScrollbarBarFg = FFF88F68
+clrScrollbarBg = BF000000
+clrMenuEventBg = BF000000
+clrMenuEventFontTitle = FFF88F68
+clrMenuEventTitleLine = FF808080
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = BF000000
+clrMenuRecFontTitle = FFF88F68
+clrMenuRecTitleLine = FF808080
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = BF000000
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = BF000000
+clrMenuContentHeadBorderBg = BF000000
+clrMenuContentBorderFg = BF000000
+clrMenuContentBorderBg = BF000000
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = BF000000
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = BF404040
+clrMenuItemBorderFg = BF000000
+clrMenuItemBorderBg = BF000000
+clrMenuItemSelableBorderFg = BF000000
+clrMenuItemSelableBorderBg = BF000000
+clrMenuItemCurrentBorderFg = BF404040
+clrMenuItemCurrentBorderBg = BF404040
+clrMenuItemExtraTextFont = FFA0A0A0
+clrMenuItemExtraTextCurrentFont = FFA0A0A0
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFF88F68
+clrReplayBg = BF000000
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF404040
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FFF88F68
+clrReplayProgressBg = BF000000
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF404040
+clrReplayBorderFg = BF000000
+clrReplayBorderBg = BF000000
+clrTrackItemBg = D8555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = BF000000
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = D8555555
+clrTrackItemBorderBg = D8555555
+clrTrackItemSelableBorderFg = BF000000
+clrTrackItemSelableBorderBg = BF000000
+clrTrackItemCurrentBg = BF404040
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = BF404040
+clrTrackItemCurrentBorderBg = BF404040
+clrVolumeBg = BF000000
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FF404040
+clrVolumeProgressBg = BF000000
+clrVolumeBorderFg = BF000000
+clrVolumeBorderBg = BF000000
diff --git a/themes/flatPlus-fnuanthragreen.theme b/themes/flatPlus-fnuanthragreen.theme
new file mode 100644
index 0000000..bd00905
--- /dev/null
+++ b/themes/flatPlus-fnuanthragreen.theme
@@ -0,0 +1,118 @@
+Description = fnu anthra.green
+clrTopBarBg = BF000000
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FFEEEEEE
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFBC0000
+clrTopBarRecordingActiveBg = BF000000
+clrTopBarBorderFg = BF000000
+clrTopBarBorderBg = BF000000
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = BF000000
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = BF000000
+clrButtonBg = BF000000
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = BF000000
+clrButtonBorderBg = BF000000
+clrMessageBg = BF000000
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = BF000000
+clrMessageBorderBg = BF000000
+clrChannelBg = BF000000
+clrChannelFontTitle = FFEEEEEE
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FF00CD00
+clrChannelProgressBg = BF000000
+clrChannelRecordingPresentFg = FF00CD00
+clrChannelRecordingPresentBg = BF000000
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = BF000000
+clrChannelBorderFg = BF000000
+clrChannelBorderBg = BF000000
+clrChannelEPGBorderFg = BF000000
+clrChannelEPGBorderBg = BF000000
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FF4b9b3e
+clrChannelSignalProgressBg = BF000000
+clrItemBg = BF000000
+clrItemFont = FF404040
+clrItemCurrentBg = BF404040
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = BF000000
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = D8A0A0A0
+clrScrollbarBarFg = FF00CD00
+clrScrollbarBg = BF000000
+clrMenuEventBg = BF000000
+clrMenuEventFontTitle = FF00CD00
+clrMenuEventTitleLine = FF808080
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = BF000000
+clrMenuRecFontTitle = FF00CD00
+clrMenuRecTitleLine = FF808080
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = BF000000
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = BF000000
+clrMenuContentHeadBorderBg = BF000000
+clrMenuContentBorderFg = BF000000
+clrMenuContentBorderBg = BF000000
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = BF000000
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = BF404040
+clrMenuItemBorderFg = BF000000
+clrMenuItemBorderBg = BF000000
+clrMenuItemSelableBorderFg = BF000000
+clrMenuItemSelableBorderBg = BF000000
+clrMenuItemCurrentBorderFg = BF404040
+clrMenuItemCurrentBorderBg = BF404040
+clrMenuItemExtraTextFont = FFA0A0A0
+clrMenuItemExtraTextCurrentFont = FFA0A0A0
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FF00CD00
+clrReplayBg = BF000000
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF404040
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FF00CD00
+clrReplayProgressBg = BF000000
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF404040
+clrReplayBorderFg = BF000000
+clrReplayBorderBg = BF000000
+clrTrackItemBg = D8555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = BF000000
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = D8555555
+clrTrackItemBorderBg = D8555555
+clrTrackItemSelableBorderFg = BF000000
+clrTrackItemSelableBorderBg = BF000000
+clrTrackItemCurrentBg = BF404040
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = BF404040
+clrTrackItemCurrentBorderBg = BF404040
+clrVolumeBg = BF000000
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FF404040
+clrVolumeProgressBg = BF000000
+clrVolumeBorderFg = BF000000
+clrVolumeBorderBg = BF000000
diff --git a/themes/flatPlus-fnuanthraivory.theme b/themes/flatPlus-fnuanthraivory.theme
new file mode 100644
index 0000000..1dad55c
--- /dev/null
+++ b/themes/flatPlus-fnuanthraivory.theme
@@ -0,0 +1,118 @@
+Description = fnu anthra.ivory
+clrTopBarBg = BF000000
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FFEEEEEE
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFBC0000
+clrTopBarRecordingActiveBg = BF000000
+clrTopBarBorderFg = BF000000
+clrTopBarBorderBg = BF000000
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = BF000000
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = BF000000
+clrButtonBg = BF000000
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = BF000000
+clrButtonBorderBg = BF000000
+clrMessageBg = BF000000
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = BF000000
+clrMessageBorderBg = BF000000
+clrChannelBg = BF000000
+clrChannelFontTitle = FFEEEEEE
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FFDED09F
+clrChannelProgressBg = BF000000
+clrChannelRecordingPresentFg = FFDED09F
+clrChannelRecordingPresentBg = BF000000
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = BF000000
+clrChannelBorderFg = BF000000
+clrChannelBorderBg = BF000000
+clrChannelEPGBorderFg = BF000000
+clrChannelEPGBorderBg = BF000000
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FFB8AD85
+clrChannelSignalProgressBg = BF000000
+clrItemBg = BF000000
+clrItemFont = FF404040
+clrItemCurrentBg = BF404040
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = BF000000
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = D8A0A0A0
+clrScrollbarBarFg = FFDED09F
+clrScrollbarBg = BF000000
+clrMenuEventBg = BF000000
+clrMenuEventFontTitle = FFDED09F
+clrMenuEventTitleLine = FF808080
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = BF000000
+clrMenuRecFontTitle = FFDED09F
+clrMenuRecTitleLine = FF808080
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = BF000000
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = BF000000
+clrMenuContentHeadBorderBg = BF000000
+clrMenuContentBorderFg = BF000000
+clrMenuContentBorderBg = BF000000
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = BF000000
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = BF404040
+clrMenuItemBorderFg = BF000000
+clrMenuItemBorderBg = BF000000
+clrMenuItemSelableBorderFg = BF000000
+clrMenuItemSelableBorderBg = BF000000
+clrMenuItemCurrentBorderFg = BF404040
+clrMenuItemCurrentBorderBg = BF404040
+clrMenuItemExtraTextFont = FFA0A0A0
+clrMenuItemExtraTextCurrentFont = FFA0A0A0
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFDED09F
+clrReplayBg = BF000000
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF404040
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FFDED09F
+clrReplayProgressBg = BF000000
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF404040
+clrReplayBorderFg = BF000000
+clrReplayBorderBg = BF000000
+clrTrackItemBg = D8555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = BF000000
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = D8555555
+clrTrackItemBorderBg = D8555555
+clrTrackItemSelableBorderFg = BF000000
+clrTrackItemSelableBorderBg = BF000000
+clrTrackItemCurrentBg = BF404040
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = BF404040
+clrTrackItemCurrentBorderBg = BF404040
+clrVolumeBg = BF000000
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FF404040
+clrVolumeProgressBg = BF000000
+clrVolumeBorderFg = BF000000
+clrVolumeBorderBg = BF000000
diff --git a/themes/flatPlus-fnuanthralilac.theme b/themes/flatPlus-fnuanthralilac.theme
new file mode 100644
index 0000000..ac15221
--- /dev/null
+++ b/themes/flatPlus-fnuanthralilac.theme
@@ -0,0 +1,118 @@
+Description = fnu anthra.lilac
+clrTopBarBg = BF000000
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FFEEEEEE
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFBC0000
+clrTopBarRecordingActiveBg = BF000000
+clrTopBarBorderFg = BF000000
+clrTopBarBorderBg = BF000000
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = BF000000
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = BF000000
+clrButtonBg = BF000000
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = BF000000
+clrButtonBorderBg = BF000000
+clrMessageBg = BF000000
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = BF000000
+clrMessageBorderBg = BF000000
+clrChannelBg = BF000000
+clrChannelFontTitle = FFEEEEEE
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FFCA90CB
+clrChannelProgressBg = BF000000
+clrChannelRecordingPresentFg = FFCA90CB
+clrChannelRecordingPresentBg = BF000000
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = BF000000
+clrChannelBorderFg = BF000000
+clrChannelBorderBg = BF000000
+clrChannelEPGBorderFg = BF000000
+clrChannelEPGBorderBg = BF000000
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FF956A96
+clrChannelSignalProgressBg = BF000000
+clrItemBg = BF000000
+clrItemFont = FF404040
+clrItemCurrentBg = BF404040
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = BF000000
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = D8A0A0A0
+clrScrollbarBarFg = FFCA90CB
+clrScrollbarBg = BF000000
+clrMenuEventBg = BF000000
+clrMenuEventFontTitle = FFCA90CB
+clrMenuEventTitleLine = FF808080
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = BF000000
+clrMenuRecFontTitle = FFCA90CB
+clrMenuRecTitleLine = FF808080
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = BF000000
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = BF000000
+clrMenuContentHeadBorderBg = BF000000
+clrMenuContentBorderFg = BF000000
+clrMenuContentBorderBg = BF000000
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = BF000000
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = BF404040
+clrMenuItemBorderFg = BF000000
+clrMenuItemBorderBg = BF000000
+clrMenuItemSelableBorderFg = BF000000
+clrMenuItemSelableBorderBg = BF000000
+clrMenuItemCurrentBorderFg = BF404040
+clrMenuItemCurrentBorderBg = BF404040
+clrMenuItemExtraTextFont = FFA0A0A0
+clrMenuItemExtraTextCurrentFont = FFA0A0A0
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFCA90CB
+clrReplayBg = BF000000
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF404040
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FFCA90CB
+clrReplayProgressBg = BF000000
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF404040
+clrReplayBorderFg = BF000000
+clrReplayBorderBg = BF000000
+clrTrackItemBg = D8555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = BF000000
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = D8555555
+clrTrackItemBorderBg = D8555555
+clrTrackItemSelableBorderFg = BF000000
+clrTrackItemSelableBorderBg = BF000000
+clrTrackItemCurrentBg = BF404040
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = BF404040
+clrTrackItemCurrentBorderBg = BF404040
+clrVolumeBg = BF000000
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FF404040
+clrVolumeProgressBg = BF000000
+clrVolumeBorderFg = BF000000
+clrVolumeBorderBg = BF000000
diff --git a/themes/flatPlus-fnuanthrared.theme b/themes/flatPlus-fnuanthrared.theme
new file mode 100644
index 0000000..434b774
--- /dev/null
+++ b/themes/flatPlus-fnuanthrared.theme
@@ -0,0 +1,118 @@
+Description = fnu anthra.red
+clrTopBarBg = BF000000
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FFEEEEEE
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFBC0000
+clrTopBarRecordingActiveBg = BF000000
+clrTopBarBorderFg = BF000000
+clrTopBarBorderBg = BF000000
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = BF000000
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = BF000000
+clrButtonBg = BF000000
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = BF000000
+clrButtonBorderBg = BF000000
+clrMessageBg = BF000000
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = BF000000
+clrMessageBorderBg = BF000000
+clrChannelBg = BF000000
+clrChannelFontTitle = FFEEEEEE
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FFBC0000
+clrChannelProgressBg = BF000000
+clrChannelRecordingPresentFg = FFBC0000
+clrChannelRecordingPresentBg = BF000000
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = BF000000
+clrChannelBorderFg = BF000000
+clrChannelBorderBg = BF000000
+clrChannelEPGBorderFg = BF000000
+clrChannelEPGBorderBg = BF000000
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FF8a3342
+clrChannelSignalProgressBg = BF000000
+clrItemBg = BF000000
+clrItemFont = FF404040
+clrItemCurrentBg = BF404040
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = BF000000
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = D8A0A0A0
+clrScrollbarBarFg = FFBC0000
+clrScrollbarBg = BF000000
+clrMenuEventBg = BF000000
+clrMenuEventFontTitle = FFBC0000
+clrMenuEventTitleLine = FF808080
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = BF000000
+clrMenuRecFontTitle = FFBC0000
+clrMenuRecTitleLine = FF808080
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = BF000000
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = BF000000
+clrMenuContentHeadBorderBg = BF000000
+clrMenuContentBorderFg = BF000000
+clrMenuContentBorderBg = BF000000
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = BF000000
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = BF404040
+clrMenuItemBorderFg = BF000000
+clrMenuItemBorderBg = BF000000
+clrMenuItemSelableBorderFg = BF000000
+clrMenuItemSelableBorderBg = BF000000
+clrMenuItemCurrentBorderFg = BF404040
+clrMenuItemCurrentBorderBg = BF404040
+clrMenuItemExtraTextFont = FFA0A0A0
+clrMenuItemExtraTextCurrentFont = FFA0A0A0
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FFBC0000
+clrReplayBg = BF000000
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF404040
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FFBC0000
+clrReplayProgressBg = BF000000
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF404040
+clrReplayBorderFg = BF000000
+clrReplayBorderBg = BF000000
+clrTrackItemBg = D8555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = BF000000
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = D8555555
+clrTrackItemBorderBg = D8555555
+clrTrackItemSelableBorderFg = BF000000
+clrTrackItemSelableBorderBg = BF000000
+clrTrackItemCurrentBg = BF404040
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = BF404040
+clrTrackItemCurrentBorderBg = BF404040
+clrVolumeBg = BF000000
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FF404040
+clrVolumeProgressBg = BF000000
+clrVolumeBorderFg = BF000000
+clrVolumeBorderBg = BF000000
diff --git a/themes/flatPlus-fnuanthrayablue.theme b/themes/flatPlus-fnuanthrayablue.theme
new file mode 100644
index 0000000..10e36a2
--- /dev/null
+++ b/themes/flatPlus-fnuanthrayablue.theme
@@ -0,0 +1,118 @@
+Description = fnu anthra.yablue
+clrTopBarBg = BF000000
+clrTopBarFont = FFEEEEEE
+clrTopBarTimeFont = FFEEEEEE
+clrTopBarDateFont = FFA0A0A0
+clrTopBarRecordingActiveFg = FFBC0000
+clrTopBarRecordingActiveBg = BF000000
+clrTopBarBorderFg = BF000000
+clrTopBarBorderBg = BF000000
+clrTopBarConflictLowFg = FFCCBB33
+clrTopBarConflictLowBg = BF000000
+clrTopBarConflictHighFg = FFCC2222
+clrTopBarConflictHighBg = BF000000
+clrButtonBg = BF000000
+clrButtonFont = FFEEEEEE
+clrButtonRed = FFCC2222
+clrButtonGreen = FF40A040
+clrButtonYellow = FFCCBB22
+clrButtonBlue = FF2222CC
+clrButtonBorderFg = BF000000
+clrButtonBorderBg = BF000000
+clrMessageBg = BF000000
+clrMessageFont = FFAAAAAA
+clrMessageStatus = FF2222CC
+clrMessageInfo = FF337633
+clrMessageWarning = FFCCBB33
+clrMessageError = FFCC2222
+clrMessageBorderFg = BF000000
+clrMessageBorderBg = BF000000
+clrChannelBg = BF000000
+clrChannelFontTitle = FFEEEEEE
+clrChannelFontEpg = FFEEEEEE
+clrChannelFontEpgFollow = FFA0A0A0
+clrChannelProgressFg = FFA0A0A0
+clrChannelProgressBarFg = FF4e78b1
+clrChannelProgressBg = BF000000
+clrChannelRecordingPresentFg = FF4e78b1
+clrChannelRecordingPresentBg = BF000000
+clrChannelRecordingFollowFg = FFA0A0A0
+clrChannelRecordingFollowBg = BF000000
+clrChannelBorderFg = BF000000
+clrChannelBorderBg = BF000000
+clrChannelEPGBorderFg = BF000000
+clrChannelEPGBorderBg = BF000000
+clrChannelSignalFont = FFA0A0A0
+clrChannelSignalProgressFg = FFA0A0A0
+clrChannelSignalProgressBarFg = FF38618c
+clrChannelSignalProgressBg = BF000000
+clrItemBg = BF000000
+clrItemFont = FF404040
+clrItemCurrentBg = BF404040
+clrItemCurrentFont = FFEEEEEE
+clrItemSelableBg = BF000000
+clrItemSelableFont = FFEEEEEE
+clrScrollbarFg = D8A0A0A0
+clrScrollbarBarFg = FF4e78b1
+clrScrollbarBg = BF000000
+clrMenuEventBg = BF000000
+clrMenuEventFontTitle = FF4e78b1
+clrMenuEventTitleLine = FF808080
+clrMenuEventFontInfo = FFD0D0D0
+clrMenuRecBg = BF000000
+clrMenuRecFontTitle = FF4e78b1
+clrMenuRecTitleLine = FF808080
+clrMenuRecFontInfo = FFD0D0D0
+clrMenuTextBg = BF000000
+clrMenuTextFont = FFEEEEEE
+clrMenuTextFixedFont = FFCCBB22
+clrMenuContentHeadBorderFg = BF000000
+clrMenuContentHeadBorderBg = BF000000
+clrMenuContentBorderFg = BF000000
+clrMenuContentBorderBg = BF000000
+clrMenuItemProgressFg = FFEEEEEE
+clrMenuItemProgressBarFg = FFEEEEEE
+clrMenuItemProgressBg = BF000000
+clrMenuItemCurProgressFg = FFEEEEEE
+clrMenuItemCurProgressBarFg = FFEEEEEE
+clrMenuItemCurProgressBg = BF404040
+clrMenuItemBorderFg = BF000000
+clrMenuItemBorderBg = BF000000
+clrMenuItemSelableBorderFg = BF000000
+clrMenuItemSelableBorderBg = BF000000
+clrMenuItemCurrentBorderFg = BF404040
+clrMenuItemCurrentBorderBg = BF404040
+clrMenuItemExtraTextFont = FFA0A0A0
+clrMenuItemExtraTextCurrentFont = FFA0A0A0
+clrMenuTimerItemDisabledFont = FFA0A0A0
+clrMenuTimerItemRecordingFont = FF4e78b1
+clrReplayBg = BF000000
+clrReplayFont = FFEEEEEE
+clrReplayFontSpeed = FF404040
+clrReplayProgressFg = FF555555
+clrReplayProgressBarFg = FF757575
+clrReplayProgressBarCurFg = FF4e78b1
+clrReplayProgressBg = BF000000
+clrReplayMarkFg = FFEEEEEE
+clrReplayMarkCurrentFg = FF404040
+clrReplayBorderFg = BF000000
+clrReplayBorderBg = BF000000
+clrTrackItemBg = D8555555
+clrTrackItemFont = FFEEEEEE
+clrTrackItemSelableBg = BF000000
+clrTrackItemSelableFont = FFEEEEEE
+clrTrackItemBorderFg = D8555555
+clrTrackItemBorderBg = D8555555
+clrTrackItemSelableBorderFg = BF000000
+clrTrackItemSelableBorderBg = BF000000
+clrTrackItemCurrentBg = BF404040
+clrTrackItemCurrentFont = FFEEEEEE
+clrTrackItemCurrentBorderFg = BF404040
+clrTrackItemCurrentBorderBg = BF404040
+clrVolumeBg = BF000000
+clrVolumeFont = FFEEEEEE
+clrVolumeProgressFg = FF555555
+clrVolumeProgressBarFg = FF404040
+clrVolumeProgressBg = BF000000
+clrVolumeBorderFg = BF000000
+clrVolumeBorderBg = BF000000
diff --git a/widgets/command_output/README b/widgets/command_output/README
new file mode 100644
index 0000000..1e949b0
--- /dev/null
+++ b/widgets/command_output/README
@@ -0,0 +1,6 @@
+This widget is for an own command
+
+The command "command" will be executed every time the widget is drawn, so please keep it short and fast.
+The command have to provide two output files: "title" and "output".
+"title" is the title for the widget.
+The "output" file is read line by line. And every line is drawn without wrap the line if it is to long.
diff --git a/widgets/command_output/command.example b/widgets/command_output/command.example
new file mode 100755
index 0000000..25eab1b
--- /dev/null
+++ b/widgets/command_output/command.example
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+OUTPUTFLDR="/tmp/skinflatplus/widgets/command_output"
+mkdir -p ${OUTPUTFLDR}
+
+echo "MyTitle" > ${OUTPUTFLDR}/title
+
+echo "output line 1" > ${OUTPUTFLDR}/output
+echo "output line 2" >> ${OUTPUTFLDR}/output
diff --git a/widgets/system_information/README b/widgets/system_information/README
new file mode 100644
index 0000000..9209310
--- /dev/null
+++ b/widgets/system_information/README
@@ -0,0 +1,15 @@
+This widget provides several information about the current system state.
+
+You must manually create a link to the corresponding script, for example:
+ln -s system_information.ubuntu system_information
+
+The command "system_information" will be executed every time the widget is drawn, so please keep it short and fast.
+The command "system_information" must provide several files with the infos.
+The output files must begin with 01_ - 99_ for sort/position the info in the widget. For example "01_uptime", "02_load", etc.The values will be drawn in 2 columns except "system_version" and "kernel_version" they are drawn in a row.
+For example:
+System Version: Ubuntu 14.04.1 LTS
+Load: 0.32 Uptime: 10:24:42 up 88 days
+
+You can include system_updatestatus and temperatures. But do not execute the system_updatestatus script (please read README of system_updatestatus)
+
+Please see the example!
diff --git a/widgets/system_information/system_information.g2v b/widgets/system_information/system_information.g2v
new file mode 100755
index 0000000..727b20c
--- /dev/null
+++ b/widgets/system_information/system_information.g2v
@@ -0,0 +1,182 @@
+#!/bin/bash
+
+# this script will be executed when the widget will be drawn
+# so make it short and fast
+
+OUTPUTFLDR="/tmp/skinflatplus/widgets/system_information"
+mkdir -p ${OUTPUTFLDR}
+
+OUTPUTFLDRTEMP="/tmp/skinflatplus/widgets/temperatures"
+OUTPUTFLDRSUPD="/tmp/skinflatplus/widgets/system_updatestatus"
+
+
+# enable/disable items
+SHOW_SYS_VERSION=1
+SHOW_KERNEL_VERSION=0
+SHOW_UPTIME=1
+SHOW_LOAD=1
+SHOW_PROCESSES=1
+SHOW_MEM_USAGE=1
+SHOW_SWAP_USAGE=1
+SHOW_ROOT_USAGE=1
+SHOW_VIDEO_USAGE=0
+SHOW_VDR_CPU_USAGE=1
+SHOW_VDR_MEM_USAGE=1
+
+SHOW_TEMPERATURES=0
+SHOW_SYSUPDATES=0
+
+# Position of items
+# sys_version & kernel_version are drawn in one line
+# all others will be drawn in two column
+# for example
+# System Version: Ubuntu 14.04.1 LTS
+# Uptime: 1:20 5m Load: 0.41
+
+# must begin with 01
+SYS_VERSION_POS="01"
+KERNEL_VERSION_POS="02"
+UPTIME_POS="03"
+LOAD_POS="04"
+PROCESSES_POS="05"
+MEM_USAGE_POS="06"
+SWAP_USAGE_POS="07"
+ROOT_USAGE_POS="08"
+VIDEO_USAGE_POS="09"
+VDR_CPU_USAGE_POS="10"
+VDR_MEM_USAGE_POS="11"
+
+TEMP_CPU_POS=15
+TEMP_PCCASE_POS=16
+TEMP_GPU_POS=17
+
+SYSUPD_POS=20
+SYSSECUPD_POS=21
+
+# mount point of vdr video disk
+VIDEO_MOUNT="/video"
+
+# force english output for filters
+LANG=en_EN
+
+# Release-File (PRETTY_NAME & VERSION)
+REL_FILE="/etc/g2v-release"
+
+# delete all files
+rm -f ${OUTPUTFLDR}/[0-99]*
+
+if [ $SHOW_SYS_VERSION = 1 ]; then
+ if [ -e $REL_FILE ] ; then
+ while IFS= read -r; do
+ [[ ${REPLY} =~ PRETTY_NAME ]] && declare "${REPLY}" # locale Variable
+ [[ ${REPLY} =~ VERSION ]] && declare "${REPLY}" # locale Variable
+ done < $REL_FILE
+ [ -n "$PRETTY_NAME" ] && echo "${PRETTY_NAME//\"/} ${VERSION//\"/}" > ${OUTPUTFLDR}/${SYS_VERSION_POS}_sys_version
+ fi
+fi
+
+if [ $SHOW_KERNEL_VERSION = 1 ]; then
+ uname -r > ${OUTPUTFLDR}/${KERNEL_VERSION_POS}_kernel_version
+fi
+
+if [ $SHOW_UPTIME = 1 ]; then
+ UPTIME=($(cat /proc/uptime)) # UpTime in Array
+ UPTIME[0]=${UPTIME[0]%.*} # .* entfernen (UpTime in Sekunden)
+ TAGE=$((UPTIME[0] / 86400)) ; STD=$((UPTIME[0] % 86400 / 3600))
+ MIN=$((UPTIME[0] % 3600 / 60)) ; SEK=$((UPTIME[0] % 60))
+ if [ $TAGE -ge 1 ] ; then
+ echo "${TAGE}T ${STD}S ${MIN}M" > ${OUTPUTFLDR}/${UPTIME_POS}_uptime
+ else
+ [ $STD -ge 1 ] && echo -n "${STD} Std. " > ${OUTPUTFLDR}/${UPTIME_POS}_uptime
+ echo "${MIN} Min." >> ${OUTPUTFLDR}/${UPTIME_POS}_uptime
+ fi
+fi
+
+if [ $SHOW_LOAD = 1 ]; then
+ LOADAVG=($(cat /proc/loadavg)) # Zeile in Array
+ echo "${LOADAVG[0]//./,}" > ${OUTPUTFLDR}/${LOAD_POS}_load
+fi
+
+if [ $SHOW_PROCESSES = 1 ]; then
+ PROCS=($(ls -d /proc/[0-9]*/))
+ echo "${#PROCS[@]}" > ${OUTPUTFLDR}/${PROCESSES_POS}_processes
+fi
+
+if [ $SHOW_MEM_USAGE = 1 ]; then
+ mapfile -t < <(free -m) # Ausgabe von free in Array (Vier Zeilen)
+ MEM=(${MAPFILE[1]}) # 2. Zeile
+ BUF=(${MAPFILE[2]}) # 3. Zeile
+ MEM_USAGE=$((${BUF[2]} * 1000 / ${MEM[1]}))
+ [ $MEM_USAGE -lt 10 ] && MEM_USAGE="0${MEM_USAGE}"
+ MEM_DEC=${MEM_USAGE: -1}
+ echo "${MEM_USAGE:0: -1},${MEM_DEC}%" > ${OUTPUTFLDR}/${MEM_USAGE_POS}_mem_usage
+fi
+
+if [ $SHOW_SWAP_USAGE = 1 ]; then
+ mapfile -t < <(free -m) # Ausgabe von free in Array (Vier Zeilen)
+ SWAP=(${MAPFILE[3]}) # 4. Zeile
+ if [ ${SWAP[1]} -gt 0 ]; then # Swap Total
+ if [ ${SWAP[2]} -gt 0 ]; then # Swap Used
+ SWP=$((${SWAP[2]} * 1000 / ${SWAP[1]}))
+ [ $SWP -lt 10 ] && SWP="0${SWP}"
+ SWP_DEC=${SWP: -1} ; SWP=${SWP:0: -1},${SWP_DEC}
+ echo "${SWP}%" > ${OUTPUTFLDR}/${SWAP_USAGE_POS}_swap_usage
+ else
+ echo "0,0%" > ${OUTPUTFLDR}/${SWAP_USAGE_POS}_swap_usage
+ fi
+ fi
+fi
+
+if [ $SHOW_ROOT_USAGE = 1 ]; then
+ mapfile -t < <(df -Ph /) # Ausgabe von df in Array (Zwei Zeilen)
+ ROOTUSAGE=(${MAPFILE[1]}) # 2. Zeile in Array
+ # Beispiel 2. Zeile: tmpfs 128M 30M 99M 23% /root
+ echo "${ROOTUSAGE[4]}" > ${OUTPUTFLDR}/${ROOT_USAGE_POS}_root_usage
+fi
+
+if [ $SHOW_VIDEO_USAGE = 1 ] && [ -d ${VIDEO_MOUNT} ]; then
+ mapfile -t < <(df -Ph ${VIDEO_MOUNT}) # Ausgabe von df in Array (Zwei Zeilen)
+ VIDEOUSAGE=(${MAPFILE[1]}) # 2. Zeile in Array
+ # Beispiel 2. Zeile: tmpfs 128M 30M 99M 23% /root
+ echo "${VIDEOUSAGE[4]}" > ${OUTPUTFLDR}/${VIDEO_USAGE_POS}_video_usage
+fi
+
+if [ $SHOW_VDR_CPU_USAGE = 1 ]; then
+ vdr_pid=$(pidof vdr)
+ if [ $? = 0 ]; then
+ mapfile -t < <(ps -p ${vdr_pid} -o %cpu) # Ausgabe von ps in Array (Zwei Zeilen)
+ CPU_USAGE=${MAPFILE[1]/./,} # 24.2 -> 24,2
+ echo "${CPU_USAGE}%" > ${OUTPUTFLDR}/${VDR_CPU_USAGE_POS}_vdr_cpu_usage
+ fi
+fi
+
+if [ $SHOW_VDR_MEM_USAGE = 1 ]; then
+ vdr_pid=$(pidof vdr)
+ if [ $? = 0 ]; then
+ mapfile -t < <(ps -p ${vdr_pid} -o %mem) # Ausgabe von ps in Array (Zwei Zeilen)
+ VDR_MEM_USAGE=${MAPFILE[1]/./,} # 24.2 -> 24,2
+ echo "${VDR_MEM_USAGE}%" > ${OUTPUTFLDR}/${VDR_MEM_USAGE_POS}_vdr_mem_usage
+ fi
+fi
+
+if [ $SHOW_TEMPERATURES = 1 ]; then
+ ./../temperatures/temperatures
+ if [ -f ${OUTPUTFLDRTEMP}/cpu ]; then
+ cp ${OUTPUTFLDRTEMP}/cpu ${OUTPUTFLDR}/${TEMP_CPU_POS}_cpu
+ fi
+ if [ -f ${OUTPUTFLDRTEMP}/pccase ]; then
+ cp ${OUTPUTFLDRTEMP}/pccase ${OUTPUTFLDR}/${TEMP_PCCASE_POS}_pccase
+ fi
+ if [ -f ${OUTPUTFLDRTEMP}/gpu ]; then
+ cp ${OUTPUTFLDRTEMP}/gpu ${OUTPUTFLDR}/${TEMP_GPU_POS}_gpu
+ fi
+fi
+
+if [ $SHOW_SYSUPDATES = 1 ]; then
+ if [ -f ${OUTPUTFLDRSUPD}/updates ]; then
+ cp ${OUTPUTFLDRSUPD}/updates ${OUTPUTFLDR}/${SYSUPD_POS}_updates
+ fi
+ if [ -f ${OUTPUTFLDRSUPD}/security_updates ]; then
+ cp ${OUTPUTFLDRSUPD}/security_updates ${OUTPUTFLDR}/${SYSSECUPD_POS}_security_updates
+ fi
+fi
diff --git a/widgets/system_information/system_information.ubuntu b/widgets/system_information/system_information.ubuntu
new file mode 100755
index 0000000..269b0be
--- /dev/null
+++ b/widgets/system_information/system_information.ubuntu
@@ -0,0 +1,172 @@
+#!/bin/bash
+
+# this script will be executed when the widget will be drawn
+# so make it short and fast
+
+OUTPUTFLDR="/tmp/skinflatplus/widgets/system_information"
+mkdir -p ${OUTPUTFLDR}
+
+OUTPUTFLDRTEMP="/tmp/skinflatplus/widgets/temperatures"
+OUTPUTFLDRSUPD="/tmp/skinflatplus/widgets/system_updatestatus"
+
+# enable/disable items
+SHOW_SYS_VERSION=0
+SHOW_KERNEL_VERSION=0
+SHOW_UPTIME=1
+SHOW_LOAD=1
+SHOW_PROCESSES=1
+SHOW_MEM_USAGE=1
+SHOW_SWAP_USAGE=1
+SHOW_ROOT_USAGE=1
+SHOW_VIDEO_USAGE=1
+SHOW_VDR_CPU_USAGE=1
+SHOW_VDR_MEM_USAGE=1
+
+SHOW_TEMPERATURES=0
+SHOW_SYSUPDATES=0
+
+# Position of items
+# sys_version & kernel_version are drawn in one line
+# all others will be drawn in two column
+# for example
+# System Version: Ubuntu 14.04.1 LTS
+# Uptime: 1:20 5m Load: 0.41
+
+# must begin with 01
+SYS_VERSION_POS="01"
+KERNEL_VERSION_POS="02"
+UPTIME_POS="03"
+LOAD_POS="04"
+PROCESSES_POS="05"
+MEM_USAGE_POS="06"
+SWAP_USAGE_POS="07"
+ROOT_USAGE_POS="08"
+VIDEO_USAGE_POS="09"
+VDR_CPU_USAGE_POS="10"
+VDR_MEM_USAGE_POS="11"
+
+TEMP_CPU_POS=15
+TEMP_PCCASE_POS=16
+TEMP_GPU_POS=17
+
+SYSUPD_POS=20
+SYSSECUPD_POS=21
+
+# mount point of vdr video disk
+VIDEO_MOUNT="/media/video"
+
+
+# force english output for filters
+LANG=en_EN
+
+# Get own Path
+SELF="$(readlink -m /proc/$$/fd/255)" # $0
+MY_DIR="$(dirname $SELF)" # Path
+
+# delete all files
+rm -f ${OUTPUTFLDR}/[0-99]*
+
+if [ $SHOW_SYS_VERSION = 1 ]; then
+ cat /etc/os-release | grep "PRETTY_NAME=" | cut -d"\"" -f 2 > ${OUTPUTFLDR}/${SYS_VERSION_POS}_sys_version
+fi
+
+if [ $SHOW_KERNEL_VERSION = 1 ]; then
+ uname -r > ${OUTPUTFLDR}/${KERNEL_VERSION_POS}_kernel_version
+fi
+
+if [ $SHOW_UPTIME = 1 ]; then
+ UPTIME=($(cat /proc/uptime)) # UpTime in Array
+ UPTIME[0]=${UPTIME[0]%.*} # .* entfernen (UpTime in Sekunden)
+ TAGE=$((UPTIME[0] / 86400)) ; STD=$((UPTIME[0] % 86400 / 3600))
+ MIN=$((UPTIME[0] % 3600 / 60)) ; SEK=$((UPTIME[0] % 60))
+ if [ $TAGE -ge 1 ] ; then
+ echo "${TAGE}T ${STD}S ${MIN}M" > ${OUTPUTFLDR}/${UPTIME_POS}_uptime
+ else
+ [ $STD -ge 1 ] && echo -n "${STD} Std. " > ${OUTPUTFLDR}/${UPTIME_POS}_uptime
+ echo "${MIN} Min." >> ${OUTPUTFLDR}/${UPTIME_POS}_uptime
+ fi
+fi
+
+if [ $SHOW_LOAD = 1 ]; then
+ LOADAVG=($(cat /proc/loadavg)) # Zeile in Array
+ echo "${LOADAVG[0]//./,}" > ${OUTPUTFLDR}/${LOAD_POS}_load
+fi
+
+if [ $SHOW_PROCESSES = 1 ]; then
+ PROCS=($(ls -d /proc/[0-9]*/))
+ echo "${#PROCS[@]}" > ${OUTPUTFLDR}/${PROCESSES_POS}_processes
+fi
+
+if [ $SHOW_MEM_USAGE = 1 ]; then
+ mapfile -t < <(free -m) # Ausgabe von free in Array (Vier Zeilen)
+ MEM=(${MAPFILE[1]}) # 2. Zeile
+ BUF=(${MAPFILE[2]}) # 3. Zeile
+ MEM_USAGE=$((${BUF[2]} * 1000 / ${MEM[1]}))
+ [ $MEM_USAGE -lt 10 ] && MEM_USAGE="0${MEM_USAGE}"
+ MEM_DEC=${MEM_USAGE: -1}
+ echo "${MEM_USAGE:0: -1},${MEM_DEC}%" > ${OUTPUTFLDR}/${MEM_USAGE_POS}_mem_usage
+fi
+
+if [ $SHOW_SWAP_USAGE = 1 ]; then
+ mapfile -t < <(free -m) # Ausgabe von free in Array (Vier Zeilen)
+ SWAP=(${MAPFILE[3]}) # 4. Zeile
+ if [ ${SWAP[1]} -gt 0 ]; then # Swap Total
+ if [ ${SWAP[2]} -gt 0 ]; then # Swap Used
+ SWP=$((${SWAP[2]} * 1000 / ${SWAP[1]}))
+ [ $SWP -lt 10 ] && SWP="0${SWP}"
+ SWP_DEC=${SWP: -1} ; SWP=${SWP:0: -1},${SWP_DEC}
+ echo "${SWP}%" > ${OUTPUTFLDR}/${SWAP_USAGE_POS}_swap_usage
+ else
+ echo "0,0%" > ${OUTPUTFLDR}/${SWAP_USAGE_POS}_swap_usage
+ fi
+ fi
+fi
+
+if [ $SHOW_ROOT_USAGE = 1 ]; then
+ df -h / | awk '/\// {print $(NF-1)}' > ${OUTPUTFLDR}/${ROOT_USAGE_POS}_root_usage
+fi
+
+if [ $SHOW_VIDEO_USAGE = 1 ] && [ -d ${VIDEO_MOUNT} ]; then
+ df -h ${VIDEO_MOUNT} | awk '/\// {print $(NF-1)}' > ${OUTPUTFLDR}/${VIDEO_USAGE_POS}_video_usage
+fi
+
+if [ $SHOW_VDR_CPU_USAGE = 1 ]; then
+ vdr_pid=$(pidof vdr)
+ if [ $? = 0 ]; then
+ mapfile -t < <(ps -p ${vdr_pid} -o %cpu) # Ausgabe von ps in Array (Zwei Zeilen)
+ CPU_USAGE=${MAPFILE[1]/./,} # 24.2 -> 24,2
+ echo "${CPU_USAGE}%" > ${OUTPUTFLDR}/${VDR_CPU_USAGE_POS}_vdr_cpu_usage
+ fi
+fi
+
+if [ $SHOW_VDR_MEM_USAGE = 1 ]; then
+ vdr_pid=$(pidof vdr)
+ if [ $? = 0 ]; then
+ mapfile -t < <(ps -p ${vdr_pid} -o %mem) # Ausgabe von ps in Array (Zwei Zeilen)
+ VDR_MEM_USAGE=${MAPFILE[1]/./,} # 24.2 -> 24,2
+ echo "${VDR_MEM_USAGE}%" > ${OUTPUTFLDR}/${VDR_MEM_USAGE_POS}_vdr_mem_usage
+ fi
+fi
+
+if [ $SHOW_TEMPERATURES = 1 ]; then
+ TEMPERATURES_DIR="$(readlink -m $MY_DIR/../temperatures)"
+ bash $TEMPERATURES_DIR/temperatures
+ if [ -f ${OUTPUTFLDRTEMP}/cpu ]; then
+ cp ${OUTPUTFLDRTEMP}/cpu ${OUTPUTFLDR}/${TEMP_CPU_POS}_cpu
+ fi
+ if [ -f ${OUTPUTFLDRTEMP}/pccase ]; then
+ cp ${OUTPUTFLDRTEMP}/pccase ${OUTPUTFLDR}/${TEMP_PCCASE_POS}_pccase
+ fi
+ if [ -f ${OUTPUTFLDRTEMP}/gpu ]; then
+ cp ${OUTPUTFLDRTEMP}/gpu ${OUTPUTFLDR}/${TEMP_GPU_POS}_gpu
+ fi
+fi
+
+if [ $SHOW_SYSUPDATES = 1 ]; then
+ if [ -f ${OUTPUTFLDRSUPD}/updates ]; then
+ cp ${OUTPUTFLDRSUPD}/updates ${OUTPUTFLDR}/${SYSUPD_POS}_updates
+ fi
+ if [ -f ${OUTPUTFLDRSUPD}/security_updates ]; then
+ cp ${OUTPUTFLDRSUPD}/security_updates ${OUTPUTFLDR}/${SYSSECUPD_POS}_security_updates
+ fi
+fi
diff --git a/widgets/system_updatestatus/README b/widgets/system_updatestatus/README
new file mode 100644
index 0000000..3bcf728
--- /dev/null
+++ b/widgets/system_updatestatus/README
@@ -0,0 +1,8 @@
+This widget provide information about available updates of the system.
+
+Since the command usually needs long time to execute this is not called from skin flatPlus.
+You have to call the command from the system via cron or at system start.
+For example call the command from cron.daily.
+
+The command can provide to output files: "updates" and "security_updates". The file "security_updates" is optional.
+
diff --git a/widgets/system_updatestatus/system_update_status.ubuntu b/widgets/system_updatestatus/system_update_status.ubuntu
new file mode 100755
index 0000000..0097262
--- /dev/null
+++ b/widgets/system_updatestatus/system_update_status.ubuntu
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+OUTPUTFLDR="/tmp/skinflatplus/widgets/system_updatestatus"
+mkdir -p ${OUTPUTFLDR}
+
+APTCHECK=/usr/lib/update-notifier/apt-check
+
+rm -f ${OUTPUTFLDR}/updates ${OUTPUTFLDR}/security_updates
+
+if [ ! -f ${APTCHECK} ]
+then
+ exit
+fi
+
+RET=$(${APTCHECK} 2>&1)
+
+# updates
+echo $RET | cut -d";" -f1 > ${OUTPUTFLDR}/updates
+# security updates
+echo $RET | cut -d";" -f2 > ${OUTPUTFLDR}/security_updates
diff --git a/widgets/temperatures/README b/widgets/temperatures/README
new file mode 100644
index 0000000..5f22c35
--- /dev/null
+++ b/widgets/temperatures/README
@@ -0,0 +1,10 @@
+This Widget provide information about the system temperatures.
+
+You must manually create a link to the corresponding script, for example:
+ln -s temperatures.default temperatures
+
+The command "temperatures" will be executed every time the widget is drawn, so please keep it short and fast.
+The command can provide three temperatures: cpu, pc case and gpu temperature
+The command can also be called from system information widget. So the output files must also begin with 01_ - 99_ for sort/position.
+
+Please install lm-sensors and configure it for your system. See the default script for an example.
diff --git a/widgets/temperatures/temperatures.default b/widgets/temperatures/temperatures.default
new file mode 100755
index 0000000..5d823b5
--- /dev/null
+++ b/widgets/temperatures/temperatures.default
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+# please update this script to fit your needs
+# this script is call every time the widget will be drawn, so keep it short and fast ;)
+
+OUTPUTFLDR="/tmp/skinflatplus/widgets/temperatures"
+mkdir -p ${OUTPUTFLDR}
+
+# if the script is executed from system_information script set the locale back for "°C"
+LANG=de_DE.UTF-8
+
+# there can be 4 files, cpu, gpu, pccase, motherboard
+
+rm -f ${OUTPUTFLDR}/cpu ${OUTPUTFLDR}/pccase ${OUTPUTFLDR}/gpu ${OUTPUTFLDR}/motherboard
+
+# intel core-i cpu temp
+sensors -A coretemp-isa-0000 | grep "Core 0" | awk '{print $3}' | tr -d "+" > ${OUTPUTFLDR}/cpu
+
+# pc case temp
+#sensors -A acpitz-virtual-0 | grep "temp1" | awk '{print $2}' | tr -d "+" > ${OUTPUTFLDR}/pccase
+
+# motherboard temp
+sensors -A acpitz-virtual-0 | grep "temp1" | awk '{print $2}' | tr -d "+" > ${OUTPUTFLDR}/motherboard
+
+# nvidia gpu temp
+# nvidia-settings must be run as the user of the x server
+GPU=`nvidia-settings -c :0 -t -query GPUCoreTemp | head -n 1`
+echo "${GPU}°C" > ${OUTPUTFLDR}/gpu
diff --git a/widgets/temperatures/temperatures.g2v b/widgets/temperatures/temperatures.g2v
new file mode 100755
index 0000000..cbac970
--- /dev/null
+++ b/widgets/temperatures/temperatures.g2v
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+# please update this script to fit your needs
+# this script is call every time the widget will be drawn, so keep it short and fast ;)
+
+OUTPUTFLDR="/tmp/skinflatplus/widgets/temperatures"
+mkdir -p ${OUTPUTFLDR}
+
+# if the script is executed from system_information script set the locale back for "°C"
+LANG=de_DE.UTF-8
+
+# there can be 4 files, cpu, gpu, pccase, motherboard
+
+rm -f ${OUTPUTFLDR}/cpu ${OUTPUTFLDR}/gpu ${OUTPUTFLDR}/pccase ${OUTPUTFLDR}/motherboard
+
+# intel core-i cpu temp
+#sensors -A coretemp-isa-0000 | grep "Core 0" | awk '{print $3}' | tr -d "+" > ./cpu
+
+# cpu temp
+CPUTEMP=($(sensors -A | grep "CPU Temperature"))
+CPUTEMP[2]=${CPUTEMP[2]/+} # +36.0°C -> 36.0°C
+#echo "${CPUTEMP[2]/./,}" > ${OUTPUTFLDR}/cpu # 36,0°C
+echo "${CPUTEMP[2]%.*}°C" > ${OUTPUTFLDR}/cpu # 36°C
+
+# pc case temp
+#sensors -A acpitz-virtual-0 | grep "temp1" | awk '{print $2}' | tr -d "+" > ${OUTPUTFLDR}/pccase
+
+# motherboard temp
+MBTEMP=($(sensors -A | grep "MB Temperature"))
+MBTEMP[2]=${MBTEMP[2]/+} # +36.0°C -> 36.0°C
+#echo "${MBTEMP[2]/./,}" > ${OUTPUTFLDR}/motherboard # 36,0°C
+echo "${MBTEMP[2]%.*}°C" > ${OUTPUTFLDR}/motherboard # 36°C
+
+# nvidia gpu temp
+# nvidia-settings must be run as the user of the x server
+GPU=$(nvidia-settings -c :0 -t -query GPUCoreTemp | head -n 1)
+echo "${GPU}°C" > ${OUTPUTFLDR}/gpu
diff --git a/widgets/weather/GetLatLangFromCity.php b/widgets/weather/GetLatLangFromCity.php
new file mode 100644
index 0000000..1ca7d1e
--- /dev/null
+++ b/widgets/weather/GetLatLangFromCity.php
@@ -0,0 +1,25 @@
+<?php
+
+$handle = fopen ("php://stdin","r");
+echo "Country (like DE for Germany): ";
+$country = fgets($handle);
+echo "City (like Berlin): ";
+$city = fgets($handle);
+
+// get lat & long from google maps
+$MAPSURL = "http://maps.googleapis.com/maps/api/geocode/json?address=".$city.",".$country."&sensor=false";
+$json = file_get_contents($MAPSURL);
+$data = json_decode($json, true);
+
+if( !isset($data['results'][0]) ) {
+ echo "no latitude and longitude find for: ".$city.",".$country." !\n";
+ exit;
+}
+$latitude = $data['results'][0]['geometry']['location']['lat'];
+$longitude = $data['results'][0]['geometry']['location']['lng'];
+
+echo "Latitude = ".$latitude."\n";
+echo "Longitude = ".$longitude."\n";
+echo "put these values in update_weather.config\n";
+
+?>
diff --git a/widgets/weather/README b/widgets/weather/README
new file mode 100644
index 0000000..af7f985
--- /dev/null
+++ b/widgets/weather/README
@@ -0,0 +1,13 @@
+This widget provide information about weather for a defined location.
+
+Since the command usually needs long time to execute this is not called from skin flatPlus.
+You have to call the command from the system via cron or at system start.
+For example call the command from cron.daily.
+
+You need php5 with command line support for this widget. For example in Ubuntu you need the package "php5-cli".
+
+Please move update_weather.config to update_weather.config.sample
+
+mv update_weather.config.sample update_weather.config
+
+Configure your location and others in update_weather.config. Use php-script "GetLatLangFromCity.php" to get latitude & longitude from your location.
diff --git a/widgets/weather/lib/forecast.io.php b/widgets/weather/lib/forecast.io.php
new file mode 100644
index 0000000..a3fdd0b
--- /dev/null
+++ b/widgets/weather/lib/forecast.io.php
@@ -0,0 +1,431 @@
+<?php
+/**
+ * Helper Class for forecast.io webservice
+ */
+
+class ForecastIO{
+
+ private $api_key;
+ const API_ENDPOINT = 'https://api.forecast.io/forecast/';
+
+ /**
+ * Create a new instance
+ *
+ * @param String $api_key
+ */
+ function __construct($api_key) {
+
+ $this->api_key = $api_key;
+
+ }
+
+
+ private function requestData($latitude, $longitude, $units, $language = 'en', $timestamp = false, $exclusions = false) {
+
+ $validUnits = array('auto', 'us', 'si', 'ca', 'uk');
+
+ if (in_array($units, $validUnits)) {
+
+ $request_url = self::API_ENDPOINT .
+ $this->api_key . '/' .
+ $latitude . ',' . $longitude .
+ '?units=' . $units . '&lang=' . $language .
+ ( $timestamp ? ',' . $timestamp : '' ) .
+ ( $exclusions ? '&exclude=' . $exclusions : '' );
+
+ /**
+ * Use Buffer to cache API-requests if initialized
+ * (if not, just get the latest data)
+ *
+ * More info: http://git.io/FoO2Qw
+ */
+
+ if(class_exists('Buffer')) {
+ $cache = new Buffer();
+ $content = $cache->data($request_url);
+ } else {
+ $content = file_get_contents($request_url);
+ }
+
+ } else {
+
+ return false;
+
+ }
+
+ if (!empty($content)) {
+
+ return json_decode($content);
+
+ } else {
+
+ return false;
+
+ }
+
+
+ }
+
+ /**
+ * Will return the current conditions
+ *
+ * @param float $latitude
+ * @param float $longitude
+ * @return \ForecastIOConditions|boolean
+ */
+ function getCurrentConditions($latitude, $longitude, $units = 'auto', $language) {
+
+ $data = $this->requestData($latitude, $longitude, $units, $language);
+
+ if ($data !== false) {
+
+ return new ForecastIOConditions($data->currently);
+
+ } else {
+
+ return false;
+
+ }
+
+ }
+
+ /**
+ * Will return historical conditions for day of given timestamp
+ *
+ * @param float $latitude
+ * @param float $longitude
+ * @param int $timestamp
+ * @return \ForecastIOConditions|boolean
+ */
+ function getHistoricalConditions($latitude, $longitude, $units = 'auto', $language, $timestamp) {
+
+ $exclusions = 'currently,minutely,hourly,alerts,flags';
+
+ $data = $this->requestData($latitude, $longitude, $units, $language, $timestamp, $exclusions);
+
+ if ($data !== false) {
+
+ return new ForecastIOConditions($data->daily->data[0]);
+
+ } else {
+
+ return false;
+
+ }
+
+ }
+
+ /**
+ * Will return conditions on hourly basis for today
+ *
+ * @param type $latitude
+ * @param type $longitude
+ * @return \ForecastIOConditions|boolean
+ */
+ function getForecastToday($latitude, $longitude, $units = 'auto', $language) {
+
+ $data = $this->requestData($latitude, $longitude, $units, $language);
+
+ if ($data !== false) {
+
+ $conditions = array();
+
+ $today = date('Y-m-d');
+
+ foreach ($data->hourly->data as $raw_data) {
+
+ if (date('Y-m-d', $raw_data->time) == $today) {
+
+ $conditions[] = new ForecastIOConditions($raw_data);
+
+ }
+
+ }
+
+ return $conditions;
+
+ } else {
+
+ return false;
+
+ }
+
+ }
+
+
+ /**
+ * Will return daily conditions for next seven days
+ *
+ * @param float $latitude
+ * @param float $longitude
+ * @return \ForecastIOConditions|boolean
+ */
+ function getForecastWeek($latitude, $longitude, $units = 'auto', $language) {
+
+ $data = $this->requestData($latitude, $longitude, $units, $language);
+
+ if ($data !== false) {
+
+ $conditions = array();
+
+ foreach ($data->daily->data as $raw_data) {
+
+ $conditions[] = new ForecastIOConditions($raw_data);
+
+ }
+
+ return $conditions;
+
+ } else {
+
+ return false;
+
+ }
+
+ }
+
+
+}
+
+
+/**
+ * Wrapper for get data by getters
+ */
+class ForecastIOConditions{
+
+ private $raw_data;
+
+ function __construct($raw_data) {
+
+ $this->raw_data = $raw_data;
+
+ }
+
+ /**
+ * Will return the temperature
+ *
+ * @return String
+ */
+ function getTemperature() {
+
+ return $this->raw_data->temperature;
+
+ }
+
+ /**
+ * get the min temperature
+ *
+ * only available for week forecast
+ *
+ * @return type
+ */
+ function getMinTemperature() {
+
+ return $this->raw_data->temperatureMin;
+
+ }
+
+ /**
+ * get max temperature
+ *
+ * only available for week forecast
+ *
+ * @return type
+ */
+ function getMaxTemperature() {
+
+ return $this->raw_data->temperatureMax;
+
+ }
+
+ /**
+ * get apparent temperature (heat index/wind chill)
+ *
+ * only available for current conditions
+ *
+ * @return type
+ */
+ function getApparentTemperature() {
+
+ return $this->raw_data->apparentTemperature;
+
+ }
+
+ /**
+ * Get the summary of the conditions
+ *
+ * @return String
+ */
+ function getSummary() {
+
+ return $this->raw_data->summary;
+
+ }
+
+ /**
+ * Get the icon of the conditions
+ *
+ * @return String
+ */
+ function getIcon() {
+
+ return $this->raw_data->icon;
+
+ }
+
+ /**
+ * Get the time, when $format not set timestamp else formatted time
+ *
+ * @param String $format
+ * @return String
+ */
+ function getTime($format = null) {
+
+ if (!isset($format)) {
+
+ return $this->raw_data->time;
+
+ } else {
+
+ return date($format, $this->raw_data->time);
+
+ }
+
+ }
+
+ /**
+ * Get the pressure
+ *
+ * @return String
+ */
+ function getPressure() {
+
+ return $this->raw_data->pressure;
+
+ }
+
+ /**
+ * Get the dew point
+ *
+ * Available in the current conditions
+ *
+ * @return String
+ */
+ function getDewPoint() {
+
+ return $this->raw_data->dewPoint;
+
+ }
+
+ /**
+ * get humidity
+ *
+ * @return String
+ */
+ function getHumidity() {
+
+ return $this->raw_data->humidity;
+
+ }
+
+ /**
+ * Get the wind speed
+ *
+ * @return String
+ */
+ function getWindSpeed() {
+
+ return $this->raw_data->windSpeed;
+
+ }
+
+ /**
+ * Get wind direction
+ *
+ * @return type
+ */
+ function getWindBearing() {
+
+ return $this->raw_data->windBearing;
+
+ }
+
+ /**
+ * get precipitation type
+ *
+ * @return type
+ */
+ function getPrecipitationType() {
+
+ return $this->raw_data->precipType;
+
+ }
+
+ /**
+ * get the probability 0..1 of precipitation type
+ *
+ * @return type
+ */
+ function getPrecipitationProbability() {
+
+ return $this->raw_data->precipProbability;
+
+ }
+
+ /**
+ * Get the cloud cover
+ *
+ * @return type
+ */
+ function getCloudCover() {
+
+ return $this->raw_data->cloudCover;
+
+ }
+
+
+
+ /**
+ * get sunrise time
+ *
+ * only available for week forecast
+ *
+ * @return type
+ */
+ function getSunrise($format=null) {
+
+ if (!isset($format)) {
+
+ return $this->raw_data->sunriseTime;
+
+ } else {
+
+ return date($format, $this->raw_data->sunriseTime);
+
+ }
+
+ }
+
+ /**
+ * get sunset time
+ *
+ * only available for week forecast
+ *
+ * @return type
+ */
+ function getSunset($format=null) {
+
+ if (!isset($format)) {
+
+ return $this->raw_data->sunsetTime;
+
+ } else {
+
+ return date($format, $this->raw_data->sunsetTime);
+
+ }
+
+ }
+
+}
+?>
diff --git a/widgets/weather/update_weather.config.sample b/widgets/weather/update_weather.config.sample
new file mode 100644
index 0000000..f913d89
--- /dev/null
+++ b/widgets/weather/update_weather.config.sample
@@ -0,0 +1,23 @@
+[main]
+
+; use GetLatLangFromCity.php to get latitude/langitude
+Latitude = 52.5200066
+Longitude = 13.404954
+
+; location shown in Skin
+LocationSkin = "Berlin"
+
+; Can be set to 'us', 'si', 'ca', 'uk' or 'auto' (see forecast.io API); default is auto
+Units = "si"
+DegreeSign = "°C"
+
+; Can be set to 'en', 'de', 'pl', 'es', 'fr', 'it', 'tet' or 'x-pig-latin' (see forecast.io API); default is 'en'
+Lang = "de"
+
+; convert . to , for german format
+ConvertPoint2Comma = 1
+
+; We have only 1000 api calls per day, so please only do one update per day!
+; Or request an own key for free at forecast.io
+ApiKey = "137f2d85a1f1db5762e5e073103541d2"
+
diff --git a/widgets/weather/update_weather.php b/widgets/weather/update_weather.php
new file mode 100644
index 0000000..a229490
--- /dev/null
+++ b/widgets/weather/update_weather.php
@@ -0,0 +1,110 @@
+<?php
+
+$ini_array = parse_ini_file("./update_weather.config");
+
+$latitude = $ini_array['Latitude'];
+$longitude = $ini_array['Longitude'];
+$locationSkin = $ini_array['LocationSkin'];
+$units = $ini_array['Units'];
+$degree_sign = $ini_array['DegreeSign'];
+$lang = $ini_array['Lang'];
+$convertPoint = $ini_array['ConvertPoint2Comma'];
+$api_key = $ini_array['ApiKey'];
+
+$OUTPUTFLDRTEMP = "/tmp/skinflatplus/widgets/weather";
+if( !file_exists($OUTPUTFLDRTEMP) )
+ mkdir($OUTPUTFLDRTEMP, 0775, true);
+
+include('lib/forecast.io.php');
+
+// delete old files
+array_map('unlink', glob($OUTPUTFLDRTEMP."/weather.*"));
+
+// forecast query
+$forecast = new ForecastIO($api_key);
+
+$condition = $forecast->getCurrentConditions($latitude, $longitude, $units, $lang);
+if( !$handle = fopen($OUTPUTFLDRTEMP."/weather.0.temp", "w") ) {
+ print "can't create file!\n";
+ continue;
+}
+$temp = round($condition->getTemperature(), 1);
+if( $convertPoint == 1 )
+ $temp = str_replace(".", ",", $temp);
+fwrite($handle, $temp);
+fwrite($handle, $degree_sign);
+fclose($handle);
+
+
+// get daily conditions for next 7 days
+$conditions_week = $forecast->getForecastWeek($latitude, $longitude, $units, $lang);
+
+if( !$handle = fopen($OUTPUTFLDRTEMP."/weather.location", "w") ) {
+ print "can't create file!\n";
+} else {
+ fwrite($handle, $locationSkin);
+ fclose($handle);
+}
+
+
+$index = -1;
+foreach($conditions_week as $conditions) {
+ $index++;
+
+ if( !$handle = fopen($OUTPUTFLDRTEMP."/weather.".$index.".summary", "w") ) {
+ print "can't create file!\n";
+ continue;
+ }
+ fwrite($handle, $conditions->getSummary());
+ fclose($handle);
+
+ if( !$handle = fopen($OUTPUTFLDRTEMP."/weather.".$index.".tempMin", "w") ) {
+ print "can't create file!\n";
+ continue;
+ }
+ // we only have min & max so we must calc
+ $temp = round($conditions->getMinTemperature(), 1);
+ if( $convertPoint == 1 )
+ $temp = str_replace(".", ",", $temp);
+ fwrite($handle, $temp);
+ fwrite($handle, $degree_sign);
+ fclose($handle);
+
+ if( !$handle = fopen($OUTPUTFLDRTEMP."/weather.".$index.".tempMax", "w") ) {
+ print "can't create file!\n";
+ continue;
+ }
+ // we only have min & max so we must calc
+ $temp = round($conditions->getMaxTemperature(), 1);
+ if( $convertPoint == 1 )
+ $temp = str_replace(".", ",", $temp);
+ fwrite($handle, $temp);
+ fwrite($handle, $degree_sign);
+ fclose($handle);
+
+
+ if( !$handle = fopen($OUTPUTFLDRTEMP."/weather.".$index.".precipitation", "w") ) {
+ print "can't create file!\n";
+ continue;
+ }
+ fwrite($handle, $conditions->getPrecipitationProbability());
+ fclose($handle);
+
+ if( !$handle = fopen($OUTPUTFLDRTEMP."/weather.".$index.".precipitationType", "w") ) {
+ print "can't create file!\n";
+ continue;
+ }
+ if( $conditions->getPrecipitationProbability() > 0 )
+ fwrite($handle, $conditions->getPrecipitationType());
+ else
+ fwrite($handle, "none");
+ fclose($handle);
+
+ if( !$handle = fopen($OUTPUTFLDRTEMP."/weather.".$index.".icon", "w") ) {
+ print "can't create file!\n";
+ continue;
+ }
+ fwrite($handle, $conditions->getIcon());
+ fclose($handle);
+}
+?>
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-vdr-dvb/vdr-plugin-skinflatplus.git
More information about the pkg-vdr-dvb-changes
mailing list