bool FLauncherProfileManager::SaveJSONProfile(const ILauncherProfileRef& Profile) { if (Profile->GetId().IsValid()) { FString Text; TSharedRef< TJsonWriter<> > Writer = TJsonWriterFactory<>::Create(&Text); Profile->Save(Writer.Get()); Writer->Close(); return FFileHelper::SaveStringToFile(Text, *Profile->GetFilePath()); } return false; }
void FLauncherProfileManager::ChangeProfileName(const ILauncherProfileRef& Profile, FString Name) { FString OldName = Profile->GetName(); FString OldProfileFileName = Profile->GetFilePath(); //change name and save to new location Profile->SetName(Name); if (SaveJSONProfile(Profile)) { //delete the old profile if the location moved. File names should be uppercase so this compare works on case sensitive and insensitive platforms if (OldProfileFileName.Compare(Profile->GetFilePath()) != 0) { IFileManager::Get().Delete(*OldProfileFileName); } } else { //if we couldn't save successfully, change the name back to keep files/profiles matching. Profile->SetName(OldName); } }
void FLauncherProfileManager::RemoveProfile( const ILauncherProfileRef& Profile ) { AllProfiles.Remove(Profile); if (SavedProfiles.Remove(Profile) > 0) { if (Profile->GetId().IsValid()) { // delete the persisted profile on disk FString ProfileFileName = Profile->GetFilePath(); // delete the profile IFileManager::Get().Delete(*ProfileFileName); ProfileRemovedDelegate.Broadcast(Profile); } } }
bool FLauncherProfileManager::SaveProfile(const ILauncherProfileRef& Profile) { if (Profile->GetId().IsValid()) { FString ProfileFileName = Profile->GetFilePath(); FArchive* ProfileFileWriter = IFileManager::Get().CreateFileWriter(*ProfileFileName); if (ProfileFileWriter != nullptr) { Profile->Serialize(*ProfileFileWriter); delete ProfileFileWriter; return true; } } return false; }