#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 AnimationConfig { float move_speed = 30.0f; float loading_icon_speed = 400.0; }; 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 YoutubeSponsorblock { bool enable = false; std::string api_endpoint = "https://sponsor.ajay.app"; int min_votes = 0; }; struct YoutubeConfig { bool load_progress = true; std::string invidious_instance; YoutubeSponsorblock sponsorblock; }; struct MatrixConfig { std::vector known_homeservers; std::string gpg_user_id; int room_name_font_size = 18; int room_description_font_size = 12; bool send_read_receipts = true; bool send_typing_notifications = true; bool appear_online = true; bool clear_message_on_escape = true; }; 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 FontScaleConfig { float latin = 1.0f; float latin_bold = 1.0f; float latin_monospace = 1.0f; float cjk = 1.0f; float symbols = 1.0f; }; struct FontConfig { std::string latin; std::string latin_bold; std::string latin_monospace; std::string cjk; std::string symbols; FontScaleConfig scale; }; struct MangadexConfig { bool allow_hentai = false; }; struct FileManagerConfig { bool grid_view = true; }; struct Config { Config() = default; Config(const Config&) = delete; Config&operator=(const Config&) = delete; SearchConfig search; TabConfig tab; BodyConfig body; InputConfig input; AnimationConfig animation; VideoConfig video; LocalMangaConfig local_manga; LocalAnimeConfig local_anime; YoutubeConfig youtube; MatrixConfig matrix; PeertubeConfig peertube; DownloadConfig download; FontConfig font; MangadexConfig mangadex; FileManagerConfig file_manager; 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; bool low_latency_mode = false; }; const Config& get_config(); }