From e344f8b8b9217e70ebe81ff4ea5a00f4f1520d3b Mon Sep 17 00:00:00 2001 From: Stone Li Date: Wed, 30 Nov 2022 14:29:27 +0800 Subject: [PATCH] ENH: update hms panel and upgrade panel when disconnected Change-Id: I75d724c99ec2029190641cd2cfa22b6337d0060d Signed-off-by: Stone Li --- src/slic3r/GUI/HMSPanel.cpp | 15 +++++++++++++++ src/slic3r/GUI/HMSPanel.hpp | 4 ++++ src/slic3r/GUI/Monitor.cpp | 9 ++++++--- src/slic3r/GUI/UpgradePanel.cpp | 19 ++++++++++++++++++- src/slic3r/GUI/UpgradePanel.hpp | 4 +++- 5 files changed, 46 insertions(+), 5 deletions(-) diff --git a/src/slic3r/GUI/HMSPanel.cpp b/src/slic3r/GUI/HMSPanel.cpp index 94ef89d2d..f4946fd88 100644 --- a/src/slic3r/GUI/HMSPanel.cpp +++ b/src/slic3r/GUI/HMSPanel.cpp @@ -210,6 +210,21 @@ void HMSPanel::update(MachineObject *obj) } } +void HMSPanel::show_status(int status) +{ + if (last_status == status) return; + last_status = status; + + if (((status & (int)MonitorStatus::MONITOR_DISCONNECTED) != 0) + || ((status & (int)MonitorStatus::MONITOR_DISCONNECTED_SERVER) != 0) + || ((status & (int)MonitorStatus::MONITOR_CONNECTING) != 0) + || ((status & (int)MonitorStatus::MONITOR_NO_PRINTER) != 0) + ) { + delete_hms_panels(); + Layout(); + } +} + bool HMSPanel::Show(bool show) { return wxPanel::Show(show); diff --git a/src/slic3r/GUI/HMSPanel.hpp b/src/slic3r/GUI/HMSPanel.hpp index e50e22cbe..f6fe00338 100644 --- a/src/slic3r/GUI/HMSPanel.hpp +++ b/src/slic3r/GUI/HMSPanel.hpp @@ -6,6 +6,7 @@ #include #include #include +#include #include namespace Slic3r { @@ -44,6 +45,7 @@ protected: wxScrolledWindow *m_scrolledWindow; wxBoxSizer * m_top_sizer; HMSNotifyItem * m_notify_item; + int last_status; void append_hms_panel(HMSItem &item); void delete_hms_panels(); @@ -58,6 +60,8 @@ public: void update(MachineObject *obj_); + void show_status(int status); + MachineObject *obj { nullptr }; }; diff --git a/src/slic3r/GUI/Monitor.cpp b/src/slic3r/GUI/Monitor.cpp index 2d19185b8..67f4b1f71 100644 --- a/src/slic3r/GUI/Monitor.cpp +++ b/src/slic3r/GUI/Monitor.cpp @@ -535,11 +535,16 @@ void MonitorPanel::show_status(int status) } Freeze(); + + // update panels + m_status_info_panel->show_status(status); + m_hms_panel->show_status(status); + m_upgrade_panel->show_status(status); + if ((status & (int)MonitorStatus::MONITOR_NO_PRINTER) != 0) { set_default(); m_side_tools->set_none_printer_mode(); m_connection_info->Hide(); - m_status_info_panel->show_status(status); m_tabpanel->Refresh(); m_tabpanel->Layout(); #if !BBL_RELEASE_TO_PUBLIC @@ -556,8 +561,6 @@ void MonitorPanel::show_status(int status) m_side_tools->set_current_printer_signal(WifiSignal::NONE); set_default(); } - - m_status_info_panel->show_status(status); m_tabpanel->Refresh(); m_tabpanel->Layout(); } diff --git a/src/slic3r/GUI/UpgradePanel.cpp b/src/slic3r/GUI/UpgradePanel.cpp index f809571e8..83e934127 100644 --- a/src/slic3r/GUI/UpgradePanel.cpp +++ b/src/slic3r/GUI/UpgradePanel.cpp @@ -149,7 +149,7 @@ MachineInfoPanel::MachineInfoPanel(wxWindow* parent, wxWindowID id, const wxPoin StateColor btn_text(std::pair(wxColour(144, 144, 144), StateColor::Disabled), std::pair(wxColour(255, 255, 255), StateColor::Enabled)); m_button_upgrade_firmware->SetBackgroundColor(btn_bg); m_button_upgrade_firmware->SetBorderColor(btn_bd); - m_button_upgrade_firmware->SetTextColor(wxColour("#FFFFFE")); + m_button_upgrade_firmware->SetTextColor(btn_text); m_button_upgrade_firmware->SetFont(Label::Body_10); m_button_upgrade_firmware->SetMinSize(wxSize(FromDIP(-1), FromDIP(24))); m_button_upgrade_firmware->SetCornerRadius(FromDIP(12)); @@ -856,6 +856,23 @@ void UpgradePanel::update(MachineObject *obj) m_obj = obj; } +void UpgradePanel::show_status(int status) +{ + if (last_status == status) return; + last_status = status; + + if (((status & (int)MonitorStatus::MONITOR_DISCONNECTED) != 0) + || ((status & (int)MonitorStatus::MONITOR_DISCONNECTED_SERVER) != 0) + || ((status & (int)MonitorStatus::MONITOR_CONNECTING) != 0) + || ((status & (int)MonitorStatus::MONITOR_NO_PRINTER) != 0) + ) { + ; + } + else if ((status & (int)MonitorStatus::MONITOR_NORMAL) != 0) { + ; + } +} + bool UpgradePanel::Show(bool show) { if (show) { diff --git a/src/slic3r/GUI/UpgradePanel.hpp b/src/slic3r/GUI/UpgradePanel.hpp index 392ecff1a..77fb965d9 100644 --- a/src/slic3r/GUI/UpgradePanel.hpp +++ b/src/slic3r/GUI/UpgradePanel.hpp @@ -6,9 +6,9 @@ #include "Widgets/ProgressBar.hpp" #include #include +#include #include "ReleaseNote.hpp" - namespace Slic3r { namespace GUI { @@ -137,6 +137,7 @@ protected: //hint of force upgrade or consistency upgrade int last_forced_hint_status = -1; int last_consistency_hint_status = -1; + int last_status; bool m_show_forced_hint = true; bool m_show_consistency_hint = true; SecondaryCheckDialog* force_dlg{ nullptr }; @@ -151,6 +152,7 @@ public: void refresh_version_and_firmware(MachineObject* obj); void update(MachineObject *obj); + void show_status(int status); MachineObject *m_obj { nullptr }; };