feat: refresh sort order and container after DeepinSync

Change-Id: Ia859fc01a3dad560687e6085bffd2caf74e4074a
This commit is contained in:
listenerri 2019-01-31 14:22:16 +08:00
parent 8ae30ec2d1
commit 040dca5e1a
Notes: gerrit 2019-02-01 09:49:41 +08:00
Verified+1: <jenkins@deepin.com>
Code-Review+2: listenerri <listenerri@gmail.com>
Submitted-by: listenerri <listenerri@gmail.com>
Submitted-at: Fri, 01 Feb 2019 09:49:41 +0800
Reviewed-on: https://cr.deepin.io/41550
Project: dde/dde-dock
Branch: refs/heads/dev/daemon-plugin-settings

View File

@ -44,7 +44,8 @@ AbstractPluginsController::AbstractPluginsController(QObject *parent)
}
void AbstractPluginsController::saveValue(PluginsItemInterface *const itemInter, const QString &key, const QVariant &value) {
refreshPluginSettings();
// is it necessary?
// refreshPluginSettings();
// save to local cache
QJsonObject localObject = m_pluginSettingsObject.value(itemInter->pluginName()).toObject();
@ -193,18 +194,24 @@ void AbstractPluginsController::refreshPluginSettings()
return;
}
const QJsonObject &settingsObject = QJsonDocument::fromJson(pluginSettings.toLocal8Bit()).object();
if (settingsObject.isEmpty()) {
const QJsonObject &pluginSettingsObject = QJsonDocument::fromJson(pluginSettings.toLocal8Bit()).object();
if (pluginSettingsObject.isEmpty()) {
return;
}
for (auto pluginsIt = settingsObject.constBegin(); pluginsIt != settingsObject.constEnd(); ++pluginsIt) {
// nothing changed
if (pluginSettingsObject == m_pluginSettingsObject) {
return;
}
for (auto pluginsIt = pluginSettingsObject.constBegin(); pluginsIt != pluginSettingsObject.constEnd(); ++pluginsIt) {
const QString &pluginName = pluginsIt.key();
const QJsonObject &settingsObject = pluginsIt.value().toObject();
QJsonObject newSettingsObject = m_pluginSettingsObject.value(pluginName).toObject();
for (auto settingsIt = settingsObject.constBegin(); settingsIt != settingsObject.constEnd(); ++settingsIt) {
newSettingsObject.insert(settingsIt.key(), settingsIt.value());
}
// TODO: remove not exists key-values
m_pluginSettingsObject.insert(pluginName, newSettingsObject);
}
@ -217,6 +224,18 @@ void AbstractPluginsController::refreshPluginSettings()
for (PluginsItemInterface *pluginInter : m_pluginsMap.keys()) {
pluginInter->pluginSettingsChanged();
}
// reload all plugin items for sort order or container
QMap<PluginsItemInterface *, QMap<QString, QObject *>> pluginsMapTemp = m_pluginsMap;
for (auto it = pluginsMapTemp.constBegin(); it != pluginsMapTemp.constEnd(); ++it) {
const QList<QString> &itemKeyList = it.value().keys();
for (auto key : itemKeyList) {
itemRemoved(it.key(), key);
}
for (auto key : itemKeyList) {
itemAdded(it.key(), key);
}
}
}
bool AbstractPluginsController::eventFilter(QObject *o, QEvent *e)