Use printer_variant to compare nozzle diameter in connect printer state.

Do not concider models without nozzle.
This commit is contained in:
David Kocik 2024-04-26 15:05:30 +02:00
parent 0cfbb5a437
commit 859bc9c786

View File

@ -932,19 +932,11 @@ static std::string get_connect_state_suffix_for_printer(const Preset& printer_pr
// process real data from Connect // process real data from Connect
if (auto printer_state_map = wxGetApp().plater()->get_user_account()->get_printer_state_map(); if (auto printer_state_map = wxGetApp().plater()->get_user_account()->get_printer_state_map();
!printer_state_map.empty()) { !printer_state_map.empty()) {
// printer_state_map has only one nozzle value. Take a first value from "nozzle_diameter" opt.
std::string nozzle_diameter_serialized;
if (printer_preset.config.has("nozzle_diameter")) {
nozzle_diameter_serialized = dynamic_cast<const ConfigOptionFloats*>(printer_preset.config.option("nozzle_diameter"))->serialize();
if (size_t comma = nozzle_diameter_serialized.find(','); comma != std::string::npos)
nozzle_diameter_serialized = nozzle_diameter_serialized.substr(0, comma);
}
for (const auto& [printer_model_nozzle_pair, states] : printer_state_map) { for (const auto& [printer_model_nozzle_pair, states] : printer_state_map) {
if (printer_model_nozzle_pair.first == printer_preset.config.opt_string("printer_model") if (printer_model_nozzle_pair.first == printer_preset.config.opt_string("printer_model")
&& (printer_model_nozzle_pair.second.empty() && printer_model_nozzle_pair.second == printer_preset.config.opt_string("printer_variant"))
|| printer_model_nozzle_pair.second == nozzle_diameter_serialized) {
) {
PrinterStatesCount states_cnt = get_printe_states_count(states); PrinterStatesCount states_cnt = get_printe_states_count(states);
if (states_cnt.available_cnt > 0) if (states_cnt.available_cnt > 0)
@ -963,19 +955,11 @@ static wxString get_connect_info_line(const Preset& printer_preset)
{ {
if (auto printer_state_map = wxGetApp().plater()->get_user_account()->get_printer_state_map(); if (auto printer_state_map = wxGetApp().plater()->get_user_account()->get_printer_state_map();
!printer_state_map.empty()) { !printer_state_map.empty()) {
// printer_state_map has only one nozzle value. Take a first value from "nozzle_diameter" opt.
std::string nozzle_diameter_serialized;
if (printer_preset.config.has("nozzle_diameter")) {
nozzle_diameter_serialized = dynamic_cast<const ConfigOptionFloats*>(printer_preset.config.option("nozzle_diameter"))->serialize();
if (size_t comma = nozzle_diameter_serialized.find(','); comma != std::string::npos)
nozzle_diameter_serialized = nozzle_diameter_serialized.substr(0, comma);
}
for (const auto& [printer_model_nozzle_pair, states] : printer_state_map) { for (const auto& [printer_model_nozzle_pair, states] : printer_state_map) {
if (printer_model_nozzle_pair.first == printer_preset.config.opt_string("printer_model") if (printer_model_nozzle_pair.first == printer_preset.config.opt_string("printer_model")
&& (printer_model_nozzle_pair.second.empty() && printer_model_nozzle_pair.second == printer_preset.config.opt_string("printer_variant"))
|| printer_model_nozzle_pair.second == nozzle_diameter_serialized) {
) {
PrinterStatesCount states_cnt = get_printe_states_count(states); PrinterStatesCount states_cnt = get_printe_states_count(states);
return format_wxstr(_L("Available: %1%, Offline: %2%, Busy: %3%. Total: %4% printers"), return format_wxstr(_L("Available: %1%, Offline: %2%, Busy: %3%. Total: %4% printers"),