File indexing completed on 2024-04-14 03:55:33
0001 /* 0002 SPDX-FileCopyrightText: 2011-2018 Dominik Haumann <dhaumann@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #ifndef VARIABLE_ITEM_H 0008 #define VARIABLE_ITEM_H 0009 0010 #include <QColor> 0011 #include <QFont> 0012 #include <QString> 0013 #include <QStringList> 0014 0015 class VariableEditor; 0016 0017 // BEGIN class VariableItem 0018 class VariableItem 0019 { 0020 public: 0021 explicit VariableItem(const QString &variable); 0022 virtual ~VariableItem() = default; 0023 0024 QString variable() const; 0025 QString helpText() const; 0026 void setHelpText(const QString &text); 0027 0028 bool isActive() const; 0029 void setActive(bool active); 0030 0031 virtual void setValueByString(const QString &value) = 0; 0032 virtual QString valueAsString() const = 0; 0033 0034 virtual VariableEditor *createEditor(QWidget *parent) = 0; 0035 0036 private: 0037 // not implemented: copy constructor and operator= 0038 VariableItem(const VariableItem ©); 0039 VariableItem &operator=(const VariableItem &other); 0040 0041 QString m_variable; 0042 QString m_helpText; 0043 bool m_active; 0044 }; 0045 // END class VariableItem 0046 0047 // 0048 // DERIVE A CLASS FOR EACH TYPE 0049 // 0050 0051 // BEGIN class VariableIntItem 0052 class VariableIntItem : public VariableItem 0053 { 0054 public: 0055 explicit VariableIntItem(const QString &variable, int value); 0056 0057 int value() const; 0058 void setValue(int newValue); 0059 void setRange(int minValue, int maxValue); 0060 int minValue() const; 0061 int maxValue() const; 0062 0063 public: 0064 void setValueByString(const QString &value) override; 0065 QString valueAsString() const override; 0066 VariableEditor *createEditor(QWidget *parent) override; 0067 0068 private: 0069 int m_value; 0070 int m_minValue; 0071 int m_maxValue; 0072 }; 0073 // END class VariableIntItem 0074 0075 // BEGIN class VariableStringListItem 0076 class VariableStringListItem : public VariableItem 0077 { 0078 public: 0079 explicit VariableStringListItem(const QString &variable, const QStringList &slist, const QString &value); 0080 0081 QStringList stringList() const; 0082 0083 QString value() const; 0084 void setValue(const QString &newValue); 0085 0086 public: 0087 void setValueByString(const QString &value) override; 0088 QString valueAsString() const override; 0089 VariableEditor *createEditor(QWidget *parent) override; 0090 0091 private: 0092 QStringList m_list; 0093 QString m_value; 0094 }; 0095 // END class VariableStringListItem 0096 0097 // BEGIN class VariableBoolItem 0098 class VariableBoolItem : public VariableItem 0099 { 0100 public: 0101 explicit VariableBoolItem(const QString &variable, bool value); 0102 0103 bool value() const; 0104 void setValue(bool enabled); 0105 0106 public: 0107 void setValueByString(const QString &value) override; 0108 QString valueAsString() const override; 0109 VariableEditor *createEditor(QWidget *parent) override; 0110 0111 private: 0112 bool m_value; 0113 }; 0114 // END class VariableBoolItem 0115 0116 // BEGIN class VariableColorItem 0117 class VariableColorItem : public VariableItem 0118 { 0119 public: 0120 explicit VariableColorItem(const QString &variable, const QColor &value); 0121 0122 QColor value() const; 0123 void setValue(const QColor &color); 0124 0125 public: 0126 void setValueByString(const QString &value) override; 0127 QString valueAsString() const override; 0128 VariableEditor *createEditor(QWidget *parent) override; 0129 0130 private: 0131 QColor m_value; 0132 }; 0133 // END class VariableColorItem 0134 0135 // BEGIN class VariableFontItem 0136 class VariableFontItem : public VariableItem 0137 { 0138 public: 0139 explicit VariableFontItem(const QString &variable, const QFont &value); 0140 0141 QFont value() const; 0142 void setValue(const QFont &value); 0143 0144 public: 0145 void setValueByString(const QString &value) override; 0146 QString valueAsString() const override; 0147 VariableEditor *createEditor(QWidget *parent) override; 0148 0149 private: 0150 QFont m_value; 0151 }; 0152 // END class VariableFontItem 0153 0154 // BEGIN class VariableStringItem 0155 class VariableStringItem : public VariableItem 0156 { 0157 public: 0158 explicit VariableStringItem(const QString &variable, const QString &value); 0159 0160 QString value() const; 0161 void setValue(const QString &value); 0162 0163 public: 0164 void setValueByString(const QString &value) override; // Same as setValue() in this case, implemented for uniformity 0165 QString valueAsString() const override; // Same as value() in this case, implemented for uniformity 0166 VariableEditor *createEditor(QWidget *parent) override; 0167 0168 private: 0169 QString m_value; 0170 }; 0171 0172 // END class VariableStringItem 0173 0174 // BEGIN class VariableSpellCheckItem 0175 class VariableSpellCheckItem : public VariableItem 0176 { 0177 public: 0178 explicit VariableSpellCheckItem(const QString &variable, const QString &value); 0179 0180 QString value() const; 0181 void setValue(const QString &value); 0182 0183 public: 0184 void setValueByString(const QString &value) override; // Same as setValue() in this case, implemented for uniformity 0185 QString valueAsString() const override; // Same as value() in this case, implemented for uniformity 0186 VariableEditor *createEditor(QWidget *parent) override; 0187 0188 private: 0189 QString m_value; 0190 }; 0191 // END class VariableSpellCheckItem 0192 0193 // BEGIN class VariableRemoveSpacesItem 0194 class VariableRemoveSpacesItem : public VariableItem 0195 { 0196 public: 0197 explicit VariableRemoveSpacesItem(const QString &variable, int value); 0198 0199 int value() const; 0200 void setValue(int value); 0201 0202 public: 0203 void setValueByString(const QString &value) override; // Same as setValue() in this case, implemented for uniformity 0204 QString valueAsString() const override; // Same as value() in this case, implemented for uniformity 0205 VariableEditor *createEditor(QWidget *parent) override; 0206 0207 private: 0208 int m_value; 0209 }; 0210 // END class VariableRemoveSpacesItem 0211 0212 #endif