00001
00002
00003 #ifndef _MYTHSETTINGS_H_
00004 #define _MYTHSETTINGS_H_
00005
00006 #include <QStringList>
00007 #include <QMap>
00008
00009 class MythSettingBase
00010 {
00011 public:
00012 MythSettingBase() {}
00013 virtual ~MythSettingBase() {}
00014 virtual QString ToHTML(uint) const { return QString(); }
00015 };
00016 typedef QList<MythSettingBase*> MythSettingList;
00017
00018 class MythSettingGroup : public MythSettingBase
00019 {
00020 public:
00021 MythSettingGroup(QString hlabel, QString ulabel,
00022 QString script = "") :
00023 human_label(hlabel), unique_label(ulabel), ecma_script(script) {}
00024
00025 QString ToHTML(uint) const;
00026
00027 public:
00028 QString human_label;
00029 QString unique_label;
00030 MythSettingList settings;
00031 QString ecma_script;
00032 };
00033
00034 class MythSetting : public MythSettingBase
00035 {
00036 public:
00037 typedef enum {
00038 kFile,
00039 kHost,
00040 kGlobal,
00041 kInvalidSettingType,
00042 } SettingType;
00043
00044 typedef enum {
00045 kInteger,
00046 kUnsignedInteger,
00047 kIntegerRange,
00048 kCheckBox,
00049 kSelect,
00050 kComboBox,
00051 kTVFormat,
00052 kFrequencyTable,
00053 kFloat,
00054 kIPAddress,
00055 kLocalIPAddress,
00056 kString,
00057 kTimeOfDay,
00058 kOther,
00059 kInvalidDataType,
00060 } DataType;
00061
00062 MythSetting(QString _value, QString _default_data, SettingType _stype,
00063 QString _label, QString _help_text, DataType _dtype) :
00064 value(_value), data(_default_data), default_data(_default_data),
00065 stype(_stype), label(_label), help_text(_help_text), dtype(_dtype),
00066 range_min(-1), range_max(-1)
00067 {
00068 }
00069
00070 MythSetting(QString _value, QString _default_data, SettingType _stype,
00071 QString _label, QString _help_text, DataType _dtype,
00072 QStringList _data_list, QStringList _display_list) :
00073 value(_value), data(_default_data), default_data(_default_data),
00074 stype(_stype), label(_label), help_text(_help_text), dtype(_dtype),
00075 data_list(_data_list), display_list(_display_list),
00076 range_min(-1), range_max(-1)
00077 {
00078 }
00079
00080 MythSetting(QString _value, QString _default_data, SettingType _stype,
00081 QString _label, QString _help_text, DataType _dtype,
00082 long long _range_min, long long _range_max) :
00083 value(_value), data(_default_data), default_data(_default_data),
00084 stype(_stype), label(_label), help_text(_help_text), dtype(_dtype),
00085 range_min(_range_min), range_max(_range_max)
00086 {
00087 }
00088
00089 MythSetting(QString _value, QString _default_data, SettingType _stype,
00090 QString _label, QString _help_text, DataType _dtype,
00091 QStringList _data_list, QStringList _display_list,
00092 long long _range_min, long long _range_max,
00093 QString _placeholder) :
00094 value(_value), data(_default_data), default_data(_default_data),
00095 stype(_stype), label(_label), help_text(_help_text), dtype(_dtype),
00096 data_list(_data_list), display_list(_display_list),
00097 range_min(_range_min), range_max(_range_max),
00098 placeholder_text(_placeholder)
00099 {
00100 }
00101
00102 QString ToHTML(uint) const;
00103
00104 public:
00105 QString value;
00106 QString data;
00107 QString default_data;
00108 SettingType stype;
00109 QString label;
00110 QString help_text;
00111 DataType dtype;
00112 QStringList data_list;
00113 QStringList display_list;
00114 long long range_min;
00115 long long range_max;
00116 QString placeholder_text;
00117 };
00118
00119 bool parse_settings(MythSettingList &settings, const QString &filename,
00120 const QString &group = "");
00121 bool load_settings(MythSettingList &settings, const QString &hostname);
00122 bool check_settings(MythSettingList &database_settings,
00123 const QMap<QString,QString> ¶ms, QString &result);
00124
00125 QStringList GetSettingValueList(const QString &type);
00126 QString StringMapToJSON(const QMap<QString,QString> &map);
00127 QString StringListToJSON(const QString &key, const QStringList &sList);
00128 QMap<QString,QString> GetSettingsMap(MythSettingList &settings, const QString &hostname);
00129
00130 #endif