From 4837c9dd35e23ff8a08d063bc7a57fc03086ae20 Mon Sep 17 00:00:00 2001 From: haruyukilxz Date: Thu, 8 Nov 2018 11:39:26 +0800 Subject: [PATCH] feat: integrating plugins config files Change-Id: Id50d220be6c71fb26271634886abe5496efb3077 --- frame/controller/dockpluginscontroller.cpp | 23 ++++++++++--- frame/controller/dockpluginscontroller.h | 3 ++ interfaces/pluginproxyinterface.h | 12 +++++++ plugins/datetime/datetimeplugin.cpp | 18 +++++++--- plugins/datetime/datetimeplugin.h | 1 - plugins/shutdown/shutdownplugin.cpp | 19 ++++++---- plugins/shutdown/shutdownplugin.h | 1 - plugins/system-tray/systemtrayplugin.cpp | 40 ++++++++++++---------- plugins/system-tray/systemtrayplugin.h | 2 -- plugins/trash/trashplugin.cpp | 22 ++++++++---- plugins/trash/trashplugin.h | 1 - 11 files changed, 95 insertions(+), 47 deletions(-) diff --git a/frame/controller/dockpluginscontroller.cpp b/frame/controller/dockpluginscontroller.cpp index c410a3942..12ef95d25 100644 --- a/frame/controller/dockpluginscontroller.cpp +++ b/frame/controller/dockpluginscontroller.cpp @@ -30,10 +30,12 @@ #define API_VERSION "1.0" -DockPluginsController::DockPluginsController(DockItemController *itemControllerInter) - : QObject(itemControllerInter), - m_dbusDaemonInterface(QDBusConnection::sessionBus().interface()), - m_itemControllerInter(itemControllerInter) +DockPluginsController::DockPluginsController( + DockItemController *itemControllerInter) + : QObject(itemControllerInter) + , m_dbusDaemonInterface(QDBusConnection::sessionBus().interface()) + , m_itemControllerInter(itemControllerInter) + , m_pluginsSetting("deepin", "dde-dock") { qApp->installEventFilter(this); } @@ -219,3 +221,16 @@ PluginsItem *DockPluginsController::pluginItemAt(PluginsItemInterface * const it return m_pluginList[itemInter][itemKey]; } + +void DockPluginsController::saveValue(PluginsItemInterface *const itemInter, const QString &itemKey, const QVariant &value) { + m_pluginsSetting.beginGroup(itemInter->pluginName()); + m_pluginsSetting.setValue(itemKey, value); + m_pluginsSetting.endGroup(); +} + +const QVariant DockPluginsController::getValue(PluginsItemInterface *const itemInter, const QString &itemKey, const QVariant& failback) { + m_pluginsSetting.beginGroup(itemInter->pluginName()); + QVariant value { std::move(m_pluginsSetting.value(itemKey, failback)) }; + m_pluginsSetting.endGroup(); + return std::move(value); +} diff --git a/frame/controller/dockpluginscontroller.h b/frame/controller/dockpluginscontroller.h index bd6536a8c..bf180b61e 100644 --- a/frame/controller/dockpluginscontroller.h +++ b/frame/controller/dockpluginscontroller.h @@ -46,6 +46,8 @@ public: void itemUpdate(PluginsItemInterface * const itemInter, const QString &itemKey); void itemRemoved(PluginsItemInterface * const itemInter, const QString &itemKey); void requestContextMenu(PluginsItemInterface * const itemInter, const QString &itemKey); + void saveValue(PluginsItemInterface *const itemInter, const QString &itemKey, const QVariant &value); + const QVariant getValue(PluginsItemInterface *const itemInter, const QString &itemKey, const QVariant& failback = QVariant()); signals: void pluginItemInserted(PluginsItem *pluginItem) const; @@ -68,6 +70,7 @@ private: QDBusConnectionInterface *m_dbusDaemonInterface; QMap> m_pluginList; DockItemController *m_itemControllerInter; + QSettings m_pluginsSetting; }; #endif // DOCKPLUGINSCONTROLLER_H diff --git a/interfaces/pluginproxyinterface.h b/interfaces/pluginproxyinterface.h index 2e59072c7..a7235857e 100644 --- a/interfaces/pluginproxyinterface.h +++ b/interfaces/pluginproxyinterface.h @@ -62,6 +62,18 @@ public: /// request show context menu /// virtual void requestContextMenu(PluginsItemInterface * const itemInter, const QString &itemKey) = 0; + + /// + /// \brief saveValue + /// save module config to .config/deepin/dde-dock.conf + /// + virtual void saveValue(PluginsItemInterface * const itemInter, const QString &itemKey, const QVariant &value) = 0; + + /// + /// \brief getValue + /// return value from .config/deepin/dde-dock.conf + /// + virtual const QVariant getValue(PluginsItemInterface *const itemInter, const QString &itemKey, const QVariant& failback = QVariant()) = 0; }; #endif // PLUGINPROXYINTERFACE_H diff --git a/plugins/datetime/datetimeplugin.cpp b/plugins/datetime/datetimeplugin.cpp index f179f3826..373754fe4 100644 --- a/plugins/datetime/datetimeplugin.cpp +++ b/plugins/datetime/datetimeplugin.cpp @@ -30,8 +30,7 @@ DatetimePlugin::DatetimePlugin(QObject *parent) m_dateTipsLabel(new TipsWidget), - m_refershTimer(new QTimer(this)), - m_settings("deepin", "dde-dock-datetime") + m_refershTimer(new QTimer(this)) { m_dateTipsLabel->setObjectName("datetime"); @@ -60,6 +59,15 @@ void DatetimePlugin::init(PluginProxyInterface *proxyInter) { m_proxyInter = proxyInter; + // transfer config + QSettings settings("deepin", "dde-dock-datetime"); + if (QFile::exists(settings.fileName())) { + Dock::DisplayMode mode = displayMode(); + const QString key = QString("pos_%1").arg(mode); + proxyInter->saveValue(this, key, settings.value(key, mode == Dock::DisplayMode::Fashion ? 5 : -1)); + QFile::remove(settings.fileName()); + } + if (m_centralWidget->enabled()) m_proxyInter->itemAdded(this, QString()); } @@ -87,9 +95,9 @@ int DatetimePlugin::itemSortKey(const QString &itemKey) const QString key = QString("pos_%1").arg(mode); if (mode == Dock::DisplayMode::Fashion) { - return m_settings.value(key, 5).toInt(); + return m_proxyInter->getValue(this, key, 5).toInt(); } else { - return m_settings.value(key, -1).toInt(); + return m_proxyInter->getValue(this, key, -1).toInt(); } } @@ -98,7 +106,7 @@ void DatetimePlugin::setSortKey(const QString &itemKey, const int order) Q_UNUSED(itemKey); const QString key = QString("pos_%1").arg(displayMode()); - m_settings.setValue(key, order); + m_proxyInter->saveValue(this, key, order); } QWidget *DatetimePlugin::itemWidget(const QString &itemKey) diff --git a/plugins/datetime/datetimeplugin.h b/plugins/datetime/datetimeplugin.h index d355b5118..a8b946031 100644 --- a/plugins/datetime/datetimeplugin.h +++ b/plugins/datetime/datetimeplugin.h @@ -68,7 +68,6 @@ private: QTimer *m_refershTimer; QString m_currentTimeString; - QSettings m_settings; }; #endif // DATETIMEPLUGIN_H diff --git a/plugins/shutdown/shutdownplugin.cpp b/plugins/shutdown/shutdownplugin.cpp index fde6f62ec..a8b4bb116 100644 --- a/plugins/shutdown/shutdownplugin.cpp +++ b/plugins/shutdown/shutdownplugin.cpp @@ -31,7 +31,6 @@ ShutdownPlugin::ShutdownPlugin(QObject *parent) : QObject(parent), m_pluginLoaded(false), - m_settings("deepin", "dde-dock-shutdown"), m_tipsLabel(new TipsWidget) { m_tipsLabel->setText(tr("Shutdown")); @@ -66,6 +65,12 @@ void ShutdownPlugin::init(PluginProxyInterface *proxyInter) { m_proxyInter = proxyInter; + // transfer config + QSettings settings("deepin", "dde-dock-shutdown"); + if (QFile::exists(settings.fileName())) { + QFile::remove(settings.fileName()); + } + if (!pluginIsDisable()) { loadPlugin(); } @@ -73,7 +78,7 @@ void ShutdownPlugin::init(PluginProxyInterface *proxyInter) void ShutdownPlugin::pluginStateSwitched() { - m_settings.setValue(PLUGIN_STATE_KEY, !m_settings.value(PLUGIN_STATE_KEY, true).toBool()); + m_proxyInter->saveValue(this, PLUGIN_STATE_KEY, !m_proxyInter->getValue(this, PLUGIN_STATE_KEY, true).toBool()); if (pluginIsDisable()) { @@ -83,13 +88,13 @@ void ShutdownPlugin::pluginStateSwitched() loadPlugin(); return; } - m_proxyInter->itemAdded(this, QString()); + m_proxyInter->itemAdded(this, pluginName()); } } bool ShutdownPlugin::pluginIsDisable() { - return !m_settings.value(PLUGIN_STATE_KEY, true).toBool(); + return !m_proxyInter->getValue(this, PLUGIN_STATE_KEY, true).toBool(); } const QString ShutdownPlugin::itemCommand(const QString &itemKey) @@ -196,13 +201,13 @@ int ShutdownPlugin::itemSortKey(const QString &itemKey) //return m_settings.value(key, 4).toInt(); //} - return m_settings.value(key, 4).toInt(); + return m_proxyInter->getValue(this, key, 4).toInt(); } void ShutdownPlugin::setSortKey(const QString &itemKey, const int order) { const QString key = QString("pos_%1_%2").arg(itemKey).arg(displayMode()); - m_settings.setValue(key, order); + m_proxyInter->saveValue(this, key, order); } void ShutdownPlugin::requestContextMenu(const QString &itemKey) @@ -223,6 +228,6 @@ void ShutdownPlugin::loadPlugin() connect(m_shutdownWidget, &PluginWidget::requestContextMenu, this, &ShutdownPlugin::requestContextMenu); - m_proxyInter->itemAdded(this, QString()); + m_proxyInter->itemAdded(this, pluginName()); displayModeChanged(displayMode()); } diff --git a/plugins/shutdown/shutdownplugin.h b/plugins/shutdown/shutdownplugin.h index 153a0350b..c77453ee5 100644 --- a/plugins/shutdown/shutdownplugin.h +++ b/plugins/shutdown/shutdownplugin.h @@ -61,7 +61,6 @@ private: private: bool m_pluginLoaded; - QSettings m_settings; PluginWidget *m_shutdownWidget; TipsWidget *m_tipsLabel; diff --git a/plugins/system-tray/systemtrayplugin.cpp b/plugins/system-tray/systemtrayplugin.cpp index 75578bdc0..6df838496 100644 --- a/plugins/system-tray/systemtrayplugin.cpp +++ b/plugins/system-tray/systemtrayplugin.cpp @@ -39,9 +39,7 @@ SystemTrayPlugin::SystemTrayPlugin(QObject *parent) m_trayInter(new DBusTrayManager(this)), m_systemTraysLoader(new SystemTraysManager(this)), m_trayApplet(new TrayApplet), - m_tipsLabel(new TipsWidget), - - m_containerSettings(new QSettings("deepin", "dde-dock-tray")) + m_tipsLabel(new TipsWidget) { m_trayApplet->setObjectName("sys-tray"); m_fashionItem = new FashionTrayItem(position()); @@ -58,7 +56,15 @@ const QString SystemTrayPlugin::pluginName() const void SystemTrayPlugin::init(PluginProxyInterface *proxyInter) { - if (!m_containerSettings->value("enable", true).toBool()) { + // transfex config + QSettings settings("deepin", "dde-dock-shutdown"); + if (QFile::exists(settings.fileName())) { + proxyInter->saveValue(this, "enable", settings.value("enable", true)); + + QFile::remove(settings.fileName()); + } + + if (!proxyInter->getValue(this, "enable", true).toBool()) { qDebug() << "hide tray from config disable!!"; return; } @@ -93,7 +99,7 @@ void SystemTrayPlugin::init(PluginProxyInterface *proxyInter) void SystemTrayPlugin::displayModeChanged(const Dock::DisplayMode mode) { - if (!m_containerSettings->value("enable", true).toBool()) { + if (!m_proxyInter->getValue(this, "enable", true).toBool()) { return; } @@ -156,10 +162,10 @@ bool SystemTrayPlugin::itemAllowContainer(const QString &itemKey) bool SystemTrayPlugin::itemIsInContainer(const QString &itemKey) { const QString widKey = getWindowClass(XWindowTrayWidget::toWinId(itemKey)); - if (!widKey.isEmpty()) - return m_containerSettings->value(widKey, false).toBool(); - else - return m_containerSettings->value(itemKey, false).toBool(); + + return m_proxyInter + ->getValue(this, widKey.isEmpty() ? itemKey : widKey, false) + .toBool(); } int SystemTrayPlugin::itemSortKey(const QString &itemKey) @@ -167,26 +173,22 @@ int SystemTrayPlugin::itemSortKey(const QString &itemKey) Dock::DisplayMode mode = displayMode(); const QString key = QString("pos_%1_%2").arg(itemKey).arg(mode); - if (mode == Dock::DisplayMode::Fashion) { - return m_containerSettings->value(key, 3).toInt(); - } else { - return m_containerSettings->value(key, 1).toInt(); - } + return m_proxyInter + ->getValue(this, key, mode == Dock::DisplayMode::Fashion ? 3 : 1) + .toInt(); } void SystemTrayPlugin::setSortKey(const QString &itemKey, const int order) { const QString key = QString("pos_%1_%2").arg(itemKey).arg(displayMode()); - m_containerSettings->setValue(key, order); + m_proxyInter->saveValue(this, key, order); } void SystemTrayPlugin::setItemIsInContainer(const QString &itemKey, const bool container) { const QString widKey = getWindowClass(XWindowTrayWidget::toWinId(itemKey)); - if (widKey.isEmpty()) - m_containerSettings->setValue(itemKey, container); - else - m_containerSettings->setValue(widKey, container); + + m_proxyInter->saveValue(this, widKey.isEmpty() ? itemKey : widKey, container); } void SystemTrayPlugin::updateTipsContent() diff --git a/plugins/system-tray/systemtrayplugin.h b/plugins/system-tray/systemtrayplugin.h index e68622151..d7238ffa1 100644 --- a/plugins/system-tray/systemtrayplugin.h +++ b/plugins/system-tray/systemtrayplugin.h @@ -87,8 +87,6 @@ private: TrayApplet *m_trayApplet; TipsWidget *m_tipsLabel; - - QSettings *m_containerSettings; }; #endif // SYSTEMTRAYPLUGIN_H diff --git a/plugins/trash/trashplugin.cpp b/plugins/trash/trashplugin.cpp index 4efde69da..cd57345ee 100644 --- a/plugins/trash/trashplugin.cpp +++ b/plugins/trash/trashplugin.cpp @@ -33,8 +33,7 @@ DWIDGET_USE_NAMESPACE TrashPlugin::TrashPlugin(QObject *parent) : QObject(parent), m_trashWidget(new TrashWidget), - m_tipsLabel(new QLabel), - m_settings("deepin", "dde-dock-trash") + m_tipsLabel(new QLabel) { m_tipsLabel->setObjectName("trash"); m_tipsLabel->setStyleSheet("color:white;" @@ -50,6 +49,15 @@ const QString TrashPlugin::pluginName() const void TrashPlugin::init(PluginProxyInterface *proxyInter) { + // transfex config + QSettings settings("deepin", "dde-dock-trash"); + if (QFile::exists(settings.fileName())) { + const QString &key = QString("pos_%1_%2").arg(pluginName()).arg(displayMode()); + proxyInter->saveValue(this, key, settings.value(key)); + + QFile::remove(settings.fileName()); + } + // blumia: we are using i10n translation from DFM so... QString applicationName = qApp->applicationName(); qApp->setApplicationName("dde-file-manager"); @@ -121,24 +129,24 @@ void TrashPlugin::invokedMenuItem(const QString &itemKey, const QString &menuId, int TrashPlugin::itemSortKey(const QString &itemKey) { const QString &key = QString("pos_%1_%2").arg(itemKey).arg(displayMode()); - return m_settings.value(key, -1).toInt(); + return m_proxyInter->getValue(this, key, -1).toInt(); } void TrashPlugin::setSortKey(const QString &itemKey, const int order) { const QString &key = QString("pos_%1_%2").arg(itemKey).arg(displayMode()); - m_settings.setValue(key, order); + m_proxyInter->saveValue(this, key, order); } void TrashPlugin::displayModeChanged(const Dock::DisplayMode displayMode) { if (displayMode == Dock::Fashion) - m_proxyInter->itemAdded(this, QString()); + m_proxyInter->itemAdded(this, pluginName()); else - m_proxyInter->itemRemoved(this, QString()); + m_proxyInter->itemRemoved(this, pluginName()); } void TrashPlugin::showContextMenu() { - m_proxyInter->requestContextMenu(this, QString()); + m_proxyInter->requestContextMenu(this, pluginName()); } diff --git a/plugins/trash/trashplugin.h b/plugins/trash/trashplugin.h index d1c28fdad..4e17329ed 100644 --- a/plugins/trash/trashplugin.h +++ b/plugins/trash/trashplugin.h @@ -63,7 +63,6 @@ private: private: TrashWidget *m_trashWidget; QLabel *m_tipsLabel; - QSettings m_settings; }; #endif // TRASHPLUGIN_H