Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_locked_properties_proxy.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2014 Dmitry Kazakov <dimula73@gmail.com>
3 * SPDX-FileCopyrightText: 2014 Mohit Goyal <mohit.bits2011@gmail.com>
4 *
5 * SPDX-License-Identifier: LGPL-2.1-or-later
6 */
8
9#include <KoResource.h>
10#include <KisDirtyStateSaver.h>
11
16
17
23
27
28QVariant KisLockedPropertiesProxy::getProperty(const QString &name) const
29{
32 if (!t->updateListener()) return m_parent->getProperty(name);
33
34 // restores the dirty state on returns automagically
35 KisPaintOpSettings::UpdateListenerSP updateProxy = t->updateListener().toStrongRef();
37
39 if (m_lockedProperties->lockedProperties()->hasProperty(name)) {
41
42 if (!m_parent->hasProperty(name + "_previous")) {
43 m_parent->setProperty(name + "_previous", m_parent->getProperty(name));
44 m_parent->setPropertyNotSaved(name + "_previous");
45 }
46
47 const QVariant lockedProp = m_lockedProperties->lockedProperties()->getProperty(name);
48
49 if (m_parent->getProperty(name) != lockedProp) {
50 m_parent->setProperty(name, lockedProp);
51 }
52
53 return lockedProp;
54 } else {
55 if (m_parent->hasProperty(name + "_previous")) {
56 m_parent->setProperty(name, m_parent->getProperty(name + "_previous"));
57 m_parent->removeProperty(name + "_previous");
58 }
59 }
60 }
61
62 return m_parent->getProperty(name);
63}
64
65void KisLockedPropertiesProxy::setProperty(const QString & name, const QVariant & value)
66{
69 if (!t->updateListener()) return;
70
72 if (m_lockedProperties->lockedProperties()->hasProperty(name)) {
73 m_lockedProperties->lockedProperties()->setProperty(name, value);
75
76 if (!m_parent->hasProperty(name + "_previous")) {
77 // restores the dirty state on returns automagically
78 KisPaintOpSettings::UpdateListenerSP updateProxy = t->updateListener().toStrongRef();
80 m_parent->setProperty(name + "_previous", m_parent->getProperty(name));
81 m_parent->setPropertyNotSaved(name + "_previous");
82 }
83 return;
84 }
85 }
86
88}
89
90bool KisLockedPropertiesProxy::hasProperty(const QString &name) const
91{
94 if (!t->updateListener()) return m_parent->hasProperty(name);
95
97 m_lockedProperties->lockedProperties()->hasProperty(name)) ||
98 m_parent->hasProperty(name);
99
100}
101
103{
106 if (!t->updateListener()) return m_parent->getPropertiesKeys();
107
109
110 if (m_lockedProperties->lockedProperties() && !m_lockedProperties->lockedProperties()->getPropertiesKeys().isEmpty()) {
111 QSet<QString> properties(result.begin(), result.end());
112 auto lockedPropertiesKeys = m_lockedProperties->lockedProperties()->getPropertiesKeys();
113 QSet<QString> lockedProperties(lockedPropertiesKeys.begin(), lockedPropertiesKeys.end());
114 properties += lockedProperties;
115 result = QList<QString>(properties.begin(), properties.end()) ;
116 }
117
118 return result;
119}
120
122{
123 qDebug() << "=== KisLockedPropertiesProxy::dump() ===";
124 qDebug() << "parent properties:";
125 m_parent->dump();
126
128 qDebug() << "locked properties:";
130 }
131}
132
133
134
float value(const T *src, size_t ch)
const Params2D p
QVariant getProperty(const QString &name) const override
void setProperty(const QString &name, const QVariant &value) override
QList< QString > getPropertiesKeys() const override
KisLockedPropertiesProxy(KisPropertiesConfiguration *, KisLockedPropertiesSP)
KisPropertiesConfiguration * m_parent
bool hasProperty(const QString &name) const override
KisLockedPropertiesSP m_lockedProperties
static KisLockedPropertiesServer * instance()
KisPropertiesConfigurationSP lockedProperties()
#define KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(cond, val)
Definition kis_assert.h:129
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128
UpdateListenerWSP updateListener
void setPropertyNotSaved(const QString &name)
Marks a property that should not be saved by toXML.
virtual bool hasProperty(const QString &name) const
virtual void setProperty(const QString &name, const QVariant &value)
virtual bool getProperty(const QString &name, QVariant &value) const
virtual QList< QString > getPropertiesKeys() const