From 7a6adf0f8490076123a7897c0ea1153f72dffa82 Mon Sep 17 00:00:00 2001 From: Robin Davies Date: Fri, 11 Mar 2022 13:34:08 -0500 Subject: [PATCH] Delete reloads preset if required. --- src/PiPedalModel.cpp | 12 +++++++++--- src/Storage.cpp | 7 ++++++- src/Storage.hpp | 4 ++-- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/PiPedalModel.cpp b/src/PiPedalModel.cpp index fce2536..c7751e1 100644 --- a/src/PiPedalModel.cpp +++ b/src/PiPedalModel.cpp @@ -497,7 +497,7 @@ int64_t PiPedalModel::SaveCurrentPresetAs(int64_t clientId, const std::string &n auto pedalboard = this->pedalBoard; pedalboard.name(name); - int64_t result = storage.saveCurrentPresetAs(pedalboard, name, saveAfterInstanceId); + int64_t result = storage.SaveCurrentPresetAs(pedalboard, name, saveAfterInstanceId); FirePresetsChanged(clientId); return result; } @@ -594,10 +594,16 @@ int64_t PiPedalModel::DeleteBank(int64_t clientId, int64_t instanceId) int64_t PiPedalModel::DeletePreset(int64_t clientId, int64_t instanceId) { std::lock_guard guard{mutex}; - + int64_t oldSelection = storage.GetCurrentPresetId(); int64_t newSelection = storage.DeletePreset(instanceId); this->FirePresetsChanged(clientId); // fire now. - return newSelection; + if (oldSelection != newSelection) + { + this->LoadPreset( + -1, // can't use cached version. + newSelection); + } + return newSelection; } bool PiPedalModel::RenamePreset(int64_t clientId, int64_t instanceId, const std::string &name) { diff --git a/src/Storage.cpp b/src/Storage.cpp index 69a038c..203a33f 100644 --- a/src/Storage.cpp +++ b/src/Storage.cpp @@ -425,7 +425,7 @@ void Storage::SaveCurrentPreset(const PedalBoard &pedalBoard) item.preset(pedalBoard); SaveCurrentBank(); } -int64_t Storage::saveCurrentPresetAs(const PedalBoard &pedalBoard, const std::string &name, int64_t saveAfterInstanceId) +int64_t Storage::SaveCurrentPresetAs(const PedalBoard &pedalBoard, const std::string &name, int64_t saveAfterInstanceId) { PedalBoard newPedalBoard = pedalBoard; newPedalBoard.name(name); @@ -741,6 +741,11 @@ int64_t Storage::DeleteBank(int64_t bankId) throw PiPedalStateException("Bank not found."); } +int64_t Storage::GetCurrentPresetId() const +{ + return this->currentBank.selectedPreset(); +} + int64_t Storage::UploadPreset(const BankFile&bankFile,int64_t uploadAfter) { int64_t lastPreset = this->currentBank.selectedPreset(); diff --git a/src/Storage.hpp b/src/Storage.hpp index cb41567..e638a87 100644 --- a/src/Storage.hpp +++ b/src/Storage.hpp @@ -90,8 +90,8 @@ public: void LoadBank(int64_t instanceId); const PedalBoard& GetCurrentPreset(); void SaveCurrentPreset(const PedalBoard&pedalBoard); - int64_t saveCurrentPresetAs(const PedalBoard&pedalBoard, const std::string&namne,int64_t saveAfterInstanceId = -1); - + int64_t SaveCurrentPresetAs(const PedalBoard&pedalBoard, const std::string&namne,int64_t saveAfterInstanceId = -1); + int64_t GetCurrentPresetId() const; void GetPresetIndex(PresetIndex*pResult); void SetPresetIndex(const PresetIndex &presetIndex); PedalBoard GetPreset(int64_t instanceId) const;