From e9c6cdefff00daffb8b07e72c47f8e8f845ba436 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Tue, 15 Dec 2020 11:51:08 +0200 Subject: Move src/webengine to lib/webengine --- src/webengine/webprofilemanager.h | 126 -------------------------------------- 1 file changed, 126 deletions(-) delete mode 100644 src/webengine/webprofilemanager.h (limited to 'src/webengine/webprofilemanager.h') diff --git a/src/webengine/webprofilemanager.h b/src/webengine/webprofilemanager.h deleted file mode 100644 index e5df6d5..0000000 --- a/src/webengine/webprofilemanager.h +++ /dev/null @@ -1,126 +0,0 @@ -/* - * This file is part of smolbote. It's copyrighted by the contributors recorded - * in the version control history of the file, available from its original - * location: https://neueland.iserlohn-fortress.net/gitea/aqua/smolbote - * - * SPDX-License-Identifier: GPL-3.0 - */ - -#ifndef SMOLBOTE_WEBPROFILEMANAGER_H -#define SMOLBOTE_WEBPROFILEMANAGER_H - -#include "webprofile.h" -#include -#include -#include -#include -#include -#include - -#if defined(__clang__) -#define consumable(X) [[clang::consumable(X)]] -#define return_typestate(X) [[clang::return_typestate(X)]] -#define set_typestate(X) [[clang::set_typestate(X)]] -#define callable_when(X) [[clang::callable_when(X)]] -#define param_typestate(X) [[clang::param_typestate(X)]] -#else -#define consumable(X) -#define return_typestate(X) -#define set_typestate(X) -#define callable_when(X) -#define param_typestate(X) -#endif - -void profileMenu(QMenu *menu, const std::function &callback, WebProfile *current = nullptr, bool checkable = false); - -template -class consumable(unconsumed) WebProfileManager -{ -public: - return_typestate(unconsumed) WebProfileManager() - { - static_assert(use_global); - } - return_typestate(unconsumed) WebProfileManager(const QStringList &paths, const QString &default_id, - const QString &search = QString(), const QUrl &homepage = QUrl(), const QUrl &newtab = QUrl()) - { - static_assert(!use_global); - for(const auto &path : paths) { - const auto id = QFileInfo(path).baseName(); - Profile profile; - profile.settings = WebProfile::load(path, search, homepage, newtab); - profile.ptr = WebProfile::load(id, profile.settings, true); - profiles[id] = profile; - } - - if(!profiles.contains(default_id)) { - auto *settings = WebProfile::load(QString(), search, homepage, newtab); - profiles[default_id] = Profile{ - .settings = settings, - .ptr = WebProfile::load(default_id, settings, true), - }; - } - WebProfile::setDefaultProfile(profiles[default_id].ptr); - } - ~WebProfileManager(); - - WebProfileManager(const WebProfileManager &) = delete; - WebProfileManager &operator=(const WebProfileManager &) = delete; - - return_typestate(unconsumed) WebProfileManager(WebProfileManager && other param_typestate(unconsumed)) - { - static_assert(!use_global); - profiles = std::move(other.profiles); - other.consume(); - } - WebProfileManager &operator=(WebProfileManager &&) = delete; - - callable_when(unconsumed) [[nodiscard]] WebProfile *profile(const QString &id) const - { - return profiles.value(id).ptr; - } - - callable_when(unconsumed) void add(const QString &id, WebProfile *profile, QSettings *settings) - { - if constexpr(use_global) { - return; - } - - if(profile != nullptr && settings != nullptr) { - profiles[id] = Profile{ settings, profile, false }; - } - } - - callable_when(unconsumed) void deleteProfile(const QString &id) - { - if constexpr(use_global) { - return; - } - - if(profiles.contains(id)) { - profiles[id].selfDestruct = true; - } - } - - callable_when(unconsumed) [[nodiscard]] QStringList idList() const - { - return profiles.keys(); - } - - callable_when(unconsumed) void walk(std::function) const; - - callable_when(unconsumed) void make_global(); - -private: - set_typestate(consumed) void consume() {} - - struct Profile { - QSettings *settings = nullptr; - WebProfile *ptr = nullptr; - bool selfDestruct = false; - }; - - QMap profiles; -}; - -#endif // SMOLBOTE_PROFILEMANAGER_H -- cgit v1.2.1