summaryrefslogtreecommitdiffstats
path: root/core/pluginmanager.cpp
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2016-04-04 22:02:03 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2016-04-04 22:33:58 -0700
commit7be962bfc2879a72c32ff67518731347dcdff6de (patch)
treed05bf7ab234a448ee37a15b608e2b939f2285d07 /core/pluginmanager.cpp
parent2d760a7bff71c46c5aeba37c40d236ea16eefea2 (diff)
downloadsubsurface-7be962bfc2879a72c32ff67518731347dcdff6de.tar.gz
Move subsurface-core to core and qt-mobile to mobile-widgets
Having subsurface-core as a directory name really messes with autocomplete and is obviously redundant. Simmilarly, qt-mobile caused an autocomplete conflict and also was inconsistent with the desktop-widget name for the directory containing the "other" UI. And while cleaning up the resulting change in the path name for include files, I decided to clean up those even more to make them consistent overall. This could have been handled in more commits, but since this requires a make clean before the build, it seemed more sensible to do it all in one. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'core/pluginmanager.cpp')
-rw-r--r--core/pluginmanager.cpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/core/pluginmanager.cpp b/core/pluginmanager.cpp
new file mode 100644
index 000000000..28c978280
--- /dev/null
+++ b/core/pluginmanager.cpp
@@ -0,0 +1,53 @@
+#include "pluginmanager.h"
+
+#include <QApplication>
+#include <QDir>
+#include <QPluginLoader>
+#include <QDebug>
+
+static QList<ISocialNetworkIntegration*> _socialNetworks;
+
+PluginManager& PluginManager::instance()
+{
+ static PluginManager self;
+ return self;
+}
+
+PluginManager::PluginManager()
+{
+}
+
+void PluginManager::loadPlugins()
+{
+ QDir pluginsDir(qApp->applicationDirPath());
+
+#if defined(Q_OS_WIN)
+ if (pluginsDir.dirName().toLower() == "debug" || pluginsDir.dirName().toLower() == "release")
+ pluginsDir.cdUp();
+#elif defined(Q_OS_MAC)
+ if (pluginsDir.dirName() == "MacOS") {
+ pluginsDir.cdUp();
+ pluginsDir.cdUp();
+ pluginsDir.cdUp();
+ }
+#endif
+ pluginsDir.cd("plugins");
+
+ qDebug() << "Plugins Directory: " << pluginsDir;
+ foreach (const QString& fileName, pluginsDir.entryList(QDir::Files)) {
+ QPluginLoader loader(pluginsDir.absoluteFilePath(fileName));
+ QObject *plugin = loader.instance();
+ if(!plugin)
+ continue;
+
+ if (ISocialNetworkIntegration *social = qobject_cast<ISocialNetworkIntegration*>(plugin)) {
+ qDebug() << "Adding the plugin: " << social->socialNetworkName();
+ _socialNetworks.push_back(social);
+ }
+ }
+}
+
+QList<ISocialNetworkIntegration*> PluginManager::socialNetworkIntegrationPlugins() const
+{
+ return _socialNetworks;
+}