ENH: Optimize the logic for deleting third-party printers

Mark the Filament and Process presets to be deleted first
then delete the child presets first and then the parent presets.

Jira: none

Change-Id: I100b873baae96c6ba27af258e708e6ab8e6ee4ab
This commit is contained in:
maosheng.wei 2024-01-24 09:13:55 +08:00 committed by Lane.Wei
parent f0359e9304
commit b98992cdb6
1 changed files with 16 additions and 6 deletions

View File

@ -4444,8 +4444,8 @@ bool Tab::select_preset(std::string preset_name, bool delete_current /*=false*/,
BOOST_LOG_TRIVIAL(info) << boost::format("before delete action, canceled %1%, delete_current %2%") %canceled %delete_current;
bool delete_third_printer = false;
std::vector<Preset> filament_presets;
std::vector<Preset> process_presets;
std::deque<Preset> filament_presets;
std::deque<Preset> process_presets;
if (! canceled && delete_current) {
// Delete the file and select some other reasonable preset.
// It does not matter which preset will be made active as the preset will be re-selected from the preset_name variable.
@ -4458,10 +4458,22 @@ bool Tab::select_preset(std::string preset_name, bool delete_current /*=false*/,
if (m_preset_bundle && m_presets->get_preset_base(current_preset) == &current_preset && printer_tab && !current_preset.is_system) {
delete_third_printer = true;
for (const Preset &preset : m_preset_bundle->filaments.get_presets()) {
if (preset.is_compatible && !preset.is_default) { filament_presets.push_back(preset); }
if (preset.is_compatible && !preset.is_default) {
if (preset.inherits() != "")
filament_presets.push_front(preset);
else
filament_presets.push_back(preset);
if (!preset.setting_id.empty()) { m_preset_bundle->filaments.set_sync_info_and_save(preset.name, preset.setting_id, "delete", 0); }
}
}
for (const Preset &preset : m_preset_bundle->prints.get_presets()) {
if (preset.is_compatible && !preset.is_default) { process_presets.push_back(preset); }
if (preset.is_compatible && !preset.is_default) {
if (preset.inherits() != "")
process_presets.push_front(preset);
else
process_presets.push_back(preset);
if (!preset.setting_id.empty()) { m_preset_bundle->filaments.set_sync_info_and_save(preset.name, preset.setting_id, "delete", 0); }
}
}
}
if (!current_preset.setting_id.empty()) {
@ -4551,7 +4563,6 @@ bool Tab::select_preset(std::string preset_name, bool delete_current /*=false*/,
for (const Preset &preset : filament_presets) {
if (!preset.setting_id.empty()) {
preset_bundle->filaments.set_sync_info_and_save(preset.name, preset.setting_id, "delete", 0);
wxGetApp().delete_preset_from_cloud(preset.setting_id);
}
BOOST_LOG_TRIVIAL(info) << "delete filament preset = " << preset.name << ", setting_id = " << preset.setting_id;
@ -4560,7 +4571,6 @@ bool Tab::select_preset(std::string preset_name, bool delete_current /*=false*/,
for (const Preset &preset : process_presets) {
if (!preset.setting_id.empty()) {
preset_bundle->prints.set_sync_info_and_save(preset.name, preset.setting_id, "delete", 0);
wxGetApp().delete_preset_from_cloud(preset.setting_id);
}
BOOST_LOG_TRIVIAL(info) << "delete print preset = " << preset.name << ", setting_id = " << preset.setting_id;