insilmaril@795: #ifndef ATTRIBUTEITEM_H insilmaril@795: #define ATTRIBUTEITEM_H insilmaril@795: insilmaril@795: #include insilmaril@795: #include insilmaril@795: insilmaril@822: #include "branchitem.h" insilmaril@795: insilmaril@795: /*! \brief A key and a value insilmaril@795: The data itself is stored in Attribute Definitions (AttributeDef). insilmaril@795: A list of these tables AttributeTable is maintained for every MapEditor. insilmaril@795: */ insilmaril@822: class AttributeItem:public BranchItem { insilmaril@823: public: insilmaril@795: enum Type { insilmaril@795: Undefined, //!< Undefined type insilmaril@795: IntList, //!< Free integer insilmaril@795: FreeInt, //!< Free integer insilmaril@795: StringList, //!< List of strings, one can be attribute value insilmaril@795: FreeString, //!< Any string can be attribute value, not unique insilmaril@795: UniqueString//!< UniqueString, e.g. for IDs insilmaril@795: }; insilmaril@795: insilmaril@795: AttributeItem(const QList &data, TreeItem *parent = 0); insilmaril@795: virtual ~AttributeItem(); insilmaril@823: void set (const QString &k, const QString &v, const Type &t); insilmaril@823: void get (QString &k, QString &v, Type &t); insilmaril@795: void setKey (const QString &k, const Type &t); insilmaril@795: QString getKey (); insilmaril@795: void setValue (const QString &v); insilmaril@795: QVariant getValue (); insilmaril@795: void setType (const Type &t); insilmaril@795: AttributeItem::Type getAttributeType (); insilmaril@795: QString getTypeString (); insilmaril@823: void setInternal (bool b); insilmaril@823: bool isInternal(); insilmaril@795: QString getDataXML(); insilmaril@795: protected: insilmaril@795: bool internal; //!< Internal attributes cannot be edited by user insilmaril@823: QString key; insilmaril@823: QVariant value; insilmaril@823: Type attrType; insilmaril@795: }; insilmaril@795: insilmaril@795: #endif insilmaril@795: