diff options
author | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-10-09 12:05:28 +0200 |
---|---|---|
committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-10-09 12:05:28 +0200 |
commit | 3639d5789259561c531a3481d7061a0cb492c644 (patch) | |
tree | c9c7ff04022b62cf5be4d4ea31bf28d966ccefda /src/browser.cpp | |
parent | Create .profile file when adding a new profile (diff) | |
download | smolbote-3639d5789259561c531a3481d7061a0cb492c644.tar.xz |
Unlink plugins from lib/ libraries
Diffstat (limited to 'src/browser.cpp')
-rw-r--r-- | src/browser.cpp | 73 |
1 files changed, 47 insertions, 26 deletions
diff --git a/src/browser.cpp b/src/browser.cpp index 97020bc..0ad1071 100644 --- a/src/browser.cpp +++ b/src/browser.cpp @@ -28,6 +28,8 @@ #include <web/profilemanager.h> #include <web/webprofile.h> #include "webengine/filter.h" +#include <QPluginLoader> +#include <plugininterface.h> Browser::Browser(int &argc, char *argv[], bool allowSecondary) : SingleApplication(argc, argv, allowSecondary, SingleApplication::User | SingleApplication::SecondaryNotification | SingleApplication::ExcludeAppVersion) @@ -49,23 +51,48 @@ Browser::~Browser() void Browser::about() { auto *dlg = new AboutDialog; - for(const Plugin &plugin : qAsConst(m_plugins)) { - dlg->addPlugin(plugin.name, plugin.author, plugin.shortcut.toString()); + for(const QPluginLoader *loader : qAsConst(m_plugins)) { + const auto meta = loader->metaData().value("MetaData").toObject(); + dlg->addPlugin(meta.value("name").toString(), meta.value("author").toString(), meta.value("shortcut").toString()); } dlg->exec(); } -QPair<QString, WebProfile *> Browser::loadProfile(const QString &id) +const QStringList Browser::configurationOptions() const +{ + QStringList options; + for(const auto &option : m_config->options()) { + options.append(QString::fromStdString(option->long_name())); + } + return options; +} + +const QString Browser::configuration(const QString& key) const +{ + return m_config->value<QString>(qUtf8Printable(key)).value_or(QString()); +} + +void Browser::setConfiguration(const QString& key, const QString& value) +{ + m_config->setValue(qUtf8Printable(key), value); +} + +const QList<QPair<QString, Profile *>> Browser::profileList() const +{ + QList<QPair<QString, Profile *>> profiles; + for(const QString &id : m_profileManager->idList()) { + profiles.append(qMakePair(id, m_profileManager->profile(id))); + } + return profiles; +} + +QPair<QString, Profile *> Browser::loadProfile(const QString &id, bool isOffTheRecord) { WebProfile *profile = nullptr; if(QFile::exists(id)) { - //qDebug("id %s exists", qUtf8Printable(id)); profile = m_profileManager->loadProfile(id); } else { - QDir profileDir(m_config->value<QString>("profile.path").value()); - //qDebug("id %s --> %s", qUtf8Printable(id), qUtf8Printable(profileDir.absoluteFilePath(id + ".profile"))); - profile = m_profileManager->loadProfile(profileDir.absoluteFilePath(id + ".profile")); - profile->setName(id); + profile = m_profileManager->createProfile(id, isOffTheRecord); } connect(profile, &WebProfile::downloadRequested, m_downloads.get(), &DownloadsWidget::addDownload); auto *interceptor = new UrlRequestInterceptor(m_urlFilter.get(), profile, profile); @@ -74,6 +101,11 @@ QPair<QString, WebProfile *> Browser::loadProfile(const QString &id) return QPair<QString, WebProfile *>(m_profileManager->id(profile), profile); } +void Browser::removeProfile(const QString &id) +{ + m_profileManager->deleteProfile(id); +} + void Browser::setConfiguration(std::unique_ptr<Configuration> &config) { Q_ASSERT(config); @@ -91,20 +123,10 @@ ProfileManager *Browser::getProfileManager() return m_profileManager; } -void Browser::registerPlugin(const Plugin &plugin) -{ - Q_ASSERT(m_config); - - auto *p = qobject_cast<PluginInterface *>(plugin.instance); - if(p != nullptr) { - p->setBrowserInterface(this); - m_plugins.append(plugin); - } -} - -void Browser::setup() +void Browser::setup(QVector<QPluginLoader *> plugins) { Q_ASSERT(m_config); + m_plugins = plugins; auto stylesheet = m_config->value<QString>("browser.stylesheet"); if(stylesheet) { @@ -132,7 +154,7 @@ void Browser::setup() const QString id = m_config->value<QString>("profile.default").value(); auto *profile = m_profileManager->profile(id); if(profile == nullptr) { - profile = this->loadProfile(id).second; + profile = qobject_cast<WebProfile *>(loadProfile(id).second); } WebProfile::setDefaultProfile(profile); @@ -225,13 +247,12 @@ MainWindow *Browser::createWindow() }); window->addAction(MainWindow::ToolsMenu, downloadsAction); - for(const Plugin &p : qAsConst(m_plugins)) { - auto *plugin = qobject_cast<PluginInterface *>(p.instance); + for(QPluginLoader *loader : qAsConst(m_plugins)) { + const auto *plugin = qobject_cast<PluginInterface *>(loader->instance()); Q_CHECK_PTR(plugin); - auto *pluginAction = new QAction(p.name, window); - pluginAction->setShortcut(p.shortcut); - + auto *pluginAction = new QAction(loader->metaData().value("MetaData").toObject().value("name").toString(), window); + pluginAction->setShortcut(QKeySequence::fromString(loader->metaData().value("MetaData").toObject().value("shortcut").toString())); connect(pluginAction, &QAction::triggered, window, [=]() { plugin->createWidget(window)->exec(); }); |