diff options
Diffstat (limited to 'src/webengine/webprofilemanager.cpp')
-rw-r--r-- | src/webengine/webprofilemanager.cpp | 44 |
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); }); |