ILauncherProfilePtr FLauncherProfileManager::LoadJSONProfile(FString ProfileFile) { FLauncherProfile* Profile = new FLauncherProfile(AsShared()); FString FileContents; if (!FFileHelper::LoadFileToString(FileContents, *ProfileFile)) { return nullptr; } TSharedPtr<FJsonObject> Object; TSharedRef<TJsonReader<> > Reader = TJsonReaderFactory<>::Create(FileContents); if (!FJsonSerializer::Deserialize(Reader, Object) || !Object.IsValid()) { return nullptr; } if (Profile->Load(*(Object.Get()))) { ILauncherDeviceGroupPtr DeviceGroup = GetDeviceGroup(Profile->GetDeployedDeviceGroupId()); if (!DeviceGroup.IsValid()) { DeviceGroup = AddNewDeviceGroup(); } Profile->SetDeployedDeviceGroup(DeviceGroup); return MakeShareable(Profile); } return nullptr; }
ILauncherProfilePtr FLauncherProfileManager::LoadProfile( FArchive& Archive ) { FLauncherProfile* Profile = new FLauncherProfile(AsShared()); if (Profile->Serialize(Archive)) { ILauncherDeviceGroupPtr DeviceGroup = GetDeviceGroup(Profile->GetDeployedDeviceGroupId()); if (!DeviceGroup.IsValid()) { DeviceGroup = AddNewDeviceGroup(); } Profile->SetDeployedDeviceGroup(DeviceGroup); return MakeShareable(Profile); } return nullptr; }
void FLauncherProfileManager::AddDeviceGroup( const ILauncherDeviceGroupRef& DeviceGroup ) { if (!DeviceGroups.Contains(DeviceGroup)) { // replace the existing device group ILauncherDeviceGroupPtr ExistingGroup = GetDeviceGroup(DeviceGroup->GetId()); if (ExistingGroup.IsValid()) { RemoveDeviceGroup(ExistingGroup.ToSharedRef()); } // add the new device group DeviceGroups.Add(DeviceGroup); SaveDeviceGroups(); DeviceGroupAddedDelegate.Broadcast(DeviceGroup); } }