aboutsummaryrefslogtreecommitdiff
path: root/src/webengine/webprofilemanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/webengine/webprofilemanager.cpp')
-rw-r--r--src/webengine/webprofilemanager.cpp44
1 files changed, 33 insertions, 11 deletions
diff --git a/src/webengine/webprofilemanager.cpp b/src/webengine/webprofilemanager.cpp
index 2fe6222..80762f7 100644
--- a/src/webengine/webprofilemanager.cpp
+++ b/src/webengine/webprofilemanager.cpp
@@ -12,6 +12,17 @@
#include <QFileInfo>
#include <QWebEngineSettings>
+static WebProfileManager *s_instance = nullptr;
+
+auto WebProfileManager::instance() -> const WebProfileManager *
+{
+ return s_instance;
+}
+void WebProfileManager::setInstance(WebProfileManager *ptr)
+{
+ s_instance = ptr;
+}
+
WebProfileManager::WebProfileManager(QObject *parent)
: QObject(parent)
{
@@ -37,11 +48,21 @@ WebProfileManager::~WebProfileManager()
}
}
-WebProfile *WebProfileManager::profile(const QString &id, const QString &path, bool isOffTheRecord)
+WebProfile *WebProfileManager::profile(const QString &id) const
{
// Check if profile exists
- if(profiles.contains(id))
+ if(profiles.contains(id)) {
return profiles.value(id).ptr;
+ }
+
+ return nullptr;
+}
+
+WebProfile *WebProfileManager::add(const QString &id, const QString &path, bool isOffTheRecord)
+{
+ if(profiles.contains(id)) {
+ return nullptr;
+ }
Configuration conf;
Profile profile;
@@ -52,12 +73,13 @@ WebProfile *WebProfileManager::profile(const QString &id, const QString &path, b
profile.settings = new QSettings;
// QWebEngineCore cleans up profiles automatically, so no need to set parent
- profile.ptr = [id, isOffTheRecord, profile]() {
- if(profile.settings->value("otr", isOffTheRecord).toBool())
- return new WebProfile(/* name */ profile.settings->value("name", id).toString(), /* parent */ nullptr);
- else
- return new WebProfile(/* storageName */ id, /* name */ profile.settings->value("name", id).toString(), /* parent */ nullptr);
- }();
+ if(profile.settings->value("otr", isOffTheRecord).toBool()) {
+ // name parent
+ profile.ptr = new WebProfile(profile.settings->value("name", id).toString(), nullptr);
+ } else {
+ // storageName name parent
+ profile.ptr = new WebProfile(id, profile.settings->value("name", id).toString(), nullptr);
+ }
profile.settings->setParent(profile.ptr);
@@ -133,12 +155,12 @@ void WebProfileManager::deleteProfile(const QString &id)
}
}
-void WebProfileManager::profileMenu(QMenu *menu, const std::function<void(WebProfile *)> &callback, WebProfile *current, bool checkable) const
+void profileMenu(QMenu *menu, const std::function<void(WebProfile *)> &callback, WebProfile *current, bool checkable)
{
auto *group = new QActionGroup(menu);
- connect(menu, &QMenu::aboutToHide, group, &QActionGroup::deleteLater);
+ QObject::connect(menu, &QMenu::aboutToHide, group, &QActionGroup::deleteLater);
- for(const auto &profile : profiles) {
+ for(const auto &profile : s_instance->profiles) {
auto *action = menu->addAction(profile.ptr->name(), profile.ptr, [profile, callback]() {
callback(profile.ptr);
});