#pragma once #include "main/NekoRay.hpp" #include "ProxyEntity.hpp" #include "Group.hpp" namespace NekoRay { class ProfileManager : public JsonStore { public: // Manager QMap> profiles; QMap> groups; // JSON QList _profiles; QList _groups; // with order ProfileManager(); [[nodiscard]] static QSharedPointer NewProxyEntity(const QString &type); [[nodiscard]] static QSharedPointer NewGroup(); bool AddProfile(const QSharedPointer &ent, int gid = -1); void DeleteProfile(int id); void MoveProfile(const QSharedPointer &ent, int gid); QSharedPointer GetProfile(int id); bool AddGroup(const QSharedPointer &ent); void DeleteGroup(int gid); QSharedPointer GetGroup(int id); QSharedPointer CurrentGroup(); private: void LoadManager(); void SaveManager(); [[nodiscard]] int NewProfileID() const; [[nodiscard]] int NewGroupID() const; static QSharedPointer LoadProxyEntity(const QString &jsonPath); static QSharedPointer LoadGroup(const QString &jsonPath); }; extern ProfileManager *profileManager; } // namespace NekoRay