diff --git a/dde-dock-systray-plugin/dde-dock-systray-plugin.pro b/dde-dock-systray-plugin/dde-dock-systray-plugin.pro index 35362a047..f57e46610 100644 --- a/dde-dock-systray-plugin/dde-dock-systray-plugin.pro +++ b/dde-dock-systray-plugin/dde-dock-systray-plugin.pro @@ -22,3 +22,6 @@ HEADERS += systrayplugin.h \ docktrayitem.h \ ../dde-dock/src/abstractdockitem.h \ dbustraymanager.h + +target.path = /usr/share/dde-dock/plugins/ +INSTALLS += target diff --git a/dde-dock/src/systraymanager.cpp b/dde-dock/src/systraymanager.cpp index 36f9d50ff..5e4d96b6d 100644 --- a/dde-dock/src/systraymanager.cpp +++ b/dde-dock/src/systraymanager.cpp @@ -4,6 +4,8 @@ #include "systraymanager.h" +static QString SystrayPluginPath = "/usr/share/dde-dock/plugins/libdock-systray-plugin.so"; + SystrayManager::SystrayManager(QObject *parent) : QObject(parent), m_plugin(0) @@ -13,17 +15,25 @@ SystrayManager::SystrayManager(QObject *parent) QList SystrayManager::trayIcons() { - return m_plugin->items(); + if (m_plugin) { + return m_plugin->items(); + } else { + return QList(); + } } void SystrayManager::loadPlugin() { - QPluginLoader loader("/home/hualet/project/linuxdeepin/dde-workspace-2015/dde-dock-systray-plugin/build/libdock-systray-plugin.so"); - QObject *plugin = loader.instance(); - if (plugin) { - m_plugin = qobject_cast(plugin); + if (QFile::exists(SystrayPluginPath)) { + QPluginLoader loader(SystrayPluginPath); + QObject *plugin = loader.instance(); + if (plugin) { + m_plugin = qobject_cast(plugin); + } else { + qWarning() << "Failed to load systray plugin."; + qWarning() << loader.errorString(); + } } else { - qWarning() << "Failed to load systray plugin."; - qWarning() << loader.errorString(); + qWarning() << "libdock-systray-plugin.so file not found!"; } } diff --git a/dde-dock/src/systraymanager.h b/dde-dock/src/systraymanager.h index 5d38e738a..e092f99c3 100644 --- a/dde-dock/src/systraymanager.h +++ b/dde-dock/src/systraymanager.h @@ -16,6 +16,7 @@ private: DockPluginInterface *m_plugin; void loadPlugin(); + void unloadPlugin(); }; #endif // SYSTRAYMANAGER_H