summaryrefslogtreecommitdiff
path: root/src/application.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/application.cpp')
-rw-r--r--src/application.cpp140
1 files changed, 22 insertions, 118 deletions
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 <QDir>
#include <QPluginLoader>
+#include <QStandardPaths>
+#include <spdlog/spdlog.h>
// ---------------------------------------------------------------------------------------------------------------
// 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<RekonqWindow> &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)