Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_entry_editor.cc
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2007, 2010 Cyrille Berger <cberger@cberger.net>
3 *
4 * SPDX-License-Identifier: LGPL-2.1-or-later
5 */
6
7#include "kis_entry_editor.h"
8#include <QString>
9#include <QVariant>
10
11#include <kis_debug.h>
12
13#include <kis_meta_data_value.h>
14#include <kis_meta_data_store.h>
15#include <kis_meta_data_entry.h>
16
18 QWidget* object;
19 QString propertyName;
21 QString key;
22 QString structField;
24
27
28 if (value.type() == KisMetaData::Value::Structure && !structField.isEmpty()) {
29 QMap<QString, KisMetaData::Value> structure = value.asStructure();
30 return structure[ structField ];
31 }
32 else if (value.isArray() && arrayIndex > -1) {
34 if (arrayIndex < array.size()) {
35 return array[arrayIndex];
36 } else {
37 return KisMetaData::Value();
38 }
39 }
40 return value;
41 }
42 void setValue(const QVariant& variant) {
44 if (value.type() == KisMetaData::Value::Structure && !structField.isEmpty()) {
45 QMap<QString, KisMetaData::Value> structure = value.asStructure();
46 value = structure[ structField ];
47 value.setVariant(variant);
49 } else if (value.isArray() && arrayIndex > -1) {
51 } else {
52 value.setVariant(variant);
53 }
54 }
55};
56
57KisEntryEditor::KisEntryEditor(QWidget* obj, KisMetaData::Store* store, QString key, QString propertyName, QString structField, int arrayIndex)
58 : d(new Private)
59{
60 Q_ASSERT(obj);
61 Q_ASSERT(store);
62 d->object = obj;
63 d->propertyName = propertyName;
64 d->store = store;
65 d->key = key;
66 d->structField = structField;
67 d->arrayIndex = arrayIndex;
69}
70
75
77{
78 if (d->store->containsEntry(d->key)) {
79 bool blocked = d->object->blockSignals(true);
80 KisMetaData::Value val = d->value();
81 d->object->setProperty(d->propertyName.toLatin1(), val.asVariant());
82 d->object->blockSignals(blocked);
83 }
84}
85
87{
88 QVariant val = d->object->property(d->propertyName.toLatin1());
89 dbgMetaData << "Value edited: " << d->propertyName << val;
90 d->setValue(val);
91 Q_EMIT valueHasBeenEdited();
92}
93
Private *const d
~KisEntryEditor() override
KisEntryEditor(QWidget *obj, KisMetaData::Store *store, QString key, QString propertyName, QString structField, int arrayIndex)
void valueHasBeenEdited()
const KisMetaData::Value & value() const
bool containsEntry(const QString &entryKey) const
Entry & getEntry(const QString &entryKey)
QList< KisMetaData::Value > asArray() const
bool setStructureVariant(const QString &fieldNAme, const QVariant &variant)
QMap< QString, KisMetaData::Value > asStructure() const
QVariant asVariant() const
bool setVariant(const QVariant &variant)
ValueType type() const
bool setArrayVariant(int index, const QVariant &variant)
#define dbgMetaData
Definition kis_debug.h:61
KisMetaData::Store * store
void setValue(const QVariant &variant)
KisMetaData::Value value()