Changeset View
Changeset View
Standalone View
Standalone View
src/KPropertyFactory.cpp
- This file was copied to src/KPropertyWidgetsFactory.cpp.
Show All 13 Lines | 1 | /* This file is part of the KDE project | |||
---|---|---|---|---|---|
14 | You should have received a copy of the GNU Library General Public License | 14 | You should have received a copy of the GNU Library General Public License | ||
15 | along with this library; see the file COPYING.LIB. If not, write to | 15 | along with this library; see the file COPYING.LIB. If not, write to | ||
16 | the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 16 | the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||
17 | * Boston, MA 02110-1301, USA. | 17 | * Boston, MA 02110-1301, USA. | ||
18 | */ | 18 | */ | ||
19 | 19 | | |||
20 | 20 | | |||
21 | #include "KPropertyFactory.h" | 21 | #include "KPropertyFactory.h" | ||
22 | #include "KDefaultPropertyFactory.h" | | |||
23 | #include "KPropertyEditorView.h" | | |||
24 | #include "KPropertyEditorDataModel.h" | | |||
25 | | ||||
26 | KPropertyLabel::KPropertyLabel(QWidget *parent, const KPropertyValueDisplayInterface *iface) | | |||
27 | : QLabel(parent) | | |||
28 | , m_iface(iface) | | |||
29 | { | | |||
30 | setAutoFillBackground(true); | | |||
31 | setContentsMargins(0,1,0,0); | | |||
32 | setIndent(1); | | |||
33 | } | | |||
34 | | ||||
35 | QVariant KPropertyLabel::value() const | | |||
36 | { | | |||
37 | return m_value; | | |||
38 | } | | |||
39 | | ||||
40 | void KPropertyLabel::setValue(const QVariant& value) | | |||
41 | { | | |||
42 | setText( m_iface->displayText(value) ); | | |||
43 | m_value = value; | | |||
44 | } | | |||
45 | | ||||
46 | void KPropertyLabel::paintEvent( QPaintEvent * event ) | | |||
47 | { | | |||
48 | QLabel::paintEvent(event); | | |||
49 | KPropertyFactory::paintTopGridLine(this); | | |||
50 | } | | |||
51 | 22 | | |||
52 | //--------------- | 23 | //--------------- | ||
53 | 24 | | |||
54 | //! @internal | 25 | //! @internal | ||
55 | class KPropertyFactoryManager::Private | 26 | class KPropertyFactoryManager::Private | ||
56 | { | 27 | { | ||
57 | public: | 28 | public: | ||
58 | Private() | 29 | Private() | ||
59 | { | 30 | { | ||
60 | } | 31 | } | ||
61 | ~Private() | 32 | ~Private() | ||
62 | { | 33 | { | ||
63 | qDeleteAll(factories); | 34 | qDeleteAll(factories); | ||
64 | } | 35 | } | ||
65 | 36 | | |||
66 | QSet<KPropertyFactory*> factories; | 37 | QSet<KPropertyFactory*> factories; | ||
67 | QHash<int, KComposedPropertyCreatorInterface*> composedPropertyCreators; | 38 | QHash<int, KComposedPropertyCreatorInterface*> composedPropertyCreators; | ||
68 | QHash<int, KPropertyEditorCreatorInterface*> editorCreators; | | |||
69 | QHash<int, KPropertyValuePainterInterface*> valuePainters; | | |||
70 | QHash<int, KPropertyValueDisplayInterface*> valueDisplays; | | |||
71 | }; | 39 | }; | ||
72 | 40 | | |||
73 | Q_GLOBAL_STATIC(KPropertyFactoryManager, _self) | 41 | Q_GLOBAL_STATIC(KPropertyFactoryManager, _self) | ||
74 | 42 | | |||
75 | //! @internal | 43 | //! @internal | ||
76 | class KPropertyFactory::Private | 44 | class KPropertyFactory::Private | ||
77 | { | 45 | { | ||
78 | public: | 46 | public: | ||
79 | Private() | 47 | Private() | ||
80 | { | 48 | { | ||
81 | } | 49 | } | ||
82 | ~Private() | 50 | ~Private() | ||
83 | { | 51 | { | ||
84 | qDeleteAll(editorCreatorsSet); | | |||
85 | qDeleteAll(valuePaintersSet); | | |||
86 | qDeleteAll(valueDisplaysSet); | | |||
87 | } | 52 | } | ||
88 | 53 | | |||
89 | QHash<int, KComposedPropertyCreatorInterface*> composedPropertyCreators; | 54 | QHash<int, KComposedPropertyCreatorInterface*> composedPropertyCreators; | ||
90 | QHash<int, KPropertyEditorCreatorInterface*> editorCreators; | | |||
91 | QHash<int, KPropertyValuePainterInterface*> valuePainters; | | |||
92 | QHash<int, KPropertyValueDisplayInterface*> valueDisplays; | | |||
93 | QSet<KComposedPropertyCreatorInterface*> composedPropertyCreatorsSet; | 55 | QSet<KComposedPropertyCreatorInterface*> composedPropertyCreatorsSet; | ||
94 | QSet<KPropertyEditorCreatorInterface*> editorCreatorsSet; | | |||
95 | QSet<KPropertyValuePainterInterface*> valuePaintersSet; | | |||
96 | QSet<KPropertyValueDisplayInterface*> valueDisplaysSet; | | |||
97 | }; | 56 | }; | ||
98 | 57 | | |||
99 | KPropertyFactory::KPropertyFactory() | 58 | KPropertyFactory::KPropertyFactory() | ||
100 | : d( new Private ) | 59 | : d( new Private ) | ||
101 | { | 60 | { | ||
102 | } | 61 | } | ||
103 | 62 | | |||
104 | KPropertyFactory::~KPropertyFactory() | 63 | KPropertyFactory::~KPropertyFactory() | ||
105 | { | 64 | { | ||
106 | delete d; | 65 | delete d; | ||
107 | } | 66 | } | ||
108 | 67 | | |||
109 | QHash<int, KComposedPropertyCreatorInterface*> KPropertyFactory::composedPropertyCreators() const | 68 | QHash<int, KComposedPropertyCreatorInterface*> KPropertyFactory::composedPropertyCreators() const | ||
110 | { | 69 | { | ||
111 | return d->composedPropertyCreators; | 70 | return d->composedPropertyCreators; | ||
112 | } | 71 | } | ||
113 | 72 | | |||
73 | #ifdef KPROPERTY_WIDGET | ||||
114 | QHash<int, KPropertyEditorCreatorInterface*> KPropertyFactory::editorCreators() const | 74 | QHash<int, KPropertyEditorCreatorInterface*> KPropertyFactory::editorCreators() const | ||
115 | { | 75 | { | ||
116 | return d->editorCreators; | 76 | return d->editorCreators; | ||
117 | } | 77 | } | ||
118 | 78 | | |||
119 | QHash<int, KPropertyValuePainterInterface*> KPropertyFactory::valuePainters() const | 79 | QHash<int, KPropertyValuePainterInterface*> KPropertyFactory::valuePainters() const | ||
120 | { | 80 | { | ||
121 | return d->valuePainters; | 81 | return d->valuePainters; | ||
Show All 13 Lines | 90 | { | |||
135 | } | 95 | } | ||
136 | if (dynamic_cast<KPropertyValuePainterInterface*>(creator)) { | 96 | if (dynamic_cast<KPropertyValuePainterInterface*>(creator)) { | ||
137 | addPainterInternal( type, dynamic_cast<KPropertyValuePainterInterface*>(creator), false/* !own*/ ); | 97 | addPainterInternal( type, dynamic_cast<KPropertyValuePainterInterface*>(creator), false/* !own*/ ); | ||
138 | } | 98 | } | ||
139 | if (dynamic_cast<KPropertyValueDisplayInterface*>(creator)) { | 99 | if (dynamic_cast<KPropertyValueDisplayInterface*>(creator)) { | ||
140 | addDisplayInternal( type, dynamic_cast<KPropertyValueDisplayInterface*>(creator), false/* !own*/ ); | 100 | addDisplayInternal( type, dynamic_cast<KPropertyValueDisplayInterface*>(creator), false/* !own*/ ); | ||
141 | } | 101 | } | ||
142 | } | 102 | } | ||
103 | #endif | ||||
143 | 104 | | |||
144 | void KPropertyFactory::addComposedPropertyCreator( int type, KComposedPropertyCreatorInterface* creator ) | 105 | void KPropertyFactory::addComposedPropertyCreator( int type, KComposedPropertyCreatorInterface* creator ) | ||
145 | { | 106 | { | ||
146 | addComposedPropertyCreatorInternal( type, creator, true ); | 107 | addComposedPropertyCreatorInternal( type, creator, true ); | ||
147 | if (dynamic_cast<KPropertyEditorCreatorInterface*>(creator)) { | | |||
148 | addEditorInternal( type, dynamic_cast<KPropertyEditorCreatorInterface*>(creator), false/* !own*/ ); | | |||
149 | } | | |||
150 | if (dynamic_cast<KPropertyValuePainterInterface*>(creator)) { | | |||
151 | addPainterInternal( type, dynamic_cast<KPropertyValuePainterInterface*>(creator), false/* !own*/ ); | | |||
152 | } | | |||
153 | if (dynamic_cast<KPropertyValueDisplayInterface*>(creator)) { | | |||
154 | addDisplayInternal( type, dynamic_cast<KPropertyValueDisplayInterface*>(creator), false/* !own*/ ); | | |||
155 | } | | |||
156 | } | | |||
157 | | ||||
158 | void KPropertyFactory::addPainter(int type, KPropertyValuePainterInterface *painter) | | |||
159 | { | | |||
160 | addPainterInternal(type, painter, true); | | |||
161 | if (dynamic_cast<KComposedPropertyCreatorInterface*>(painter)) { | | |||
162 | addComposedPropertyCreatorInternal( type, | | |||
163 | dynamic_cast<KComposedPropertyCreatorInterface*>(painter), false/* !own*/ ); | | |||
164 | } | | |||
165 | if (dynamic_cast<KPropertyEditorCreatorInterface*>(painter)) { | | |||
166 | addEditorInternal( type, dynamic_cast<KPropertyEditorCreatorInterface*>(painter), false/* !own*/ ); | | |||
167 | } | | |||
168 | if (dynamic_cast<KPropertyValueDisplayInterface*>(painter)) { | | |||
169 | addDisplayInternal( type, dynamic_cast<KPropertyValueDisplayInterface*>(painter), false/* !own*/ ); | | |||
170 | } | | |||
171 | } | | |||
172 | | ||||
173 | void KPropertyFactory::addDisplay(int type, KPropertyValueDisplayInterface *display) | | |||
174 | { | | |||
175 | addDisplayInternal(type, display, true); | | |||
176 | if (dynamic_cast<KComposedPropertyCreatorInterface*>(display)) { | | |||
177 | addComposedPropertyCreatorInternal( type, | | |||
178 | dynamic_cast<KComposedPropertyCreatorInterface*>(display), false/* !own*/ ); | | |||
179 | } | | |||
180 | if (dynamic_cast<KPropertyEditorCreatorInterface*>(display)) { | | |||
181 | addEditorInternal( type, dynamic_cast<KPropertyEditorCreatorInterface*>(display), false/* !own*/ ); | | |||
182 | } | | |||
183 | if (dynamic_cast<KPropertyValueDisplayInterface*>(display)) { | | |||
184 | addDisplayInternal( type, dynamic_cast<KPropertyValueDisplayInterface*>(display), false/* !own*/ ); | | |||
185 | } | | |||
186 | } | | |||
187 | | ||||
188 | void KPropertyFactory::addEditorInternal(int type, KPropertyEditorCreatorInterface *editor, bool own) | | |||
189 | { | | |||
190 | if (own) | | |||
191 | d->editorCreatorsSet.insert(editor); | | |||
192 | d->editorCreators.insert(type, editor); | | |||
193 | } | 108 | } | ||
194 | 109 | | |||
195 | void KPropertyFactory::addComposedPropertyCreatorInternal(int type, KComposedPropertyCreatorInterface* creator, bool own) | 110 | void KPropertyFactory::addComposedPropertyCreatorInternal(int type, KComposedPropertyCreatorInterface* creator, bool own) | ||
196 | { | 111 | { | ||
197 | if (own) | 112 | if (own) | ||
198 | d->composedPropertyCreatorsSet.insert(creator); | 113 | d->composedPropertyCreatorsSet.insert(creator); | ||
199 | d->composedPropertyCreators.insert(type, creator); | 114 | d->composedPropertyCreators.insert(type, creator); | ||
200 | } | 115 | } | ||
201 | 116 | | |||
202 | void KPropertyFactory::addPainterInternal(int type, KPropertyValuePainterInterface *painter, bool own) | | |||
203 | { | | |||
204 | if (own) | | |||
205 | d->valuePaintersSet.insert(painter); | | |||
206 | d->valuePainters.insert(type, painter); | | |||
207 | } | | |||
208 | | ||||
209 | void KPropertyFactory::addDisplayInternal(int type, KPropertyValueDisplayInterface *display, bool own) | | |||
210 | { | | |||
211 | if (own) | | |||
212 | d->valueDisplaysSet.insert(display); | | |||
213 | d->valueDisplays.insert(type, display); | | |||
214 | } | | |||
215 | | ||||
216 | //static | | |||
217 | void KPropertyFactory::paintTopGridLine(QWidget *widget) | | |||
218 | { | | |||
219 | // paint top grid line | | |||
220 | QPainter p(widget); | | |||
221 | QColor gridLineColor( dynamic_cast<KPropertyEditorView*>(widget->parentWidget()) ? | | |||
222 | dynamic_cast<KPropertyEditorView*>(widget->parentWidget())->gridLineColor() | | |||
223 | : KPropertyEditorView::defaultGridLineColor() ); | | |||
224 | p.setPen(QPen( QBrush(gridLineColor), 1)); | | |||
225 | p.drawLine(0, 0, widget->width()-1, 0); | | |||
226 | } | | |||
227 | | ||||
228 | //static | | |||
229 | void KPropertyFactory::setTopAndBottomBordersUsingStyleSheet(QWidget *widget, QWidget* parent, const QString& extraStyleSheet) | | |||
230 | { | | |||
231 | QColor gridLineColor( dynamic_cast<KPropertyEditorView*>(parent) ? | | |||
232 | dynamic_cast<KPropertyEditorView*>(parent)->gridLineColor() | | |||
233 | : KPropertyEditorView::defaultGridLineColor() ); | | |||
234 | widget->setStyleSheet( | | |||
235 | QString::fromLatin1("%1 { border-top: 1px solid %2;border-bottom: 1px solid %2; } %3") | | |||
236 | .arg(QLatin1String(widget->metaObject()->className())) | | |||
237 | .arg(gridLineColor.name()).arg(extraStyleSheet)); | | |||
238 | } | | |||
239 | | ||||
240 | //------------ | 117 | //------------ | ||
241 | 118 | | |||
242 | KPropertyFactoryManager::KPropertyFactoryManager() | 119 | KPropertyFactoryManager::KPropertyFactoryManager() | ||
243 | : QObject(0) | 120 | : QObject(0) | ||
244 | , d(new Private) | 121 | , d(new Private) | ||
245 | { | 122 | { | ||
246 | setObjectName(QLatin1String("KPropertyFactoryManager")); | 123 | setObjectName(QLatin1String("KPropertyFactoryManager")); | ||
247 | registerFactory(new KDefaultPropertyFactory); | 124 | //TODO ??? registerFactory(new KDefaultPropertyFactory); | ||
125 | | ||||
248 | } | 126 | } | ||
249 | 127 | | |||
250 | KPropertyFactoryManager::~KPropertyFactoryManager() | 128 | KPropertyFactoryManager::~KPropertyFactoryManager() | ||
251 | { | 129 | { | ||
252 | delete d; | 130 | delete d; | ||
253 | } | 131 | } | ||
254 | 132 | | |||
255 | KPropertyFactoryManager* KPropertyFactoryManager::self() | 133 | KPropertyFactoryManager* KPropertyFactoryManager::self() | ||
256 | { | 134 | { | ||
257 | return _self; | 135 | return _self; | ||
258 | } | 136 | } | ||
259 | 137 | | |||
260 | void KPropertyFactoryManager::registerFactory(KPropertyFactory *factory) | 138 | void KPropertyFactoryManager::registerFactory(KPropertyFactory *factory) | ||
261 | { | 139 | { | ||
262 | d->factories.insert(factory); | 140 | d->factories.insert(factory); | ||
263 | QHash<int, KComposedPropertyCreatorInterface*>::ConstIterator composedPropertyCreatorsItEnd | 141 | QHash<int, KComposedPropertyCreatorInterface*>::ConstIterator composedPropertyCreatorsItEnd | ||
264 | = factory->composedPropertyCreators().constEnd(); | 142 | = factory->composedPropertyCreators().constEnd(); | ||
265 | for (QHash<int, KComposedPropertyCreatorInterface*>::ConstIterator it( factory->composedPropertyCreators().constBegin() ); | 143 | for (QHash<int, KComposedPropertyCreatorInterface*>::ConstIterator it( factory->composedPropertyCreators().constBegin() ); | ||
266 | it != composedPropertyCreatorsItEnd; ++it) | 144 | it != composedPropertyCreatorsItEnd; ++it) | ||
267 | { | 145 | { | ||
268 | d->composedPropertyCreators.insert(it.key(), it.value()); | 146 | d->composedPropertyCreators.insert(it.key(), it.value()); | ||
269 | } | 147 | } | ||
270 | QHash<int, KPropertyEditorCreatorInterface*>::ConstIterator editorCreatorsItEnd | | |||
271 | = factory->editorCreators().constEnd(); | | |||
272 | for (QHash<int, KPropertyEditorCreatorInterface*>::ConstIterator it( factory->editorCreators().constBegin() ); | | |||
273 | it != editorCreatorsItEnd; ++it) | | |||
274 | { | | |||
275 | d->editorCreators.insert(it.key(), it.value()); | | |||
276 | } | | |||
277 | QHash<int, KPropertyValuePainterInterface*>::ConstIterator valuePaintersItEnd | | |||
278 | = factory->valuePainters().constEnd(); | | |||
279 | for (QHash<int, KPropertyValuePainterInterface*>::ConstIterator it( factory->valuePainters().constBegin() ); | | |||
280 | it != valuePaintersItEnd; ++it) | | |||
281 | { | | |||
282 | d->valuePainters.insert(it.key(), it.value()); | | |||
283 | } | | |||
284 | QHash<int, KPropertyValueDisplayInterface*>::ConstIterator valueDisplaysItEnd | | |||
285 | = factory->valueDisplays().constEnd(); | | |||
286 | for (QHash<int, KPropertyValueDisplayInterface*>::ConstIterator it( factory->valueDisplays().constBegin() ); | | |||
287 | it != valueDisplaysItEnd; ++it) | | |||
288 | { | | |||
289 | d->valueDisplays.insert(it.key(), it.value()); | | |||
290 | } | | |||
291 | } | | |||
292 | | ||||
293 | bool KPropertyFactoryManager::isEditorForTypeAvailable( int type ) const | | |||
294 | { | | |||
295 | return d->editorCreators.value(type); | | |||
296 | } | | |||
297 | | ||||
298 | QWidget * KPropertyFactoryManager::createEditor( | | |||
299 | int type, QWidget *parent, | | |||
300 | const QStyleOptionViewItem & option, const QModelIndex & index ) const | | |||
301 | { | | |||
302 | const KPropertyEditorCreatorInterface *creator = d->editorCreators.value(type); | | |||
303 | if (!creator) | | |||
304 | return 0; | | |||
305 | QWidget *w = creator->createEditor(type, parent, option, index); | | |||
306 | if (w) { | | |||
307 | const KPropertyEditorDataModel *editorModel | | |||
308 | = dynamic_cast<const KPropertyEditorDataModel*>(index.model()); | | |||
309 | KProperty *property = editorModel->propertyForItem(index); | | |||
310 | w->setObjectName(QLatin1String(property->name())); | | |||
311 | if (creator->options.removeBorders) { | | |||
312 | //! @todo get real border color from the palette | | |||
313 | QColor gridLineColor( dynamic_cast<KPropertyEditorView*>(parent) ? | | |||
314 | dynamic_cast<KPropertyEditorView*>(parent)->gridLineColor() | | |||
315 | : KPropertyEditorView::defaultGridLineColor() ); | | |||
316 | QString cssClassName = QLatin1String(w->metaObject()->className()); | | |||
317 | cssClassName.replace(QLatin1String("KProperty"), QString()); //!< @todo | | |||
318 | QString css = | | |||
319 | QString::fromLatin1("%1 { border-top: 1px solid %2; } ") | | |||
320 | .arg(cssClassName).arg(gridLineColor.name()); | | |||
321 | // kprDebug() << css; | | |||
322 | w->setStyleSheet(css); | | |||
323 | } | | |||
324 | } | | |||
325 | return w; | | |||
326 | } | | |||
327 | | ||||
328 | bool KPropertyFactoryManager::paint( int type, QPainter * painter, | | |||
329 | const QStyleOptionViewItem & option, const QModelIndex & index ) const | | |||
330 | { | | |||
331 | const KPropertyValuePainterInterface *_painter = d->valuePainters.value(type); | | |||
332 | if (!_painter) | | |||
333 | return false; | | |||
334 | QStyleOptionViewItem realOption(option); | | |||
335 | if (option.state & QStyle::State_Selected) { | | |||
336 | // paint background because there may be editor widget with no autoFillBackground set | | |||
337 | realOption.palette.setBrush(QPalette::Text, realOption.palette.highlightedText()); | | |||
338 | painter->fillRect(realOption.rect, realOption.palette.highlight()); | | |||
339 | } | | |||
340 | painter->setPen(realOption.palette.text().color()); | | |||
341 | _painter->paint(painter, realOption, index); | | |||
342 | return true; | | |||
343 | } | | |||
344 | | ||||
345 | bool KPropertyFactoryManager::canConvertValueToText( int type ) const | | |||
346 | { | | |||
347 | return d->valueDisplays.value(type) != 0; | | |||
348 | } | | |||
349 | | ||||
350 | bool KPropertyFactoryManager::canConvertValueToText( const KProperty* property ) const | | |||
351 | { | | |||
352 | return d->valueDisplays.value( property->type() ) != 0; | | |||
353 | } | | |||
354 | | ||||
355 | QString KPropertyFactoryManager::convertValueToText( const KProperty* property ) const | | |||
356 | { | | |||
357 | const KPropertyValueDisplayInterface *display = d->valueDisplays.value( property->type() ); | | |||
358 | return display ? display->displayTextForProperty( property ) : property->value().toString(); | | |||
359 | } | 148 | } | ||
360 | 149 | | |||
361 | KComposedPropertyInterface* KPropertyFactoryManager::createComposedProperty(KProperty *parent) | 150 | KComposedPropertyInterface* KPropertyFactoryManager::createComposedProperty(KProperty *parent) | ||
362 | { | 151 | { | ||
363 | const KComposedPropertyCreatorInterface *creator = d->composedPropertyCreators.value( parent->type() ); | 152 | const KComposedPropertyCreatorInterface *creator = d->composedPropertyCreators.value( parent->type() ); | ||
364 | return creator ? creator->createComposedProperty(parent) : 0; | 153 | return creator ? creator->createComposedProperty(parent) : 0; | ||
365 | } | 154 | } | ||
366 | 155 | | |||
▲ Show 20 Lines • Show All 43 Lines • ▼ Show 20 Line(s) | |||||
410 | 199 | | |||
411 | KComposedPropertyCreatorInterface::KComposedPropertyCreatorInterface() | 200 | KComposedPropertyCreatorInterface::KComposedPropertyCreatorInterface() | ||
412 | { | 201 | { | ||
413 | } | 202 | } | ||
414 | 203 | | |||
415 | KComposedPropertyCreatorInterface::~KComposedPropertyCreatorInterface() | 204 | KComposedPropertyCreatorInterface::~KComposedPropertyCreatorInterface() | ||
416 | { | 205 | { | ||
417 | } | 206 | } | ||
418 | | ||||
419 | KPropertyEditorCreatorInterface::KPropertyEditorCreatorInterface() | | |||
420 | { | | |||
421 | } | | |||
422 | | ||||
423 | KPropertyEditorCreatorInterface::~KPropertyEditorCreatorInterface() | | |||
424 | { | | |||
425 | } | | |||
426 | | ||||
427 | KPropertyEditorCreatorInterface::Options::Options() | | |||
428 | : removeBorders(true) | | |||
429 | { | | |||
430 | } | | |||
431 | | ||||
432 | KPropertyValuePainterInterface::KPropertyValuePainterInterface() | | |||
433 | { | | |||
434 | } | | |||
435 | | ||||
436 | KPropertyValuePainterInterface::~KPropertyValuePainterInterface() | | |||
437 | { | | |||
438 | } | | |||
439 | | ||||
440 | KPropertyValueDisplayInterface::KPropertyValueDisplayInterface() | | |||
441 | { | | |||
442 | } | | |||
443 | | ||||
444 | KPropertyValueDisplayInterface::~KPropertyValueDisplayInterface() | | |||
445 | { | | |||
446 | } | |