aboutsummaryrefslogtreecommitdiff
path: root/include/Config.hpp
blob: e0756cf0ee7f8f7ac1c2799a2b346f60841f9a31 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#pragma once

#include <string>
#include <vector>

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 = false;
    };

    struct MatrixConfig {
        std::vector<std::string> known_homeservers;
        std::string gpg_user_id;
        int room_name_font_size = 18;
        int room_description_font_size = 12;
    };

    struct PeertubeConfig {
        std::vector<std::string> 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();
}