From e281f088aca366701e4fa39985ab9fa0860ec456 Mon Sep 17 00:00:00 2001 From: rekols Date: Tue, 6 Mar 2018 15:18:53 +0800 Subject: [PATCH] feat(plugins): keep order Change-Id: Iaa9dd11750999fca6faf2d3b1d3bbb60f6ba740b --- frame/controller/dockitemcontroller.cpp | 6 +++--- plugins/datetime/datetimeplugin.cpp | 15 +++++++++++++-- plugins/datetime/datetimeplugin.h | 5 ++++- plugins/keyboard-layout/keyboardplugin.h | 2 +- plugins/network/networkplugin.cpp | 12 ++++++++++++ plugins/network/networkplugin.h | 3 +++ plugins/shutdown/shutdownplugin.cpp | 12 ++++++++++++ plugins/shutdown/shutdownplugin.h | 3 +++ plugins/sound/soundplugin.cpp | 18 +++++++++++++++++- plugins/sound/soundplugin.h | 3 +++ plugins/system-tray/systemtrayplugin.cpp | 9 +++++++-- plugins/system-tray/systemtrayplugin.h | 1 + 12 files changed, 79 insertions(+), 10 deletions(-) diff --git a/frame/controller/dockitemcontroller.cpp b/frame/controller/dockitemcontroller.cpp index 8356f752b..898ddd722 100644 --- a/frame/controller/dockitemcontroller.cpp +++ b/frame/controller/dockitemcontroller.cpp @@ -308,15 +308,15 @@ void DockItemController::pluginItemInserted(PluginsItem *item) else { insertIndex = m_itemList.size(); - for (int i(firstPluginPosition); i != m_itemList.size(); ++i) + for (int i(firstPluginPosition + 1); i != m_itemList.size() + 1; ++i) { - PluginsItem *pItem = static_cast(m_itemList[i]); + PluginsItem *pItem = static_cast(m_itemList[i - 1]); Q_ASSERT(pItem); const int sortKey = pItem->itemSortKey(); if (sortKey != -1 && itemSortKey > sortKey) continue; - insertIndex = i; + insertIndex = i - 1; break; } } diff --git a/plugins/datetime/datetimeplugin.cpp b/plugins/datetime/datetimeplugin.cpp index 30f5dfc9d..7da363a89 100644 --- a/plugins/datetime/datetimeplugin.cpp +++ b/plugins/datetime/datetimeplugin.cpp @@ -22,13 +22,15 @@ #include "datetimeplugin.h" #include +#include DatetimePlugin::DatetimePlugin(QObject *parent) : QObject(parent), m_dateTipsLabel(new QLabel), - m_refershTimer(new QTimer(this)) + m_refershTimer(new QTimer(this)), + m_settings("deepin", "dde-dock-datetime") { m_dateTipsLabel->setObjectName("datetime"); m_dateTipsLabel->setStyleSheet("color:white;" @@ -82,7 +84,16 @@ int DatetimePlugin::itemSortKey(const QString &itemKey) { Q_UNUSED(itemKey); - return -1; + const QString key = QString("pos_%1").arg(displayMode()); + return m_settings.value(key, 0).toInt(); +} + +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); } QWidget *DatetimePlugin::itemWidget(const QString &itemKey) diff --git a/plugins/datetime/datetimeplugin.h b/plugins/datetime/datetimeplugin.h index 438af76e6..80d1b7426 100644 --- a/plugins/datetime/datetimeplugin.h +++ b/plugins/datetime/datetimeplugin.h @@ -27,6 +27,7 @@ #include #include +#include class DatetimePlugin : public QObject, PluginsItemInterface { @@ -45,7 +46,8 @@ public: bool pluginIsAllowDisable() override { return true; } bool pluginIsDisable() override; - int itemSortKey(const QString &itemKey) override; + int itemSortKey(const QString &itemKey); + void setSortKey(const QString &itemKey, const int order); QWidget *itemWidget(const QString &itemKey) override; QWidget *itemTipsWidget(const QString &itemKey) override; @@ -65,6 +67,7 @@ private: QTimer *m_refershTimer; QString m_currentTimeString; + QSettings m_settings; }; #endif // DATETIMEPLUGIN_H diff --git a/plugins/keyboard-layout/keyboardplugin.h b/plugins/keyboard-layout/keyboardplugin.h index 5e0c6e0b1..a7c684917 100644 --- a/plugins/keyboard-layout/keyboardplugin.h +++ b/plugins/keyboard-layout/keyboardplugin.h @@ -37,7 +37,7 @@ public: const QString pluginDisplayName() const override; void init(PluginProxyInterface *proxyInter) override; - QWidget *itemWidget(const QString &itemKey) override; + QWidget *itemWidget(const QString &itemKey); QWidget *itemTipsWidget(const QString &itemKey); private: diff --git a/plugins/network/networkplugin.cpp b/plugins/network/networkplugin.cpp index 04c1ef5d6..dab843b61 100644 --- a/plugins/network/networkplugin.cpp +++ b/plugins/network/networkplugin.cpp @@ -143,6 +143,18 @@ QWidget *NetworkPlugin::itemPopupApplet(const QString &itemKey) return nullptr; } +int NetworkPlugin::itemSortKey(const QString &itemKey) +{ + const QString key = QString("pos_%1_%2").arg(itemKey).arg(displayMode()); + return m_settings.value(key, 0).toInt(); +} + +void NetworkPlugin::setSortKey(const QString &itemKey, const int order) +{ + const QString key = QString("pos_%1_%2").arg(itemKey).arg(displayMode()); + m_settings.setValue(key, order); +} + void NetworkPlugin::deviceAdded(const NetworkDevice &device) { DeviceItem *item = nullptr; diff --git a/plugins/network/networkplugin.h b/plugins/network/networkplugin.h index 0eec7d939..03c1d052a 100644 --- a/plugins/network/networkplugin.h +++ b/plugins/network/networkplugin.h @@ -51,6 +51,9 @@ public: QWidget *itemTipsWidget(const QString &itemKey); QWidget *itemPopupApplet(const QString &itemKey); + int itemSortKey(const QString &itemKey); + void setSortKey(const QString &itemKey, const int order); + private slots: void deviceAdded(const NetworkDevice &device); void deviceRemoved(const NetworkDevice &device); diff --git a/plugins/shutdown/shutdownplugin.cpp b/plugins/shutdown/shutdownplugin.cpp index 52babdcda..9941a6964 100644 --- a/plugins/shutdown/shutdownplugin.cpp +++ b/plugins/shutdown/shutdownplugin.cpp @@ -228,6 +228,18 @@ void ShutdownPlugin::displayModeChanged(const Dock::DisplayMode displayMode) updateBatteryVisible(); } +int ShutdownPlugin::itemSortKey(const QString &itemKey) +{ + const QString key = QString("pos_%1_%2").arg(itemKey).arg(displayMode()); + return m_settings.value(key, 0).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); +} + void ShutdownPlugin::updateBatteryVisible() { const bool exist = !m_powerInter->batteryPercentage().isEmpty(); diff --git a/plugins/shutdown/shutdownplugin.h b/plugins/shutdown/shutdownplugin.h index b945238e1..8d804d784 100644 --- a/plugins/shutdown/shutdownplugin.h +++ b/plugins/shutdown/shutdownplugin.h @@ -56,6 +56,9 @@ public: void invokedMenuItem(const QString &itemKey, const QString &menuId, const bool checked) override; void displayModeChanged(const Dock::DisplayMode displayMode) override; + int itemSortKey(const QString &itemKey); + void setSortKey(const QString &itemKey, const int order); + private: void updateBatteryVisible(); void requestContextMenu(const QString &itemKey); diff --git a/plugins/sound/soundplugin.cpp b/plugins/sound/soundplugin.cpp index 29e63bcb2..2b8eee617 100644 --- a/plugins/sound/soundplugin.cpp +++ b/plugins/sound/soundplugin.cpp @@ -20,6 +20,7 @@ */ #include "soundplugin.h" +#include #define STATE_KEY "enable" @@ -28,7 +29,6 @@ SoundPlugin::SoundPlugin(QObject *parent) m_settings("deepin", "dde-dock-sound"), m_soundItem(nullptr) { - } const QString SoundPlugin::pluginName() const @@ -101,3 +101,19 @@ void SoundPlugin::invokedMenuItem(const QString &itemKey, const QString &menuId, m_soundItem->invokeMenuItem(menuId, checked); } + +int SoundPlugin::itemSortKey(const QString &itemKey) +{ + Q_UNUSED(itemKey); + + const QString key = QString("pos_%1").arg(displayMode()); + return m_settings.value(key, 0).toInt(); +} + +void SoundPlugin::setSortKey(const QString &itemKey, const int order) +{ + Q_UNUSED(itemKey); + + const QString key = QString("pos_%1").arg(displayMode()); + m_settings.setValue(key, order); +} diff --git a/plugins/sound/soundplugin.h b/plugins/sound/soundplugin.h index 21c0616c6..42ed3b555 100644 --- a/plugins/sound/soundplugin.h +++ b/plugins/sound/soundplugin.h @@ -50,6 +50,9 @@ public: const QString itemContextMenu(const QString &itemKey); void invokedMenuItem(const QString &itemKey, const QString &menuId, const bool checked); + int itemSortKey(const QString &itemKey); + void setSortKey(const QString &itemKey, const int order); + private: QSettings m_settings; SoundItem *m_soundItem; diff --git a/plugins/system-tray/systemtrayplugin.cpp b/plugins/system-tray/systemtrayplugin.cpp index dfa591a17..e890953a1 100644 --- a/plugins/system-tray/systemtrayplugin.cpp +++ b/plugins/system-tray/systemtrayplugin.cpp @@ -129,9 +129,14 @@ bool SystemTrayPlugin::itemIsInContainer(const QString &itemKey) int SystemTrayPlugin::itemSortKey(const QString &itemKey) { - Q_UNUSED(itemKey); + const QString key = QString("pos_%1_%2").arg(itemKey).arg(displayMode()); + return m_containerSettings->value(key, 0).toInt(); +} - return 0; +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); } void SystemTrayPlugin::setItemIsInContainer(const QString &itemKey, const bool container) diff --git a/plugins/system-tray/systemtrayplugin.h b/plugins/system-tray/systemtrayplugin.h index 868dc0ab4..01231a1ec 100644 --- a/plugins/system-tray/systemtrayplugin.h +++ b/plugins/system-tray/systemtrayplugin.h @@ -53,6 +53,7 @@ public: bool itemAllowContainer(const QString &itemKey) Q_DECL_OVERRIDE; bool itemIsInContainer(const QString &itemKey) Q_DECL_OVERRIDE; int itemSortKey(const QString &itemKey) Q_DECL_OVERRIDE; + void setSortKey(const QString &itemKey, const int order); void setItemIsInContainer(const QString &itemKey, const bool container) Q_DECL_OVERRIDE; private: