aboutsummaryrefslogtreecommitdiff
path: root/src/browser.cpp
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2018-05-28 11:42:09 +0200
committerAqua-sama <aqua@iserlohn-fortress.net>2018-05-28 11:42:09 +0200
commitc299a5e9c1ce2cd7af2eb02645993b21b9448f34 (patch)
treecd74c10814014d5f86cfc253d59d1920df238f9e /src/browser.cpp
parentRemove Window::addTab(WebView *view) (diff)
downloadsmolbote-c299a5e9c1ce2cd7af2eb02645993b21b9448f34.tar.xz
Changing Window profile
Diffstat (limited to 'src/browser.cpp')
-rw-r--r--src/browser.cpp45
1 files changed, 37 insertions, 8 deletions
diff --git a/src/browser.cpp b/src/browser.cpp
index 512f207..05d9a0b 100644
--- a/src/browser.cpp
+++ b/src/browser.cpp
@@ -18,9 +18,11 @@
#include <downloads/downloadswidget.h>
#include <version.h>
#include <QDir>
+#include <QFileInfo>
+#include <QFileInfoList>
#include <QPluginLoader>
-QVector<Plugin> loadPlugins(const QString &location)
+inline QVector<Plugin> loadPlugins(const QString &location)
{
QDir pluginsDir(location);
QVector<Plugin> list;
@@ -49,6 +51,21 @@ QVector<Plugin> loadPlugins(const QString &location)
return list;
}
+inline QHash<QString, WebProfile *> loadProfiles(const QString &location)
+{
+ QDir profilesDir(location);
+ QHash<QString, WebProfile *> list;
+
+ if(profilesDir.exists()) {
+ const QFileInfoList entries = profilesDir.entryInfoList({ "*.profile" }, QDir::Files | QDir::Readable);
+ for(const auto &entry : entries) {
+ list.insert(entry.baseName(), new WebProfile(entry.baseName()));
+ }
+ }
+
+ return list;
+}
+
Browser::Browser(int &argc, char *argv[])
: SingleApplication(argc, argv)
{
@@ -67,6 +84,7 @@ Browser::~Browser()
//qDeleteAll(m_plugins);
m_plugins.clear();
+ qDeleteAll(m_profiles);
}
void Browser::setConfiguration(std::shared_ptr<Configuration> &config)
@@ -80,13 +98,16 @@ void Browser::setup(const QString &defaultProfile)
Q_ASSERT_X(m_config, "Browser::setup", "Configuration not set");
// load profiles
- if(defaultProfile == "") {
- auto *p = new WebProfile(this);
- p->loadProfile(m_config->section("profile"));
- WebProfile::setDefaultProfile(p);
- } else {
- auto *p = new WebProfile(defaultProfile, this);
- WebProfile::setDefaultProfile(p);
+ {
+ auto *otr = new WebProfile(this);
+ m_profiles.insert(tr("Off-the-record"), otr);
+ m_profiles.unite(loadProfiles(QString::fromStdString(m_config->value<std::string>("profile.path").value())));
+
+ if(defaultProfile == "") {
+ WebProfile::setDefaultProfile(otr);
+ } else {
+ WebProfile::setDefaultProfile(m_profiles.value(defaultProfile));
+ }
}
// plugins
@@ -125,6 +146,14 @@ void Browser::setup(const QString &defaultProfile)
connect(WebProfile::defaultProfile(), &WebProfile::downloadRequested, m_downloads.get(), &DownloadsWidget::addDownload);
}
+WebProfile *Browser::profile(const QString &name) const
+{
+ if(m_profiles.contains(name))
+ return m_profiles.value(name);
+ else
+ return nullptr;
+}
+
int Browser::command(const QString &command)
{
if(m_commands.contains(command)) {