From e87693c54ca97ed3a6ed25f9eaae8ab223fc18b1 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Wed, 29 Apr 2020 18:49:07 +0300 Subject: libwebengine Make src/webengine into a static library - Add some tests - Updated manpage - Remove WebProfileManager::id and WebProfileManager::instance - Add consumable semantics checks to WebProfileManager - Add WebProfileManager::walk Add ApplicationMenu class --- src/browser.cpp | 99 ++++++++++++++++----------------------------------------- 1 file changed, 27 insertions(+), 72 deletions(-) (limited to 'src/browser.cpp') diff --git a/src/browser.cpp b/src/browser.cpp index 61be3b0..2277e54 100644 --- a/src/browser.cpp +++ b/src/browser.cpp @@ -10,6 +10,7 @@ #include "aboutdialog.h" #include "aboutplugin.h" #include "adblock/adblocklist.h" +#include "applicationmenu.h" #include "bookmarks/bookmarkswidget.h" #include "configuration.h" #include "downloadswidget.h" @@ -19,19 +20,12 @@ #include "mainwindow/menubar.h" #include "smolbote/plugininterface.hpp" #include "subwindow/subwindow.h" -#include "urlfilter.h" #include "util.h" #include "webengine/urlinterceptor.h" #include "webengine/webprofile.h" #include "webengine/webprofilemanager.h" #include "webengine/webview.h" #include -#include -#include -#include -#include -#include -#include #include #include #include @@ -89,31 +83,13 @@ void Browser::about() dlg->exec(); } -void Browser::loadProfiles(const QStringList &profilePaths) +void Browser::aboutPlugins() { - Configuration conf; - - for(const QString &path : profilePaths) { - const QString id = QFileInfo(path).baseName(); - - auto *profile = m_profileManager->add(id, path); - connect(profile, &WebProfile::downloadRequested, m_downloads.get(), &DownloadsWidget::addDownload); - - auto *interceptor = new UrlRequestInterceptor(profile, profile); - for(UrlFilter *filter : qAsConst(m_filters)) { - interceptor->addFilter(filter); - } - - const auto headers = conf.value("filter.header").value_or(QStringList()); - for(const QString &header : headers) { - const auto h = header.split(QLatin1String(":")); - if(h.length() == 2) - interceptor->addHttpHeader(h.at(0).toLatin1(), h.at(1).toLatin1()); - } - profile->setUrlRequestInterceptor(interceptor); - - spdlog::info("Added profile\t{}{}\t{}", qUtf8Printable(id), profile->isOffTheRecord() ? "*" : "", qUtf8Printable(profile->name())); + auto *dlg = new AboutPluginDialog; + for(auto *info : m_plugins) { + dlg->add(info->loader); } + dlg->exec(); } void Browser::loadPlugins(const QStringList &paths, const std::function &callback) @@ -161,38 +137,23 @@ void Browser::setup() // downloads m_downloads = std::make_unique(conf.value("downloads.path").value()); - // url request filter - for(const QString &hostlist : Util::files(conf.value("filter.hosts").value_or(QString()))) { - QFile f(hostlist); - if(f.open(QIODevice::ReadOnly | QIODevice::Text)) { - m_filters.append(new HostList(&f)); - f.close(); - } - } - for(const QString &adblock : Util::files(conf.value("filter.adblock").value_or(QString()))) { - QFile f(adblock); - if(f.open(QIODevice::ReadOnly | QIODevice::Text)) { - m_filters.append(new AdBlockList(&f)); - f.close(); - } - } - // cookie request filter - // load profiles - m_profileManager = new WebProfileManager(this); - WebProfileManager::setInstance(m_profileManager); - loadProfiles(Util::files(conf.value("profile.path").value(), { "*.profile" })); - - // set default profile { - const QString id = conf.value("profile.default").value(); - auto *profile = m_profileManager->profile(id); - if(profile == nullptr) { - spdlog::error("Unknown default profile, conjuring one up..."); - profile = m_profileManager->add("default", QString(), true); + const auto profiles = Util::files(conf.value("profile.path").value(), { "*.profile" }); + const auto search = conf.value("profile.search").value(); + const auto homepage = QUrl::fromUserInput(conf.value("profile.homepage").value()); + const auto newtab = QUrl::fromUserInput(conf.value("profile.newtab").value()); + const auto default_id = conf.value("profile.default").value(); + m_profileManager = std::make_unique>(profiles, default_id, search, homepage, newtab); + m_profileManager->make_global(); + + for(const auto &id : m_profileManager->idList()) { + spdlog::info("Added profile\t{}", qUtf8Printable(id)); } - spdlog::info("Default profile\t{}{}\t{}", qUtf8Printable(id), profile->isOffTheRecord() ? "*" : "", qUtf8Printable(profile->name())); - WebProfile::setDefaultProfile(profile); + + // set default profile + auto *profile = m_profileManager->profile(default_id); + spdlog::info("Default profile\t{}{}\t{}", qUtf8Printable(default_id), profile->isOffTheRecord() ? "*" : "", qUtf8Printable(profile->name())); } // bookmarks @@ -243,15 +204,16 @@ void Browser::open(const QVector &data, bool merge) } for(const auto &windowData : data) { - // the window will delete itself when it closes, so we don't need to delete it - auto *window = new MainWindow(windowData); - connect(window->addressBar, &AddressBar::complete, m_bookmarks.get(), &BookmarksWidget::search); - + auto *menu = new ApplicationMenu(this); for(auto *info : qAsConst(m_plugins)) { - addPluginTo(info, window); + menu->addPlugin(info->loader); } + auto *window = new MainWindow(windowData, menu); + connect(window->addressBar, &AddressBar::complete, m_bookmarks.get(), &BookmarksWidget::search); + m_windows.append(window); + // the window will delete itself when it closes, so we don't need to delete it connect(window, &MainWindow::destroyed, this, [this, window]() { m_windows.removeOne(window); }); @@ -262,15 +224,9 @@ void Browser::addPluginTo(PluginInfo *info, MainWindow *window) { QPluginLoader *loader = info->loader; auto *pluginMenu = new QMenu(loader->metaData().value("MetaData").toObject().value("name").toString()); - window->m_menuBar->insertPlugin(pluginMenu); + //window->m_menuBar->insertPlugin(pluginMenu); info->menus.append(pluginMenu); - auto *aboutAction = pluginMenu->addAction(tr("About")); - connect(aboutAction, &QAction::triggered, this, [loader, window]() { - auto *dlg = new AboutPluginDialog(loader, window); - dlg->exec(); - }); - auto *runAction = pluginMenu->addAction(tr("Run")); runAction->setShortcut(QKeySequence::fromString(loader->metaData().value("MetaData").toObject().value("shortcut").toString())); @@ -284,7 +240,6 @@ void Browser::addPluginTo(PluginInfo *info, MainWindow *window) auto *removeAction = pluginMenu->addAction(tr("Remove")); connect(removeAction, &QAction::triggered, this, [this, info]() { - ; m_plugins.removeOne(info); delete info; }); -- cgit v1.2.1