1 // Copyright 2014 Citra Emulator Project
2 // Licensed under GPLv2 or any later version
3 // Refer to the license.txt file included.
4 
5 #pragma once
6 
7 #include <array>
8 #include <memory>
9 #include <string>
10 #include <QVariant>
11 #include "core/settings.h"
12 
13 class QSettings;
14 
15 class Config {
16 public:
17     Config();
18     ~Config();
19 
20     void Reload();
21     void Save();
22 
23     static const std::array<int, Settings::NativeButton::NumButtons> default_buttons;
24     static const std::array<std::array<int, 5>, Settings::NativeAnalog::NumAnalogs> default_analogs;
25 
26 private:
27     void ReadValues();
28     void ReadAudioValues();
29     void ReadCameraValues();
30     void ReadControlValues();
31     void ReadCoreValues();
32     void ReadDataStorageValues();
33     void ReadDebuggingValues();
34     void ReadLayoutValues();
35     void ReadMiscellaneousValues();
36     void ReadMultiplayerValues();
37     void ReadPathValues();
38     void ReadRendererValues();
39     void ReadShortcutValues();
40     void ReadSystemValues();
41     void ReadUIValues();
42     void ReadUIGameListValues();
43     void ReadUILayoutValues();
44     void ReadUpdaterValues();
45     void ReadUtilityValues();
46     void ReadWebServiceValues();
47     void ReadVideoDumpingValues();
48 
49     void SaveValues();
50     void SaveAudioValues();
51     void SaveCameraValues();
52     void SaveControlValues();
53     void SaveCoreValues();
54     void SaveDataStorageValues();
55     void SaveDebuggingValues();
56     void SaveLayoutValues();
57     void SaveMiscellaneousValues();
58     void SaveMultiplayerValues();
59     void SavePathValues();
60     void SaveRendererValues();
61     void SaveShortcutValues();
62     void SaveSystemValues();
63     void SaveUIValues();
64     void SaveUIGameListValues();
65     void SaveUILayoutValues();
66     void SaveUpdaterValues();
67     void SaveUtilityValues();
68     void SaveWebServiceValues();
69     void SaveVideoDumpingValues();
70 
71     QVariant ReadSetting(const QString& name) const;
72     QVariant ReadSetting(const QString& name, const QVariant& default_value) const;
73     void WriteSetting(const QString& name, const QVariant& value);
74     void WriteSetting(const QString& name, const QVariant& value, const QVariant& default_value);
75 
76     std::unique_ptr<QSettings> qt_config;
77     std::string qt_config_loc;
78 };
79