diff options
Diffstat (limited to 'src/browser.cpp')
-rw-r--r-- | src/browser.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/browser.cpp b/src/browser.cpp index 8b7f40f..542465b 100644 --- a/src/browser.cpp +++ b/src/browser.cpp @@ -13,6 +13,9 @@ #include <bookmarks/bookmarkswidget.h> #include <downloads/downloadswidget.h> +#include <QPluginLoader> +#include <QtPlugin> + Browser::Browser(int &argc, char *argv[]) : SingleApplication(argc, argv) { @@ -34,12 +37,25 @@ Browser::~Browser() } qDebug("Waiting for threads to wind down: %s", QThreadPool::globalInstance()->waitForDone() ? "done" : "failed"); + + qDeleteAll(m_plugins); } void Browser::setConfiguration(std::shared_ptr<Configuration> &config) { m_config = config; + // plugin loader + QPluginLoader loader("plugins/ProfileEditor/libProfileEditorPlugin.so"); + qDebug("Trying to load %s: %s", qUtf8Printable(loader.fileName()), loader.load() ? "ok" : "failed"); + if(!loader.isLoaded()) { + qDebug("Error: %s", qUtf8Printable(loader.errorString())); + } else { + PluginInterface *plugin = qobject_cast<PluginInterface *>(loader.instance()); + m_plugins.append(plugin); + //qDebug("author: %s", qUtf8Printable(loader.metaData()["MetaData"].toObject()["author"].toString())); + } + m_bookmarksManager = std::make_shared<BookmarksWidget>(QString::fromStdString(m_config->value<std::string>("bookmarks.path").value())); m_downloadManager = std::make_shared<DownloadsWidget>(QString::fromStdString(m_config->value<std::string>("downloads.path").value())); @@ -57,6 +73,7 @@ MainWindow *Browser::createWindow() window->setBookmarksWidget(m_bookmarksManager); window->setDownloadsWidget(m_downloadManager); window->setProfile(m_defaultProfile); + window->addPlugins(m_plugins); m_windows.append(window); |