From 07e39b224797515f6c31602ef62761f27ff30a0b Mon Sep 17 00:00:00 2001 From: shenweip Date: Sat, 2 Nov 2013 19:48:25 +0800 Subject: [PATCH] Implemented DELETEDATA mode of saveDialog. --- Core/Dialog/PSPSaveDialog.cpp | 6 ++---- Core/Dialog/SavedataParam.cpp | 14 ++++++++++++++ Core/Dialog/SavedataParam.h | 1 + 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/Core/Dialog/PSPSaveDialog.cpp b/Core/Dialog/PSPSaveDialog.cpp index 93cdb50bf6..9bc7306fb2 100755 --- a/Core/Dialog/PSPSaveDialog.cpp +++ b/Core/Dialog/PSPSaveDialog.cpp @@ -924,10 +924,8 @@ int PSPSaveDialog::Update(int animSpeed) } break; case SCE_UTILITY_SAVEDATA_TYPE_DELETEDATA: - // TODO: This should probably actually delete something. - // For now, always say it couldn't be deleted. - WARN_LOG(SCEUTILITY, "FAKE sceUtilitySavedata DELETEDATA: %s", param.GetPspParam()->saveName); - param.GetPspParam()->common.result = SCE_UTILITY_SAVEDATA_ERROR_RW_BAD_STATUS; + DEBUG_LOG(SCEUTILITY, "FAKE sceUtilitySavedata DELETEDATA: %s", param.GetPspParam()->saveName); + param.GetPspParam()->common.result = param.DeleteData(param.GetPspParam()); status = SCE_UTILITY_STATUS_FINISHED; break; //case SCE_UTILITY_SAVEDATA_TYPE_AUTODELETE: diff --git a/Core/Dialog/SavedataParam.cpp b/Core/Dialog/SavedataParam.cpp index a6cfe3a001..1aef6c19ab 100644 --- a/Core/Dialog/SavedataParam.cpp +++ b/Core/Dialog/SavedataParam.cpp @@ -261,6 +261,20 @@ bool SavedataParam::Delete(SceUtilitySavedataParam* param, int saveId) return true; } +int SavedataParam::DeleteData(SceUtilitySavedataParam* param) { + if(!param) + return SCE_UTILITY_SAVEDATA_ERROR_DELETE_NO_DATA; + if (param->fileName == NULL) + return SCE_UTILITY_SAVEDATA_ERROR_DELETE_NO_DATA; + + std::string filename = savePath + GetGameName(param) + GetSaveName(param) + "/" + param->fileName; + PSPFileInfo info = pspFileSystem.GetFileInfo(filename); + if (info.exists) + pspFileSystem.RemoveFile(filename); + + return 0; +} + bool SavedataParam::Save(SceUtilitySavedataParam* param, const std::string &saveDirName, bool secureMode) { if (!param) { diff --git a/Core/Dialog/SavedataParam.h b/Core/Dialog/SavedataParam.h index 540712b216..267c05ba2e 100644 --- a/Core/Dialog/SavedataParam.h +++ b/Core/Dialog/SavedataParam.h @@ -296,6 +296,7 @@ public: std::string GetSaveDir(SceUtilitySavedataParam* param, int saveId = -1); std::string GetSaveDir(SceUtilitySavedataParam* param, const std::string &saveDirName); bool Delete(SceUtilitySavedataParam* param, int saveId = -1); + int DeleteData(SceUtilitySavedataParam* param); bool Save(SceUtilitySavedataParam* param, const std::string &saveDirName, bool secureMode = true); bool Load(SceUtilitySavedataParam* param, const std::string &saveDirName, int saveId = -1, bool secureMode = true); int GetSizes(SceUtilitySavedataParam* param);