From 5503c59c1e22ec015f872b2f4f08a79ace88347e Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Tue, 24 Oct 2023 14:39:55 +0800 Subject: [PATCH] FIX: The status of cali is not correct when switch printer Jira: STUDIO-4782 Change-Id: I9894e4c84bf30f1fbb3b833f5ed4f40c9cb01be7 --- src/libslic3r/AppConfig.cpp | 6 ++++-- src/libslic3r/AppConfig.hpp | 2 +- src/slic3r/GUI/CalibrationWizard.cpp | 6 +++--- src/slic3r/GUI/CalibrationWizard.hpp | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp index 8ee2c8918..3daed893c 100644 --- a/src/libslic3r/AppConfig.cpp +++ b/src/libslic3r/AppConfig.cpp @@ -973,7 +973,7 @@ void AppConfig::set_vendors(const AppConfig &from) m_dirty = true; } -void AppConfig::save_printer_cali_infos(const PrinterCaliInfo &cali_info) +void AppConfig::save_printer_cali_infos(const PrinterCaliInfo &cali_info, bool need_change_status) { auto iter = std::find_if(m_printer_cali_infos.begin(), m_printer_cali_infos.end(), [&cali_info](const PrinterCaliInfo &cali_info_item) { return cali_info_item.dev_id == cali_info.dev_id; @@ -982,7 +982,9 @@ void AppConfig::save_printer_cali_infos(const PrinterCaliInfo &cali_info) if (iter == m_printer_cali_infos.end()) { m_printer_cali_infos.emplace_back(cali_info); } else { - (*iter).cali_finished = cali_info.cali_finished; + if (need_change_status) { + (*iter).cali_finished = cali_info.cali_finished; + } (*iter).cache_flow_ratio = cali_info.cache_flow_ratio; (*iter).selected_presets = cali_info.selected_presets; } diff --git a/src/libslic3r/AppConfig.hpp b/src/libslic3r/AppConfig.hpp index 2cf97d426..f6d7772d8 100644 --- a/src/libslic3r/AppConfig.hpp +++ b/src/libslic3r/AppConfig.hpp @@ -180,7 +180,7 @@ public: } const std::vector &get_printer_cali_infos() const { return m_printer_cali_infos; } - void save_printer_cali_infos(const PrinterCaliInfo& cali_info); + void save_printer_cali_infos(const PrinterCaliInfo& cali_info, bool need_change_status = true); // return recent/last_opened_folder or recent/settings_folder or empty string. std::string get_last_dir() const; diff --git a/src/slic3r/GUI/CalibrationWizard.cpp b/src/slic3r/GUI/CalibrationWizard.cpp index b0a2007ba..689c03d9a 100644 --- a/src/slic3r/GUI/CalibrationWizard.cpp +++ b/src/slic3r/GUI/CalibrationWizard.cpp @@ -299,14 +299,14 @@ void CalibrationWizard::recover_preset_info(MachineObject *obj) } } -void CalibrationWizard::back_preset_info(MachineObject *obj, bool cali_finish) +void CalibrationWizard::back_preset_info(MachineObject *obj, bool cali_finish, bool back_cali_flag) { PrinterCaliInfo printer_cali_info; printer_cali_info.dev_id = obj->dev_id; printer_cali_info.cali_finished = cali_finish; printer_cali_info.cache_flow_ratio = obj->cache_flow_ratio; printer_cali_info.selected_presets = obj->selected_cali_preset; - wxGetApp().app_config->save_printer_cali_infos(printer_cali_info); + wxGetApp().app_config->save_printer_cali_infos(printer_cali_info, back_cali_flag); } void CalibrationWizard::msw_rescale() @@ -361,7 +361,7 @@ void CalibrationWizard::on_cali_go_home() go_home_dialog->on_show(); } else { if (!m_page_steps.empty()) { - back_preset_info(curr_obj, true); + back_preset_info(curr_obj, true, obj_cali_mode == m_mode); show_step(m_page_steps.front()); } } diff --git a/src/slic3r/GUI/CalibrationWizard.hpp b/src/slic3r/GUI/CalibrationWizard.hpp index d8258124b..14cfd50a9 100644 --- a/src/slic3r/GUI/CalibrationWizard.hpp +++ b/src/slic3r/GUI/CalibrationWizard.hpp @@ -64,7 +64,7 @@ public: virtual void cache_preset_info(MachineObject* obj, float nozzle_dia); virtual void recover_preset_info(MachineObject *obj); - virtual void back_preset_info(MachineObject *obj, bool cali_finish); + virtual void back_preset_info(MachineObject *obj, bool cali_finish, bool back_cali_flag = true); void msw_rescale(); void on_sys_color_changed();