#ifndef THEMES_HPP
#define THEMES_HPP

#include <string>

class Themes
{
private:

  Themes();

  static Themes* instance;

  std::string resolution_dependant_background(const std::string& bg);

  bool resolution_dependant_background_needed;
    
public:

  // theme def

  bool show_header;

  int general_rectangle_color1;
  int general_rectangle_color2;
  int general_rectangle_color3;
  int general_rectangle_color4;
  int general_marked_picture_color1;
  int general_marked_picture_color2;
  int general_marked_picture_color3;
  int general_marked_picture_color4;
  std::string general_search;
  int general_search_rectangle_color1;
  int general_search_rectangle_color2;
  int general_search_rectangle_color3;
  int general_search_rectangle_color4;

  int startmenu_font1;
  int startmenu_font2;
  int startmenu_font3;
  std::string startmenu_background;

  std::string startmenu_music_dir;
  std::string startmenu_music_cd;
  std::string startmenu_radio;
  std::string startmenu_movie_dir;
  std::string startmenu_movie_cd;
  std::string startmenu_pictures_dir;
  std::string startmenu_pictures_cd;
  std::string startmenu_game_dir;
  std::string startmenu_game_cd;
  std::string startmenu_epg;
  std::string startmenu_tv;
  std::string startmenu_open_close;
  std::string startmenu_options;
  std::string startmenu_themes;
  std::string startmenu_quit;

  int audio_playback_font1;
  int audio_playback_font2;
  int audio_playback_font3;

  int audio_font1;
  int audio_font2;
  int audio_font3;
  int audio_marked_font1;
  int audio_marked_font2;
  int audio_marked_font3;
  int audio_header_font1;
  int audio_header_font2;
  int audio_header_font3;
  std::string audio_background;
  std::string audio_dir;
  std::string audio_dir_marked;
  std::string audio_marked_left;
  std::string audio_marked;
  std::string audio_marked_right;
  std::string audio_marked_small_left;
  std::string audio_marked_small;
  std::string audio_marked_small_right;
  std::string audio_playlist_icon;
  std::string audio_playback_pause;
  std::string audio_playback_play;
  std::string audio_mute;
  std::string audio_repeat;
  std::string audio_shutdown;
  std::string audio_volume;
  std::string audio_volume_bar;
  std::string audio_file;
  std::string audio_random;
  std::string audio_randomi;
  std::string audio_randomw;

  int movie_font1;
  int movie_font2;
  int movie_font3;
  int movie_marked_font1;
  int movie_marked_font2;
  int movie_marked_font3;
  int movie_header_font1;
  int movie_header_font2;
  int movie_header_font3;
  std::string movie_background;
  std::string movie_dir;
  std::string movie_dir_marked;
  std::string movie_marked;
  std::string movie_marked_left;
  std::string movie_marked_right;
  std::string movie_mcover;
  std::string movie_mcover_small;
  std::string movie_rating_icon;
  std::string movie_rating_icon_half;

  int pictures_font1;
  int pictures_font2;
  int pictures_font3;
  int pictures_marked_font1;
  int pictures_marked_font2;
  int pictures_marked_font3;
  int pictures_header_font1;
  int pictures_header_font2;
  int pictures_header_font3;
  std::string pictures_background;
  std::string pictures_dir;
  std::string pictures_dir_marked;
  
  int game_font1;
  int game_font2;
  int game_font3;
  int game_marked_font1;
  int game_marked_font2;
  int game_marked_font3;
  int game_header_font1;
  int game_header_font2;
  int game_header_font3;
  std::string game_background;
  std::string game_dir;
  std::string game_dir_marked;
  std::string game_marked;
  std::string game_marked_left;
  std::string game_marked_right;
  std::string game_mcover;
  std::string game_rating_icon;
  std::string game_rating_icon_half;
  
  int epg_font1;
  int epg_font2;
  int epg_font3;
  int epg_header_font1;
  int epg_header_font2;
  int epg_header_font3;
  int epg_time_bar1;
  int epg_time_bar2;
  int epg_time_bar3;
  int epg_time_bar4;
  int epg_bar1;
  int epg_bar2;
  int epg_bar3;
  int epg_bar4;
  int epg_marked1;
  int epg_marked2;
  int epg_marked3;
  int epg_marked4;
  int epg_marked_font1;
  int epg_marked_font2;
  int epg_marked_font3;
  int epg_boxes1;
  int epg_boxes2;
  int epg_boxes3;
  int epg_boxes4;
  int epg_boxes_font1;
  int epg_boxes_font2;
  int epg_boxes_font3;
  std::string epg_background;

  int dialog_font1;
  int dialog_font2;
  int dialog_font3;
  int dialog_background1;
  int dialog_background2;
  int dialog_background3;
  int dialog_background4;
  int dialog_marked1;
  int dialog_marked2;
  int dialog_marked3;
  int dialog_marked4;

  int options_font1;
  int options_font2;
  int options_font3;
  int options_header_font1;
  int options_header_font2;
  int options_header_font3;
  std::string options_background;
  std::string options_marked;
  std::string options_marked_left;
  std::string options_marked_right;

  int themes_font1;
  int themes_font2;
  int themes_font3;
  int themes_marked_font1;
  int themes_marked_font2;
  int themes_marked_font3;
  int themes_header_font1;
  int themes_header_font2;
  int themes_header_font3;
  std::string themes_background;
  std::string themes_marked;
  std::string themes_marked_left;
  std::string themes_marked_right;

  std::string progressbar_bar;

  bool parser(const std::string& cur_theme, bool startup);

  // singleton
  static Themes* get_instance();
};

#endif
