Skip to content

Commit

Permalink
sync: from linuxdeepin/dtkdeclarative
Browse files Browse the repository at this point in the history
Synchronize source files from linuxdeepin/dtkdeclarative.

Source-pull-request: linuxdeepin/dtkdeclarative#454
  • Loading branch information
deepin-ci-robot committed Jan 13, 2025
1 parent e46459b commit c461eab
Show file tree
Hide file tree
Showing 3 changed files with 214 additions and 0 deletions.
Binary file modified src/icons/bloom/item_checked.dci
Binary file not shown.
Binary file modified src/icons/bloom/item_unchecked.dci
Binary file not shown.
214 changes: 214 additions & 0 deletions toolGenerate/dconfig2cpp/dconf-example_meta.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,214 @@
/**
* This file is generated by dconfig2cpp.
* Command line arguments: ./dconfig2cpp -p ./dtkdeclarative/toolGenerate/dconfig2cpp ./dtkdeclarative/tests/data/dconf-example.meta.json
* Generation time: 2025-01-13T16:17:57
* JSON file version: 1.0
*
* WARNING: DO NOT MODIFY THIS FILE MANUALLY.
* If you need to change the content, please modify the dconfig2cpp tool.
*/

#ifndef DCONF-EXAMPLE_META_H
#define DCONF-EXAMPLE_META_H

#include <QThread>
#include <QVariant>
#include <QDebug>
#include <QAtomicPointer>
#include <QAtomicInteger>
#include <DConfig>

