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 &copy);
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