diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt
index 453c5e027..6567c8458 100644
--- a/plugins/CMakeLists.txt
+++ b/plugins/CMakeLists.txt
@@ -1,9 +1,9 @@
add_subdirectory("datetime")
#add_subdirectory("disk-mount")
-add_subdirectory("network")
-add_subdirectory("shutdown")
-add_subdirectory("sound")
+#add_subdirectory("network")
+#add_subdirectory("shutdown")
+#add_subdirectory("sound")
add_subdirectory("system-tray")
add_subdirectory("trash")
add_subdirectory("keyboard-layout")
diff --git a/plugins/system-tray/CMakeLists.txt b/plugins/system-tray/CMakeLists.txt
index eb5e15b95..dd97dd728 100644
--- a/plugins/system-tray/CMakeLists.txt
+++ b/plugins/system-tray/CMakeLists.txt
@@ -15,6 +15,8 @@ find_package(Qt5X11Extras REQUIRED)
find_package(DtkWidget REQUIRED)
pkg_check_modules(XCB_LIBS REQUIRED xcb-ewmh xcb xcb-image xcb-composite xtst xcb-icccm dbusmenu-qt5)
+pkg_check_modules(DDE-Network-Utils REQUIRED dde-network-utils)
+pkg_check_modules(DFrameworkDBus REQUIRED dframeworkdbus)
add_definitions("${QT_DEFINITIONS} -DQT_PLUGIN")
add_library(${PLUGIN_NAME} SHARED ${SRCS} system-tray.qrc)
@@ -22,6 +24,8 @@ set_target_properties(${PLUGIN_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ../)
target_include_directories(${PLUGIN_NAME} PUBLIC ${DtkWidget_INCLUDE_DIRS}
${Qt5DBus_INCLUDE_DIRS}
${XCB_LIBS_INCLUDE_DIRS}
+ ${DDE-Network-Utils_INCLUDE_DIRS}
+ ${DFrameworkDBus_INCLUDE_DIRS}
../../interfaces)
target_link_libraries(${PLUGIN_NAME} PRIVATE
${DtkWidget_LIBRARIES}
@@ -30,6 +34,8 @@ target_link_libraries(${PLUGIN_NAME} PRIVATE
${Qt5DBus_LIBRARIES}
${Qt5Svg_LIBRARIES}
${XCB_LIBS_LIBRARIES}
+ ${DDE-Network-Utils_LIBRARIES}
+ ${DFrameworkDBus_LIBRARIES}
)
install(TARGETS ${PLUGIN_NAME} LIBRARY DESTINATION lib/dde-dock/plugins)
diff --git a/plugins/system-tray/abstracttraywidget.h b/plugins/system-tray/abstracttraywidget.h
index a4368eb6f..9e946e92c 100644
--- a/plugins/system-tray/abstracttraywidget.h
+++ b/plugins/system-tray/abstracttraywidget.h
@@ -33,7 +33,7 @@ public:
virtual void setActive(const bool active) = 0;
virtual void updateIcon() = 0;
- virtual void sendClick(uint8_t, int, int) = 0;
+ virtual void sendClick(uint8_t mouseButton, int x, int y) = 0;
virtual const QImage trayImage() = 0;
Q_SIGNALS:
diff --git a/plugins/system-tray/fashiontrayitem.cpp b/plugins/system-tray/fashiontrayitem.cpp
index a63f5d615..afeda4c60 100644
--- a/plugins/system-tray/fashiontrayitem.cpp
+++ b/plugins/system-tray/fashiontrayitem.cpp
@@ -35,8 +35,9 @@ FashionTrayItem::FashionTrayItem(Dock::Position pos, QWidget *parent)
m_trayBoxLayout(new QBoxLayout(QBoxLayout::Direction::LeftToRight, this)),
m_leftSpliter(new QLabel(this)),
m_rightSpliter(new QLabel(this)),
- m_controlWidget(new FashionTrayControlWidget(m_dockPosistion, this)),
- m_currentAttentionTray(nullptr)
+ m_controlWidget(new FashionTrayControlWidget(pos, this)),
+ m_currentAttentionTray(nullptr),
+ m_dockPosistion(pos)
{
m_leftSpliter->setStyleSheet("background-color: rgba(255, 255, 255, 0.1);");
m_rightSpliter->setStyleSheet("background-color: rgba(255, 255, 255, 0.1);");
diff --git a/plugins/system-tray/system-tray.qrc b/plugins/system-tray/system-tray.qrc
index a63ceafd1..18a81354e 100644
--- a/plugins/system-tray/system-tray.qrc
+++ b/plugins/system-tray/system-tray.qrc
@@ -5,5 +5,6 @@
resources/arrow_down_dark.svg
resources/arrow_right_dark.svg
resources/arrow_up_light.svg
+ system-trays/shutdown/resources/icons/normal.svg
diff --git a/plugins/system-tray/system-trays/abstracttrayloader.cpp b/plugins/system-tray/system-trays/abstracttrayloader.cpp
new file mode 100644
index 000000000..db3c0bd16
--- /dev/null
+++ b/plugins/system-tray/system-trays/abstracttrayloader.cpp
@@ -0,0 +1,42 @@
+#include "abstracttrayloader.h"
+
+#include
+
+AbstractTrayLoader::AbstractTrayLoader(const QString &waitService, QObject *parent)
+ : QObject(parent),
+ m_dbusDaemonInterface(QDBusConnection::sessionBus().interface()),
+ m_waitingService(waitService)
+{
+}
+
+bool AbstractTrayLoader::serviceExist()
+{
+ bool exist = m_dbusDaemonInterface->isServiceRegistered(m_waitingService).value();
+
+ if (!exist) {
+ qDebug() << m_waitingService << "daemon has not started";
+ }
+
+ return exist;
+}
+
+void AbstractTrayLoader::waitServiceForLoad()
+{
+ connect(m_dbusDaemonInterface, &QDBusConnectionInterface::serviceOwnerChanged, this, &AbstractTrayLoader::onServiceOwnerChanged, Qt::UniqueConnection);
+}
+
+void AbstractTrayLoader::onServiceOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOwner)
+{
+ Q_UNUSED(oldOwner);
+
+ if (m_waitingService.isEmpty() || newOwner.isEmpty()) {
+ return;
+ }
+
+ if (m_waitingService == name) {
+ qDebug() << m_waitingService << "daemon started, load tray and disconnect";
+ load();
+ disconnect(m_dbusDaemonInterface);
+ m_waitingService = QString();
+ }
+}
diff --git a/plugins/system-tray/system-trays/abstracttrayloader.h b/plugins/system-tray/system-trays/abstracttrayloader.h
new file mode 100644
index 000000000..aae3b61bb
--- /dev/null
+++ b/plugins/system-tray/system-trays/abstracttrayloader.h
@@ -0,0 +1,36 @@
+#ifndef ABSTRACTTRAYLOADER_H
+#define ABSTRACTTRAYLOADER_H
+
+#include "abstracttraywidget.h"
+
+#include
+#include
+
+class AbstractTrayLoader : public QObject
+{
+ Q_OBJECT
+public:
+ explicit AbstractTrayLoader(const QString &waitService, QObject *parent = nullptr);
+
+Q_SIGNALS:
+ void systemTrayAdded(const QString &itemKey, AbstractTrayWidget *trayWidget);
+ void systemTrayRemoved(const QString &itemKey);
+
+public Q_SLOTS:
+ virtual void load() = 0;
+
+public:
+ inline bool waitService() { return !m_waitingService.isEmpty(); }
+ bool serviceExist();
+ void waitServiceForLoad();
+
+private Q_SLOTS:
+ void onServiceOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOwner);
+
+private:
+ QDBusConnectionInterface *m_dbusDaemonInterface;
+
+ QString m_waitingService;
+};
+
+#endif // ABSTRACTTRAYLOADER_H
diff --git a/plugins/network/CMakeLists.txt b/plugins/system-tray/system-trays/network/CMakeLists.txt
similarity index 100%
rename from plugins/network/CMakeLists.txt
rename to plugins/system-tray/system-trays/network/CMakeLists.txt
diff --git a/plugins/system-tray/system-trays/network/item/abstractnetworktraywidget.cpp b/plugins/system-tray/system-trays/network/item/abstractnetworktraywidget.cpp
new file mode 100644
index 000000000..c34b8c89c
--- /dev/null
+++ b/plugins/system-tray/system-trays/network/item/abstractnetworktraywidget.cpp
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd.
+ *
+ * Author: sbw
+ *
+ * Maintainer: sbw
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include "abstractnetworktraywidget.h"
+
+#include
+#include
+
+using namespace dde::network;
+
+AbstractNetworkTrayWidget::AbstractNetworkTrayWidget(dde::network::NetworkDevice *device, QWidget *parent)
+ : AbstractTrayWidget(parent),
+ m_device(device),
+ m_path(device->path())
+{
+}
+
+QSize AbstractNetworkTrayWidget::sizeHint() const
+{
+ return QSize(26, 26);
+}
+
+const QString AbstractNetworkTrayWidget::itemContextMenu()
+{
+ QList items;
+ items.reserve(2);
+
+ QMap enable;
+ enable["itemId"] = "enable";
+ if (!m_device->enabled())
+ enable["itemText"] = tr("Enable network");
+ else
+ enable["itemText"] = tr("Disable network");
+ enable["isActive"] = true;
+ items.push_back(enable);
+
+ QMap settings;
+ settings["itemId"] = "settings";
+ settings["itemText"] = tr("Network settings");
+ settings["isActive"] = true;
+ items.push_back(settings);
+
+ QMap menu;
+ menu["items"] = items;
+ menu["checkableMenu"] = false;
+ menu["singleCheck"] = false;
+
+ return QJsonDocument::fromVariant(menu).toJson();
+}
+
+void AbstractNetworkTrayWidget::invokeMenuItem(const QString &menuId)
+{
+ if (menuId == "settings")
+ //QProcess::startDetached("dbus-send --print-reply --dest=com.deepin.dde.ControlCenter /com/deepin/dde/ControlCenter com.deepin.dde.ControlCenter.ShowModule \"string:network\"");
+ DDBusSender()
+ .service("com.deepin.dde.ControlCenter")
+ .interface("com.deepin.dde.ControlCenter")
+ .path("/com/deepin/dde/ControlCenter")
+ .method("ShowModule")
+ .arg(QString("network"))
+ .call();
+
+ else if (menuId == "enable")
+ Q_EMIT requestSetDeviceEnable(m_path, !m_device->enabled());
+}
diff --git a/plugins/system-tray/system-trays/network/item/abstractnetworktraywidget.h b/plugins/system-tray/system-trays/network/item/abstractnetworktraywidget.h
new file mode 100644
index 000000000..7662b89f3
--- /dev/null
+++ b/plugins/system-tray/system-trays/network/item/abstractnetworktraywidget.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd.
+ *
+ * Author: sbw
+ *
+ * Maintainer: sbw
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#ifndef ABSTRACTNETWORKTRAYWIDGET_H
+#define ABSTRACTNETWORKTRAYWIDGET_H
+
+#include "abstracttraywidget.h"
+
+#include
+
+#include
+
+class AbstractNetworkTrayWidget : public AbstractTrayWidget
+{
+ Q_OBJECT
+
+public:
+ explicit AbstractNetworkTrayWidget(dde::network::NetworkDevice *device, QWidget *parent = nullptr);
+
+public:
+ const QString &path() const { return m_path; }
+ inline const dde::network::NetworkDevice * device() { return m_device; }
+
+ virtual const QString itemContextMenu();
+ virtual void invokeMenuItem(const QString &menuId);
+
+Q_SIGNALS:
+ void requestSetDeviceEnable(const QString &path, const bool enable) const;
+
+protected:
+ QSize sizeHint() const Q_DECL_OVERRIDE;
+
+protected:
+ dde::network::NetworkDevice *m_device;
+
+private:
+ QString m_path;
+};
+
+#endif // ABSTRACTNETWORKTRAYWIDGET_H
diff --git a/plugins/network/item/applet/accesspoint.cpp b/plugins/system-tray/system-trays/network/item/applet/accesspoint.cpp
similarity index 100%
rename from plugins/network/item/applet/accesspoint.cpp
rename to plugins/system-tray/system-trays/network/item/applet/accesspoint.cpp
diff --git a/plugins/network/item/applet/accesspoint.h b/plugins/system-tray/system-trays/network/item/applet/accesspoint.h
similarity index 100%
rename from plugins/network/item/applet/accesspoint.h
rename to plugins/system-tray/system-trays/network/item/applet/accesspoint.h
diff --git a/plugins/network/item/applet/accesspointwidget.cpp b/plugins/system-tray/system-trays/network/item/applet/accesspointwidget.cpp
similarity index 100%
rename from plugins/network/item/applet/accesspointwidget.cpp
rename to plugins/system-tray/system-trays/network/item/applet/accesspointwidget.cpp
diff --git a/plugins/network/item/applet/accesspointwidget.h b/plugins/system-tray/system-trays/network/item/applet/accesspointwidget.h
similarity index 100%
rename from plugins/network/item/applet/accesspointwidget.h
rename to plugins/system-tray/system-trays/network/item/applet/accesspointwidget.h
diff --git a/plugins/network/item/applet/devicecontrolwidget.cpp b/plugins/system-tray/system-trays/network/item/applet/devicecontrolwidget.cpp
similarity index 100%
rename from plugins/network/item/applet/devicecontrolwidget.cpp
rename to plugins/system-tray/system-trays/network/item/applet/devicecontrolwidget.cpp
diff --git a/plugins/network/item/applet/devicecontrolwidget.h b/plugins/system-tray/system-trays/network/item/applet/devicecontrolwidget.h
similarity index 100%
rename from plugins/network/item/applet/devicecontrolwidget.h
rename to plugins/system-tray/system-trays/network/item/applet/devicecontrolwidget.h
diff --git a/plugins/network/item/applet/horizontalseperator.cpp b/plugins/system-tray/system-trays/network/item/applet/horizontalseperator.cpp
similarity index 100%
rename from plugins/network/item/applet/horizontalseperator.cpp
rename to plugins/system-tray/system-trays/network/item/applet/horizontalseperator.cpp
diff --git a/plugins/network/item/applet/horizontalseperator.h b/plugins/system-tray/system-trays/network/item/applet/horizontalseperator.h
similarity index 100%
rename from plugins/network/item/applet/horizontalseperator.h
rename to plugins/system-tray/system-trays/network/item/applet/horizontalseperator.h
diff --git a/plugins/network/item/applet/wirelesslist.cpp b/plugins/system-tray/system-trays/network/item/applet/wirelesslist.cpp
similarity index 100%
rename from plugins/network/item/applet/wirelesslist.cpp
rename to plugins/system-tray/system-trays/network/item/applet/wirelesslist.cpp
diff --git a/plugins/network/item/applet/wirelesslist.h b/plugins/system-tray/system-trays/network/item/applet/wirelesslist.h
similarity index 100%
rename from plugins/network/item/applet/wirelesslist.h
rename to plugins/system-tray/system-trays/network/item/applet/wirelesslist.h
diff --git a/plugins/network/item/deviceitem.cpp b/plugins/system-tray/system-trays/network/item/deviceitem.cpp
similarity index 100%
rename from plugins/network/item/deviceitem.cpp
rename to plugins/system-tray/system-trays/network/item/deviceitem.cpp
diff --git a/plugins/network/item/deviceitem.h b/plugins/system-tray/system-trays/network/item/deviceitem.h
similarity index 95%
rename from plugins/network/item/deviceitem.h
rename to plugins/system-tray/system-trays/network/item/deviceitem.h
index 81ba295b2..8c1120081 100644
--- a/plugins/network/item/deviceitem.h
+++ b/plugins/system-tray/system-trays/network/item/deviceitem.h
@@ -35,7 +35,7 @@ public:
const QString &path() const { return m_path; }
- const dde::network::NetworkDevice * device() { return m_device; };
+ inline const dde::network::NetworkDevice * device() { return m_device; }
virtual void refreshIcon() = 0;
virtual const QString itemCommand() const;
diff --git a/plugins/network/item/wireditem.cpp b/plugins/system-tray/system-trays/network/item/wireditem.cpp
similarity index 99%
rename from plugins/network/item/wireditem.cpp
rename to plugins/system-tray/system-trays/network/item/wireditem.cpp
index 6fe30c878..e34dca2f1 100644
--- a/plugins/network/item/wireditem.cpp
+++ b/plugins/system-tray/system-trays/network/item/wireditem.cpp
@@ -22,7 +22,7 @@
#include "constants.h"
#include "wireditem.h"
-#include "util/imageutil.h"
+#include "../util/imageutil.h"
#include "../widgets/tipswidget.h"
#include
diff --git a/plugins/network/item/wireditem.h b/plugins/system-tray/system-trays/network/item/wireditem.h
similarity index 100%
rename from plugins/network/item/wireditem.h
rename to plugins/system-tray/system-trays/network/item/wireditem.h
diff --git a/plugins/system-tray/system-trays/network/item/wiredtraywidget.cpp b/plugins/system-tray/system-trays/network/item/wiredtraywidget.cpp
new file mode 100644
index 000000000..a405f5690
--- /dev/null
+++ b/plugins/system-tray/system-trays/network/item/wiredtraywidget.cpp
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd.
+ *
+ * Author: sbw
+ *
+ * Maintainer: sbw
+ * listenerri
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include "wiredtraywidget.h"
+#include "constants.h"
+#include "../util/imageutil.h"
+#include "../widgets/tipswidget.h"
+
+#include
+#include
+#include
+#include
+
+using namespace dde::network;
+
+WiredTrayWidget::WiredTrayWidget(WiredDevice *device, QWidget *parent)
+ : AbstractNetworkTrayWidget(device, parent),
+
+ m_itemTips(new TipsWidget(this)),
+ m_delayTimer(new QTimer(this))
+{
+ m_delayTimer->setSingleShot(false);
+ m_delayTimer->setInterval(200);
+
+ m_itemTips->setObjectName("wired-" + m_device->path());
+ m_itemTips->setVisible(false);
+
+ connect(m_delayTimer, &QTimer::timeout, this, &WiredTrayWidget::updateIcon);
+ connect(m_device, static_cast(&NetworkDevice::statusChanged),
+ m_delayTimer, static_cast(&QTimer::start));
+}
+
+void WiredTrayWidget::setActive(const bool active)
+{
+
+}
+
+void WiredTrayWidget::updateIcon()
+{
+ QString iconName = "network-";
+ NetworkDevice::DeviceStatus devState = m_device->status();
+ if (devState != NetworkDevice::Activated)
+ {
+ if (devState < NetworkDevice::Disconnected)
+ iconName.append("error");
+ else
+ iconName.append("offline");
+ } else {
+ if (devState >= NetworkDevice::Prepare && devState <= NetworkDevice::Secondaries) {
+ m_delayTimer->start();
+ const quint64 index = QDateTime::currentMSecsSinceEpoch() / 200;
+ const int num = (index % 5) + 1;
+ m_icon = QPixmap(QString(":/wired/resources/wired/network-wired-symbolic-connecting%1.svg").arg(num));
+ update();
+ return;
+ }
+
+ if (devState == NetworkDevice::Activated)
+ iconName.append("online");
+ else
+ iconName.append("idle");
+ }
+
+ m_delayTimer->stop();
+
+ iconName.append("-symbolic");
+
+ const auto ratio = qApp->devicePixelRatio();
+ const int size = 16;
+ m_icon = QIcon::fromTheme(iconName).pixmap(size * ratio, size * ratio);
+ m_icon.setDevicePixelRatio(ratio);
+ update();
+}
+
+void WiredTrayWidget::sendClick(uint8_t mouseButton, int x, int y)
+{
+
+}
+
+const QImage WiredTrayWidget::trayImage()
+{
+ return m_icon.toImage();
+}
+
+QWidget *WiredTrayWidget::itemTips()
+{
+ m_itemTips->setText(tr("Unknown"));
+
+ do {
+ if (m_device->status() != NetworkDevice::Activated)
+ {
+ m_itemTips->setText(tr("No Network"));
+ break;
+ }
+
+ const QJsonObject info = static_cast(m_device)->activeConnection();
+ if (!info.contains("Ip4"))
+ break;
+ const QJsonObject ipv4 = info.value("Ip4").toObject();
+ if (!ipv4.contains("Address"))
+ break;
+ m_itemTips->setText(tr("Wired connection: %1").arg(ipv4.value("Address").toString()));
+ } while (false);
+
+ return m_itemTips;
+}
+
+const QString WiredTrayWidget::itemCommand() const
+{
+ return "dbus-send --print-reply --dest=com.deepin.dde.ControlCenter /com/deepin/dde/ControlCenter com.deepin.dde.ControlCenter.ShowModule \"string:network\"";
+}
+
+void WiredTrayWidget::paintEvent(QPaintEvent *e)
+{
+ QWidget::paintEvent(e);
+
+ QPainter painter(this);
+ const auto ratio = qApp->devicePixelRatio();
+ const int x = rect().center().x() - m_icon.rect().center().x() / ratio;
+ const int y = rect().center().y() - m_icon.rect().center().y() / ratio;
+ painter.drawPixmap(x, y, m_icon);
+}
+
+void WiredTrayWidget::resizeEvent(QResizeEvent *e)
+{
+ AbstractNetworkTrayWidget::resizeEvent(e);
+
+ m_delayTimer->start();
+}
diff --git a/plugins/system-tray/system-trays/network/item/wiredtraywidget.h b/plugins/system-tray/system-trays/network/item/wiredtraywidget.h
new file mode 100644
index 000000000..afaab24f4
--- /dev/null
+++ b/plugins/system-tray/system-trays/network/item/wiredtraywidget.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd.
+ *
+ * Author: sbw
+ *
+ * Maintainer: sbw
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#ifndef WIREDTRAYWIDGET_H
+#define WIREDTRAYWIDGET_H
+
+#include "abstractnetworktraywidget.h"
+
+#include
+#include
+#include
+
+#include
+
+class TipsWidget;
+class WiredTrayWidget : public AbstractNetworkTrayWidget
+{
+ Q_OBJECT
+
+public:
+ explicit WiredTrayWidget(dde::network::WiredDevice *device, QWidget *parent = nullptr);
+
+public:
+ void setActive(const bool active) Q_DECL_OVERRIDE;
+ void updateIcon() Q_DECL_OVERRIDE;
+ void sendClick(uint8_t mouseButton, int x, int y) Q_DECL_OVERRIDE;
+ const QImage trayImage() Q_DECL_OVERRIDE;
+
+ QWidget *itemTips();
+ const QString itemCommand() const;
+
+protected:
+ void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE;
+ void resizeEvent(QResizeEvent *e) Q_DECL_OVERRIDE;
+
+private:
+ QPixmap m_icon;
+
+ TipsWidget *m_itemTips;
+ QTimer *m_delayTimer;
+};
+
+#endif // WIREDTRAYWIDGET_H
diff --git a/plugins/network/item/wirelessitem.cpp b/plugins/system-tray/system-trays/network/item/wirelessitem.cpp
similarity index 99%
rename from plugins/network/item/wirelessitem.cpp
rename to plugins/system-tray/system-trays/network/item/wirelessitem.cpp
index 28f844d03..8be547545 100644
--- a/plugins/network/item/wirelessitem.cpp
+++ b/plugins/system-tray/system-trays/network/item/wirelessitem.cpp
@@ -20,7 +20,7 @@
*/
#include "wirelessitem.h"
-#include "util/imageutil.h"
+#include "../util/imageutil.h"
#include "../widgets/tipswidget.h"
#include
diff --git a/plugins/network/item/wirelessitem.h b/plugins/system-tray/system-trays/network/item/wirelessitem.h
similarity index 100%
rename from plugins/network/item/wirelessitem.h
rename to plugins/system-tray/system-trays/network/item/wirelessitem.h
diff --git a/plugins/system-tray/system-trays/network/item/wirelesstraywidget.cpp b/plugins/system-tray/system-trays/network/item/wirelesstraywidget.cpp
new file mode 100644
index 000000000..709b42330
--- /dev/null
+++ b/plugins/system-tray/system-trays/network/item/wirelesstraywidget.cpp
@@ -0,0 +1,240 @@
+/*
+ * Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd.
+ *
+ * Author: sbw
+ *
+ * Maintainer: sbw
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include "wirelesstraywidget.h"
+#include "../util/imageutil.h"
+#include "../widgets/tipswidget.h"
+
+#include
+#include
+#include
+#include
+
+using namespace dde::network;
+
+WirelessTrayWidget::WirelessTrayWidget(WirelessDevice *device, QWidget *parent)
+ : AbstractNetworkTrayWidget(device, parent),
+ m_refershTimer(new QTimer(this)),
+ m_wirelessApplet(new QWidget),
+ m_wirelessPopup(new TipsWidget),
+ m_APList(nullptr),
+ m_reloadIcon(false)
+{
+ m_refershTimer->setSingleShot(false);
+ m_refershTimer->setInterval(100);
+
+ m_wirelessApplet->setVisible(false);
+ m_wirelessPopup->setObjectName("wireless-" + m_device->path());
+ m_wirelessPopup->setVisible(false);
+
+ connect(m_device, static_cast(&NetworkDevice::statusChanged), m_refershTimer, static_cast(&QTimer::start));
+ connect(static_cast(m_device), &WirelessDevice::activeApInfoChanged, m_refershTimer, static_cast(&QTimer::start));
+ connect(static_cast(m_device), &WirelessDevice::activeConnectionChanged, m_refershTimer, static_cast(&QTimer::start));
+ connect(m_refershTimer, &QTimer::timeout, [=] {
+ WirelessDevice *dev = static_cast(m_device);
+ // the status is Activated and activeApInfo is empty if the hotspot status of this wireless device is enabled
+ if (m_device->status() == NetworkDevice::Activated && dev->activeApInfo().isEmpty() && !dev->hotspotEnabled()) {
+ Q_EMIT queryActiveConnInfo();
+ return;
+ }
+ updateIcon();
+ });
+
+ QMetaObject::invokeMethod(this, "init", Qt::QueuedConnection);
+}
+
+WirelessTrayWidget::~WirelessTrayWidget()
+{
+ m_APList->deleteLater();
+ m_APList->controlPanel()->deleteLater();
+}
+
+void WirelessTrayWidget::setActive(const bool active)
+{
+
+}
+
+void WirelessTrayWidget::updateIcon()
+{
+ QString type;
+
+ const auto state = m_device->status();
+ if (state <= NetworkDevice::Disconnected) {
+ type = "disconnect";
+ m_refershTimer->stop();
+ } else {
+ int strength = 0;
+ if (state == NetworkDevice::Activated) {
+ const auto &activeApInfo = static_cast(m_device)->activeApInfo();
+ if (!activeApInfo.isEmpty()) {
+ strength = activeApInfo.value("Strength").toInt();
+ m_refershTimer->stop();
+ }
+ } else {
+ strength = QTime::currentTime().msec() / 10 % 100;
+ if (!m_refershTimer->isActive())
+ m_refershTimer->start();
+ }
+
+ if (strength == 100)
+ type = "80";
+ else if (strength < 20)
+ type = "0";
+ else
+ type = QString::number(strength / 10 & ~0x1) + "0";
+ }
+
+ const QString key = QString("wireless-%1%2")
+ .arg(type)
+ .arg("-symbolic");
+
+ const auto ratio = qApp->devicePixelRatio();
+ m_reloadIcon = true;
+ m_pixmap = cachedPix(key, 16 * ratio);
+ m_pixmap.setDevicePixelRatio(ratio);
+
+ update();
+}
+
+void WirelessTrayWidget::sendClick(uint8_t mouseButton, int x, int y)
+{
+
+}
+
+const QImage WirelessTrayWidget::trayImage()
+{
+ return m_pixmap.toImage();
+}
+
+QWidget *WirelessTrayWidget::itemApplet()
+{
+ return m_wirelessApplet;
+}
+
+QWidget *WirelessTrayWidget::itemTips()
+{
+ const NetworkDevice::DeviceStatus stat = m_device->status();
+
+ m_wirelessPopup->setText(tr("No Network"));
+
+ if (stat == NetworkDevice::Activated)
+ {
+ const QJsonObject obj = static_cast(m_device)->activeConnectionInfo();
+ if (obj.contains("Ip4"))
+ {
+ const QJsonObject ip4 = obj["Ip4"].toObject();
+ if (ip4.contains("Address"))
+ {
+ m_wirelessPopup->setText(tr("Wireless Connection: %1").arg(ip4["Address"].toString()));
+ }
+ }
+ }
+
+ return m_wirelessPopup;
+}
+
+void WirelessTrayWidget::onNeedSecrets(const QString &info)
+{
+ m_APList->onNeedSecrets(info);
+}
+
+void WirelessTrayWidget::onNeedSecretsFinished(const QString &info0, const QString &info1)
+{
+ m_APList->onNeedSecretsFinished(info0, info1);
+}
+
+void WirelessTrayWidget::setDeviceInfo(const int index)
+{
+ m_APList->setDeviceInfo(index);
+}
+
+bool WirelessTrayWidget::eventFilter(QObject *o, QEvent *e)
+{
+ if (o == m_APList && e->type() == QEvent::Resize)
+ QMetaObject::invokeMethod(this, "adjustHeight", Qt::QueuedConnection);
+ if (o == m_APList && e->type() == QEvent::Show)
+ Q_EMIT requestWirelessScan();
+
+ return false;
+}
+
+void WirelessTrayWidget::paintEvent(QPaintEvent *e)
+{
+ AbstractNetworkTrayWidget::paintEvent(e);
+
+ const auto ratio = qApp->devicePixelRatio();
+
+ QPainter painter(this);
+ painter.drawPixmap(rect().center() - m_pixmap.rect().center() / ratio, m_pixmap);
+
+ if (m_reloadIcon)
+ m_reloadIcon = false;
+}
+
+void WirelessTrayWidget::resizeEvent(QResizeEvent *e)
+{
+ AbstractNetworkTrayWidget::resizeEvent(e);
+
+ m_icons.clear();
+}
+
+const QPixmap WirelessTrayWidget::cachedPix(const QString &key, const int size)
+{
+ if (m_reloadIcon || !m_icons.contains(key)) {
+ m_icons.insert(key, QIcon::fromTheme(key, QIcon(":/wireless/resources/wireless/" + key + ".svg")).pixmap(size));
+ }
+
+ return m_icons.value(key);
+}
+
+void WirelessTrayWidget::init()
+{
+ m_APList = new WirelessList(static_cast(m_device));
+ m_APList->installEventFilter(this);
+ m_APList->setObjectName("wireless-" + m_device->path());
+
+ QVBoxLayout *vLayout = new QVBoxLayout;
+ vLayout->addWidget(m_APList->controlPanel());
+ vLayout->addWidget(m_APList);
+ vLayout->setMargin(0);
+ vLayout->setSpacing(0);
+ m_wirelessApplet->setLayout(vLayout);
+
+ connect(m_APList, &WirelessList::requestSetDeviceEnable, this, &WirelessTrayWidget::requestSetDeviceEnable);
+ connect(m_APList, &WirelessList::requestActiveAP, this, &WirelessTrayWidget::requestActiveAP);
+ connect(m_APList, &WirelessList::requestDeactiveAP, this, &WirelessTrayWidget::requestDeactiveAP);
+ connect(m_APList, &WirelessList::feedSecret, this, &WirelessTrayWidget::feedSecret);
+ connect(m_APList, &WirelessList::cancelSecret, this, &WirelessTrayWidget::cancelSecret);
+ connect(m_APList, &WirelessList::requestWirelessScan, this, &WirelessTrayWidget::requestWirelessScan);
+ connect(m_APList, &WirelessList::queryConnectionSession, this, &WirelessTrayWidget::queryConnectionSession);
+ connect(m_APList, &WirelessList::createApConfig, this, &WirelessTrayWidget::createApConfig);
+
+ QTimer::singleShot(0, this, [=]() {
+ m_refershTimer->start();
+ });
+}
+
+// called in eventFilter method
+void WirelessTrayWidget::adjustHeight()
+{
+ m_wirelessApplet->setFixedHeight(m_APList->height() + m_APList->controlPanel()->height());
+}
+
diff --git a/plugins/system-tray/system-trays/network/item/wirelesstraywidget.h b/plugins/system-tray/system-trays/network/item/wirelesstraywidget.h
new file mode 100644
index 000000000..428c906dd
--- /dev/null
+++ b/plugins/system-tray/system-trays/network/item/wirelesstraywidget.h
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd.
+ *
+ * Author: sbw
+ *
+ * Maintainer: sbw
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#ifndef WIRELESSTRAYWIDGET_H
+#define WIRELESSTRAYWIDGET_H
+
+#include "constants.h"
+
+#include "abstractnetworktraywidget.h"
+#include "applet/wirelesslist.h"
+
+#include
+#include
+
+#include
+
+class TipsWidget;
+class WirelessTrayWidget : public AbstractNetworkTrayWidget
+{
+ Q_OBJECT
+
+public:
+ explicit WirelessTrayWidget(dde::network::WirelessDevice *device, QWidget *parent = nullptr);
+ ~WirelessTrayWidget();
+
+public:
+ void setActive(const bool active) Q_DECL_OVERRIDE;
+ void updateIcon() Q_DECL_OVERRIDE;
+ void sendClick(uint8_t mouseButton, int x, int y) Q_DECL_OVERRIDE;
+ const QImage trayImage() Q_DECL_OVERRIDE;
+
+ QWidget *itemApplet();
+ QWidget *itemTips();
+
+public Q_SLOTS:
+ void onNeedSecrets(const QString &info);
+ void onNeedSecretsFinished(const QString &info0, const QString &info1);
+ // set the device name displayed
+ // in the top-left corner of the applet
+ void setDeviceInfo(const int index);
+
+Q_SIGNALS:
+ void requestActiveAP(const QString &devPath, const QString &apPath, const QString &uuid) const;
+ void requestDeactiveAP(const QString &devPath) const;
+ void feedSecret(const QString &connectionPath, const QString &settingName, const QString &password, const bool autoConnect);
+ void cancelSecret(const QString &connectionPath, const QString &settingName);
+ void queryActiveConnInfo();
+ void requestWirelessScan();
+ void createApConfig(const QString &devPath, const QString &apPath);
+ void queryConnectionSession( const QString &devPath, const QString &uuid );
+
+protected:
+ bool eventFilter(QObject *o, QEvent *e) Q_DECL_OVERRIDE;
+ void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE;
+ void resizeEvent(QResizeEvent *e) Q_DECL_OVERRIDE;
+
+private:
+ const QPixmap cachedPix(const QString &key, const int size);
+
+private Q_SLOTS:
+ void init();
+ void adjustHeight();
+
+private:
+ QTimer *m_refershTimer;
+ QWidget *m_wirelessApplet;
+ TipsWidget *m_wirelessPopup;
+ WirelessList *m_APList;
+
+ QHash m_icons;
+ QPixmap m_pixmap;
+
+ bool m_reloadIcon;
+};
+
+#endif // WIRELESSTRAYWIDGET_H
diff --git a/plugins/network/network.json b/plugins/system-tray/system-trays/network/network.json
similarity index 100%
rename from plugins/network/network.json
rename to plugins/system-tray/system-trays/network/network.json
diff --git a/plugins/network/network.qrc b/plugins/system-tray/system-trays/network/network.qrc
similarity index 100%
rename from plugins/network/network.qrc
rename to plugins/system-tray/system-trays/network/network.qrc
diff --git a/plugins/network/networkplugin.cpp b/plugins/system-tray/system-trays/network/networkplugin.cpp
similarity index 100%
rename from plugins/network/networkplugin.cpp
rename to plugins/system-tray/system-trays/network/networkplugin.cpp
diff --git a/plugins/network/networkplugin.h b/plugins/system-tray/system-trays/network/networkplugin.h
similarity index 94%
rename from plugins/network/networkplugin.h
rename to plugins/system-tray/system-trays/network/networkplugin.h
index 6fb785b79..19f0092a4 100644
--- a/plugins/network/networkplugin.h
+++ b/plugins/system-tray/system-trays/network/networkplugin.h
@@ -32,8 +32,8 @@
class NetworkPlugin : public QObject, PluginsItemInterface
{
Q_OBJECT
- Q_INTERFACES(PluginsItemInterface)
- Q_PLUGIN_METADATA(IID "com.deepin.dock.PluginsItemInterface" FILE "network.json")
+// Q_INTERFACES(PluginsItemInterface)
+// Q_PLUGIN_METADATA(IID "com.deepin.dock.PluginsItemInterface" FILE "network.json")
public:
explicit NetworkPlugin(QObject *parent = 0);
diff --git a/plugins/system-tray/system-trays/network/networktrayloader.cpp b/plugins/system-tray/system-trays/network/networktrayloader.cpp
new file mode 100644
index 000000000..697fbde14
--- /dev/null
+++ b/plugins/system-tray/system-trays/network/networktrayloader.cpp
@@ -0,0 +1,153 @@
+#include "networktrayloader.h"
+#include "item/wiredtraywidget.h"
+#include "item/wirelesstraywidget.h"
+
+using namespace dde::network;
+
+#define NetworkItemKeyPrefix "system-tray-network-"
+#define NetworkService "com.deepin.daemon.Network"
+
+NetworkTrayLoader::NetworkTrayLoader(QObject *parent)
+ : AbstractTrayLoader(NetworkService, parent),
+ m_networkModel(nullptr),
+ m_networkWorker(nullptr),
+ m_delayRefreshTimer(new QTimer)
+{
+ m_delayRefreshTimer->setSingleShot(true);
+ m_delayRefreshTimer->setInterval(2000);
+
+ connect(m_delayRefreshTimer, &QTimer::timeout, this, &NetworkTrayLoader::refreshWiredItemVisible);
+}
+
+void NetworkTrayLoader::load()
+{
+ m_networkModel = new NetworkModel;
+ m_networkWorker = new NetworkWorker(m_networkModel);
+
+ connect(m_networkModel, &NetworkModel::deviceListChanged, this, &NetworkTrayLoader::onDeviceListChanged);
+
+ m_networkModel->moveToThread(qApp->thread());
+ m_networkWorker->moveToThread(qApp->thread());
+
+ onDeviceListChanged(m_networkModel->devices());
+}
+
+AbstractNetworkTrayWidget *NetworkTrayLoader::trayWidgetByPath(const QString &path)
+{
+ for (auto trayWidget : m_trayWidgetsMap.values()) {
+ if (trayWidget->path() == path) {
+ return trayWidget;
+ }
+ }
+
+ Q_UNREACHABLE();
+ return nullptr;
+}
+
+void NetworkTrayLoader::onDeviceListChanged(const QList devices)
+{
+ QList mPaths = m_trayWidgetsMap.keys();
+ QList newPaths;
+
+ QList wirelessTrayList;
+
+ for (auto device : devices) {
+ const QString &path = device->path();
+ newPaths << path;
+ // new device
+ if (!mPaths.contains(path)) {
+ AbstractNetworkTrayWidget *networkTray = nullptr;
+ switch (device->type()) {
+ case NetworkDevice::Wired:
+ networkTray = new WiredTrayWidget(static_cast(device));
+ break;
+ case NetworkDevice::Wireless:
+ networkTray = new WirelessTrayWidget(static_cast(device));
+ wirelessTrayList.append(static_cast(networkTray));
+
+ connect(static_cast(networkTray), &WirelessTrayWidget::queryActiveConnInfo,
+ m_networkWorker, &NetworkWorker::queryActiveConnInfo);
+ connect(static_cast(networkTray), &WirelessTrayWidget::requestActiveAP,
+ m_networkWorker, &NetworkWorker::activateAccessPoint);
+ connect(static_cast(networkTray), &WirelessTrayWidget::requestDeactiveAP,
+ m_networkWorker, &NetworkWorker::disconnectDevice);
+ connect(static_cast(networkTray), &WirelessTrayWidget::feedSecret,
+ m_networkWorker, &NetworkWorker::feedSecret);
+ connect(static_cast(networkTray), &WirelessTrayWidget::cancelSecret,
+ m_networkWorker, &NetworkWorker::cancelSecret);
+ connect(static_cast(networkTray), &WirelessTrayWidget::requestWirelessScan,
+ m_networkWorker, &NetworkWorker::requestWirelessScan);
+ connect(static_cast(networkTray), &WirelessTrayWidget::createApConfig,
+ m_networkWorker, &NetworkWorker::createApConfig);
+ connect(static_cast(networkTray), &WirelessTrayWidget::queryConnectionSession,
+ m_networkWorker, &NetworkWorker::queryConnectionSession);
+
+ connect(m_networkModel, &NetworkModel::needSecrets,
+ static_cast(networkTray), &WirelessTrayWidget::onNeedSecrets);
+ connect(m_networkModel, &NetworkModel::needSecretsFinished,
+ static_cast(networkTray), &WirelessTrayWidget::onNeedSecretsFinished);
+
+ m_networkWorker->queryAccessPoints(path);
+ m_networkWorker->requestWirelessScan();
+ break;
+ default:
+ Q_UNREACHABLE();
+ }
+
+ mPaths << path;
+ m_trayWidgetsMap.insert(path, networkTray);
+
+ connect(device, &dde::network::NetworkDevice::enableChanged,
+ m_delayRefreshTimer, static_cast(&QTimer::start));
+
+// connect(networkTray, &AbstractNetworkTrayWidget::requestContextMenu, this, &NetworkPlugin::contextMenuRequested);
+ connect(networkTray, &AbstractNetworkTrayWidget::requestSetDeviceEnable, m_networkWorker, &NetworkWorker::setDeviceEnable);
+ }
+ }
+
+ for (auto mPath : mPaths) {
+ // removed device
+ if (!newPaths.contains(mPath)) {
+ Q_EMIT systemTrayRemoved(NetworkItemKeyPrefix + mPath);
+ m_trayWidgetsMap.take(mPath)->deleteLater();
+ break;
+ }
+
+ Q_EMIT systemTrayAdded(NetworkItemKeyPrefix + mPath, m_trayWidgetsMap.value(mPath));
+ }
+
+ int wirelessItemCount = wirelessTrayList.size();
+ for (int i = 0; i < wirelessItemCount; ++i) {
+ QTimer::singleShot(1, [=] {
+ wirelessTrayList.at(i)->setDeviceInfo(wirelessItemCount == 1 ? -1 : i + 1);
+ });
+ }
+
+ m_delayRefreshTimer->start();
+}
+
+void NetworkTrayLoader::refreshWiredItemVisible()
+{
+ bool hasWireless = false;
+ QList wiredTrayList;
+
+ for (auto trayWidget : m_trayWidgetsMap.values()) {
+ if (trayWidget->device()->type() == NetworkDevice::Wireless) {
+ hasWireless = true;
+ } else {
+ wiredTrayList.append(static_cast(trayWidget));
+ }
+ }
+
+ if (!hasWireless) {
+ return;
+ }
+
+ for (auto wiredTrayWidget : wiredTrayList) {
+ if (!wiredTrayWidget->device()->enabled()) {
+ Q_EMIT systemTrayRemoved(NetworkItemKeyPrefix + wiredTrayWidget->path());
+ } else {
+ Q_EMIT systemTrayAdded(NetworkItemKeyPrefix + wiredTrayWidget->path(), wiredTrayWidget);
+ }
+ }
+}
diff --git a/plugins/system-tray/system-trays/network/networktrayloader.h b/plugins/system-tray/system-trays/network/networktrayloader.h
new file mode 100644
index 000000000..0ec2f4387
--- /dev/null
+++ b/plugins/system-tray/system-trays/network/networktrayloader.h
@@ -0,0 +1,36 @@
+#ifndef NETWORKTRAYLOADER_H
+#define NETWORKTRAYLOADER_H
+
+#include "../abstracttrayloader.h"
+#include "item/abstractnetworktraywidget.h"
+
+#include
+
+#include
+#include
+
+class NetworkTrayLoader : public AbstractTrayLoader
+{
+ Q_OBJECT
+public:
+ explicit NetworkTrayLoader(QObject *parent = nullptr);
+
+public Q_SLOTS:
+ void load() Q_DECL_OVERRIDE;
+
+private:
+ AbstractNetworkTrayWidget *trayWidgetByPath(const QString &path);
+
+private Q_SLOTS:
+ void onDeviceListChanged(const QList devices);
+ void refreshWiredItemVisible();
+
+private:
+ dde::network::NetworkModel *m_networkModel;
+ dde::network::NetworkWorker *m_networkWorker;
+
+ QMap m_trayWidgetsMap;
+ QTimer *m_delayRefreshTimer;
+};
+
+#endif // NETWORKTRAYLOADER_H
diff --git a/plugins/network/resources/wired/network-wired-symbolic-connecting1.svg b/plugins/system-tray/system-trays/network/resources/wired/network-wired-symbolic-connecting1.svg
similarity index 100%
rename from plugins/network/resources/wired/network-wired-symbolic-connecting1.svg
rename to plugins/system-tray/system-trays/network/resources/wired/network-wired-symbolic-connecting1.svg
diff --git a/plugins/network/resources/wired/network-wired-symbolic-connecting2.svg b/plugins/system-tray/system-trays/network/resources/wired/network-wired-symbolic-connecting2.svg
similarity index 100%
rename from plugins/network/resources/wired/network-wired-symbolic-connecting2.svg
rename to plugins/system-tray/system-trays/network/resources/wired/network-wired-symbolic-connecting2.svg
diff --git a/plugins/network/resources/wired/network-wired-symbolic-connecting3.svg b/plugins/system-tray/system-trays/network/resources/wired/network-wired-symbolic-connecting3.svg
similarity index 100%
rename from plugins/network/resources/wired/network-wired-symbolic-connecting3.svg
rename to plugins/system-tray/system-trays/network/resources/wired/network-wired-symbolic-connecting3.svg
diff --git a/plugins/network/resources/wired/network-wired-symbolic-connecting4.svg b/plugins/system-tray/system-trays/network/resources/wired/network-wired-symbolic-connecting4.svg
similarity index 100%
rename from plugins/network/resources/wired/network-wired-symbolic-connecting4.svg
rename to plugins/system-tray/system-trays/network/resources/wired/network-wired-symbolic-connecting4.svg
diff --git a/plugins/network/resources/wired/network-wired-symbolic-connecting5.svg b/plugins/system-tray/system-trays/network/resources/wired/network-wired-symbolic-connecting5.svg
similarity index 100%
rename from plugins/network/resources/wired/network-wired-symbolic-connecting5.svg
rename to plugins/system-tray/system-trays/network/resources/wired/network-wired-symbolic-connecting5.svg
diff --git a/plugins/network/resources/wireless/disconnect.svg b/plugins/system-tray/system-trays/network/resources/wireless/disconnect.svg
similarity index 100%
rename from plugins/network/resources/wireless/disconnect.svg
rename to plugins/system-tray/system-trays/network/resources/wireless/disconnect.svg
diff --git a/plugins/network/resources/wireless/disconnect_hover.svg b/plugins/system-tray/system-trays/network/resources/wireless/disconnect_hover.svg
similarity index 100%
rename from plugins/network/resources/wireless/disconnect_hover.svg
rename to plugins/system-tray/system-trays/network/resources/wireless/disconnect_hover.svg
diff --git a/plugins/network/resources/wireless/disconnect_press.svg b/plugins/system-tray/system-trays/network/resources/wireless/disconnect_press.svg
similarity index 100%
rename from plugins/network/resources/wireless/disconnect_press.svg
rename to plugins/system-tray/system-trays/network/resources/wireless/disconnect_press.svg
diff --git a/plugins/network/resources/wireless/refresh_hover.svg b/plugins/system-tray/system-trays/network/resources/wireless/refresh_hover.svg
similarity index 100%
rename from plugins/network/resources/wireless/refresh_hover.svg
rename to plugins/system-tray/system-trays/network/resources/wireless/refresh_hover.svg
diff --git a/plugins/network/resources/wireless/refresh_normal.svg b/plugins/system-tray/system-trays/network/resources/wireless/refresh_normal.svg
similarity index 100%
rename from plugins/network/resources/wireless/refresh_normal.svg
rename to plugins/system-tray/system-trays/network/resources/wireless/refresh_normal.svg
diff --git a/plugins/network/resources/wireless/refresh_press.svg b/plugins/system-tray/system-trays/network/resources/wireless/refresh_press.svg
similarity index 100%
rename from plugins/network/resources/wireless/refresh_press.svg
rename to plugins/system-tray/system-trays/network/resources/wireless/refresh_press.svg
diff --git a/plugins/network/resources/wireless/security.svg b/plugins/system-tray/system-trays/network/resources/wireless/security.svg
similarity index 100%
rename from plugins/network/resources/wireless/security.svg
rename to plugins/system-tray/system-trays/network/resources/wireless/security.svg
diff --git a/plugins/network/resources/wireless/select.svg b/plugins/system-tray/system-trays/network/resources/wireless/select.svg
similarity index 100%
rename from plugins/network/resources/wireless/select.svg
rename to plugins/system-tray/system-trays/network/resources/wireless/select.svg
diff --git a/plugins/network/resources/wireless/spinner14/Spinner01.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner01.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner01.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner01.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner02.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner02.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner02.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner02.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner03.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner03.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner03.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner03.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner04.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner04.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner04.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner04.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner05.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner05.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner05.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner05.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner06.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner06.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner06.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner06.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner07.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner07.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner07.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner07.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner08.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner08.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner08.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner08.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner09.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner09.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner09.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner09.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner10.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner10.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner10.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner10.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner11.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner11.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner11.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner11.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner12.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner12.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner12.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner12.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner13.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner13.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner13.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner13.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner14.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner14.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner14.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner14.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner15.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner15.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner15.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner15.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner16.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner16.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner16.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner16.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner17.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner17.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner17.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner17.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner18.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner18.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner18.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner18.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner19.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner19.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner19.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner19.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner20.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner20.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner20.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner20.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner21.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner21.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner21.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner21.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner22.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner22.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner22.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner22.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner23.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner23.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner23.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner23.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner24.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner24.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner24.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner24.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner25.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner25.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner25.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner25.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner26.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner26.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner26.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner26.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner27.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner27.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner27.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner27.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner28.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner28.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner28.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner28.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner29.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner29.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner29.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner29.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner30.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner30.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner30.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner30.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner31.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner31.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner31.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner31.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner32.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner32.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner32.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner32.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner33.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner33.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner33.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner33.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner34.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner34.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner34.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner34.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner35.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner35.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner35.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner35.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner36.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner36.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner36.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner36.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner37.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner37.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner37.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner37.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner38.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner38.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner38.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner38.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner39.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner39.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner39.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner39.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner40.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner40.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner40.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner40.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner41.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner41.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner41.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner41.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner42.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner42.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner42.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner42.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner43.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner43.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner43.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner43.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner44.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner44.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner44.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner44.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner45.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner45.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner45.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner45.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner46.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner46.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner46.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner46.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner47.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner47.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner47.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner47.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner48.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner48.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner48.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner48.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner49.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner49.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner49.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner49.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner50.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner50.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner50.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner50.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner51.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner51.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner51.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner51.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner52.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner52.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner52.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner52.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner53.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner53.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner53.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner53.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner54.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner54.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner54.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner54.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner55.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner55.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner55.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner55.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner56.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner56.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner56.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner56.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner57.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner57.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner57.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner57.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner58.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner58.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner58.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner58.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner59.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner59.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner59.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner59.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner60.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner60.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner60.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner60.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner61.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner61.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner61.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner61.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner62.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner62.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner62.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner62.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner63.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner63.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner63.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner63.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner64.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner64.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner64.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner64.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner65.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner65.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner65.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner65.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner66.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner66.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner66.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner66.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner67.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner67.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner67.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner67.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner68.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner68.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner68.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner68.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner69.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner69.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner69.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner69.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner70.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner70.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner70.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner70.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner71.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner71.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner71.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner71.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner72.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner72.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner72.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner72.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner73.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner73.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner73.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner73.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner74.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner74.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner74.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner74.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner75.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner75.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner75.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner75.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner76.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner76.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner76.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner76.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner77.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner77.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner77.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner77.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner78.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner78.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner78.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner78.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner79.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner79.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner79.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner79.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner80.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner80.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner80.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner80.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner81.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner81.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner81.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner81.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner82.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner82.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner82.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner82.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner83.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner83.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner83.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner83.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner84.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner84.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner84.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner84.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner85.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner85.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner85.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner85.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner86.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner86.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner86.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner86.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner87.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner87.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner87.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner87.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner88.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner88.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner88.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner88.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner89.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner89.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner89.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner89.png
diff --git a/plugins/network/resources/wireless/spinner14/Spinner90.png b/plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner90.png
similarity index 100%
rename from plugins/network/resources/wireless/spinner14/Spinner90.png
rename to plugins/system-tray/system-trays/network/resources/wireless/spinner14/Spinner90.png
diff --git a/plugins/network/resources/wireless/wireless-0-symbolic.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-0-symbolic.svg
similarity index 100%
rename from plugins/network/resources/wireless/wireless-0-symbolic.svg
rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-0-symbolic.svg
diff --git a/plugins/network/resources/wireless/wireless-0.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-0.svg
similarity index 100%
rename from plugins/network/resources/wireless/wireless-0.svg
rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-0.svg
diff --git a/plugins/network/resources/wireless/wireless-20-symbolic.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-20-symbolic.svg
similarity index 100%
rename from plugins/network/resources/wireless/wireless-20-symbolic.svg
rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-20-symbolic.svg
diff --git a/plugins/network/resources/wireless/wireless-20.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-20.svg
similarity index 100%
rename from plugins/network/resources/wireless/wireless-20.svg
rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-20.svg
diff --git a/plugins/network/resources/wireless/wireless-40-symbolic.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-40-symbolic.svg
similarity index 100%
rename from plugins/network/resources/wireless/wireless-40-symbolic.svg
rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-40-symbolic.svg
diff --git a/plugins/network/resources/wireless/wireless-40.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-40.svg
similarity index 100%
rename from plugins/network/resources/wireless/wireless-40.svg
rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-40.svg
diff --git a/plugins/network/resources/wireless/wireless-60-symbolic.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-60-symbolic.svg
similarity index 100%
rename from plugins/network/resources/wireless/wireless-60-symbolic.svg
rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-60-symbolic.svg
diff --git a/plugins/network/resources/wireless/wireless-60.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-60.svg
similarity index 100%
rename from plugins/network/resources/wireless/wireless-60.svg
rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-60.svg
diff --git a/plugins/network/resources/wireless/wireless-80-symbolic.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-80-symbolic.svg
similarity index 100%
rename from plugins/network/resources/wireless/wireless-80-symbolic.svg
rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-80-symbolic.svg
diff --git a/plugins/network/resources/wireless/wireless-80.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-80.svg
similarity index 100%
rename from plugins/network/resources/wireless/wireless-80.svg
rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-80.svg
diff --git a/plugins/network/resources/wireless/wireless-background.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-background.svg
similarity index 100%
rename from plugins/network/resources/wireless/wireless-background.svg
rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-background.svg
diff --git a/plugins/network/resources/wireless/wireless-disconnect-symbolic.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-disconnect-symbolic.svg
similarity index 100%
rename from plugins/network/resources/wireless/wireless-disconnect-symbolic.svg
rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-disconnect-symbolic.svg
diff --git a/plugins/network/resources/wireless/wireless-disconnect.svg b/plugins/system-tray/system-trays/network/resources/wireless/wireless-disconnect.svg
similarity index 100%
rename from plugins/network/resources/wireless/wireless-disconnect.svg
rename to plugins/system-tray/system-trays/network/resources/wireless/wireless-disconnect.svg
diff --git a/plugins/network/util/imageutil.cpp b/plugins/system-tray/system-trays/network/util/imageutil.cpp
similarity index 100%
rename from plugins/network/util/imageutil.cpp
rename to plugins/system-tray/system-trays/network/util/imageutil.cpp
diff --git a/plugins/network/util/imageutil.h b/plugins/system-tray/system-trays/network/util/imageutil.h
similarity index 100%
rename from plugins/network/util/imageutil.h
rename to plugins/system-tray/system-trays/network/util/imageutil.h
diff --git a/plugins/shutdown/CMakeLists.txt b/plugins/system-tray/system-trays/shutdown/CMakeLists.txt
similarity index 100%
rename from plugins/shutdown/CMakeLists.txt
rename to plugins/system-tray/system-trays/shutdown/CMakeLists.txt
diff --git a/plugins/shutdown/dbus/com.deepin.daemon.Power.xml b/plugins/system-tray/system-trays/shutdown/dbus/com.deepin.daemon.Power.xml
similarity index 100%
rename from plugins/shutdown/dbus/com.deepin.daemon.Power.xml
rename to plugins/system-tray/system-trays/shutdown/dbus/com.deepin.daemon.Power.xml
diff --git a/plugins/shutdown/dbus/dbusaccount.cpp b/plugins/system-tray/system-trays/shutdown/dbus/dbusaccount.cpp
similarity index 100%
rename from plugins/shutdown/dbus/dbusaccount.cpp
rename to plugins/system-tray/system-trays/shutdown/dbus/dbusaccount.cpp
diff --git a/plugins/shutdown/dbus/dbusaccount.h b/plugins/system-tray/system-trays/shutdown/dbus/dbusaccount.h
similarity index 100%
rename from plugins/shutdown/dbus/dbusaccount.h
rename to plugins/system-tray/system-trays/shutdown/dbus/dbusaccount.h
diff --git a/plugins/shutdown/dbus/dbuspower.cpp b/plugins/system-tray/system-trays/shutdown/dbus/dbuspower.cpp
similarity index 100%
rename from plugins/shutdown/dbus/dbuspower.cpp
rename to plugins/system-tray/system-trays/shutdown/dbus/dbuspower.cpp
diff --git a/plugins/shutdown/dbus/dbuspower.h b/plugins/system-tray/system-trays/shutdown/dbus/dbuspower.h
similarity index 100%
rename from plugins/shutdown/dbus/dbuspower.h
rename to plugins/system-tray/system-trays/shutdown/dbus/dbuspower.h
diff --git a/plugins/shutdown/pluginwidget.cpp b/plugins/system-tray/system-trays/shutdown/pluginwidget.cpp
similarity index 100%
rename from plugins/shutdown/pluginwidget.cpp
rename to plugins/system-tray/system-trays/shutdown/pluginwidget.cpp
diff --git a/plugins/shutdown/pluginwidget.h b/plugins/system-tray/system-trays/shutdown/pluginwidget.h
similarity index 100%
rename from plugins/shutdown/pluginwidget.h
rename to plugins/system-tray/system-trays/shutdown/pluginwidget.h
diff --git a/plugins/shutdown/powerstatuswidget.cpp b/plugins/system-tray/system-trays/shutdown/powerstatuswidget.cpp
similarity index 100%
rename from plugins/shutdown/powerstatuswidget.cpp
rename to plugins/system-tray/system-trays/shutdown/powerstatuswidget.cpp
diff --git a/plugins/shutdown/powerstatuswidget.h b/plugins/system-tray/system-trays/shutdown/powerstatuswidget.h
similarity index 100%
rename from plugins/shutdown/powerstatuswidget.h
rename to plugins/system-tray/system-trays/shutdown/powerstatuswidget.h
diff --git a/plugins/system-tray/system-trays/shutdown/powertrayloader.cpp b/plugins/system-tray/system-trays/shutdown/powertrayloader.cpp
new file mode 100644
index 000000000..4d695a337
--- /dev/null
+++ b/plugins/system-tray/system-trays/shutdown/powertrayloader.cpp
@@ -0,0 +1,18 @@
+#include "powertrayloader.h"
+#include "powertraywidget.h"
+
+#define PowerItemKey "system-tray-power"
+#define PowerService "com.deepin.daemon.Power"
+
+PowerTrayLoader::PowerTrayLoader(QObject *parent)
+ : AbstractTrayLoader(PowerService, parent),
+ m_powerInter(new DBusPower(this))
+{
+}
+
+void PowerTrayLoader::load()
+{
+ if (!m_powerInter->batteryState().isEmpty()) {
+ emit systemTrayAdded(PowerItemKey, new PowerTrayWidget);
+ }
+}
diff --git a/plugins/system-tray/system-trays/shutdown/powertrayloader.h b/plugins/system-tray/system-trays/shutdown/powertrayloader.h
new file mode 100644
index 000000000..8e4d1faff
--- /dev/null
+++ b/plugins/system-tray/system-trays/shutdown/powertrayloader.h
@@ -0,0 +1,22 @@
+#ifndef POWERTRAYLOADER_H
+#define POWERTRAYLOADER_H
+
+#include "../abstracttrayloader.h"
+#include "dbus/dbuspower.h"
+
+#include
+
+class PowerTrayLoader : public AbstractTrayLoader
+{
+ Q_OBJECT
+public:
+ explicit PowerTrayLoader(QObject *parent = nullptr);
+
+public Q_SLOTS:
+ void load() Q_DECL_OVERRIDE;
+
+private:
+ DBusPower *m_powerInter;
+};
+
+#endif // POWERTRAYLOADER_H
diff --git a/plugins/system-tray/system-trays/shutdown/powertraywidget.cpp b/plugins/system-tray/system-trays/shutdown/powertraywidget.cpp
new file mode 100644
index 000000000..8a9e9f44d
--- /dev/null
+++ b/plugins/system-tray/system-trays/shutdown/powertraywidget.cpp
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd.
+ *
+ * Author: sbw
+ *
+ * Maintainer: sbw
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include "powertraywidget.h"
+
+#include
+#include
+#include
+
+PowerTrayWidget::PowerTrayWidget(AbstractTrayWidget *parent)
+ : AbstractTrayWidget(parent),
+ m_powerInter(new DBusPower(this))
+{
+ connect(m_powerInter, &DBusPower::BatteryPercentageChanged, this, &PowerTrayWidget::updateIcon);
+ connect(m_powerInter, &DBusPower::BatteryStateChanged, this, &PowerTrayWidget::updateIcon);
+ connect(m_powerInter, &DBusPower::OnBatteryChanged, this, &PowerTrayWidget::updateIcon);
+}
+
+void PowerTrayWidget::setActive(const bool active)
+{
+
+}
+
+void PowerTrayWidget::updateIcon()
+{
+ const BatteryPercentageMap data = m_powerInter->batteryPercentage();
+ const uint value = qMin(100.0, qMax(0.0, data.value("Display")));
+ const int percentage = std::round(value);
+ const bool plugged = !m_powerInter->onBattery();
+
+ QString percentageStr;
+ if (percentage < 10 && percentage >= 0) {
+ percentageStr = "000";
+ } else if (percentage < 30) {
+ percentageStr = "020";
+ } else if (percentage < 50) {
+ percentageStr = "040";
+ } else if (percentage < 70) {
+ percentageStr = "060";
+ } else if (percentage < 90) {
+ percentageStr = "080";
+ } else if (percentage <= 100){
+ percentageStr = "100";
+ } else {
+ percentageStr = "000";
+ }
+
+ const QString iconStr = QString("battery-%1-%2")
+ .arg(percentageStr)
+ .arg(plugged ? "plugged-symbolic" : "symbolic");
+ const auto ratio = devicePixelRatioF();
+ m_pixmap = QIcon::fromTheme(iconStr).pixmap(QSize(16, 16) * ratio);
+ m_pixmap.setDevicePixelRatio(ratio);
+
+ update();
+}
+
+void PowerTrayWidget::sendClick(uint8_t mouseButton, int x, int y)
+{
+
+}
+
+const QImage PowerTrayWidget::trayImage()
+{
+ m_pixmap.toImage();
+}
+
+QSize PowerTrayWidget::sizeHint() const
+{
+ return QSize(26, 26);
+}
+
+void PowerTrayWidget::paintEvent(QPaintEvent *e)
+{
+ Q_UNUSED(e);
+
+ const auto ratio = devicePixelRatioF();
+
+ QPainter painter(this);
+ painter.drawPixmap(rect().center() - m_pixmap.rect().center() / ratio, m_pixmap);
+}
diff --git a/plugins/system-tray/system-trays/shutdown/powertraywidget.h b/plugins/system-tray/system-trays/shutdown/powertraywidget.h
new file mode 100644
index 000000000..3ba618da4
--- /dev/null
+++ b/plugins/system-tray/system-trays/shutdown/powertraywidget.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd.
+ *
+ * Author: sbw
+ *
+ * Maintainer: sbw
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#ifndef POWERTRAYWIDGET_H
+#define POWERTRAYWIDGET_H
+
+#include "abstracttraywidget.h"
+#include "dbus/dbuspower.h"
+
+#include
+
+class PowerTrayWidget : public AbstractTrayWidget
+{
+ Q_OBJECT
+
+public:
+ explicit PowerTrayWidget(AbstractTrayWidget *parent = nullptr);
+
+public:
+ void setActive(const bool active) Q_DECL_OVERRIDE;
+ void updateIcon() Q_DECL_OVERRIDE;
+ void sendClick(uint8_t mouseButton, int x, int y) Q_DECL_OVERRIDE;
+ const QImage trayImage() Q_DECL_OVERRIDE;
+
+protected:
+ QSize sizeHint() const Q_DECL_OVERRIDE;
+ void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE;
+
+private:
+ DBusPower *m_powerInter;
+
+ QPixmap m_pixmap;
+};
+
+#endif // POWERTRAYWIDGET_H
diff --git a/plugins/shutdown/resources/icons/battery_0.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_0.svg
similarity index 100%
rename from plugins/shutdown/resources/icons/battery_0.svg
rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_0.svg
diff --git a/plugins/shutdown/resources/icons/battery_0_plugged.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_0_plugged.svg
similarity index 100%
rename from plugins/shutdown/resources/icons/battery_0_plugged.svg
rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_0_plugged.svg
diff --git a/plugins/shutdown/resources/icons/battery_10.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_10.svg
similarity index 100%
rename from plugins/shutdown/resources/icons/battery_10.svg
rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_10.svg
diff --git a/plugins/shutdown/resources/icons/battery_10_plugged.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_10_plugged.svg
similarity index 100%
rename from plugins/shutdown/resources/icons/battery_10_plugged.svg
rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_10_plugged.svg
diff --git a/plugins/shutdown/resources/icons/battery_2.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_2.svg
similarity index 100%
rename from plugins/shutdown/resources/icons/battery_2.svg
rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_2.svg
diff --git a/plugins/shutdown/resources/icons/battery_2_plugged.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_2_plugged.svg
similarity index 100%
rename from plugins/shutdown/resources/icons/battery_2_plugged.svg
rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_2_plugged.svg
diff --git a/plugins/shutdown/resources/icons/battery_4.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_4.svg
similarity index 100%
rename from plugins/shutdown/resources/icons/battery_4.svg
rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_4.svg
diff --git a/plugins/shutdown/resources/icons/battery_4_plugged.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_4_plugged.svg
similarity index 100%
rename from plugins/shutdown/resources/icons/battery_4_plugged.svg
rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_4_plugged.svg
diff --git a/plugins/shutdown/resources/icons/battery_6.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_6.svg
similarity index 100%
rename from plugins/shutdown/resources/icons/battery_6.svg
rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_6.svg
diff --git a/plugins/shutdown/resources/icons/battery_6_plugged.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_6_plugged.svg
similarity index 100%
rename from plugins/shutdown/resources/icons/battery_6_plugged.svg
rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_6_plugged.svg
diff --git a/plugins/shutdown/resources/icons/battery_8.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_8.svg
similarity index 100%
rename from plugins/shutdown/resources/icons/battery_8.svg
rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_8.svg
diff --git a/plugins/shutdown/resources/icons/battery_8_plugged.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_8_plugged.svg
similarity index 100%
rename from plugins/shutdown/resources/icons/battery_8_plugged.svg
rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_8_plugged.svg
diff --git a/plugins/shutdown/resources/icons/battery_plugged.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_plugged.svg
similarity index 100%
rename from plugins/shutdown/resources/icons/battery_plugged.svg
rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_plugged.svg
diff --git a/plugins/shutdown/resources/icons/battery_unknow.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/battery_unknow.svg
similarity index 100%
rename from plugins/shutdown/resources/icons/battery_unknow.svg
rename to plugins/system-tray/system-trays/shutdown/resources/icons/battery_unknow.svg
diff --git a/plugins/shutdown/resources/icons/fashion.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/fashion.svg
similarity index 100%
rename from plugins/shutdown/resources/icons/fashion.svg
rename to plugins/system-tray/system-trays/shutdown/resources/icons/fashion.svg
diff --git a/plugins/shutdown/resources/icons/normal.svg b/plugins/system-tray/system-trays/shutdown/resources/icons/normal.svg
similarity index 100%
rename from plugins/shutdown/resources/icons/normal.svg
rename to plugins/system-tray/system-trays/shutdown/resources/icons/normal.svg
diff --git a/plugins/shutdown/shutdown.json b/plugins/system-tray/system-trays/shutdown/shutdown.json
similarity index 100%
rename from plugins/shutdown/shutdown.json
rename to plugins/system-tray/system-trays/shutdown/shutdown.json
diff --git a/plugins/shutdown/shutdown.qrc b/plugins/system-tray/system-trays/shutdown/shutdown.qrc
similarity index 100%
rename from plugins/shutdown/shutdown.qrc
rename to plugins/system-tray/system-trays/shutdown/shutdown.qrc
diff --git a/plugins/shutdown/shutdownplugin.cpp b/plugins/system-tray/system-trays/shutdown/shutdownplugin.cpp
similarity index 100%
rename from plugins/shutdown/shutdownplugin.cpp
rename to plugins/system-tray/system-trays/shutdown/shutdownplugin.cpp
diff --git a/plugins/shutdown/shutdownplugin.h b/plugins/system-tray/system-trays/shutdown/shutdownplugin.h
similarity index 94%
rename from plugins/shutdown/shutdownplugin.h
rename to plugins/system-tray/system-trays/shutdown/shutdownplugin.h
index 8bcbc31bd..704775edb 100644
--- a/plugins/shutdown/shutdownplugin.h
+++ b/plugins/system-tray/system-trays/shutdown/shutdownplugin.h
@@ -36,8 +36,8 @@
class ShutdownPlugin : public QObject, PluginsItemInterface
{
Q_OBJECT
- Q_INTERFACES(PluginsItemInterface)
- Q_PLUGIN_METADATA(IID "com.deepin.dock.PluginsItemInterface" FILE "shutdown.json")
+// Q_INTERFACES(PluginsItemInterface)
+// Q_PLUGIN_METADATA(IID "com.deepin.dock.PluginsItemInterface" FILE "shutdown.json")
public:
explicit ShutdownPlugin(QObject *parent = 0);
diff --git a/plugins/system-tray/system-trays/shutdown/shutdowntrayloader.cpp b/plugins/system-tray/system-trays/shutdown/shutdowntrayloader.cpp
new file mode 100644
index 000000000..06f74f16b
--- /dev/null
+++ b/plugins/system-tray/system-trays/shutdown/shutdowntrayloader.cpp
@@ -0,0 +1,13 @@
+#include "shutdowntrayloader.h"
+#include "shutdowntraywidget.h"
+
+#define ShutdownItemKey "system-tray-shutdown"
+
+ShutdownTrayLoader::ShutdownTrayLoader(QObject *parent) : AbstractTrayLoader(QString(), parent)
+{
+}
+
+void ShutdownTrayLoader::load()
+{
+ emit systemTrayAdded(ShutdownItemKey, new ShutdownTrayWidget);
+}
diff --git a/plugins/system-tray/system-trays/shutdown/shutdowntrayloader.h b/plugins/system-tray/system-trays/shutdown/shutdowntrayloader.h
new file mode 100644
index 000000000..ed7818ab9
--- /dev/null
+++ b/plugins/system-tray/system-trays/shutdown/shutdowntrayloader.h
@@ -0,0 +1,18 @@
+#ifndef SHUTDOWNTRAYLOADER_H
+#define SHUTDOWNTRAYLOADER_H
+
+#include "../abstracttrayloader.h"
+
+#include
+
+class ShutdownTrayLoader : public AbstractTrayLoader
+{
+ Q_OBJECT
+public:
+ explicit ShutdownTrayLoader(QObject *parent = nullptr);
+
+public Q_SLOTS:
+ void load() Q_DECL_OVERRIDE;
+};
+
+#endif // SHUTDOWNTRAYLOADER_H
diff --git a/plugins/system-tray/system-trays/shutdown/shutdowntraywidget.cpp b/plugins/system-tray/system-trays/shutdown/shutdowntraywidget.cpp
new file mode 100644
index 000000000..8f6d2d657
--- /dev/null
+++ b/plugins/system-tray/system-trays/shutdown/shutdowntraywidget.cpp
@@ -0,0 +1,60 @@
+#include "shutdowntraywidget.h"
+
+#include
+#include
+#include
+#include
+
+ShutdownTrayWidget::ShutdownTrayWidget(AbstractTrayWidget *parent)
+ : AbstractTrayWidget(parent)
+{
+ updateIcon();
+}
+
+void ShutdownTrayWidget::setActive(const bool active)
+{
+
+}
+
+void ShutdownTrayWidget::updateIcon()
+{
+ const auto ratio = qApp->devicePixelRatio();
+
+ QPixmap pixmap(QSize(16, 16) * ratio);
+ QSvgRenderer renderer(QString(":/icons/system-trays/shutdown/resources/icons/normal.svg"));
+ pixmap.fill(Qt::transparent);
+
+ QPainter painter;
+ painter.begin(&pixmap);
+ renderer.render(&painter);
+ painter.end();
+
+ pixmap.setDevicePixelRatio(ratio);
+
+ m_pixmap = pixmap;
+
+ update();
+}
+
+void ShutdownTrayWidget::sendClick(uint8_t mouseButton, int x, int y)
+{
+
+}
+
+const QImage ShutdownTrayWidget::trayImage()
+{
+ return m_pixmap.toImage();
+}
+
+QSize ShutdownTrayWidget::sizeHint() const
+{
+ return QSize(26, 26);
+}
+
+void ShutdownTrayWidget::paintEvent(QPaintEvent *e)
+{
+ Q_UNUSED(e);
+
+ QPainter painter(this);
+ painter.drawPixmap(rect().center() - m_pixmap.rect().center() / qApp->devicePixelRatio(), m_pixmap);
+}
diff --git a/plugins/system-tray/system-trays/shutdown/shutdowntraywidget.h b/plugins/system-tray/system-trays/shutdown/shutdowntraywidget.h
new file mode 100644
index 000000000..20273d67f
--- /dev/null
+++ b/plugins/system-tray/system-trays/shutdown/shutdowntraywidget.h
@@ -0,0 +1,30 @@
+#ifndef SHUTDOWNTRAYWIDGET_H
+#define SHUTDOWNTRAYWIDGET_H
+
+#include "abstracttraywidget.h"
+
+#include
+#include
+
+class ShutdownTrayWidget : public AbstractTrayWidget
+{
+ Q_OBJECT
+
+public:
+ explicit ShutdownTrayWidget(AbstractTrayWidget *parent = nullptr);
+
+public:
+ void setActive(const bool active) Q_DECL_OVERRIDE;
+ void updateIcon() Q_DECL_OVERRIDE;
+ void sendClick(uint8_t mouseButton, int x, int y) Q_DECL_OVERRIDE;
+ const QImage trayImage() Q_DECL_OVERRIDE;
+
+protected:
+ QSize sizeHint() const Q_DECL_OVERRIDE;
+ void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE;
+
+private:
+ QPixmap m_pixmap;
+};
+
+#endif // SHUTDOWNTRAYWIDGET_H
diff --git a/plugins/sound/CMakeLists.txt b/plugins/system-tray/system-trays/sound/CMakeLists.txt
similarity index 100%
rename from plugins/sound/CMakeLists.txt
rename to plugins/system-tray/system-trays/sound/CMakeLists.txt
diff --git a/plugins/sound/componments/horizontalseparator.cpp b/plugins/system-tray/system-trays/sound/componments/horizontalseparator.cpp
similarity index 100%
rename from plugins/sound/componments/horizontalseparator.cpp
rename to plugins/system-tray/system-trays/sound/componments/horizontalseparator.cpp
diff --git a/plugins/sound/componments/horizontalseparator.h b/plugins/system-tray/system-trays/sound/componments/horizontalseparator.h
similarity index 100%
rename from plugins/sound/componments/horizontalseparator.h
rename to plugins/system-tray/system-trays/sound/componments/horizontalseparator.h
diff --git a/plugins/sound/componments/volumeslider.cpp b/plugins/system-tray/system-trays/sound/componments/volumeslider.cpp
similarity index 100%
rename from plugins/sound/componments/volumeslider.cpp
rename to plugins/system-tray/system-trays/sound/componments/volumeslider.cpp
diff --git a/plugins/sound/componments/volumeslider.h b/plugins/system-tray/system-trays/sound/componments/volumeslider.h
similarity index 100%
rename from plugins/sound/componments/volumeslider.h
rename to plugins/system-tray/system-trays/sound/componments/volumeslider.h
diff --git a/plugins/sound/dbus/com.deepin.daemon.Audio.Sink.xml b/plugins/system-tray/system-trays/sound/dbus/com.deepin.daemon.Audio.Sink.xml
similarity index 100%
rename from plugins/sound/dbus/com.deepin.daemon.Audio.Sink.xml
rename to plugins/system-tray/system-trays/sound/dbus/com.deepin.daemon.Audio.Sink.xml
diff --git a/plugins/sound/dbus/com.deepin.daemon.Audio.SinkInput.xml b/plugins/system-tray/system-trays/sound/dbus/com.deepin.daemon.Audio.SinkInput.xml
similarity index 100%
rename from plugins/sound/dbus/com.deepin.daemon.Audio.SinkInput.xml
rename to plugins/system-tray/system-trays/sound/dbus/com.deepin.daemon.Audio.SinkInput.xml
diff --git a/plugins/sound/dbus/com.deepin.daemon.Audio.xml b/plugins/system-tray/system-trays/sound/dbus/com.deepin.daemon.Audio.xml
similarity index 100%
rename from plugins/sound/dbus/com.deepin.daemon.Audio.xml
rename to plugins/system-tray/system-trays/sound/dbus/com.deepin.daemon.Audio.xml
diff --git a/plugins/sound/dbus/dbusaudio.cpp b/plugins/system-tray/system-trays/sound/dbus/dbusaudio.cpp
similarity index 100%
rename from plugins/sound/dbus/dbusaudio.cpp
rename to plugins/system-tray/system-trays/sound/dbus/dbusaudio.cpp
diff --git a/plugins/sound/dbus/dbusaudio.h b/plugins/system-tray/system-trays/sound/dbus/dbusaudio.h
similarity index 100%
rename from plugins/sound/dbus/dbusaudio.h
rename to plugins/system-tray/system-trays/sound/dbus/dbusaudio.h
diff --git a/plugins/sound/dbus/dbussink.cpp b/plugins/system-tray/system-trays/sound/dbus/dbussink.cpp
similarity index 100%
rename from plugins/sound/dbus/dbussink.cpp
rename to plugins/system-tray/system-trays/sound/dbus/dbussink.cpp
diff --git a/plugins/sound/dbus/dbussink.h b/plugins/system-tray/system-trays/sound/dbus/dbussink.h
similarity index 100%
rename from plugins/sound/dbus/dbussink.h
rename to plugins/system-tray/system-trays/sound/dbus/dbussink.h
diff --git a/plugins/sound/dbus/dbussinkinput.cpp b/plugins/system-tray/system-trays/sound/dbus/dbussinkinput.cpp
similarity index 100%
rename from plugins/sound/dbus/dbussinkinput.cpp
rename to plugins/system-tray/system-trays/sound/dbus/dbussinkinput.cpp
diff --git a/plugins/sound/dbus/dbussinkinput.h b/plugins/system-tray/system-trays/sound/dbus/dbussinkinput.h
similarity index 100%
rename from plugins/sound/dbus/dbussinkinput.h
rename to plugins/system-tray/system-trays/sound/dbus/dbussinkinput.h
diff --git a/plugins/sound/resources/audio-volume-000-muted.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-000-muted.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-000-muted.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-000-muted.svg
diff --git a/plugins/sound/resources/audio-volume-000.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-000.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-000.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-000.svg
diff --git a/plugins/sound/resources/audio-volume-010-muted.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-010-muted.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-010-muted.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-010-muted.svg
diff --git a/plugins/sound/resources/audio-volume-010.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-010.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-010.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-010.svg
diff --git a/plugins/sound/resources/audio-volume-020-muted.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-020-muted.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-020-muted.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-020-muted.svg
diff --git a/plugins/sound/resources/audio-volume-020.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-020.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-020.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-020.svg
diff --git a/plugins/sound/resources/audio-volume-030-muted.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-030-muted.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-030-muted.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-030-muted.svg
diff --git a/plugins/sound/resources/audio-volume-030.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-030.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-030.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-030.svg
diff --git a/plugins/sound/resources/audio-volume-040-muted.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-040-muted.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-040-muted.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-040-muted.svg
diff --git a/plugins/sound/resources/audio-volume-040.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-040.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-040.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-040.svg
diff --git a/plugins/sound/resources/audio-volume-050-muted.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-050-muted.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-050-muted.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-050-muted.svg
diff --git a/plugins/sound/resources/audio-volume-050.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-050.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-050.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-050.svg
diff --git a/plugins/sound/resources/audio-volume-060-muted.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-060-muted.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-060-muted.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-060-muted.svg
diff --git a/plugins/sound/resources/audio-volume-060.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-060.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-060.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-060.svg
diff --git a/plugins/sound/resources/audio-volume-070-muted.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-070-muted.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-070-muted.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-070-muted.svg
diff --git a/plugins/sound/resources/audio-volume-070.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-070.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-070.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-070.svg
diff --git a/plugins/sound/resources/audio-volume-080-muted.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-080-muted.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-080-muted.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-080-muted.svg
diff --git a/plugins/sound/resources/audio-volume-080.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-080.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-080.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-080.svg
diff --git a/plugins/sound/resources/audio-volume-090-muted.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-090-muted.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-090-muted.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-090-muted.svg
diff --git a/plugins/sound/resources/audio-volume-090.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-090.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-090.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-090.svg
diff --git a/plugins/sound/resources/audio-volume-100-muted.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-100-muted.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-100-muted.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-100-muted.svg
diff --git a/plugins/sound/resources/audio-volume-100.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-100.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-100.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-100.svg
diff --git a/plugins/sound/resources/audio-volume-high-symbolic.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-high-symbolic.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-high-symbolic.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-high-symbolic.svg
diff --git a/plugins/sound/resources/audio-volume-low-symbolic.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-low-symbolic.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-low-symbolic.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-low-symbolic.svg
diff --git a/plugins/sound/resources/audio-volume-medium-symbolic.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-medium-symbolic.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-medium-symbolic.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-medium-symbolic.svg
diff --git a/plugins/sound/resources/audio-volume-muted-symbolic.svg b/plugins/system-tray/system-trays/sound/resources/audio-volume-muted-symbolic.svg
similarity index 100%
rename from plugins/sound/resources/audio-volume-muted-symbolic.svg
rename to plugins/system-tray/system-trays/sound/resources/audio-volume-muted-symbolic.svg
diff --git a/plugins/sound/resources/slider_bg.png b/plugins/system-tray/system-trays/sound/resources/slider_bg.png
similarity index 100%
rename from plugins/sound/resources/slider_bg.png
rename to plugins/system-tray/system-trays/sound/resources/slider_bg.png
diff --git a/plugins/sound/resources/slider_handle.svg b/plugins/system-tray/system-trays/sound/resources/slider_handle.svg
similarity index 100%
rename from plugins/sound/resources/slider_handle.svg
rename to plugins/system-tray/system-trays/sound/resources/slider_handle.svg
diff --git a/plugins/sound/resources/sound.qrc b/plugins/system-tray/system-trays/sound/resources/sound.qrc
similarity index 100%
rename from plugins/sound/resources/sound.qrc
rename to plugins/system-tray/system-trays/sound/resources/sound.qrc
diff --git a/plugins/sound/sinkinputwidget.cpp b/plugins/system-tray/system-trays/sound/sinkinputwidget.cpp
similarity index 100%
rename from plugins/sound/sinkinputwidget.cpp
rename to plugins/system-tray/system-trays/sound/sinkinputwidget.cpp
diff --git a/plugins/sound/sinkinputwidget.h b/plugins/system-tray/system-trays/sound/sinkinputwidget.h
similarity index 100%
rename from plugins/sound/sinkinputwidget.h
rename to plugins/system-tray/system-trays/sound/sinkinputwidget.h
diff --git a/plugins/sound/sound.json b/plugins/system-tray/system-trays/sound/sound.json
similarity index 100%
rename from plugins/sound/sound.json
rename to plugins/system-tray/system-trays/sound/sound.json
diff --git a/plugins/sound/soundapplet.cpp b/plugins/system-tray/system-trays/sound/soundapplet.cpp
similarity index 100%
rename from plugins/sound/soundapplet.cpp
rename to plugins/system-tray/system-trays/sound/soundapplet.cpp
diff --git a/plugins/sound/soundapplet.h b/plugins/system-tray/system-trays/sound/soundapplet.h
similarity index 100%
rename from plugins/sound/soundapplet.h
rename to plugins/system-tray/system-trays/sound/soundapplet.h
diff --git a/plugins/sound/sounditem.cpp b/plugins/system-tray/system-trays/sound/sounditem.cpp
similarity index 100%
rename from plugins/sound/sounditem.cpp
rename to plugins/system-tray/system-trays/sound/sounditem.cpp
diff --git a/plugins/sound/sounditem.h b/plugins/system-tray/system-trays/sound/sounditem.h
similarity index 100%
rename from plugins/sound/sounditem.h
rename to plugins/system-tray/system-trays/sound/sounditem.h
diff --git a/plugins/sound/soundplugin.cpp b/plugins/system-tray/system-trays/sound/soundplugin.cpp
similarity index 100%
rename from plugins/sound/soundplugin.cpp
rename to plugins/system-tray/system-trays/sound/soundplugin.cpp
diff --git a/plugins/sound/soundplugin.h b/plugins/system-tray/system-trays/sound/soundplugin.h
similarity index 93%
rename from plugins/sound/soundplugin.h
rename to plugins/system-tray/system-trays/sound/soundplugin.h
index 42ed3b555..8def22b7d 100644
--- a/plugins/sound/soundplugin.h
+++ b/plugins/system-tray/system-trays/sound/soundplugin.h
@@ -30,8 +30,8 @@
class SoundPlugin : public QObject, PluginsItemInterface
{
Q_OBJECT
- Q_INTERFACES(PluginsItemInterface)
- Q_PLUGIN_METADATA(IID "com.deepin.dock.PluginsItemInterface" FILE "sound.json")
+// Q_INTERFACES(PluginsItemInterface)
+// Q_PLUGIN_METADATA(IID "com.deepin.dock.PluginsItemInterface" FILE "sound.json")
public:
explicit SoundPlugin(QObject *parent = 0);
diff --git a/plugins/system-tray/system-trays/sound/soundtrayloader.cpp b/plugins/system-tray/system-trays/sound/soundtrayloader.cpp
new file mode 100644
index 000000000..dabed34e8
--- /dev/null
+++ b/plugins/system-tray/system-trays/sound/soundtrayloader.cpp
@@ -0,0 +1,14 @@
+#include "soundtrayloader.h"
+#include "soundtraywidget.h"
+
+#define SoundItemKey "system-tray-sound"
+#define SoundService "com.deepin.daemon.Audio"
+
+SoundTrayLoader::SoundTrayLoader(QObject *parent) : AbstractTrayLoader(SoundService, parent)
+{
+}
+
+void SoundTrayLoader::load()
+{
+ emit systemTrayAdded(SoundItemKey, new SoundTrayWidget);
+}
diff --git a/plugins/system-tray/system-trays/sound/soundtrayloader.h b/plugins/system-tray/system-trays/sound/soundtrayloader.h
new file mode 100644
index 000000000..07710a0cd
--- /dev/null
+++ b/plugins/system-tray/system-trays/sound/soundtrayloader.h
@@ -0,0 +1,18 @@
+#ifndef SOUNDTRAYLOADER_H
+#define SOUNDTRAYLOADER_H
+
+#include "../abstracttrayloader.h"
+
+#include
+
+class SoundTrayLoader : public AbstractTrayLoader
+{
+ Q_OBJECT
+public:
+ explicit SoundTrayLoader(QObject *parent = nullptr);
+
+public Q_SLOTS:
+ void load() Q_DECL_OVERRIDE;
+};
+
+#endif // SOUNDTRAYLOADER_H
diff --git a/plugins/system-tray/system-trays/sound/soundtraywidget.cpp b/plugins/system-tray/system-trays/sound/soundtraywidget.cpp
new file mode 100644
index 000000000..2a46d2082
--- /dev/null
+++ b/plugins/system-tray/system-trays/sound/soundtraywidget.cpp
@@ -0,0 +1,195 @@
+#include "soundtraywidget.h"
+#include "sounditem.h"
+#include "constants.h"
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include "../widgets/tipswidget.h"
+
+// menu actions
+#define MUTE "mute"
+#define SETTINS "settings"
+
+DWIDGET_USE_NAMESPACE
+
+SoundTrayWidget::SoundTrayWidget(AbstractTrayWidget *parent)
+ : AbstractTrayWidget(parent),
+ m_tipsLabel(new TipsWidget(this)),
+ m_applet(new SoundApplet(this)),
+ m_sinkInter(nullptr)
+{
+ m_tipsLabel->setObjectName("sound");
+ m_tipsLabel->setVisible(false);
+
+ m_applet->setVisible(false);
+
+ connect(m_applet, static_cast(&SoundApplet::defaultSinkChanged), this, &SoundTrayWidget::sinkChanged);
+ connect(m_applet, &SoundApplet::volumeChanged, this, &SoundTrayWidget::refreshTips, Qt::QueuedConnection);
+ connect(static_cast(qApp), &DApplication::iconThemeChanged, this, &SoundTrayWidget::updateIcon);
+}
+
+void SoundTrayWidget::setActive(const bool active)
+{
+
+}
+
+void SoundTrayWidget::updateIcon()
+{
+ if (!m_sinkInter)
+ return;
+
+ const double volmue = m_applet->volumeValue();
+ const bool mute = m_sinkInter->mute();
+
+ QString iconString;
+ QString volumeString;
+
+ if (mute)
+ volumeString = "muted";
+ else if (volmue / 1000.0f >= double(2)/3)
+ volumeString = "high";
+ else if (volmue / 1000.0f >= double(1)/3)
+ volumeString = "medium";
+ else
+ volumeString = "low";
+
+ iconString = QString("audio-volume-%1-symbolic").arg(volumeString);
+
+ const auto ratio = qApp->devicePixelRatio();
+ const int iconSize = 16;
+ const QIcon icon = QIcon::fromTheme(iconString);
+ m_iconPixmap = icon.pixmap(iconSize * ratio, iconSize * ratio);
+ m_iconPixmap.setDevicePixelRatio(ratio);
+
+ update();
+}
+
+void SoundTrayWidget::sendClick(uint8_t, int, int)
+{
+
+}
+
+const QImage SoundTrayWidget::trayImage()
+{
+ return m_iconPixmap.toImage();
+}
+
+QWidget *SoundTrayWidget::tipsWidget()
+{
+ refreshTips(true);
+
+ m_tipsLabel->resize(m_tipsLabel->sizeHint().width() + 10,
+ m_tipsLabel->sizeHint().height());
+
+ return m_tipsLabel;
+}
+
+QWidget *SoundTrayWidget::popupApplet()
+{
+ return m_applet;
+}
+
+const QString SoundTrayWidget::contextMenu() const
+{
+ QList items;
+ items.reserve(2);
+
+ QMap open;
+ open["itemId"] = MUTE;
+ if (m_sinkInter->mute())
+ open["itemText"] = tr("Unmute");
+ else
+ open["itemText"] = tr("Mute");
+ open["isActive"] = true;
+ items.push_back(open);
+
+ QMap settings;
+ settings["itemId"] = SETTINS;
+ settings["itemText"] = tr("Audio Settings");
+ settings["isActive"] = true;
+ items.push_back(settings);
+
+ QMap menu;
+ menu["items"] = items;
+ menu["checkableMenu"] = false;
+ menu["singleCheck"] = false;
+
+ return QJsonDocument::fromVariant(menu).toJson();
+}
+
+void SoundTrayWidget::invokeMenuItem(const QString menuId, const bool checked)
+{
+ Q_UNUSED(checked);
+
+ if (menuId == MUTE)
+ m_sinkInter->SetMuteQueued(!m_sinkInter->mute());
+ else if (menuId == SETTINS)
+ DDBusSender()
+ .service("com.deepin.dde.ControlCenter")
+ .interface("com.deepin.dde.ControlCenter")
+ .path("/com/deepin/dde/ControlCenter")
+ .method(QString("ShowModule"))
+ .arg(QString("sound"))
+ .call();
+}
+
+QSize SoundTrayWidget::sizeHint() const
+{
+ return QSize(26, 26);
+}
+
+void SoundTrayWidget::resizeEvent(QResizeEvent *e)
+{
+ QWidget::resizeEvent(e);
+
+ updateIcon();
+}
+
+void SoundTrayWidget::wheelEvent(QWheelEvent *e)
+{
+ QWheelEvent *event = new QWheelEvent(e->pos(), e->delta(), e->buttons(), e->modifiers());
+ qApp->postEvent(m_applet->mainSlider(), event);
+
+ e->accept();
+}
+
+void SoundTrayWidget::paintEvent(QPaintEvent *e)
+{
+ QWidget::paintEvent(e);
+
+ QPainter painter(this);
+ painter.drawPixmap(rect().center() - m_iconPixmap.rect().center() / m_iconPixmap.devicePixelRatioF(), m_iconPixmap);
+}
+
+void SoundTrayWidget::refreshTips(const bool force)
+{
+ if (!force && !m_tipsLabel->isVisible())
+ return;
+
+ if(!m_sinkInter)
+ return;
+
+ QString value;
+ if (m_sinkInter->mute()) {
+ value = QString("0") + '%';
+ } else {
+ if (m_sinkInter->volume() * 1000 < m_applet->volumeValue())
+ value = QString::number(m_applet->volumeValue() / 10) + '%';
+ else
+ value = QString::number(int(m_sinkInter->volume() * 100)) + '%';
+ }
+ m_tipsLabel->setText(QString(tr("Current Volume %1").arg(value)));
+}
+
+void SoundTrayWidget::sinkChanged(DBusSink *sink)
+{
+ m_sinkInter = sink;
+
+ connect(m_sinkInter, &DBusSink::MuteChanged, this, &SoundTrayWidget::updateIcon);
+ connect(m_sinkInter, &DBusSink::VolumeChanged, this, &SoundTrayWidget::updateIcon);
+ updateIcon();
+}
diff --git a/plugins/system-tray/system-trays/sound/soundtraywidget.h b/plugins/system-tray/system-trays/sound/soundtraywidget.h
new file mode 100644
index 000000000..638a48977
--- /dev/null
+++ b/plugins/system-tray/system-trays/sound/soundtraywidget.h
@@ -0,0 +1,44 @@
+#ifndef SOUNDTRAYWIDGET_H
+#define SOUNDTRAYWIDGET_H
+
+#include "abstracttraywidget.h"
+#include "soundapplet.h"
+#include "dbus/dbussink.h"
+
+#include
+
+class TipsWidget;
+class SoundTrayWidget : public AbstractTrayWidget
+{
+public:
+ SoundTrayWidget(AbstractTrayWidget *parent = nullptr);
+
+ void setActive(const bool active) Q_DECL_OVERRIDE;
+ void updateIcon() Q_DECL_OVERRIDE;
+ void sendClick(uint8_t, int, int) Q_DECL_OVERRIDE;
+ const QImage trayImage() Q_DECL_OVERRIDE;
+
+ QWidget *tipsWidget();
+ QWidget *popupApplet();
+
+ const QString contextMenu() const;
+ void invokeMenuItem(const QString menuId, const bool checked);
+
+protected:
+ QSize sizeHint() const Q_DECL_OVERRIDE;
+ void resizeEvent(QResizeEvent *e) Q_DECL_OVERRIDE;
+ void wheelEvent(QWheelEvent *e) Q_DECL_OVERRIDE;
+ void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE;
+
+private Q_SLOTS:
+ void refreshTips(const bool force = false);
+ void sinkChanged(DBusSink *sink);
+
+private:
+ TipsWidget *m_tipsLabel;
+ SoundApplet *m_applet;
+ DBusSink *m_sinkInter;
+ QPixmap m_iconPixmap;
+};
+
+#endif // SOUNDTRAYWIDGET_H
diff --git a/plugins/system-tray/system-trays/systemtraysmanager.cpp b/plugins/system-tray/system-trays/systemtraysmanager.cpp
new file mode 100644
index 000000000..02078642e
--- /dev/null
+++ b/plugins/system-tray/system-trays/systemtraysmanager.cpp
@@ -0,0 +1,39 @@
+#include "systemtraysmanager.h"
+#include "sound/soundtrayloader.h"
+#include "shutdown/shutdowntrayloader.h"
+#include "shutdown/powertrayloader.h"
+#include "network/networktrayloader.h"
+
+SystemTraysManager::SystemTraysManager(QObject *parent)
+ : QObject(parent)
+{
+ AbstractTrayLoader *soundLoader = new SoundTrayLoader(this);
+ AbstractTrayLoader *shutdownLoader = new ShutdownTrayLoader(this);
+ AbstractTrayLoader *powerLoader = new PowerTrayLoader(this);
+ AbstractTrayLoader *networkLoader = new NetworkTrayLoader(this);
+
+ m_loaderList.append(soundLoader);
+ m_loaderList.append(shutdownLoader);
+ m_loaderList.append(powerLoader);
+ m_loaderList.append(networkLoader);
+
+ connect(soundLoader, &AbstractTrayLoader::systemTrayAdded, this, &SystemTraysManager::systemTrayWidgetAdded);
+ connect(soundLoader, &AbstractTrayLoader::systemTrayRemoved, this, &SystemTraysManager::systemTrayWidgetRemoved);
+ connect(shutdownLoader, &AbstractTrayLoader::systemTrayAdded, this, &SystemTraysManager::systemTrayWidgetAdded);
+ connect(shutdownLoader, &AbstractTrayLoader::systemTrayRemoved, this, &SystemTraysManager::systemTrayWidgetRemoved);
+ connect(powerLoader, &AbstractTrayLoader::systemTrayAdded, this, &SystemTraysManager::systemTrayWidgetAdded);
+ connect(powerLoader, &AbstractTrayLoader::systemTrayRemoved, this, &SystemTraysManager::systemTrayWidgetRemoved);
+ connect(networkLoader, &AbstractTrayLoader::systemTrayAdded, this, &SystemTraysManager::systemTrayWidgetAdded);
+ connect(networkLoader, &AbstractTrayLoader::systemTrayRemoved, this, &SystemTraysManager::systemTrayWidgetRemoved);
+}
+
+void SystemTraysManager::startLoad()
+{
+ for (auto loader : m_loaderList) {
+ if (loader->waitService() && !loader->serviceExist()) {
+ loader->waitServiceForLoad();
+ continue;
+ }
+ loader->load();
+ }
+}
diff --git a/plugins/system-tray/system-trays/systemtraysmanager.h b/plugins/system-tray/system-trays/systemtraysmanager.h
new file mode 100644
index 000000000..fd63a8e21
--- /dev/null
+++ b/plugins/system-tray/system-trays/systemtraysmanager.h
@@ -0,0 +1,27 @@
+#ifndef SYSTEMTRAYSMANAGER_H
+#define SYSTEMTRAYSMANAGER_H
+
+#include "abstracttrayloader.h"
+#include "abstracttraywidget.h"
+
+#include
+
+class SystemTraysManager : public QObject
+{
+ Q_OBJECT
+
+public:
+ explicit SystemTraysManager(QObject *parent = nullptr);
+
+Q_SIGNALS:
+ void systemTrayWidgetAdded(const QString &itemKey, AbstractTrayWidget *trayWidget);
+ void systemTrayWidgetRemoved(const QString &itemKey);
+
+public Q_SLOTS:
+ void startLoad();
+
+private:
+ QList m_loaderList;
+};
+
+#endif // SYSTEMTRAYSMANAGER_H
diff --git a/plugins/system-tray/systemtrayplugin.cpp b/plugins/system-tray/systemtrayplugin.cpp
index 4a63f2074..ac37ba60c 100644
--- a/plugins/system-tray/systemtrayplugin.cpp
+++ b/plugins/system-tray/systemtrayplugin.cpp
@@ -37,6 +37,7 @@
SystemTrayPlugin::SystemTrayPlugin(QObject *parent)
: QObject(parent),
m_trayInter(new DBusTrayManager(this)),
+ m_systemTraysLoader(new SystemTraysManager(this)),
m_trayApplet(new TrayApplet),
m_tipsLabel(new TipsWidget),
@@ -77,13 +78,17 @@ void SystemTrayPlugin::init(PluginProxyInterface *proxyInter)
connect(m_trayInter, &DBusTrayManager::TrayIconsChanged, this, &SystemTrayPlugin::trayListChanged);
connect(m_trayInter, &DBusTrayManager::Changed, this, &SystemTrayPlugin::trayChanged);
+ connect(m_systemTraysLoader, &SystemTraysManager::systemTrayWidgetAdded, this, &SystemTrayPlugin::addTrayWidget);
+ connect(m_systemTraysLoader, &SystemTraysManager::systemTrayWidgetRemoved, this, &SystemTrayPlugin::trayRemoved);
+
m_trayInter->Manage();
switchToMode(displayMode());
- QTimer::singleShot(1, this, &SystemTrayPlugin::trayListChanged);
- QTimer::singleShot(2, this, &SystemTrayPlugin::loadIndicator);
- QTimer::singleShot(3, this, &SystemTrayPlugin::sniItemsChanged);
+ QTimer::singleShot(0, this, &SystemTrayPlugin::trayListChanged);
+ QTimer::singleShot(0, this, &SystemTrayPlugin::loadIndicator);
+ QTimer::singleShot(0, this, &SystemTrayPlugin::sniItemsChanged);
+ QTimer::singleShot(0, m_systemTraysLoader, &SystemTraysManager::startLoad);
}
void SystemTrayPlugin::displayModeChanged(const Dock::DisplayMode mode)
@@ -106,7 +111,7 @@ QWidget *SystemTrayPlugin::itemWidget(const QString &itemKey)
return m_fashionItem;
}
- return m_trayList.value(itemKey);
+ return m_trayMap.value(itemKey);
}
QWidget *SystemTrayPlugin::itemTipsWidget(const QString &itemKey)
@@ -128,7 +133,7 @@ QWidget *SystemTrayPlugin::itemPopupApplet(const QString &itemKey)
return nullptr;
}
- Q_ASSERT(m_trayList.size());
+ Q_ASSERT(m_trayMap.size());
updateTipsContent();
@@ -184,7 +189,7 @@ void SystemTrayPlugin::setItemIsInContainer(const QString &itemKey, const bool c
void SystemTrayPlugin::updateTipsContent()
{
- auto trayList = m_trayList.values();
+ auto trayList = m_trayMap.values();
m_trayApplet->clear();
m_trayApplet->addWidgets(trayList);
@@ -219,7 +224,7 @@ void SystemTrayPlugin::sniItemsChanged()
for (auto item : itemServicePaths) {
sinTrayKeyList << SNITrayWidget::toSNIKey(item);
}
- for (auto itemKey : m_trayList.keys())
+ for (auto itemKey : m_trayMap.keys())
if (!sinTrayKeyList.contains(itemKey) && SNITrayWidget::isSNIKey(itemKey)) {
trayRemoved(itemKey);
}
@@ -238,7 +243,7 @@ void SystemTrayPlugin::trayListChanged()
trayList << XWindowTrayWidget::toTrayWidgetId(winid);
}
- for (auto tray : m_trayList.keys())
+ for (auto tray : m_trayMap.keys())
if (!trayList.contains(tray) && XWindowTrayWidget::isWinIdKey(tray)) {
trayRemoved(tray);
}
@@ -248,14 +253,14 @@ void SystemTrayPlugin::trayListChanged()
}
}
-void SystemTrayPlugin::addTrayWidget(const QString &itemKey, AbstractTrayWidget * trayWidget)
+void SystemTrayPlugin::addTrayWidget(const QString &itemKey, AbstractTrayWidget *trayWidget)
{
if (!trayWidget) {
return;
}
- if (!m_trayList.values().contains(trayWidget)) {
- m_trayList.insert(itemKey, trayWidget);
+ if (!m_trayMap.values().contains(trayWidget)) {
+ m_trayMap.insert(itemKey, trayWidget);
}
if (displayMode() == Dock::Efficient) {
@@ -266,9 +271,9 @@ void SystemTrayPlugin::addTrayWidget(const QString &itemKey, AbstractTrayWidget
}
}
-void SystemTrayPlugin::trayAdded(const QString itemKey)
+void SystemTrayPlugin::trayAdded(const QString &itemKey)
{
- if (m_trayList.contains(itemKey)) {
+ if (m_trayMap.contains(itemKey)) {
return;
}
@@ -286,12 +291,12 @@ void SystemTrayPlugin::trayAdded(const QString itemKey)
IndicatorTray *trayWidget = nullptr;
QString indicatorKey = IndicatorTrayWidget::toIndicatorId(itemKey);
- if (!m_indicatorList.keys().contains(itemKey)) {
+ if (!m_indicatorMap.keys().contains(itemKey)) {
trayWidget = new IndicatorTray(indicatorKey);
- m_indicatorList[indicatorKey] = trayWidget;
+ m_indicatorMap[indicatorKey] = trayWidget;
}
else {
- trayWidget = m_indicatorList[itemKey];
+ trayWidget = m_indicatorMap[itemKey];
}
connect(trayWidget, &IndicatorTray::delayLoaded,
@@ -306,13 +311,13 @@ void SystemTrayPlugin::trayAdded(const QString itemKey)
}
}
-void SystemTrayPlugin::trayRemoved(const QString itemKey)
+void SystemTrayPlugin::trayRemoved(const QString &itemKey)
{
- if (!m_trayList.contains(itemKey)) {
+ if (!m_trayMap.contains(itemKey)) {
return;
}
- AbstractTrayWidget *widget = m_trayList.take(itemKey);
+ AbstractTrayWidget *widget = m_trayMap.take(itemKey);
m_fashionItem->trayWidgetRemoved(widget);
m_proxyInter->itemRemoved(this, itemKey);
widget->deleteLater();
@@ -325,11 +330,11 @@ void SystemTrayPlugin::trayRemoved(const QString itemKey)
void SystemTrayPlugin::trayChanged(quint32 winId)
{
QString itemKey = XWindowTrayWidget::toTrayWidgetId(winId);
- if (!m_trayList.contains(itemKey)) {
+ if (!m_trayMap.contains(itemKey)) {
return;
}
- m_trayList.value(itemKey)->updateIcon();
+ m_trayMap.value(itemKey)->updateIcon();
if (m_trayApplet->isVisible()) {
updateTipsContent();
@@ -339,7 +344,7 @@ void SystemTrayPlugin::trayChanged(quint32 winId)
void SystemTrayPlugin::sniItemIconChanged()
{
AbstractTrayWidget *trayWidget = static_cast(sender());
- if (!m_trayList.values().contains(trayWidget)) {
+ if (!m_trayMap.values().contains(trayWidget)) {
return;
}
}
@@ -347,19 +352,19 @@ void SystemTrayPlugin::sniItemIconChanged()
void SystemTrayPlugin::switchToMode(const Dock::DisplayMode mode)
{
if (mode == Dock::Fashion) {
- for (auto itemKey : m_trayList.keys()) {
+ for (auto itemKey : m_trayMap.keys()) {
m_proxyInter->itemRemoved(this, itemKey);
}
- if (m_trayList.isEmpty()) {
+ if (m_trayMap.isEmpty()) {
m_proxyInter->itemRemoved(this, FASHION_MODE_ITEM);
} else {
- m_fashionItem->setTrayWidgets(m_trayList.values());
+ m_fashionItem->setTrayWidgets(m_trayMap.values());
m_proxyInter->itemAdded(this, FASHION_MODE_ITEM);
}
} else {
m_fashionItem->clearTrayWidgets();
m_proxyInter->itemRemoved(this, FASHION_MODE_ITEM);
- for (auto itemKey : m_trayList.keys()) {
+ for (auto itemKey : m_trayMap.keys()) {
m_proxyInter->itemAdded(this, itemKey);
}
}
diff --git a/plugins/system-tray/systemtrayplugin.h b/plugins/system-tray/systemtrayplugin.h
index ab13a4105..e68622151 100644
--- a/plugins/system-tray/systemtrayplugin.h
+++ b/plugins/system-tray/systemtrayplugin.h
@@ -27,10 +27,10 @@
#include "trayapplet.h"
#include "sni/statusnotifierwatcher.h"
#include "dbus/dbustraymanager.h"
-
#include "xwindowtraywidget.h"
#include "indicatortray.h"
#include "indicatortraywidget.h"
+#include "system-trays/systemtraysmanager.h"
#include
#include
@@ -65,13 +65,13 @@ private:
void loadIndicator();
void updateTipsContent();
const QString getWindowClass(quint32 winId);
- void addTrayWidget(const QString &itemKey, AbstractTrayWidget * trayWidget);
private slots:
+ void addTrayWidget(const QString &itemKey, AbstractTrayWidget *trayWidget);
void sniItemsChanged();
void trayListChanged();
- void trayAdded(const QString itemKey);
- void trayRemoved(const QString itemKey);
+ void trayAdded(const QString &itemKey);
+ void trayRemoved(const QString &itemKey);
void trayChanged(quint32 winId);
void sniItemIconChanged();
void switchToMode(const Dock::DisplayMode mode);
@@ -80,8 +80,10 @@ private:
DBusTrayManager *m_trayInter;
StatusNotifierWatcher *m_sniWatcher;
FashionTrayItem *m_fashionItem;
- QMap m_trayList;
- QMap m_indicatorList;
+ SystemTraysManager *m_systemTraysLoader;
+
+ QMap m_trayMap;
+ QMap m_indicatorMap;
TrayApplet *m_trayApplet;
TipsWidget *m_tipsLabel;