ENH:optimize the popup position of the fan control dialog

Change-Id: I98212c2860dfec955072c82710c8dee31866fd1d
This commit is contained in:
tao wang 2022-12-28 14:24:29 +08:00 committed by Lane.Wei
parent 7b0bfa8229
commit b3575b47d1
2 changed files with 31 additions and 7 deletions

View File

@ -1178,7 +1178,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();
@ -1777,7 +1777,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
@ -1787,7 +1789,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
@ -1797,7 +1801,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;
@ -2738,10 +2744,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

@ -273,7 +273,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;