diff options
Diffstat (limited to 'src/applicationmenu.cpp')
-rw-r--r-- | src/applicationmenu.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/applicationmenu.cpp b/src/applicationmenu.cpp index b7acd57..dc888e7 100644 --- a/src/applicationmenu.cpp +++ b/src/applicationmenu.cpp @@ -13,10 +13,12 @@ #include "session/sessiondialog.h" #include "smolbote/plugininterface.hpp" #include <QPluginLoader> +#include <spdlog/spdlog.h> ApplicationMenu::ApplicationMenu(Browser *app, QWidget *parent) : QMenu(parent) { + m_app = app; setTitle(qApp->applicationName()); Configuration conf; @@ -57,11 +59,21 @@ void ApplicationMenu::addPlugin(QPluginLoader *plugin) auto *action = addAction(metadata.value("name").toString()); action->setShortcut(QKeySequence::fromString(metadata.value("shortcut").toString())); - connect(action, &QAction::triggered, this, [this, plugin]() { + connect(action, &QAction::triggered, [this, plugin]() { if(plugin->isLoaded()) { - if(const auto *interface = qobject_cast<PluginInterface *>(plugin->instance())) { - interface->createWidget(this->parentWidget())->exec(); + const auto *interface = qobject_cast<PluginInterface *>(plugin->instance()); + auto *dlg = interface->createWidget(this->parentWidget()); + + if(auto *profileDlg = dynamic_cast<ProfileDialog*>(dlg)) { + WebProfileManager mgr; + mgr.walk([profileDlg](const QString &id, WebProfile *profile, QSettings *settings) { + profileDlg->addProfile(id, profile->name(), profile, settings); + }); } + + dlg->exec(); + } else { + spdlog::warn("Trying to run unloaded plugin!"); } }); insertAction(bottom_pluginSeparator, action); |