00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef ABSTRACTELEMENTATTRIBUTE_H
00034 #define ABSTRACTELEMENTATTRIBUTE_H
00035
00036
00037 #include <QObject>
00038
00039 #include <QReadWriteLock>
00040 #include <QString>
00041 #include <QVariant>
00042
00043 #include "abstractelement.h"
00044 #include "domaccessiblestate.h"
00045
00046 class QByteArray;
00047
00048
00060 class AbstractElementAttribute : public QObject, public DomAccessibleState {
00061
00062 Q_OBJECT
00063
00064 public:
00065 AbstractElementAttribute( AbstractElement* parent );
00066
00067
00068 virtual int type() const = 0;
00069
00070 virtual const QString& title() const = 0;
00071
00073 virtual int category() const { return 0; }
00074
00075 QString toString() const;
00076 bool setData( const QString& data );
00077 QVariant toVariant() const;
00078 bool setData( const QVariant& data );
00079
00080 virtual QDomElement domElement( QDomDocument& doc ) const;
00081 virtual void initFromDomElement( const QDomElement& e,
00082 InitModeFlags modeFlags );
00083
00084
00085 protected:
00087 virtual QString worker_toString() const = 0;
00089 virtual bool worker_setData( const QString& data ) = 0;
00091 virtual QVariant worker_toVariant() const = 0;
00093 virtual bool worker_setData( const QVariant& data ) = 0;
00094
00095 mutable QReadWriteLock m_lock;
00096 };
00097
00098
00099 #endif // ! ABSTRACTELEMENTATTRIBUTE_H