Absolute File Name: | /home/qt/qt5_coco/qt5/qtbase/src/widgets/itemviews/qitemeditorfactory.cpp |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||
---|---|---|---|---|---|---|---|---|
1 | - | |||||||
2 | - | |||||||
3 | - | |||||||
4 | - | |||||||
5 | - | |||||||
6 | - | |||||||
7 | - | |||||||
8 | - | |||||||
9 | - | |||||||
10 | class QBooleanComboBox : public QComboBox | - | ||||||
11 | { | - | ||||||
12 | public: template <typename ThisObject> inline void qt_check_for_QOBJECT_macro(const ThisObject &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i + 1; } | - | ||||||
13 | #pragma GCC diagnostic push | - | ||||||
14 | static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); virtual int qt_metacall(QMetaObject::Call, int, void **); static inline QString tr(const char *s, const char *c = nullptr, int n = -1) { return staticMetaObject.tr(s, c, n); } __attribute__ ((__deprecated__)) static inline QString trUtf8(const char *s, const char *c = nullptr, int n = -1) { return staticMetaObject.tr(s, c, n); } private: __attribute__((visibility("hidden"))) static void qt_static_metacall(QObject *, QMetaObject::Call, int, void **); | - | ||||||
15 | #pragma GCC diagnostic pop | - | ||||||
16 | struct QPrivateSignal {}; | - | ||||||
17 | - | |||||||
18 | - | |||||||
19 | public: | - | ||||||
20 | QBooleanComboBox(QWidget *parent); | - | ||||||
21 | void setValue(bool); | - | ||||||
22 | bool value() const; | - | ||||||
23 | }; | - | ||||||
24 | - | |||||||
25 | - | |||||||
26 | - | |||||||
27 | - | |||||||
28 | - | |||||||
29 | - | |||||||
30 | class QUIntSpinBox : public QSpinBox | - | ||||||
31 | { | - | ||||||
32 | public: template <typename ThisObject> inline void qt_check_for_QOBJECT_macro(const ThisObject &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i + 1; } | - | ||||||
33 | #pragma GCC diagnostic push | - | ||||||
34 | static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); virtual int qt_metacall(QMetaObject::Call, int, void **); static inline QString tr(const char *s, const char *c = nullptr, int n = -1) { return staticMetaObject.tr(s, c, n); } __attribute__ ((__deprecated__)) static inline QString trUtf8(const char *s, const char *c = nullptr, int n = -1) { return staticMetaObject.tr(s, c, n); } private: __attribute__((visibility("hidden"))) static void qt_static_metacall(QObject *, QMetaObject::Call, int, void **); | - | ||||||
35 | #pragma GCC diagnostic pop | - | ||||||
36 | struct QPrivateSignal {}; | - | ||||||
37 | - | |||||||
38 | public: | - | ||||||
39 | explicit QUIntSpinBox(QWidget *parent = 0) | - | ||||||
40 | : QSpinBox(parent) | - | ||||||
41 | { | - | ||||||
42 | connect(this, qFlagLocation("2""valueChanged(int)" "\0" __FILE__ ":" "79"), qFlagLocation("2""uintValueChanged()" "\0" __FILE__ ":" "79")); | - | ||||||
43 | } never executed: end of block | 0 | ||||||
44 | - | |||||||
45 | uint uintValue() | - | ||||||
46 | { | - | ||||||
47 | return never executed: value();return value(); never executed: return value(); | 0 | ||||||
48 | } | - | ||||||
49 | - | |||||||
50 | void setUIntValue(uint value_) | - | ||||||
51 | { | - | ||||||
52 | return never executed: setValue(value_);return setValue(value_); never executed: return setValue(value_); | 0 | ||||||
53 | } | - | ||||||
54 | - | |||||||
55 | public : | - | ||||||
56 | void uintValueChanged(); | - | ||||||
57 | }; | - | ||||||
58 | QWidget *QItemEditorFactory::createEditor(int userType, QWidget *parent) const | - | ||||||
59 | { | - | ||||||
60 | QItemEditorCreatorBase *creator = creatorMap.value(userType, 0); | - | ||||||
61 | if (!creator
| 0 | ||||||
62 | const QItemEditorFactory *dfactory = defaultFactory(); | - | ||||||
63 | return never executed: dfactory == thisreturn dfactory == this ? 0 : dfactory->createEditor(userType, parent);
never executed: return dfactory == this ? 0 : dfactory->createEditor(userType, parent); | 0 | ||||||
64 | } | - | ||||||
65 | return never executed: creator->createWidget(parent);return creator->createWidget(parent); never executed: return creator->createWidget(parent); | 0 | ||||||
66 | } | - | ||||||
67 | - | |||||||
68 | - | |||||||
69 | - | |||||||
70 | - | |||||||
71 | QByteArray QItemEditorFactory::valuePropertyName(int userType) const | - | ||||||
72 | { | - | ||||||
73 | QItemEditorCreatorBase *creator = creatorMap.value(userType, 0); | - | ||||||
74 | if (!creator
| 0 | ||||||
75 | const QItemEditorFactory *dfactory = defaultFactory(); | - | ||||||
76 | return never executed: dfactory == thisreturn dfactory == this ? QByteArray() : dfactory->valuePropertyName(userType);
never executed: return dfactory == this ? QByteArray() : dfactory->valuePropertyName(userType); | 0 | ||||||
77 | } | - | ||||||
78 | return never executed: creator->valuePropertyName();return creator->valuePropertyName(); never executed: return creator->valuePropertyName(); | 0 | ||||||
79 | } | - | ||||||
80 | - | |||||||
81 | - | |||||||
82 | - | |||||||
83 | - | |||||||
84 | QItemEditorFactory::~QItemEditorFactory() | - | ||||||
85 | { | - | ||||||
86 | - | |||||||
87 | - | |||||||
88 | QSet<QItemEditorCreatorBase*> set = creatorMap.values().toSet(); | - | ||||||
89 | qDeleteAll(set); | - | ||||||
90 | } never executed: end of block | 0 | ||||||
91 | void QItemEditorFactory::registerEditor(int userType, QItemEditorCreatorBase *creator) | - | ||||||
92 | { | - | ||||||
93 | QHash<int, QItemEditorCreatorBase *>::iterator it = creatorMap.find(userType); | - | ||||||
94 | if (it != creatorMap.end()
| 0 | ||||||
95 | QItemEditorCreatorBase *oldCreator = it.value(); | - | ||||||
96 | ((!(oldCreator)) ? qt_assert("oldCreator",__FILE__,203) : qt_noop()); | - | ||||||
97 | creatorMap.erase(it); | - | ||||||
98 | if (!creatorMap.values().contains(oldCreator)
| 0 | ||||||
99 | delete oldCreator; never executed: delete oldCreator; | 0 | ||||||
100 | } never executed: end of block | 0 | ||||||
101 | - | |||||||
102 | creatorMap[userType] = creator; | - | ||||||
103 | } never executed: end of block | 0 | ||||||
104 | - | |||||||
105 | class QDefaultItemEditorFactory : public QItemEditorFactory | - | ||||||
106 | { | - | ||||||
107 | public: | - | ||||||
108 | inline QDefaultItemEditorFactory() {} | - | ||||||
109 | QWidget *createEditor(int userType, QWidget *parent) const override; | - | ||||||
110 | QByteArray valuePropertyName(int) const override; | - | ||||||
111 | }; | - | ||||||
112 | - | |||||||
113 | QWidget *QDefaultItemEditorFactory::createEditor(int userType, QWidget *parent) const | - | ||||||
114 | { | - | ||||||
115 | switch (userType) { | - | ||||||
116 | - | |||||||
117 | case never executed: QVariant::Bool:case QVariant::Bool: never executed: {case QVariant::Bool: | 0 | ||||||
118 | QBooleanComboBox *cb = new QBooleanComboBox(parent); | - | ||||||
119 | cb->setFrame(false); | - | ||||||
120 | return never executed: cb;return cb; never executed: }return cb; | 0 | ||||||
121 | - | |||||||
122 | - | |||||||
123 | case never executed: QVariant::UInt:case QVariant::UInt: never executed: {case QVariant::UInt: | 0 | ||||||
124 | QSpinBox *sb = new QUIntSpinBox(parent); | - | ||||||
125 | sb->setFrame(false); | - | ||||||
126 | sb->setMinimum(0); | - | ||||||
127 | sb->setMaximum(2147483647); | - | ||||||
128 | return never executed: sb;return sb; never executed: }return sb; | 0 | ||||||
129 | case never executed: QVariant::Int:case QVariant::Int: never executed: {case QVariant::Int: | 0 | ||||||
130 | QSpinBox *sb = new QSpinBox(parent); | - | ||||||
131 | sb->setFrame(false); | - | ||||||
132 | sb->setMinimum((-2147483647 - 1)); | - | ||||||
133 | sb->setMaximum(2147483647); | - | ||||||
134 | return never executed: sb;return sb; never executed: }return sb; | 0 | ||||||
135 | - | |||||||
136 | - | |||||||
137 | case never executed: QVariant::Date:case QVariant::Date: never executed: {case QVariant::Date: | 0 | ||||||
138 | QDateTimeEdit *ed = new QDateEdit(parent); | - | ||||||
139 | ed->setFrame(false); | - | ||||||
140 | return never executed: ed;return ed; never executed: }return ed; | 0 | ||||||
141 | case never executed: QVariant::Time:case QVariant::Time: never executed: {case QVariant::Time: | 0 | ||||||
142 | QDateTimeEdit *ed = new QTimeEdit(parent); | - | ||||||
143 | ed->setFrame(false); | - | ||||||
144 | return never executed: ed;return ed; never executed: }return ed; | 0 | ||||||
145 | case never executed: QVariant::DateTime:case QVariant::DateTime: never executed: {case QVariant::DateTime: | 0 | ||||||
146 | QDateTimeEdit *ed = new QDateTimeEdit(parent); | - | ||||||
147 | ed->setFrame(false); | - | ||||||
148 | return never executed: ed;return ed; never executed: }return ed; | 0 | ||||||
149 | - | |||||||
150 | case never executed: QVariant::Pixmap:case QVariant::Pixmap: never executed: case QVariant::Pixmap: | 0 | ||||||
151 | return never executed: new QLabel(parent);return new QLabel(parent); never executed: return new QLabel(parent); | 0 | ||||||
152 | - | |||||||
153 | case never executed: QVariant::Double:case QVariant::Double: never executed: {case QVariant::Double: | 0 | ||||||
154 | QDoubleSpinBox *sb = new QDoubleSpinBox(parent); | - | ||||||
155 | sb->setFrame(false); | - | ||||||
156 | sb->setMinimum(-double(1.79769313486231570815e+308L)); | - | ||||||
157 | sb->setMaximum(double(1.79769313486231570815e+308L)); | - | ||||||
158 | return never executed: sb;return sb; never executed: }return sb; | 0 | ||||||
159 | - | |||||||
160 | - | |||||||
161 | case never executed: QVariant::String:case QVariant::String: never executed: case QVariant::String: | 0 | ||||||
162 | default never executed: :default: never executed: {default: | 0 | ||||||
163 | - | |||||||
164 | QExpandingLineEdit *le = new QExpandingLineEdit(parent); | - | ||||||
165 | le->setFrame(le->style()->styleHint(QStyle::SH_ItemView_DrawDelegateFrame, 0, le)); | - | ||||||
166 | if (!le->style()->styleHint(QStyle::SH_ItemView_ShowDecorationSelected, 0, le)
| 0 | ||||||
167 | le->setWidgetOwnsGeometry(true); never executed: le->setWidgetOwnsGeometry(true); | 0 | ||||||
168 | return never executed: le;return le; never executed: }return le; | 0 | ||||||
169 | - | |||||||
170 | - | |||||||
171 | - | |||||||
172 | - | |||||||
173 | } | - | ||||||
174 | return dead code: 0;return 0; dead code: return 0; | - | ||||||
175 | } | - | ||||||
176 | - | |||||||
177 | QByteArray QDefaultItemEditorFactory::valuePropertyName(int userType) const | - | ||||||
178 | { | - | ||||||
179 | switch (userType) { | - | ||||||
180 | - | |||||||
181 | case never executed: QVariant::Bool:case QVariant::Bool: never executed: case QVariant::Bool: | 0 | ||||||
182 | return never executed: "currentIndex";return "currentIndex"; never executed: return "currentIndex"; | 0 | ||||||
183 | - | |||||||
184 | - | |||||||
185 | case never executed: QVariant::UInt:case QVariant::UInt: never executed: case QVariant::UInt: | 0 | ||||||
186 | case never executed: QVariant::Int:case QVariant::Int: never executed: case QVariant::Int: | 0 | ||||||
187 | case never executed: QVariant::Double:case QVariant::Double: never executed: case QVariant::Double: | 0 | ||||||
188 | return never executed: "value";return "value"; never executed: return "value"; | 0 | ||||||
189 | - | |||||||
190 | - | |||||||
191 | case never executed: QVariant::Date:case QVariant::Date: never executed: case QVariant::Date: | 0 | ||||||
192 | return never executed: "date";return "date"; never executed: return "date"; | 0 | ||||||
193 | case never executed: QVariant::Time:case QVariant::Time: never executed: case QVariant::Time: | 0 | ||||||
194 | return never executed: "time";return "time"; never executed: return "time"; | 0 | ||||||
195 | case never executed: QVariant::DateTime:case QVariant::DateTime: never executed: case QVariant::DateTime: | 0 | ||||||
196 | return never executed: "dateTime";return "dateTime"; never executed: return "dateTime"; | 0 | ||||||
197 | - | |||||||
198 | case never executed: QVariant::String:case QVariant::String: never executed: case QVariant::String: | 0 | ||||||
199 | default never executed: :default: never executed: default: | 0 | ||||||
200 | - | |||||||
201 | return never executed: "text";return "text"; never executed: return "text"; | 0 | ||||||
202 | } | - | ||||||
203 | } | - | ||||||
204 | - | |||||||
205 | static QItemEditorFactory *q_default_factory = 0; | - | ||||||
206 | struct QDefaultFactoryCleaner | - | ||||||
207 | { | - | ||||||
208 | inline QDefaultFactoryCleaner() {} | - | ||||||
209 | ~QDefaultFactoryCleaner() { delete q_default_factory; q_default_factory = 0; } never executed: end of block | 0 | ||||||
210 | }; | - | ||||||
211 | - | |||||||
212 | - | |||||||
213 | - | |||||||
214 | - | |||||||
215 | - | |||||||
216 | - | |||||||
217 | const QItemEditorFactory *QItemEditorFactory::defaultFactory() | - | ||||||
218 | { | - | ||||||
219 | static const QDefaultItemEditorFactory factory; | - | ||||||
220 | if (q_default_factory
| 0 | ||||||
221 | return never executed: q_default_factory;return q_default_factory; never executed: return q_default_factory; | 0 | ||||||
222 | return never executed: &factory;return &factory; never executed: return &factory; | 0 | ||||||
223 | } | - | ||||||
224 | - | |||||||
225 | - | |||||||
226 | - | |||||||
227 | - | |||||||
228 | - | |||||||
229 | - | |||||||
230 | - | |||||||
231 | void QItemEditorFactory::setDefaultFactory(QItemEditorFactory *factory) | - | ||||||
232 | { | - | ||||||
233 | static const QDefaultFactoryCleaner cleaner; | - | ||||||
234 | delete q_default_factory; | - | ||||||
235 | q_default_factory = factory; | - | ||||||
236 | } never executed: end of block | 0 | ||||||
237 | QItemEditorCreatorBase::~QItemEditorCreatorBase() | - | ||||||
238 | { | - | ||||||
239 | - | |||||||
240 | } | - | ||||||
241 | QExpandingLineEdit::QExpandingLineEdit(QWidget *parent) | - | ||||||
242 | : QLineEdit(parent), originalWidth(-1), widgetOwnsGeometry(false) | - | ||||||
243 | { | - | ||||||
244 | connect(this, qFlagLocation("2""textChanged(QString)" "\0" __FILE__ ":" "525"), this, qFlagLocation("1""resizeToContents()" "\0" __FILE__ ":" "525")); | - | ||||||
245 | updateMinimumWidth(); | - | ||||||
246 | } never executed: end of block | 0 | ||||||
247 | - | |||||||
248 | void QExpandingLineEdit::changeEvent(QEvent *e) | - | ||||||
249 | { | - | ||||||
250 | switch (e->type()) | - | ||||||
251 | { | - | ||||||
252 | case never executed: QEvent::FontChange:case QEvent::FontChange: never executed: case QEvent::FontChange: | 0 | ||||||
253 | case never executed: QEvent::StyleChange:case QEvent::StyleChange: never executed: case QEvent::StyleChange: | 0 | ||||||
254 | case never executed: QEvent::ContentsRectChange:case QEvent::ContentsRectChange: never executed: case QEvent::ContentsRectChange: | 0 | ||||||
255 | updateMinimumWidth(); | - | ||||||
256 | break; never executed: break; | 0 | ||||||
257 | default never executed: :default: never executed: default: | 0 | ||||||
258 | break; never executed: break; | 0 | ||||||
259 | } | - | ||||||
260 | - | |||||||
261 | QLineEdit::changeEvent(e); | - | ||||||
262 | } never executed: end of block | 0 | ||||||
263 | - | |||||||
264 | void QExpandingLineEdit::updateMinimumWidth() | - | ||||||
265 | { | - | ||||||
266 | int left, right; | - | ||||||
267 | getTextMargins(&left, 0, &right, 0); | - | ||||||
268 | int width = left + right + 4 ; | - | ||||||
269 | getContentsMargins(&left, 0, &right, 0); | - | ||||||
270 | width += left + right; | - | ||||||
271 | - | |||||||
272 | QStyleOptionFrame opt; | - | ||||||
273 | initStyleOption(&opt); | - | ||||||
274 | - | |||||||
275 | int minWidth = style()->sizeFromContents(QStyle::CT_LineEdit, &opt, QSize(width, 0). | - | ||||||
276 | expandedTo(QApplication::globalStrut()), this).width(); | - | ||||||
277 | setMinimumWidth(minWidth); | - | ||||||
278 | } never executed: end of block | 0 | ||||||
279 | - | |||||||
280 | void QExpandingLineEdit::resizeToContents() | - | ||||||
281 | { | - | ||||||
282 | int oldWidth = width(); | - | ||||||
283 | if (originalWidth == -1
| 0 | ||||||
284 | originalWidth = oldWidth; never executed: originalWidth = oldWidth; | 0 | ||||||
285 | if (QWidget *parent = parentWidget()
| 0 | ||||||
286 | QPoint position = pos(); | - | ||||||
287 | int hintWidth = minimumWidth() + fontMetrics().width(displayText()); | - | ||||||
288 | int parentWidth = parent->width(); | - | ||||||
289 | int maxWidth = isRightToLeft()
| 0 | ||||||
290 | int newWidth = qBound(originalWidth, hintWidth, maxWidth); | - | ||||||
291 | if (widgetOwnsGeometry
| 0 | ||||||
292 | setMaximumWidth(newWidth); never executed: setMaximumWidth(newWidth); | 0 | ||||||
293 | if (isRightToLeft()
| 0 | ||||||
294 | move(position.x() - newWidth + oldWidth, position.y()); never executed: move(position.x() - newWidth + oldWidth, position.y()); | 0 | ||||||
295 | resize(newWidth, height()); | - | ||||||
296 | } never executed: end of block | 0 | ||||||
297 | } never executed: end of block | 0 | ||||||
298 | - | |||||||
299 | - | |||||||
300 | - | |||||||
301 | - | |||||||
302 | - | |||||||
303 | QBooleanComboBox::QBooleanComboBox(QWidget *parent) | - | ||||||
304 | : QComboBox(parent) | - | ||||||
305 | { | - | ||||||
306 | addItem(QComboBox::tr("False")); | - | ||||||
307 | addItem(QComboBox::tr("True")); | - | ||||||
308 | } never executed: end of block | 0 | ||||||
309 | - | |||||||
310 | void QBooleanComboBox::setValue(bool value) | - | ||||||
311 | { | - | ||||||
312 | setCurrentIndex(value ? 1 : 0); | - | ||||||
313 | } never executed: end of block | 0 | ||||||
314 | - | |||||||
315 | bool QBooleanComboBox::value() const | - | ||||||
316 | { | - | ||||||
317 | return never executed: (currentIndex() == 1);return (currentIndex() == 1); never executed: return (currentIndex() == 1); | 0 | ||||||
318 | } | - | ||||||
319 | - | |||||||
320 | - | |||||||
321 | - | |||||||
322 | - | |||||||
323 | - | |||||||
324 | - | |||||||
325 | - | |||||||
326 | - | |||||||
Switch to Source code | Preprocessed file |