File indexing completed on 2024-06-30 05:51:24

0001 /*
0002     This file is part of the Okteta Kasten Framework, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2009, 2010, 2011, 2012 Alex Richardson <alex.richardson@gmx.de>
0005 
0006     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007 */
0008 
0009 #ifndef KASTEN_ENUMDATAINFORMATION_HPP
0010 #define KASTEN_ENUMDATAINFORMATION_HPP
0011 
0012 #include "primitivedatainformation.hpp"
0013 #include "enumdefinition.hpp"
0014 
0015 class EnumDataInformation : public PrimitiveDataInformationWrapper
0016 {
0017     DATAINFORMATION_CLONE(EnumDataInformation, PrimitiveDataInformationWrapper), mEnum(d.mEnum) {}
0018 
0019 public:
0020     /** this object takes ownership of @p type */
0021     EnumDataInformation(const QString& name, PrimitiveDataInformation* type,
0022                         const EnumDefinition::Ptr& enumDef, DataInformation* parent = nullptr);
0023     ~EnumDataInformation() override;
0024 
0025     QWidget* createEditWidget(QWidget* parent) const override;
0026     QVariant dataFromWidget(const QWidget* w) const override;
0027     void setWidgetData(QWidget* w) const override;
0028 
0029     bool isEnum() const override;
0030 
0031     EnumDefinition::Ptr enumValues() const;
0032     void setEnumValues(const QMap<AllPrimitiveTypes, QString>& newValues);
0033 
0034 private:
0035     QScriptClass* scriptClass(ScriptHandlerInfo* handlerInfo) const override;
0036     QString valueStringImpl() const override;
0037     QString typeNameImpl() const override;
0038 
0039 protected:
0040     EnumDefinition::Ptr mEnum;
0041 };
0042 
0043 inline EnumDefinition::Ptr EnumDataInformation::enumValues() const
0044 {
0045     return mEnum;
0046 }
0047 
0048 inline void EnumDataInformation::setEnumValues(const QMap<AllPrimitiveTypes, QString>& newValues)
0049 {
0050     mEnum->setValues(newValues);
0051 }
0052 #endif /* KASTEN_ENUMDATAINFORMATION_HPP */