forked from openkylin/ukui-menu
setting增加线程同步功能
This commit is contained in:
parent
0e9ace9a5c
commit
c806406eab
|
@ -52,7 +52,7 @@ void GlobalSetting::initStyleSetting()
|
|||
|
||||
connect(settings, &QGSettings::changed, this, [this, settings] (const QString &key) {
|
||||
if (key == UKUI_STYLE_NAME_KEY) {
|
||||
m_cache.insert(StyleName, settings->get(key));
|
||||
updateData(StyleName, settings->get(key));
|
||||
Q_EMIT styleChanged(StyleName);
|
||||
}
|
||||
});
|
||||
|
@ -61,9 +61,16 @@ void GlobalSetting::initStyleSetting()
|
|||
|
||||
QVariant GlobalSetting::get(const GlobalSetting::Key& key)
|
||||
{
|
||||
QMutexLocker locker(&mutex);
|
||||
return m_cache.value(key);
|
||||
}
|
||||
|
||||
void GlobalSetting::updateData(const GlobalSetting::Key &key, const QVariant &value)
|
||||
{
|
||||
QMutexLocker locker(&mutex);
|
||||
m_cache.insert(key, value);
|
||||
}
|
||||
|
||||
MenuSetting *MenuSetting::instance()
|
||||
{
|
||||
static MenuSetting setting(nullptr);
|
||||
|
@ -98,11 +105,13 @@ void MenuSetting::initSettings()
|
|||
|
||||
QVariant MenuSetting::get(const QString &key)
|
||||
{
|
||||
QMutexLocker locker(&mutex);
|
||||
return m_cache.value(key, {});
|
||||
}
|
||||
|
||||
bool MenuSetting::set(const QString &key, const QVariant &value)
|
||||
{
|
||||
QMutexLocker locker(&mutex);
|
||||
if (m_gSettings) {
|
||||
m_gSettings->set(key, value);
|
||||
// m_cache.insert(key,value);
|
||||
|
@ -115,7 +124,9 @@ bool MenuSetting::set(const QString &key, const QVariant &value)
|
|||
|
||||
void MenuSetting::updateValue(const QString &key)
|
||||
{
|
||||
mutex.lock();
|
||||
m_cache.insert(key, m_gSettings->get(key));
|
||||
mutex.unlock();
|
||||
Q_EMIT changed(key);
|
||||
}
|
||||
|
||||
|
|
|
@ -22,6 +22,8 @@
|
|||
#include <QObject>
|
||||
#include <QGSettings>
|
||||
#include <QVariant>
|
||||
#include <QMutex>
|
||||
#include <QMutexLocker>
|
||||
|
||||
#define UKUI_STYLE_VALUE_DARK "ukui-dark"
|
||||
#define UKUI_STYLE_VALUE_LIGHT "ukui-light"
|
||||
|
@ -55,8 +57,10 @@ Q_SIGNALS:
|
|||
private:
|
||||
explicit GlobalSetting(QObject *parent = nullptr);
|
||||
void initStyleSetting();
|
||||
void updateData(const GlobalSetting::Key& key, const QVariant &value);
|
||||
|
||||
private:
|
||||
QMutex mutex;
|
||||
QMap<GlobalSetting::Key, QVariant> m_cache;
|
||||
};
|
||||
|
||||
|
@ -83,6 +87,7 @@ private:
|
|||
void initSettings();
|
||||
|
||||
private:
|
||||
QMutex mutex;
|
||||
QMap<QString, QVariant> m_cache;
|
||||
QGSettings *m_gSettings{nullptr};
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue