ENH:optimize the popup position of the fan control dialog

Change-Id: I98212c2860dfec955072c82710c8dee31866fd1d
(cherry picked from commit 8cde04d61f16068a59861bbdd989eeba15c5ab18)
This commit is contained in:
tao wang 2022-12-28 14:24:29 +08:00 committed by lane.wei
parent 65acb3117b
commit 5ce9ba73ed
2 changed files with 31 additions and 7 deletions

View File

@ -1143,7 +1143,7 @@ void StatusPanel::update_camera_state(MachineObject* obj)
StatusPanel::StatusPanel(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size, long style, const wxString &name) StatusPanel::StatusPanel(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size, long style, const wxString &name)
: StatusBasePanel(parent, id, pos, size, style) : StatusBasePanel(parent, id, pos, size, style)
, m_fan_control_popup(FanControlPopup(this)) , m_fan_control_popup(new FanControlPopup(this))
{ {
create_tasklist_info(); create_tasklist_info();
update_tasklist_info(); update_tasklist_info();
@ -1737,7 +1737,9 @@ void StatusPanel::update_misc_ctrl(MachineObject *obj)
int speed = round(obj->cooling_fan_speed / float(25.5)); int speed = round(obj->cooling_fan_speed / float(25.5));
m_switch_nozzle_fan->SetValue(speed > 0 ? true : false); m_switch_nozzle_fan->SetValue(speed > 0 ? true : false);
m_switch_nozzle_fan->setFanValue(speed * 10); m_switch_nozzle_fan->setFanValue(speed * 10);
m_fan_control_popup.update_fan_data(MachineObject::FanType::COOLING_FAN, obj); if (m_fan_control_popup) {
m_fan_control_popup->update_fan_data(MachineObject::FanType::COOLING_FAN, obj);
}
} }
// printing fan // printing fan
@ -1747,7 +1749,9 @@ void StatusPanel::update_misc_ctrl(MachineObject *obj)
int speed = round(obj->big_fan1_speed / float(25.5)); int speed = round(obj->big_fan1_speed / float(25.5));
m_switch_printing_fan->SetValue(speed > 0 ? true : false); m_switch_printing_fan->SetValue(speed > 0 ? true : false);
m_switch_printing_fan->setFanValue(speed * 10); m_switch_printing_fan->setFanValue(speed * 10);
m_fan_control_popup.update_fan_data(MachineObject::FanType::BIG_COOLING_FAN, obj); if (m_fan_control_popup) {
m_fan_control_popup->update_fan_data(MachineObject::FanType::BIG_COOLING_FAN, obj);
}
} }
// cham fan // cham fan
@ -1757,7 +1761,9 @@ void StatusPanel::update_misc_ctrl(MachineObject *obj)
int speed = round(obj->big_fan2_speed / float(25.5)); int speed = round(obj->big_fan2_speed / float(25.5));
m_switch_cham_fan->SetValue(speed > 0 ? true : false); m_switch_cham_fan->SetValue(speed > 0 ? true : false);
m_switch_cham_fan->setFanValue(speed * 10); m_switch_cham_fan->setFanValue(speed * 10);
m_fan_control_popup.update_fan_data(MachineObject::FanType::CHAMBER_FAN, obj); if (m_fan_control_popup) {
m_fan_control_popup->update_fan_data(MachineObject::FanType::CHAMBER_FAN, obj);
}
} }
bool light_on = obj->chamber_light != MachineObject::LIGHT_EFFECT::LIGHT_EFFECT_OFF; bool light_on = obj->chamber_light != MachineObject::LIGHT_EFFECT::LIGHT_EFFECT_OFF;
@ -2698,10 +2704,28 @@ void StatusPanel::on_printing_fan_switch(wxCommandEvent &event)
void StatusPanel::on_nozzle_fan_switch(wxCommandEvent &event) void StatusPanel::on_nozzle_fan_switch(wxCommandEvent &event)
{ {
m_fan_control_popup->Destroy();
m_fan_control_popup = new FanControlPopup(this);
auto pos = m_switch_nozzle_fan->GetScreenPosition(); auto pos = m_switch_nozzle_fan->GetScreenPosition();
pos.y = pos.y + m_switch_nozzle_fan->GetSize().y; pos.y = pos.y + m_switch_nozzle_fan->GetSize().y;
m_fan_control_popup.SetPosition(pos);
m_fan_control_popup.Popup();
int display_idx = wxDisplay::GetFromWindow(this);
auto display = wxDisplay(display_idx).GetClientArea();
wxSize screenSize = wxSize(display.GetWidth(), display.GetHeight());
auto fan_popup_size = m_fan_control_popup->GetSize();
if (screenSize.y - fan_popup_size.y < FromDIP(300)) {
pos.x += FromDIP(50);
pos.y = (screenSize.y - fan_popup_size.y) / 2;
}
m_fan_control_popup->SetPosition(pos);
m_fan_control_popup->Popup();

View File

@ -272,7 +272,7 @@ protected:
SecondaryCheckDialog* abort_dlg = nullptr; SecondaryCheckDialog* abort_dlg = nullptr;
SecondaryCheckDialog* ctrl_e_hint_dlg = nullptr; SecondaryCheckDialog* ctrl_e_hint_dlg = nullptr;
SecondaryCheckDialog* sdcard_hint_dlg = nullptr; SecondaryCheckDialog* sdcard_hint_dlg = nullptr;
FanControlPopup m_fan_control_popup{nullptr}; FanControlPopup* m_fan_control_popup{nullptr};
wxString m_request_url; wxString m_request_url;
bool m_start_loading_thumbnail = false; bool m_start_loading_thumbnail = false;