NEW: [STUDIO-2764] Marketplace Model Scoring Entry

Change-Id: I097028699e86bc4de756e6e80b4d98e0e66622ea
This commit is contained in:
maosheng.wei 2023-05-06 12:11:30 +08:00 committed by Lane.Wei
parent 537ec8da26
commit f4768996e8
3 changed files with 76 additions and 1 deletions

View file

@ -91,7 +91,7 @@ void MsgDialog::show_dsa_button(wxString const &title)
m_text_dsa->SetFont(::Label::Body_13);
m_text_dsa->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#323A3D")));
btn_sizer->Layout();
//Fit();
Fit();
}
bool MsgDialog::get_checkbox_state()

View file

@ -543,10 +543,28 @@ wxBoxSizer *StatusBasePanel::create_project_task_page(wxWindow *parent)
penel_bottons->SetSizer(bSizer_buttons);
penel_bottons->Layout();
StateColor btn_bg_green(std::pair<wxColour, int>(AMS_CONTROL_DISABLE_COLOUR, StateColor::Disabled), std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered), std::pair<wxColour, int>(AMS_CONTROL_BRAND_COLOUR, StateColor::Normal));
StateColor btn_bd_green(std::pair<wxColour, int>(AMS_CONTROL_WHITE_COLOUR, StateColor::Disabled), std::pair<wxColour, int>(AMS_CONTROL_BRAND_COLOUR, StateColor::Enabled));
m_button_market_scoring = new Button(parent, _L("Immediately score"));
m_button_market_scoring->SetBackgroundColor(btn_bg_green);
m_button_market_scoring->SetBorderColor(btn_bd_green);
m_button_market_scoring->SetTextColor(wxColour("#FFFFFE"));
m_button_market_scoring->SetSize(wxSize(FromDIP(128), FromDIP(26)));
m_button_market_scoring->SetMinSize(wxSize(-1, FromDIP(26)));
m_button_market_scoring->SetCornerRadius(FromDIP(13));
wxBoxSizer *bSizer_market_scoring = new wxBoxSizer(wxHORIZONTAL);
bSizer_market_scoring->Add(m_button_market_scoring);
bSizer_market_scoring->Add(0, 0, 1, wxEXPAND, 0);
m_button_market_scoring->Hide();
bSizer_subtask_info->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(14));
bSizer_subtask_info->Add(bSizer_task_name, 0, wxEXPAND|wxRIGHT, FromDIP(18));
bSizer_subtask_info->Add(m_staticText_profile_value, 0, wxEXPAND | wxTOP, FromDIP(5));
bSizer_subtask_info->Add(m_printing_stage_value, 0, wxEXPAND | wxTOP, FromDIP(5));
bSizer_subtask_info->Add(bSizer_market_scoring, 0, wxEXPAND | wxTOP, FromDIP(5));
bSizer_subtask_info->Add(penel_bottons, 0, wxEXPAND | wxTOP, FromDIP(10));
bSizer_subtask_info->Add(m_panel_progress, 0, wxEXPAND|wxRIGHT, FromDIP(25));
@ -1260,6 +1278,7 @@ StatusPanel::StatusPanel(wxWindow *parent, wxWindowID id, const wxPoint &pos, co
m_button_pause_resume->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_subtask_pause_resume), NULL, this);
m_button_abort->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_subtask_abort), NULL, this);
m_button_clean->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_print_error_clean), NULL, this);
m_button_market_scoring->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_market_scoring), NULL, this);
m_tempCtrl_bed->Connect(wxEVT_KILL_FOCUS, wxFocusEventHandler(StatusPanel::on_bed_temp_kill_focus), NULL, this);
m_tempCtrl_bed->Connect(wxEVT_SET_FOCUS, wxFocusEventHandler(StatusPanel::on_bed_temp_set_focus), NULL, this);
m_tempCtrl_nozzle->Connect(wxEVT_KILL_FOCUS, wxFocusEventHandler(StatusPanel::on_nozzle_temp_kill_focus), NULL, this);
@ -1306,6 +1325,7 @@ StatusPanel::~StatusPanel()
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);
m_button_clean->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_print_error_clean), NULL, this);
m_button_market_scoring->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_market_scoring), NULL, this);
m_tempCtrl_bed->Disconnect(wxEVT_KILL_FOCUS, wxFocusEventHandler(StatusPanel::on_bed_temp_kill_focus), NULL, this);
m_tempCtrl_bed->Disconnect(wxEVT_SET_FOCUS, wxFocusEventHandler(StatusPanel::on_bed_temp_set_focus), NULL, this);
m_tempCtrl_nozzle->Disconnect(wxEVT_KILL_FOCUS, wxFocusEventHandler(StatusPanel::on_nozzle_temp_kill_focus), NULL, this);
@ -1413,6 +1433,12 @@ void StatusPanel::update_tasklist_info()
return;
}
void StatusPanel::on_market_scoring(wxCommandEvent &event) {
if (obj->get_modeltask() && obj->get_modeltask()->design_id > 0) {
market_model_scoring_page(obj->get_modeltask()->design_id);
}
}
void StatusPanel::on_subtask_pause_resume(wxCommandEvent &event)
{
if (obj) {
@ -1605,6 +1631,30 @@ void StatusPanel::show_recenter_dialog() {
obj->command_go_home();
}
void StatusPanel::market_model_scoring_page(int design_id)
{
std::string url;
if (GUI::wxGetApp().getAgent()->get_model_mall_detail_url(&url, std::to_string(design_id)) == 0) {
std::string sign_in;
std::string ticket;
size_t model_page = url.find("=http");
if (model_page != std::string::npos) sign_in = url.substr(0, model_page + 1);
size_t ticket_pos = url.find("ticket=");
if (ticket_pos != std::string::npos) ticket = url.substr(ticket_pos);
std::string user_id = GUI::wxGetApp().getAgent()->get_user_id();
if (sign_in.empty() || ticket.empty())
url = "https://makerhub-pre.bambu-lab.com/en/u/" + user_id + "/rating";
else
url = sign_in + "https://makerhub-pre.bambu-lab.com/en/u/" + user_id + "/rating" + '&' + ticket;
try {
wxLaunchDefaultBrowser(url); }
catch(...) {
return;
}
}
}
void StatusPanel::show_error_message(MachineObject* obj, wxString msg, std::string print_error_str)
{
if (msg.IsEmpty()) {
@ -2366,10 +2416,31 @@ void StatusPanel::update_subtask(MachineObject *obj)
m_button_abort->SetBitmap_("print_control_stop_disable");
m_button_pause_resume->Enable(false);
m_button_pause_resume->SetBitmap_("print_control_resume_disable");
if (!m_print_finish && obj->get_modeltask() && obj->get_modeltask()->design_id > 0) {
m_print_finish = true;
m_button_market_scoring->Show();
if (wxGetApp().app_config->get("not_show_score_dialog") != "1") {
MessageDialog dlg(this,
_L("The currently printed model belongs to the Bambu Market model,click the Yes button to rate the model.\nYou can also click on the "
"\"Immediately score\" button to rate the model."),
wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Score"), wxYES_NO | wxYES_DEFAULT | wxCENTRE);
dlg.show_dsa_button();
int old_design_id = obj->get_modeltask()->design_id;
auto res = dlg.ShowModal();
if (dlg.get_checkbox_state()) { wxGetApp().app_config->set("not_show_score_dialog", "1"); }
if (res == wxID_YES) {
market_model_scoring_page(old_design_id);
}
}
}
} else {
m_button_abort->Enable(true);
m_button_abort->SetBitmap_("print_control_stop");
m_button_pause_resume->Enable(true);
if (m_print_finish) {
m_print_finish = false;
m_button_market_scoring->Hide();
}
}
// update printing stage
m_printing_stage_value->SetLabelText(obj->get_curr_stage());

View file

@ -144,6 +144,7 @@ protected:
ScalableButton *m_button_pause_resume;
ScalableButton *m_button_abort;
Button * m_button_clean;
Button * m_button_market_scoring;
wxStaticText * m_text_tasklist_caption;
@ -292,6 +293,7 @@ protected:
int m_last_extrusion = -1;
int m_last_vcamera = -1;
bool m_is_load_with_temp = false;
bool m_print_finish = false;
wxWebRequest web_request;
bool bed_temp_input = false;
@ -312,12 +314,14 @@ protected:
void show_task_list_info(bool show = true);
void update_tasklist_info();
void on_market_scoring(wxCommandEvent &event);
void on_subtask_pause_resume(wxCommandEvent &event);
void on_subtask_abort(wxCommandEvent &event);
void on_print_error_clean(wxCommandEvent &event);
void show_error_message(MachineObject* obj, wxString msg, std::string print_error_str = "");
void error_info_reset();
void show_recenter_dialog();
void market_model_scoring_page(int design_id);
/* axis control */
bool check_axis_z_at_home(MachineObject* obj);