NEW: refresh task thumbnail with brokenimg

Change-Id: I39393a43c681ba954f9d3975b35df4551b314ef2
This commit is contained in:
tao.jin 2022-11-29 21:05:26 +08:00 committed by Lane.Wei
parent 75ddeb7572
commit 6133ceac20
3 changed files with 42 additions and 5 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -180,6 +180,7 @@ void StatusBasePanel::init_bitmaps()
m_bitmap_use_time = ScalableBitmap(this, "print_info_time", 16);
m_bitmap_use_weight = ScalableBitmap(this, "print_info_weight", 16);
m_thumbnail_placeholder = ScalableBitmap(this, "monitor_placeholder", 120);
m_thumbnail_brokenimg = ScalableBitmap(this, "monitor_brokenimg", 120);
m_thumbnail_sdcard = ScalableBitmap(this, "monitor_sdcard_thumbnail", 120);
//m_bitmap_camera = create_scaled_bitmap("monitor_camera", nullptr, 18);
m_bitmap_extruder_empty_load = *cache.load_png("monitor_extruder_empty_load", FromDIP(28), FromDIP(70), false, false);
@ -1130,6 +1131,7 @@ StatusPanel::StatusPanel(wxWindow *parent, wxWindowID id, const wxPoint &pos, co
// Connect Events
//m_bitmap_thumbnail->Connect(wxEVT_ENTER_WINDOW, wxMouseEventHandler(StatusPanel::on_thumbnail_enter), NULL, this);
//m_bitmap_thumbnail->Connect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(StatusPanel::on_thumbnail_leave), NULL, this);
m_bitmap_thumbnail->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(StatusPanel::refresh_thumbnail_webrequest), NULL, this);
m_setting_button->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(StatusPanel::on_camera_enter), NULL, this);
m_project_task_panel->Connect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(StatusPanel::on_thumbnail_leave), NULL, this);
m_button_pause_resume->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_subtask_pause_resume), NULL, this);
@ -1169,6 +1171,7 @@ StatusPanel::~StatusPanel()
// Disconnect Events
//m_bitmap_thumbnail->Disconnect(wxEVT_ENTER_WINDOW, wxMouseEventHandler(StatusPanel::on_thumbnail_enter), NULL, this);
//m_bitmap_thumbnail->Disconnect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(StatusPanel::on_thumbnail_leave), NULL, this);
m_bitmap_thumbnail->Disconnect(wxEVT_LEFT_DOWN, wxMouseEventHandler(StatusPanel::refresh_thumbnail_webrequest), NULL, this);
m_setting_button->Disconnect(wxEVT_LEFT_DOWN, wxMouseEventHandler(StatusPanel::on_camera_enter), NULL, this);
m_button_pause_resume->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_subtask_pause_resume), NULL, this);
m_button_abort->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_subtask_abort), NULL, this);
@ -1329,13 +1332,16 @@ void StatusPanel::on_webrequest_state(wxWebRequestEvent &evt)
img_list.insert(std::make_pair(m_request_url, img));
wxImage resize_img = img.Scale(m_bitmap_thumbnail->GetSize().x, m_bitmap_thumbnail->GetSize().y, wxIMAGE_QUALITY_HIGH);
m_bitmap_thumbnail->SetBitmap(resize_img);
task_thumbnail_state = ThumbnailState::TASK_THUMBNAIL;
break;
}
case wxWebRequest::State_Failed: {
break;
}
case wxWebRequest::State_Failed:
case wxWebRequest::State_Cancelled:
case wxWebRequest::State_Unauthorized:
case wxWebRequest::State_Unauthorized: {
m_bitmap_thumbnail->SetBitmap(m_thumbnail_brokenimg.bmp());
task_thumbnail_state = ThumbnailState::BROKEN_IMG;
break;
}
case wxWebRequest::State_Active:
case wxWebRequest::State_Idle: break;
default: break;
@ -2062,9 +2068,10 @@ void StatusPanel::update_cloud_subtask(MachineObject *obj)
img = it->second;
wxImage resize_img = img.Scale(m_bitmap_thumbnail->GetSize().x, m_bitmap_thumbnail->GetSize().y);
m_bitmap_thumbnail->SetBitmap(resize_img);
task_thumbnail_state == ThumbnailState::TASK_THUMBNAIL;
} else {
web_request = wxWebSession::GetDefault().CreateRequest(this, m_request_url);
BOOST_LOG_TRIVIAL(trace) << "monitor: start reqeust thumbnail, url = " << m_request_url;
BOOST_LOG_TRIVIAL(trace) << "monitor: start request thumbnail, url = " << m_request_url;
web_request.Start();
m_start_loading_thumbnail = false;
}
@ -2079,6 +2086,7 @@ void StatusPanel::update_sdcard_subtask(MachineObject *obj)
if (!m_load_sdcard_thumbnail) {
m_bitmap_thumbnail->SetBitmap(m_thumbnail_sdcard.bmp());
task_thumbnail_state = ThumbnailState::SDCARD_THUMBNAIL;
m_load_sdcard_thumbnail = true;
}
}
@ -2099,6 +2107,7 @@ void StatusPanel::reset_printing_values()
m_staticText_progress_percent->SetLabelText(NA_STR);
m_staticText_progress_percent_icon->SetLabelText(wxEmptyString);
m_bitmap_thumbnail->SetBitmap(m_thumbnail_placeholder.bmp());
task_thumbnail_state = ThumbnailState::PLACE_HOLDER;
m_start_loading_thumbnail = false;
m_load_sdcard_thumbnail = false;
skip_print_error = 0;
@ -2624,6 +2633,23 @@ void StatusPanel::on_thumbnail_leave(wxMouseEvent &event)
}
}
void StatusPanel::refresh_thumbnail_webrequest(wxMouseEvent &event)
{
if (!obj) return;
if (task_thumbnail_state != ThumbnailState::BROKEN_IMG) return;
if (obj->slice_info) {
m_request_url = wxString(obj->slice_info->thumbnail_url);
if (!m_request_url.IsEmpty()) {
web_request = wxWebSession::GetDefault().CreateRequest(this, m_request_url);
BOOST_LOG_TRIVIAL(trace) << "monitor: create new webrequest, state = " << web_request.GetState() << ", url = " << m_request_url;
if (web_request.GetState() == wxWebRequest::State_Idle)
web_request.Start();
BOOST_LOG_TRIVIAL(trace) << "monitor: start new webrequest, state = " << web_request.GetState() << ", url = "<< m_request_url;
}
}
}
void StatusPanel::on_switch_vcamera(wxMouseEvent &event)
{
//if (!obj) return;

View File

@ -68,6 +68,7 @@ class StatusBasePanel : public wxScrolledWindow
protected:
wxBitmap m_item_placeholder;
ScalableBitmap m_thumbnail_placeholder;
ScalableBitmap m_thumbnail_brokenimg;
ScalableBitmap m_thumbnail_sdcard;
wxBitmap m_bitmap_item_prediction;
wxBitmap m_bitmap_item_cost;
@ -329,6 +330,7 @@ protected:
void on_nozzle_fan_switch(wxCommandEvent &event);
void on_thumbnail_enter(wxMouseEvent &event);
void on_thumbnail_leave(wxMouseEvent &event);
void refresh_thumbnail_webrequest(wxMouseEvent& event);
void on_switch_vcamera(wxMouseEvent &event);
void on_camera_enter(wxMouseEvent &event);
void on_camera_leave(wxMouseEvent& event);
@ -374,6 +376,14 @@ public:
const wxString &name = wxEmptyString);
~StatusPanel();
enum ThumbnailState {
PLACE_HOLDER = 0,
BROKEN_IMG = 1,
TASK_THUMBNAIL = 2,
SDCARD_THUMBNAIL = 3,
STATE_COUNT = 4
};
MachineObject *obj {nullptr};
BBLSubTask * last_subtask{nullptr};
std::string last_profile_id;
@ -385,6 +395,7 @@ public:
long last_reading_bits { -1 };
long last_ams_version { -1 };
enum ThumbnailState task_thumbnail_state {ThumbnailState::PLACE_HOLDER};
std::vector<int> last_stage_list_info;
bool is_stage_list_info_changed(MachineObject* obj);