dde-dock/frame/controller/dockpluginscontroller.cpp
石博文 7d94c04f58 fix release version plugins load path eror
Change-Id: I2e4c6cd2f36b7a104af47a305e582f1a300a3bb4
2016-08-02 09:28:06 +08:00

48 lines
1.2 KiB
C++

#include "dockpluginscontroller.h"
#include "pluginsiteminterface.h"
#include <QDebug>
#include <QDir>
DockPluginsController::DockPluginsController(QObject *parent)
: QObject(parent)
{
QMetaObject::invokeMethod(this, "loadPlugins", Qt::QueuedConnection);
}
DockPluginsController::~DockPluginsController()
{
}
void DockPluginsController::loadPlugins()
{
Q_ASSERT(m_pluginLoaderList.isEmpty());
Q_ASSERT(m_pluginsInterfaceList.isEmpty());
#ifdef QT_DEBUG
const QDir pluginsDir("plugins");
#else
const QDir pluginsDir("../lib/dde-dock/plugins");
#endif
const QStringList plugins = pluginsDir.entryList(QDir::Files);
for (const QString file : plugins)
{
if (!QLibrary::isLibrary(file))
continue;
const QString pluginFilePath = pluginsDir.absoluteFilePath(file);
QPluginLoader *pluginLoader = new QPluginLoader(pluginFilePath, this);
PluginsItemInterface *interface = qobject_cast<PluginsItemInterface *>(pluginLoader->instance());
if (!interface)
{
pluginLoader->deleteLater();
continue;
}
m_pluginLoaderList.append(pluginLoader);
m_pluginsInterfaceList.append(interface);
emit pluginsInserted(interface);
}
}