FIX: highlight sync button when the info is inconsistent with printer

STUDIO-9603

Change-Id: I1fc8954e8becce1d382e7559abc03537442613f2
This commit is contained in:
zhimin.zeng 2025-01-11 13:47:27 +08:00 committed by lane.wei
parent b028f971d6
commit b16f9c20f4
1 changed files with 25 additions and 4 deletions

View File

@ -1221,10 +1221,12 @@ void Sidebar::priv::update_sync_status(const MachineObject *obj)
return;
}
bool printer_synced = false;
// 1. update printer status
const Preset &cur_preset = wxGetApp().preset_bundle->printers.get_edited_preset();
if (preset_bundle && preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle) == obj->printer_type) {
panel_printer_preset->ShowBadge(true);
printer_synced = true;
} else {
clear_all_sync_status();
return;
@ -1302,24 +1304,43 @@ void Sidebar::priv::update_sync_status(const MachineObject *obj)
std::reverse(machine_extruder_infos.begin(), machine_extruder_infos.end());
std::vector<bool> extruder_synced(extruder_nums, false);
if (extruder_nums == 1) {
if (extruder_infos == machine_extruder_infos)
if (extruder_infos == machine_extruder_infos) {
single_extruder->ShowBadge(true);
extruder_synced[0] = true;
}
else
single_extruder->ShowBadge(false);
}
else if (extruder_nums == 2) {
if (extruder_infos[0] == machine_extruder_infos[0])
if (extruder_infos[0] == machine_extruder_infos[0]) {
left_extruder->ShowBadge(true);
extruder_synced[0] = true;
}
else
left_extruder->ShowBadge(false);
if (extruder_infos[1] == machine_extruder_infos[1])
if (extruder_infos[1] == machine_extruder_infos[1]) {
right_extruder->ShowBadge(true);
extruder_synced[1] = true;
}
else
right_extruder->ShowBadge(false);
}
}
StateColor synced_colour(std::pair<wxColour, int>(wxColour("#CECECE"), StateColor::Normal));
StateColor not_synced_colour(std::pair<wxColour, int>(wxColour("#00AE42"), StateColor::Normal));
bool all_extruder_synced = std::all_of(extruder_synced.begin(), extruder_synced.end(), [](bool value) { return value; });
if (printer_synced && all_extruder_synced) {
btn_sync_printer->SetBorderColor(synced_colour);
btn_sync_printer->SetIcon("ams_nozzle_sync");
}
else {
btn_sync_printer->SetBorderColor(not_synced_colour);
btn_sync_printer->SetIcon("printer_sync");
}
}
#define PRINTER_THUMBNAIL_SIZE (wxSize(FromDIP(48), FromDIP(48)))
#define PRINTER_THUMBNAIL_SIZE_SMALL (wxSize(FromDIP(32), FromDIP(32)))