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