#pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include class EUI_SERVICE_API appConfig : public QObject { Q_OBJECT public: appConfig(); appConfig(const appConfig&) = delete; appConfig& operator=(const appConfig&) = delete; ~appConfig(); void init(); void releaseRuntimeResources(); void saveSettingJson(); DeferredJsonWriter& configSave(); const DeferredJsonWriter& configSave() const; void updateBackendConfig(const nlohmann::ordered_json& backendConfig); nlohmann::ordered_json& getBackendConfig(); const nlohmann::ordered_json& getBackendConfig() const; MissionConfig& getMissionConfig(); const MissionConfig& getMissionConfig() const; void removeAvoidMapItems(nlohmann::json& json) const; void removeAvoidMapItems(nlohmann::ordered_json& json) const; std::atomic exitWithRestart = false; std::string missionJsonPath; std::string imgSavePath; HWND consoleHandle = nullptr; std::vector viewDatas; std::string softwareTile; const std::map avoidMap = {}; sqliteDB* database = nullptr; MissionConfig missionConfig; runtimeDataCacheStore* cacheStore = nullptr; private: void initDataBase(); void loadSetting(); void parsingSettingJson(); void syncCompatDataFromMissionConfig(); nlohmann::json settingJson; std::string jsonVersion; std::string objectSelect; QMutex configIoMutex; DeferredJsonWriter configSave_; std::atomic isConfigLoaded{ false }, isdataBaseInited{ false }; }; EUI_SERVICE_API appConfig& appConfigService();