class dconf-example_meta : public QObject {
Q_OBJECT

Q_PROPERTY(QString key2 READ key2 WRITE setKey2 NOTIFY key2Changed)
Q_PROPERTY(QString key3 READ key3 WRITE setKey3 NOTIFY key3Changed)
public:
explicit dconf-example_meta(QThread *thread, const QString &appId, const QString &name, const QString &subpath, QObject *parent = nullptr)
: QObject(parent) {

if (!thread->isRunning()) {
qWarning() << QStringLiteral("Warning: The provided thread is not running.");
}
Q_ASSERT(QThread::currentThread() != thread);
auto worker = new QObject();
worker->moveToThread(thread);
QMetaObject::invokeMethod(worker, [=]() {
auto config = DTK_CORE_NAMESPACE::DConfig::create(appId, name, subpath, nullptr);
if (!config) {
qWarning() << QStringLiteral("Failed to create DConfig instance.");
worker->deleteLater();
return;
}
config->moveToThread(QThread::currentThread());
initialize(config);
worker->deleteLater();
});
}
explicit dconf-example_meta(QThread *thread, DTK_CORE_NAMESPACE::DConfigBackend *backend, const QString &appId, const QString &name, const QString &subpath, QObject *parent = nullptr)
: QObject(parent) {

if (!thread->isRunning()) {
qWarning() << QStringLiteral("Warning: The provided thread is not running.");
}
Q_ASSERT(QThread::currentThread() != thread);
auto worker = new QObject();
worker->moveToThread(thread);
QMetaObject::invokeMethod(worker, [=]() {
auto config = DTK_CORE_NAMESPACE::DConfig::create(backend, appId, name, subpath, nullptr);
if (!config) {
qWarning() << QStringLiteral("Failed to create DConfig instance.");
worker->deleteLater();
return;
}
config->moveToThread(QThread::currentThread());
initialize(config);
worker->deleteLater();
});
}
explicit dconf-example_meta(QThread *thread, const QString &name, const QString &subpath, QObject *parent = nullptr)
: QObject(parent) {

if (!thread->isRunning()) {
qWarning() << QStringLiteral("Warning: The provided thread is not running.");
}
Q_ASSERT(QThread::currentThread() != thread);
auto worker = new QObject();
worker->moveToThread(thread);
QMetaObject::invokeMethod(worker, [=]() {
auto config = DTK_CORE_NAMESPACE::DConfig::create(name, subpath, nullptr);
if (!config) {
qWarning() << QStringLiteral("Failed to create DConfig instance.");
worker->deleteLater();
return;
}
config->moveToThread(QThread::currentThread());
initialize(config);
worker->deleteLater();
});
}
explicit dconf-example_meta(QThread *thread, DTK_CORE_NAMESPACE::DConfigBackend *backend, const QString &name, const QString &subpath, QObject *parent = nullptr)
: QObject(parent) {

if (!thread->isRunning()) {
qWarning() << QStringLiteral("Warning: The provided thread is not running.");
}
Q_ASSERT(QThread::currentThread() != thread);
auto worker = new QObject();
worker->moveToThread(thread);
QMetaObject::invokeMethod(worker, [=]() {
auto config = DTK_CORE_NAMESPACE::DConfig::create(backend, name, subpath, nullptr);
if (!config) {
qWarning() << QStringLiteral("Failed to create DConfig instance.");
worker->deleteLater();
return;
}
config->moveToThread(QThread::currentThread());
initialize(config);
worker->deleteLater();
});
}
~dconf-example_meta() {
if (m_config.loadRelaxed()) {
m_config.loadRelaxed()->deleteLater();
}
}

QString key2() const {
return p_key2;
}
void setKey2(const QString &value) {
auto oldValue = p_key2;
p_key2 = value;
markPropertySet(0);
if (auto config = m_config.loadRelaxed()) {
QMetaObject::invokeMethod(config, [this, value]() {
m_config.loadRelaxed()->setValue(QStringLiteral("key2"), value);
});
}
if (p_key2 != oldValue) {
Q_EMIT key2Changed();
}
}
QString key3() const {
return p_key3;
}
void setKey3(const QString &value) {
auto oldValue = p_key3;
p_key3 = value;
markPropertySet(1);
if (auto config = m_config.loadRelaxed()) {
QMetaObject::invokeMethod(config, [this, value]() {
m_config.loadRelaxed()->setValue(QStringLiteral("key3"), value);
});
}
if (p_key3 != oldValue) {
Q_EMIT key3Changed();
}
}
Q_SIGNALS:
void key2Changed();
void key3Changed();
private:
void initialize(DTK_CORE_NAMESPACE::DConfig *config) {
Q_ASSERT(!m_config.loadRelaxed());
m_config.storeRelaxed(config);
if (testPropertySet(0)) {
config->setValue(QStringLiteral("key2"), QVariant::fromValue(p_key2));
} else {
updateValue(QStringLiteral("key2"), QVariant::fromValue(p_key2));
}
if (testPropertySet(1)) {
config->setValue(QStringLiteral("key3"), QVariant::fromValue(p_key3));
} else {
updateValue(QStringLiteral("key3"), QVariant::fromValue(p_key3));
}

connect(config, &DTK_CORE_NAMESPACE::DConfig::valueChanged, this, [this](const QString &key) {
updateValue(key);
}, Qt::DirectConnection);
}
void updateValue(const QString &key, const QVariant &fallback = QVariant()) {
Q_ASSERT(QThread::currentThread() == m_config.loadRelaxed()->thread());
const QVariant &value = m_config.loadRelaxed()->value(key, fallback);
if (key == QStringLiteral("key2")) {
auto newValue = qvariant_cast<QString>(value);
QMetaObject::invokeMethod(this, [this, newValue]() {
if (p_key2 != newValue) {
p_key2 = newValue;
Q_EMIT key2Changed();
}
});
return;
}
if (key == QStringLiteral("key3")) {
auto newValue = qvariant_cast<QString>(value);
QMetaObject::invokeMethod(this, [this, newValue]() {
if (p_key3 != newValue) {
p_key3 = newValue;
Q_EMIT key3Changed();
}
});
return;
}
}
inline void markPropertySet(const int index) {
if (index < 32) {
m_propertySetStatus0.fetchAndOrOrdered(1 << (index - 0));
return;
}
Q_UNREACHABLE();
}
inline bool testPropertySet(const int index) const {
if (index < 32) {
return (m_propertySetStatus0.loadRelaxed() & (1 << (index - 0)));
}
Q_UNREACHABLE();
}
QAtomicPointer<DTK_CORE_NAMESPACE::DConfig> m_config = nullptr;
QString p_key2 { QStringLiteral("key2") };
QString p_key3 { QStringLiteral("application") };
QAtomicInteger<quint32> m_propertySetStatus0 = 0;
};

#endif // DCONF-EXAMPLE_META_H

0 comments on commit c461eab

Please sign in to comment.