#pragma once #include #include namespace QuickMedia { struct SearchConfig { int font_size = 16; }; struct TabConfig { int font_size = 16; }; struct BodyConfig { int title_font_size = 16; int author_font_size = 14; int description_font_size = 14; int timestamp_font_size = 10; int reaction_font_size = 14; int progress_font_size = 14; int replies_font_size = 14; int embedded_load_font_size = 14; int loading_text_font_size = 30; }; struct InputConfig { int font_size = 16; }; struct VideoConfig { int max_height = 0; }; struct LocalMangaConfig { std::string directory; bool sort_by_name = false; bool sort_chapters_by_name = false; }; struct LocalAnimeConfig { std::string directory; bool sort_by_name = false; bool auto_group_episodes = true; }; struct YoutubeConfig { bool load_progress = true; }; struct MatrixConfig { std::vector known_homeservers; std::string gpg_user_id; int room_name_font_size = 18; int room_description_font_size = 12; }; struct PeertubeConfig { std::vector known_instances; }; struct DownloadConfig { std::string video_directory; std::string image_directory; std::string music_directory; std::string file_directory; }; struct FontConfig { std::string latin; std::string latin_bold; std::string latin_monospace; std::string cjk; std::string symbols; }; struct MangadexConfig { bool allow_hentai = false; }; struct Config { Config() = default; Config(const Config&) = delete; Config&operator=(const Config&) = delete; SearchConfig search; TabConfig tab; BodyConfig body; InputConfig input; VideoConfig video; LocalMangaConfig local_manga; LocalAnimeConfig local_anime; YoutubeConfig youtube; MatrixConfig matrix; PeertubeConfig peertube; DownloadConfig download; FontConfig font; MangadexConfig mangadex; bool use_system_fonts = false; bool use_system_mpv_config = false; bool enable_shaders = true; std::string theme = "default"; float scale = 1.0f; float font_scale = 1.0f; float spacing_scale = 1.0f; }; const Config& get_config(); }