ENH:disconnect lan mode printer when switing other printers

Change-Id: Ibd2d80e248b8a25a103cec75fdc9cd11b84e8b48
This commit is contained in:
tao wang 2023-03-02 12:17:09 +08:00 committed by Lane.Wei
parent fdd659cefe
commit ede8a2dc30
3 changed files with 4 additions and 4 deletions

View File

@ -3956,7 +3956,7 @@ void DeviceManager::clean_user_info()
userMachineList.clear();
}
bool DeviceManager::set_selected_machine(std::string dev_id)
bool DeviceManager::set_selected_machine(std::string dev_id, bool need_disconnect)
{
BOOST_LOG_TRIVIAL(info) << "set_selected_machine=" << dev_id;
auto my_machine_list = get_my_machine_list();
@ -3966,7 +3966,7 @@ bool DeviceManager::set_selected_machine(std::string dev_id)
auto last_selected = my_machine_list.find(selected_machine);
if (last_selected != my_machine_list.end()) {
if (last_selected->second->connection_type() == "lan") {
if (last_selected->second->is_connecting())
if (last_selected->second->is_connecting() && !need_disconnect)
return false;
m_agent->disconnect_printer();
}

View File

@ -816,7 +816,7 @@ public:
void erase_user_machine(std::string dev_id);
void clean_user_info();
bool set_selected_machine(std::string dev_id);
bool set_selected_machine(std::string dev_id, bool need_disconnect = false);
MachineObject* get_selected_machine();
/* return machine has access code and user machine if login*/

View File

@ -2575,7 +2575,7 @@ void SelectMachineDialog::on_selection_changed(wxCommandEvent &event)
if (obj && !obj->get_lan_mode_connection_state()) {
obj->command_get_version();
obj->command_request_push_all();
dev->set_selected_machine(m_printer_last_select);
dev->set_selected_machine(m_printer_last_select, true);
// Has changed machine unrecoverably
GUI::wxGetApp().sidebar().load_ams_list(obj->dev_id, obj->amsList);
update_select_layout(obj);