diff --git a/interfaces/interfaces.pri b/interfaces/interfaces.pri
index deb435225..bdcea4e0c 100644
--- a/interfaces/interfaces.pri
+++ b/interfaces/interfaces.pri
@@ -9,3 +9,5 @@ isEmpty(PREFIX)
{
PREFIX = /usr
}
+
+SOURCES += \
diff --git a/interfaces/pluginsiteminterface.h b/interfaces/pluginsiteminterface.h
index 6e1ef862f..6f943bba4 100644
--- a/interfaces/pluginsiteminterface.h
+++ b/interfaces/pluginsiteminterface.h
@@ -19,7 +19,7 @@ public:
virtual ~PluginsItemInterface() {}
// the unique plugin id
- virtual const QString pluginName() = 0;
+ virtual const QString pluginName() const = 0;
// init plugins
virtual void init(PluginProxyInterface *proxyInter) = 0;
// dock display mode changed
diff --git a/plugins/datetime/datetimeplugin.cpp b/plugins/datetime/datetimeplugin.cpp
index 45a346ef5..63ce913d4 100644
--- a/plugins/datetime/datetimeplugin.cpp
+++ b/plugins/datetime/datetimeplugin.cpp
@@ -17,7 +17,7 @@ DatetimePlugin::~DatetimePlugin()
delete m_centeralWidget;
}
-const QString DatetimePlugin::pluginName()
+const QString DatetimePlugin::pluginName() const
{
return "datetime";
}
diff --git a/plugins/datetime/datetimeplugin.h b/plugins/datetime/datetimeplugin.h
index 7e0b26807..5993ec437 100644
--- a/plugins/datetime/datetimeplugin.h
+++ b/plugins/datetime/datetimeplugin.h
@@ -16,7 +16,7 @@ public:
explicit DatetimePlugin(QObject *parent = 0);
~DatetimePlugin();
- const QString pluginName();
+ const QString pluginName() const;
ItemType pluginType(const QString &itemKey);
void init(PluginProxyInterface *proxyInter);
diff --git a/plugins/plugins.pro b/plugins/plugins.pro
index 9aa27fd56..6156af2b3 100644
--- a/plugins/plugins.pro
+++ b/plugins/plugins.pro
@@ -1,4 +1,5 @@
TEMPLATE = subdirs
SUBDIRS = \
datetime \
- shutdown
+ shutdown \
+ system-tray
diff --git a/plugins/shutdown/shutdownplugin.cpp b/plugins/shutdown/shutdownplugin.cpp
index 94391260b..b90eea11b 100644
--- a/plugins/shutdown/shutdownplugin.cpp
+++ b/plugins/shutdown/shutdownplugin.cpp
@@ -8,7 +8,7 @@ ShutdownPlugin::ShutdownPlugin(QObject *parent)
m_icon.addFile(":/icons/resources/icons/fashion.svg");
}
-const QString ShutdownPlugin::pluginName()
+const QString ShutdownPlugin::pluginName() const
{
return "shutdown";
}
diff --git a/plugins/shutdown/shutdownplugin.h b/plugins/shutdown/shutdownplugin.h
index cf8269b27..53bedbd66 100644
--- a/plugins/shutdown/shutdownplugin.h
+++ b/plugins/shutdown/shutdownplugin.h
@@ -12,7 +12,7 @@ class ShutdownPlugin : public QObject, PluginsItemInterface
public:
explicit ShutdownPlugin(QObject *parent = 0);
- const QString pluginName();
+ const QString pluginName() const;
void init(PluginProxyInterface *proxyInter);
ItemType pluginType(const QString &itemKey);
diff --git a/plugins/system-tray/dbus/com.deepin.dde.TrayManager.xml b/plugins/system-tray/dbus/com.deepin.dde.TrayManager.xml
new file mode 100644
index 000000000..034cf3cb9
--- /dev/null
+++ b/plugins/system-tray/dbus/com.deepin.dde.TrayManager.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/system-tray/dbus/dbustraymanager.cpp b/plugins/system-tray/dbus/dbustraymanager.cpp
new file mode 100644
index 000000000..638174b2f
--- /dev/null
+++ b/plugins/system-tray/dbus/dbustraymanager.cpp
@@ -0,0 +1,31 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was: qdbusxml2cpp -c DBusTrayManager -p dbustraymanager com.deepin.dde.TrayManager.xml
+ *
+ * qdbusxml2cpp is Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
+ *
+ * This is an auto-generated file.
+ * This file may have been hand-edited. Look for HAND-EDIT comments
+ * before re-generating it.
+ */
+
+#include "dbustraymanager.h"
+
+/*
+ * Implementation of interface class DBusTrayManager
+ */
+
+DBusTrayManager::DBusTrayManager(QObject *parent)
+ : QDBusAbstractInterface("com.deepin.dde.TrayManager", "/com/deepin/dde/TrayManager", staticInterfaceName(), QDBusConnection::sessionBus(), parent)
+{
+ qRegisterMetaType("TrayList");
+ qDBusRegisterMetaType();
+
+ QDBusConnection::sessionBus().connect(this->service(), this->path(), "org.freedesktop.DBus.Properties", "PropertiesChanged","sa{sv}as", this, SLOT(__propertyChanged__(QDBusMessage)));
+}
+
+DBusTrayManager::~DBusTrayManager()
+{
+ QDBusConnection::sessionBus().disconnect(service(), path(), "org.freedesktop.DBus.Properties", "PropertiesChanged", "sa{sv}as", this, SLOT(propertyChanged(QDBusMessage)));
+}
+
diff --git a/plugins/system-tray/dbus/dbustraymanager.h b/plugins/system-tray/dbus/dbustraymanager.h
new file mode 100644
index 000000000..f587babb8
--- /dev/null
+++ b/plugins/system-tray/dbus/dbustraymanager.h
@@ -0,0 +1,113 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was: qdbusxml2cpp -c DBusTrayManager -p dbustraymanager com.deepin.dde.TrayManager.xml
+ *
+ * qdbusxml2cpp is Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
+ *
+ * This is an auto-generated file.
+ * Do not edit! All changes made to it will be lost.
+ */
+
+#ifndef DBUSTRAYMANAGER_H_1467094672
+#define DBUSTRAYMANAGER_H_1467094672
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+typedef QList TrayList;
+
+/*
+ * Proxy class for interface com.deepin.dde.TrayManager
+ */
+class DBusTrayManager: public QDBusAbstractInterface
+{
+ Q_OBJECT
+
+ Q_SLOT void __propertyChanged__(const QDBusMessage& msg)
+ {
+ QList arguments = msg.arguments();
+ if (3 != arguments.count())
+ return;
+ QString interfaceName = msg.arguments().at(0).toString();
+ if (interfaceName !="com.deepin.dde.TrayManager")
+ return;
+ QVariantMap changedProps = qdbus_cast(arguments.at(1).value());
+ foreach(const QString &prop, changedProps.keys()) {
+ const QMetaObject* self = metaObject();
+ for (int i=self->propertyOffset(); i < self->propertyCount(); ++i) {
+ QMetaProperty p = self->property(i);
+ if (p.name() == prop) {
+ Q_EMIT p.notifySignal().invoke(this);
+ }
+ }
+ }
+ }
+public:
+ static inline const char *staticInterfaceName()
+ { return "com.deepin.dde.TrayManager"; }
+
+public:
+ explicit DBusTrayManager(QObject *parent = 0);
+
+ ~DBusTrayManager();
+
+ Q_PROPERTY(TrayList TrayIcons READ trayIcons NOTIFY TrayIconsChanged)
+ inline TrayList trayIcons() const
+ { return qvariant_cast< TrayList >(property("TrayIcons")); }
+
+public Q_SLOTS: // METHODS
+ inline QDBusPendingReply<> EnableNotification(uint in0, bool in1)
+ {
+ QList argumentList;
+ argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1);
+ return asyncCallWithArgumentList(QStringLiteral("EnableNotification"), argumentList);
+ }
+
+ inline QDBusPendingReply GetName(uint in0)
+ {
+ QList argumentList;
+ argumentList << QVariant::fromValue(in0);
+ return asyncCallWithArgumentList(QStringLiteral("GetName"), argumentList);
+ }
+
+ inline QDBusPendingReply Manage()
+ {
+ QList argumentList;
+ return asyncCallWithArgumentList(QStringLiteral("Manage"), argumentList);
+ }
+
+ inline QDBusPendingReply<> RetryManager()
+ {
+ QList argumentList;
+ return asyncCallWithArgumentList(QStringLiteral("RetryManager"), argumentList);
+ }
+
+ inline QDBusPendingReply Unmanage()
+ {
+ QList argumentList;
+ return asyncCallWithArgumentList(QStringLiteral("Unmanage"), argumentList);
+ }
+
+Q_SIGNALS: // SIGNALS
+ void Added(uint in0);
+ void Changed(uint in0);
+ void Inited();
+ void Removed(uint in0);
+// begin property changed signals
+void TrayIconsChanged();
+};
+
+namespace com {
+ namespace deepin {
+ namespace dde {
+ typedef ::DBusTrayManager TrayManager;
+ }
+ }
+}
+#endif
diff --git a/plugins/system-tray/system-tray.json b/plugins/system-tray/system-tray.json
new file mode 100644
index 000000000..2c63c0851
--- /dev/null
+++ b/plugins/system-tray/system-tray.json
@@ -0,0 +1,2 @@
+{
+}
diff --git a/plugins/system-tray/system-tray.pro b/plugins/system-tray/system-tray.pro
new file mode 100644
index 000000000..1320fa382
--- /dev/null
+++ b/plugins/system-tray/system-tray.pro
@@ -0,0 +1,21 @@
+
+include(../../interfaces/interfaces.pri)
+
+QT += widgets
+TEMPLATE = lib
+CONFIG += plugin c++11 link_pkgconfig
+PKGCONFIG +=
+
+TARGET = $$qtLibraryTarget(system-tray)
+DESTDIR = $$_PRO_FILE_PWD_/../
+
+HEADERS += \
+ systemtrayplugin.h \
+ dbus/dbustraymanager.h
+
+SOURCES += \
+ systemtrayplugin.cpp \
+ dbus/dbustraymanager.cpp
+
+target.path = $${PREFIX}/lib/dde-dock/plugins/
+INSTALLS += target
diff --git a/plugins/system-tray/systemtrayplugin.cpp b/plugins/system-tray/systemtrayplugin.cpp
new file mode 100644
index 000000000..cefdfbf02
--- /dev/null
+++ b/plugins/system-tray/systemtrayplugin.cpp
@@ -0,0 +1,18 @@
+#include "systemtrayplugin.h"
+
+SystemTrayPlugin::SystemTrayPlugin(QObject *parent)
+ : QObject(parent),
+ m_trayInter(new DBusTrayManager(this))
+{
+
+}
+
+const QString SystemTrayPlugin::pluginName() const
+{
+ return "system-tray";
+}
+
+void SystemTrayPlugin::init(PluginProxyInterface *proxyInter)
+{
+ m_proxyInter = proxyInter;
+}
diff --git a/plugins/system-tray/systemtrayplugin.h b/plugins/system-tray/systemtrayplugin.h
new file mode 100644
index 000000000..0ee2cdc90
--- /dev/null
+++ b/plugins/system-tray/systemtrayplugin.h
@@ -0,0 +1,24 @@
+#ifndef SYSTEMTRAYPLUGIN_H
+#define SYSTEMTRAYPLUGIN_H
+
+#include "pluginsiteminterface.h"
+
+#include "dbus/dbustraymanager.h"
+
+class SystemTrayPlugin : public QObject, PluginsItemInterface
+{
+ Q_OBJECT
+ Q_INTERFACES(PluginsItemInterface)
+ Q_PLUGIN_METADATA(IID "com.deepin.dock.PluginsItemInterface" FILE "system-tray.json")
+
+public:
+ explicit SystemTrayPlugin(QObject *parent = 0);
+
+ const QString pluginName() const;
+ void init(PluginProxyInterface *proxyInter);
+
+private:
+ DBusTrayManager *m_trayInter;
+};
+
+#endif // SYSTEMTRAYPLUGIN_H