itom
Loading...
Searching...
No Matches
qtvariantproperty.h
1/****************************************************************************
2**
3** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
4** Contact: http://www.qt-project.org/legal
5**
6** This file is part of the Qt Solutions component.
7**
8** $QT_BEGIN_LICENSE:BSD$
9** You may use this file under the terms of the BSD license as follows:
10**
11** "Redistribution and use in source and binary forms, with or without
12** modification, are permitted provided that the following conditions are
13** met:
14** * Redistributions of source code must retain the above copyright
15** notice, this list of conditions and the following disclaimer.
16** * Redistributions in binary form must reproduce the above copyright
17** notice, this list of conditions and the following disclaimer in
18** the documentation and/or other materials provided with the
19** distribution.
20** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
21** of its contributors may be used to endorse or promote products derived
22** from this software without specific prior written permission.
23**
24**
25** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
36**
37** $QT_END_LICENSE$
38**
39****************************************************************************/
40
41
42#ifndef QTVARIANTPROPERTY_H
43#define QTVARIANTPROPERTY_H
44
45#include "qtpropertybrowser.h"
46#include <QtCore/QVariant>
47#include <QtGui/QIcon>
48
49#if QT_VERSION >= 0x040400
50QT_BEGIN_NAMESPACE
51#endif
52
53typedef QMap<int, QIcon> QtIconMap;
54
57
58class ITOMWIDGETS_EXPORT QtVariantProperty : public QtProperty
59{
60public:
62 QVariant value() const;
63 QVariant attributeValue(const QString &attribute) const;
64 int valueType() const;
65 int propertyType() const;
66
67 void setValue(const QVariant &value);
68 void setAttribute(const QString &attribute, const QVariant &value);
69protected:
71private:
72 friend class QtVariantPropertyManager;
74};
75
77
78class ITOMWIDGETS_EXPORT QtVariantPropertyManager : public QtAbstractPropertyManager
79{
80 Q_OBJECT
81public:
82 QtVariantPropertyManager(QObject *parent = 0);
84
85 virtual QtVariantProperty *addProperty(int propertyType, const QString &name = QString());
86
87 int propertyType(const QtProperty *property) const;
88 int valueType(const QtProperty *property) const;
89 QtVariantProperty *variantProperty(const QtProperty *property) const;
90
91 virtual bool isPropertyTypeSupported(int propertyType) const;
92 virtual int valueType(int propertyType) const;
93 virtual QStringList attributes(int propertyType) const;
94 virtual int attributeType(int propertyType, const QString &attribute) const;
95
96 virtual QVariant value(const QtProperty *property) const;
97 virtual QVariant attributeValue(const QtProperty *property, const QString &attribute) const;
98
99 static int enumTypeId();
100 static int flagTypeId();
101 static int groupTypeId();
102 static int iconMapTypeId();
103public Q_SLOTS:
104 virtual void setValue(QtProperty *property, const QVariant &val);
105 virtual void setAttribute(QtProperty *property,
106 const QString &attribute, const QVariant &value);
107Q_SIGNALS:
108 void valueChanged(QtProperty *property, const QVariant &val);
110 const QString &attribute, const QVariant &val);
111protected:
112 virtual bool hasValue(const QtProperty *property) const;
113 QString valueText(const QtProperty *property) const;
114 QIcon valueIcon(const QtProperty *property) const;
115 virtual void initializeProperty(QtProperty *property);
116 virtual void uninitializeProperty(QtProperty *property);
117 virtual QtProperty *createProperty();
118private:
120 Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, int))
121 Q_PRIVATE_SLOT(d_func(), void slotRangeChanged(QtProperty *, int, int))
122 Q_PRIVATE_SLOT(d_func(), void slotSingleStepChanged(QtProperty *, int))
123 Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, double))
124 Q_PRIVATE_SLOT(d_func(), void slotRangeChanged(QtProperty *, double, double))
125 Q_PRIVATE_SLOT(d_func(), void slotSingleStepChanged(QtProperty *, double))
126 Q_PRIVATE_SLOT(d_func(), void slotDecimalsChanged(QtProperty *, int))
127 Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, bool))
128 Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QString &))
129 Q_PRIVATE_SLOT(d_func(), void slotRegExpChanged(QtProperty *, const QRegularExpression&))
130 Q_PRIVATE_SLOT(d_func(), void slotEchoModeChanged(QtProperty *, int))
131 Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QDate &))
132 Q_PRIVATE_SLOT(d_func(), void slotRangeChanged(QtProperty *, const QDate &, const QDate &))
133 Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QTime &))
134 Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QDateTime &))
135 Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QKeySequence &))
136 Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QChar &))
137 Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QLocale &))
138 Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QPoint &))
139 Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QPointF &))
140 Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QSize &))
141 Q_PRIVATE_SLOT(d_func(), void slotRangeChanged(QtProperty *, const QSize &, const QSize &))
142 Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QSizeF &))
143 Q_PRIVATE_SLOT(d_func(), void slotRangeChanged(QtProperty *, const QSizeF &, const QSizeF &))
144 Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QRect &))
145 Q_PRIVATE_SLOT(d_func(), void slotConstraintChanged(QtProperty *, const QRect &))
146 Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QMargins &))
147 Q_PRIVATE_SLOT(d_func(), void slotConstraintChanged(QtProperty *, const QMargins &))
148#if QT_VERSION >= 0x050300
149 Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QMarginsF &))
150 Q_PRIVATE_SLOT(d_func(), void slotConstraintChanged(QtProperty *, const QMarginsF &))
151#endif
152 Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QRectF &))
153 Q_PRIVATE_SLOT(d_func(), void slotConstraintChanged(QtProperty *, const QRectF &))
154 Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QColor &))
155 Q_PRIVATE_SLOT(d_func(), void slotEnumNamesChanged(QtProperty *, const QStringList &))
156 Q_PRIVATE_SLOT(d_func(), void slotEnumIconsChanged(QtProperty *, const QMap<int, QIcon> &))
157 Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QSizePolicy &))
158 Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QFont &))
159 Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QCursor &))
160 Q_PRIVATE_SLOT(d_func(), void slotFlagNamesChanged(QtProperty *, const QStringList &))
161
162 Q_PRIVATE_SLOT(d_func(), void slotPropertyInserted(QtProperty *, QtProperty *, QtProperty *))
163 Q_PRIVATE_SLOT(d_func(), void slotPropertyRemoved(QtProperty *, QtProperty *))
164 Q_DECLARE_PRIVATE(QtVariantPropertyManager)
165 Q_DISABLE_COPY(QtVariantPropertyManager)
166};
167
169
170class ITOMWIDGETS_EXPORT QtVariantEditorFactory : public QtAbstractEditorFactory<QtVariantPropertyManager>
171{
172 Q_OBJECT
173public:
174 QtVariantEditorFactory(QObject *parent = 0);
176protected:
177 void connectPropertyManager(QtVariantPropertyManager *manager);
178 QWidget *createEditor(QtVariantPropertyManager *manager, QtProperty *property,
179 QWidget *parent);
180 void disconnectPropertyManager(QtVariantPropertyManager *manager);
181private:
183 Q_DECLARE_PRIVATE(QtVariantEditorFactory)
184 Q_DISABLE_COPY(QtVariantEditorFactory)
185};
186
187#if QT_VERSION >= 0x040400
188QT_END_NAMESPACE
189#endif
190
191Q_DECLARE_METATYPE(QIcon)
192Q_DECLARE_METATYPE(QtIconMap)
193#endif
The QtAbstractEditorFactory is the base template class for editor factories.
Definition qtpropertybrowser.h:154
The QtAbstractPropertyManager provides an interface for property managers.
Definition qtpropertybrowser.h:102
The QtProperty class encapsulates an instance of a property.
Definition qtpropertybrowser.h:61
bool hasValue() const
Definition qtpropertybrowser.cpp:272
QIcon valueIcon() const
Definition qtpropertybrowser.cpp:285
QString valueText() const
Definition qtpropertybrowser.cpp:298
The QtVariantEditorFactory class provides widgets for properties created by QtVariantPropertyManager ...
Definition qtvariantproperty.h:171
Definition qtvariantproperty.cpp:1980
The QtVariantProperty class is a convenience class handling QVariant based properties.
Definition qtvariantproperty.h:59
The QtVariantPropertyManager class provides and manages QVariant based properties.
Definition qtvariantproperty.h:79
void valueChanged(QtProperty *property, const QVariant &val)
void attributeChanged(QtProperty *property, const QString &attribute, const QVariant &val)
Definition qtvariantproperty.cpp:304
Definition qtvariantproperty.cpp:154