aboutsummaryrefslogtreecommitdiff
path: root/visualization/renderer/qmpsettingsro.hpp
blob: 1a3927b51ea6ab8d8a9ccb54e2d3dc0fecb87c53 (plain) (blame)
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
#ifndef QMPSETTINGSRO_H
#define QMPSETTINGSRO_H

#include <map>
#include <string>
#include <vector>

#include <QVariant>
#include <QPointer>

struct qmpOptionR
{
    enum ParameterType
    {
        parameter_int = 0,
        parameter_uint,
        parameter_bool,
        parameter_double,
        parameter_str,
        parameter_enum,
        parameter_url,
        parameter_custom = 0x100
    };

    std::string desc;
    ParameterType type;
    QVariant defaultval, minv, maxv;
    std::vector<std::string> enumlist;

    qmpOptionR() {}
    qmpOptionR(
        std::string _desc,
        ParameterType _t, QVariant _def = QVariant(),
        QVariant _min = QVariant(), QVariant _max = QVariant()):
        desc(_desc),
        type(_t),
        defaultval(_def),
        minv(_min),
        maxv(_max) {}
};

class qmpSettingsRO
{
public:
    qmpSettingsRO();
    void registerOptionInt(std::string tab, std::string desc, std::string key, int min, int max, int defaultval);
    int getOptionInt(std::string key);
    void setOptionInt(std::string key, int val);
    void registerOptionUint(std::string tab, std::string desc, std::string key, unsigned min, unsigned max, unsigned defaultval);
    unsigned getOptionUint(std::string key);
    void setOptionUint(std::string key, unsigned val);
    void registerOptionBool(std::string tab, std::string desc, std::string key, bool defaultval);
    bool getOptionBool(std::string key);
    void setOptionBool(std::string key, bool val);
    void registerOptionDouble(std::string tab, std::string desc, std::string key, double min, double max, double defaultval);
    double getOptionDouble(std::string key);
    void setOptionDouble(std::string key, double val);
    void registerOptionString(std::string tab, std::string desc, std::string key, std::string defaultval, bool is_url);
    std::string getOptionString(std::string key);
    void setOptionString(std::string key, std::string val);
    void registerOptionEnumInt(std::string tab, std::string desc, std::string key, std::vector<std::string> enumlist, int defaultval);
    int getOptionEnumInt(std::string key);
    std::string getOptionEnumIntOptName(std::string key);
    void setOptionEnumInt(std::string key, int val);
    void setOptionEnumIntOptName(std::string key, std::string valname);

    void load(const char *path);
    void setopt(std::string key, std::string val);
    void listopt();
private:
    std::map<std::string, qmpOptionR> options;
    std::vector<std::string> optionlist;
    QVariantMap settings;
};

#endif