aboutsummaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2018-10-09 12:05:28 +0200
committerAqua-sama <aqua@iserlohn-fortress.net>2018-10-09 12:05:28 +0200
commit3639d5789259561c531a3481d7061a0cb492c644 (patch)
treec9c7ff04022b62cf5be4d4ea31bf28d966ccefda /src/main.cpp
parentCreate .profile file when adding a new profile (diff)
downloadsmolbote-3639d5789259561c531a3481d7061a0cb492c644.tar.xz
Unlink plugins from lib/ libraries
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp37
1 files changed, 19 insertions, 18 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 6940856..e0ba7eb 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -7,7 +7,6 @@
*/
#include "browser.h"
-#include "plugin.h"
#include "session.h"
#include "util.h"
#include "version.h"
@@ -17,6 +16,8 @@
#include <configuration/configuration.h>
#include <iostream>
#include <memory>
+#include <QPluginLoader>
+#include <plugininterface.h>
#ifdef _WIN32
#include <cstdio>
#include <windows.h>
@@ -102,19 +103,23 @@ int main(int argc, char **argv)
return 0;
}
- QVector<Plugin> plugins;
+ QVector<QPluginLoader *> plugins;
+ CommandHash_t pluginCommands;
+
for(const QString &path : Util::files(config->value<QString>("plugins.path").value())) {
- plugins.append(loadPluginFromPath(path));
- }
- QMap<QString, std::function<int()>> pluginCommands;
- for(const auto &plugin : plugins) {
- auto *pluginInterface = qobject_cast<PluginInterface *>(plugin.instance);
- Q_CHECK_PTR(pluginInterface);
-
- QHashIterator<QString, std::function<int()>> i(pluginInterface->commands());
- while(i.hasNext()) {
- i.next();
- pluginCommands.insert(i.key(), i.value());
+ QPluginLoader *loader = new QPluginLoader(path);
+ const bool loaded = loader->load();
+#ifdef QT_DEBUG
+ qDebug("Loading plugin %s %s", qUtf8Printable(path), loaded ? "[ok]" : "[failed]");
+#endif
+
+ if(loader->load()) {
+ plugins.append(loader);
+ auto *plugin = qobject_cast<PluginInterface *>(loader->instance());
+ pluginCommands.unite(plugin->commands());
+ } else {
+ qDebug("%s", qUtf8Printable(loader->errorString()));
+ delete loader;
}
}
@@ -187,11 +192,7 @@ int main(int argc, char **argv)
auto profile = config->value<QString>("profile.default");
app.setConfiguration(config);
- app.setup();
-
- for(const Plugin &plugin : plugins) {
- app.registerPlugin(plugin);
- }
+ app.setup(plugins);
QStringList urls;
if(arguments) {