From 05a053b65443b55787ae075fc4e99181673c2d56 Mon Sep 17 00:00:00 2001 From: aqua Date: Mon, 22 Aug 2022 10:06:00 +0300 Subject: Load plugins from AppLocalDataLocation by default --- src/application.cpp | 140 +++++++++------------------------------------------- 1 file changed, 22 insertions(+), 118 deletions(-) (limited to 'src/application.cpp') diff --git a/src/application.cpp b/src/application.cpp index 69279734..814bfab8 100644 --- a/src/application.cpp +++ b/src/application.cpp @@ -13,7 +13,11 @@ #include "plugins/pluginloader.h" #include "plugins/rplugininterface.hpp" #include "rekonqwindow.h" +#include "settings/settings.hpp" +#include #include +#include +#include // --------------------------------------------------------------------------------------------------------------- // Ctor and Dtor @@ -24,7 +28,18 @@ Application::Application(int &argc, char *argv[]) : SingleApplication(argc, argv connect(this, &SingleApplication::receivedMessage, this, &Application::parseCommandLine); // updating rekonq configuration - // updateConfiguration(); + const auto settingsPath = + QDir(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation)).filePath("rekonqrc"); + spdlog::info("Loading rekonq configuration: {}", qUtf8Printable(settingsPath)); + m_settings = new Settings(settingsPath, this); + + // load default plugins + for (const auto &location : QStandardPaths::standardLocations(QStandardPaths::AppLocalDataLocation)) { + QDir dir(location + "/plugins"); + spdlog::info("Loading rekonq plugins: {}", qUtf8Printable(dir.absolutePath())); + + for (const auto &fileName : dir.entryList({"*.so"}, QDir::Files)) registerPlugin(dir.absoluteFilePath(fileName)); + } // setWindowIcon(KIcon("rekonq")); @@ -37,6 +52,7 @@ Application::~Application() // ok, we are closing well: don't recover on next load.. // ReKonfig::setRecoverOnCrash(0); // saveConfiguration(); + delete m_settings; // Destroy all windows... for (const auto &window : m_windows) delete window; @@ -57,11 +73,15 @@ Application::~Application() bool Application::registerPlugin(const QString &path) { auto *loader = new PluginLoader(path); - if (!loader->load()) { + const auto is_loaded = loader->load(); + spdlog::info("{:<60}{:>20}", qUtf8Printable(path), is_loaded ? "ok" : "failed"); + if (!is_loaded) { + spdlog::warn(qUtf8Printable(loader->errorString())); delete loader; return false; } + loader->interface()->init(m_settings); m_plugins.append(loader); return true; } @@ -484,122 +504,6 @@ void Application::loadUrl(const KUrl& url, const Rekonq::OpenType& type) w->loadUrl(url, newType); } - -void Application::updateConfiguration() -{ - QWebSettings *defaultSettings = QWebSettings::globalSettings(); - - // =========== Fonts ============== - defaultSettings->setFontFamily(QWebSettings::StandardFont, ReKonfig::standardFontFamily()); - defaultSettings->setFontFamily(QWebSettings::FixedFont, ReKonfig::fixedFontFamily()); - defaultSettings->setFontFamily(QWebSettings::SerifFont, ReKonfig::serifFontFamily()); - defaultSettings->setFontFamily(QWebSettings::SansSerifFont, ReKonfig::sansSerifFontFamily()); - defaultSettings->setFontFamily(QWebSettings::CursiveFont, ReKonfig::cursiveFontFamily()); - defaultSettings->setFontFamily(QWebSettings::FantasyFont, ReKonfig::fantasyFontFamily()); - - defaultSettings->setFontSize(QWebSettings::DefaultFontSize, ReKonfig::defaultFontSize()); - defaultSettings->setFontSize(QWebSettings::MinimumFontSize, ReKonfig::minFontSize()); - - // encodings - QString enc = ReKonfig::defaultEncoding(); - defaultSettings->setDefaultTextEncoding(enc); - - // ================ WebKit ============================ - defaultSettings->setAttribute(QWebSettings::DnsPrefetchEnabled, ReKonfig::dnsPrefetch()); - defaultSettings->setAttribute(QWebSettings::PrintElementBackgrounds, ReKonfig::printElementBackgrounds()); - defaultSettings->setAttribute(QWebSettings::ZoomTextOnly, ReKonfig::zoomTextOnly()); - - defaultSettings->setAttribute(QWebSettings::JavascriptEnabled, ReKonfig::javascriptEnabled()); - defaultSettings->setAttribute(QWebSettings::JavascriptCanOpenWindows, ReKonfig::javascriptCanOpenWindows()); - defaultSettings->setAttribute(QWebSettings::JavascriptCanAccessClipboard, ReKonfig::javascriptCanAccessClipboard()); - - defaultSettings->setAttribute(QWebSettings::JavaEnabled, ReKonfig::javaEnabled()); - - if (ReKonfig::pluginsEnabled() == 2) - defaultSettings->setAttribute(QWebSettings::PluginsEnabled, false); - else - defaultSettings->setAttribute(QWebSettings::PluginsEnabled, true); - - // Enabling WebKit "Page Cache" feature: http://webkit.org/blog/427/webkit-page-cache-i-the-basics/ - defaultSettings->setMaximumPagesInCache(3); - - // ===== HTML 5 features WebKit support ====== - defaultSettings->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, -ReKonfig::offlineStorageDatabaseEnabled()); - defaultSettings->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled, -ReKonfig::offlineWebApplicationCacheEnabled()); defaultSettings->setAttribute(QWebSettings::LocalStorageEnabled, -ReKonfig::localStorageEnabled()); if (ReKonfig::localStorageEnabled()) - { - QString path = KStandardDirs::locateLocal("cache", QString("WebkitLocalStorage/rekonq"), true); - path.remove("rekonq"); - QWebSettings::setOfflineStoragePath(path); - QWebSettings::setOfflineStorageDefaultQuota(ReKonfig::offlineWebApplicationCacheQuota() * 1024); - } - - // ================= WebGl =================== - defaultSettings->setAttribute(QWebSettings::WebGLEnabled, ReKonfig::webGL()); - defaultSettings->setAttribute(QWebSettings::AcceleratedCompositingEnabled, ReKonfig::webGL()); - - // Applies user defined CSS to all open webpages. - defaultSettings->setUserStyleSheetUrl(ReKonfig::userCSS()); - - // ====== load Settings on main classes - HistoryManager::self()->loadSettings(); - - defaultSettings = 0; - - if (!rekonqWindow()) - return; - - // ============== Tabs ================== - bool b = ReKonfig::closeTabSelectPrevious(); - Q_FOREACH(const QWeakPointer &w, m_rekonqWindows) - { - if (b) - w.data()->tabBar()->setSelectionBehaviorOnRemove(QTabBar::SelectPreviousTab); - else - w.data()->tabBar()->setSelectionBehaviorOnRemove(QTabBar::SelectRightTab); - } - - // FIXME What about this? -// ReKonfig::useFavicon() -// ? rekonqWindow()->changeWindowIcon(rekonqWindow()->mainView()->currentIndex()) -// : rekonqWindow()->setWindowIcon(KIcon("rekonq")) -// ; -// - // hovering unfocused tabs options - switch (ReKonfig::hoveringTabOption()) - { - case 0: // tab previews - case 3: // nothing - for (int i = 0; i < rekonqWindow()->tabBar()->count(); i++) - { - rekonqWindow()->tabBar()->setTabToolTip(i, QL1S("")); - } - break; - - case 1: // title previews - for (int i = 0; i < rekonqWindow()->tabBar()->count(); i++) - { - rekonqWindow()->tabBar()->setTabToolTip(i, rekonqWindow()->tabWidget()->tabText(i).remove('&')); - } - break; - - case 2: // url previews - for (int i = 0; i < rekonqWindow()->tabBar()->count(); i++) - { - rekonqWindow()->tabBar()->setTabToolTip(i, -rekonqWindow()->tabWidget()->webWindow(i)->url().toMimeDataString()); - } - break; - - default: // non extant case - ASSERT_NOT_REACHED(unknown hoveringTabOption); - break; - } -} - - void Application::queryQuit() { if (m_webApps.count() > 0) -- cgit v1.2.1