ENH: Upgrade page optimization

implemented a click to jump to the browser, added a open in browser button, and skipped this version button,and download button

Jira:STUDIO-4042

Change-Id: I368a7eef0ac72c5b19cf8b03632112e183487c6e
This commit is contained in:
hu.wang 2023-08-18 14:33:18 +08:00 committed by Lane.Wei
parent 2e6a3ea8b7
commit ab7dec0b87
4 changed files with 65 additions and 27 deletions

View file

@ -0,0 +1,10 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_13676_18539)">
<path d="M10.5 0C10.225 0 10 0.225 10 0.5C10 0.775 10.225 1 10.5 1H14.2937L6.64687 8.64688C6.45312 8.84063 6.45312 9.15937 6.64687 9.35312C6.84062 9.54688 7.15938 9.54688 7.35313 9.35312L15 1.70625V5.5C15 5.775 15.225 6 15.5 6C15.775 6 16 5.775 16 5.5V0.5C16 0.225 15.775 0 15.5 0H10.5ZM2 2C0.896875 2 0 2.89687 0 4V14C0 15.1031 0.896875 16 2 16H12C13.1031 16 14 15.1031 14 14V9.5C14 9.225 13.775 9 13.5 9C13.225 9 13 9.225 13 9.5V14C13 14.5531 12.5531 15 12 15H2C1.44687 15 1 14.5531 1 14V4C1 3.44688 1.44687 3 2 3H6.5C6.775 3 7 2.775 7 2.5C7 2.225 6.775 2 6.5 2H2Z" fill="#00AE42"/>
</g>
<defs>
<clipPath id="clip0_13676_18539">
<rect width="16" height="16" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 838 B

View file

@ -2511,7 +2511,6 @@ bool GUI_App::on_init_inner()
dialog.SetExtendedMessage(extmsg);*/ dialog.SetExtendedMessage(extmsg);*/
std::string skip_version_str = this->app_config->get("app", "skip_version"); std::string skip_version_str = this->app_config->get("app", "skip_version");
bool skip_this_version = false; bool skip_this_version = false;
if (!skip_version_str.empty()) { if (!skip_version_str.empty()) {
@ -2530,7 +2529,7 @@ bool GUI_App::on_init_inner()
dialog.update_version_info(extmsg, version_info.version_str); dialog.update_version_info(extmsg, version_info.version_str);
//dialog.update_version_info(version_info.description); //dialog.update_version_info(version_info.description);
if (evt.GetInt() != 0) { if (evt.GetInt() != 0) {
dialog.m_remind_choice->Hide(); dialog.m_button_skip_version->Hide();
} }
switch (dialog.ShowModal()) switch (dialog.ShowModal())
{ {

View file

@ -287,7 +287,16 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent)
m_vebview_release_note->SetSize(wxSize(FromDIP(560), FromDIP(430))); m_vebview_release_note->SetSize(wxSize(FromDIP(560), FromDIP(430)));
m_vebview_release_note->SetMinSize(wxSize(FromDIP(560), FromDIP(430))); m_vebview_release_note->SetMinSize(wxSize(FromDIP(560), FromDIP(430)));
//m_vebview_release_note->SetMaxSize(wxSize(FromDIP(560), FromDIP(430))); //m_vebview_release_note->SetMaxSize(wxSize(FromDIP(560), FromDIP(430)));
m_vebview_release_note->Bind(wxEVT_WEBVIEW_NAVIGATING,[=](wxWebViewEvent& event){
static bool load_url_first = false;
if(load_url_first){
wxLaunchDefaultBrowser(url_line);
event.Veto();
}else{
load_url_first = true;
}
});
fs::path ph(data_dir()); fs::path ph(data_dir());
ph /= "resources/tooltip/releasenote.html"; ph /= "resources/tooltip/releasenote.html";
@ -304,9 +313,11 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent)
m_simplebook_release_note->AddPage(m_vebview_release_note, wxEmptyString, false); m_simplebook_release_note->AddPage(m_vebview_release_note, wxEmptyString, false);
m_remind_choice = new wxCheckBox( this, wxID_ANY, _L("Don't remind me of this version again"), wxDefaultPosition, wxDefaultSize, 0 );
m_remind_choice->SetValue(false); m_bitmap_open_in_browser = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap("open_in_browser", this, 12), wxDefaultPosition, wxDefaultSize, 0 );
m_remind_choice->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, &UpdateVersionDialog::alter_choice,this); m_link_open_in_browser = new wxHyperlinkCtrl(this, wxID_ANY, "Open in browser", "");
m_link_open_in_browser->SetFont(Label::Body_12);
auto sizer_button = new wxBoxSizer(wxHORIZONTAL); auto sizer_button = new wxBoxSizer(wxHORIZONTAL);
@ -317,19 +328,33 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent)
StateColor btn_bg_white(std::pair<wxColour, int>(wxColour(206, 206, 206), StateColor::Pressed), std::pair<wxColour, int>(wxColour(238, 238, 238), StateColor::Hovered), StateColor btn_bg_white(std::pair<wxColour, int>(wxColour(206, 206, 206), StateColor::Pressed), std::pair<wxColour, int>(wxColour(238, 238, 238), StateColor::Hovered),
std::pair<wxColour, int>(*wxWHITE, StateColor::Normal)); std::pair<wxColour, int>(*wxWHITE, StateColor::Normal));
m_button_ok = new Button(this, _L("OK")); m_button_download = new Button(this, _L("Download"));
m_button_ok->SetBackgroundColor(btn_bg_green); m_button_download->SetBackgroundColor(btn_bg_green);
m_button_ok->SetBorderColor(*wxWHITE); m_button_download->SetBorderColor(*wxWHITE);
m_button_ok->SetTextColor(wxColour("#FFFFFE")); m_button_download->SetTextColor(wxColour("#FFFFFE"));
m_button_ok->SetFont(Label::Body_12); m_button_download->SetFont(Label::Body_12);
m_button_ok->SetSize(wxSize(FromDIP(58), FromDIP(24))); m_button_download->SetSize(wxSize(FromDIP(58), FromDIP(24)));
m_button_ok->SetMinSize(wxSize(FromDIP(58), FromDIP(24))); m_button_download->SetMinSize(wxSize(FromDIP(58), FromDIP(24)));
m_button_ok->SetCornerRadius(FromDIP(12)); m_button_download->SetCornerRadius(FromDIP(12));
m_button_ok->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &e) { m_button_download->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &e) {
EndModal(wxID_YES); EndModal(wxID_YES);
}); });
m_button_skip_version = new Button(this, _L("Skip this Version"));
m_button_skip_version->SetBackgroundColor(btn_bg_white);
m_button_skip_version->SetBorderColor(wxColour(38, 46, 48));
m_button_skip_version->SetFont(Label::Body_12);
m_button_skip_version->SetSize(wxSize(FromDIP(58), FromDIP(24)));
m_button_skip_version->SetMinSize(wxSize(FromDIP(58), FromDIP(24)));
m_button_skip_version->SetCornerRadius(FromDIP(12));
m_button_skip_version->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &e) {
wxGetApp().set_skip_version(true);
EndModal(wxID_NO);
});
m_button_cancel = new Button(this, _L("Cancel")); m_button_cancel = new Button(this, _L("Cancel"));
m_button_cancel->SetBackgroundColor(btn_bg_white); m_button_cancel->SetBackgroundColor(btn_bg_white);
m_button_cancel->SetBorderColor(wxColour(38, 46, 48)); m_button_cancel->SetBorderColor(wxColour(38, 46, 48));
@ -343,10 +368,13 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent)
}); });
m_sizer_main->Add(m_line_top, 0, wxEXPAND | wxBOTTOM, 0); m_sizer_main->Add(m_line_top, 0, wxEXPAND | wxBOTTOM, 0);
sizer_button->Add(m_remind_choice, 0, wxALL | wxEXPAND, FromDIP(5)); sizer_button->Add(m_bitmap_open_in_browser, 0, wxALIGN_CENTER | wxLEFT, FromDIP(7));
sizer_button->Add(m_link_open_in_browser, 0, wxALIGN_CENTER| wxLEFT, FromDIP(3));
//sizer_button->Add(m_remind_choice, 0, wxALL | wxEXPAND, FromDIP(5));
sizer_button->AddStretchSpacer(); sizer_button->AddStretchSpacer();
sizer_button->Add(m_button_ok, 0, wxALL, FromDIP(5)); sizer_button->Add(m_button_download, 0, wxALL, FromDIP(5));
sizer_button->Add(m_button_skip_version, 0, wxALL, FromDIP(5));
sizer_button->Add(m_button_cancel, 0, wxALL, FromDIP(5)); sizer_button->Add(m_button_cancel, 0, wxALL, FromDIP(5));
m_sizer_right->Add(m_text_up_info, 0, wxEXPAND | wxBOTTOM | wxTOP, FromDIP(15)); m_sizer_right->Add(m_text_up_info, 0, wxEXPAND | wxBOTTOM | wxTOP, FromDIP(15));
@ -371,10 +399,6 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent)
UpdateVersionDialog::~UpdateVersionDialog() {} UpdateVersionDialog::~UpdateVersionDialog() {}
void UpdateVersionDialog::alter_choice(wxCommandEvent& event)
{
wxGetApp().set_skip_version(m_remind_choice->GetValue());
}
wxWebView* UpdateVersionDialog::CreateTipView(wxWindow* parent) wxWebView* UpdateVersionDialog::CreateTipView(wxWindow* parent)
{ {
@ -435,7 +459,8 @@ void UpdateVersionDialog::RunScript(std::string script)
} }
void UpdateVersionDialog::on_dpi_changed(const wxRect &suggested_rect) { void UpdateVersionDialog::on_dpi_changed(const wxRect &suggested_rect) {
m_button_ok->Rescale(); m_button_download->Rescale();
m_button_skip_version->Rescale();
m_button_cancel->Rescale(); m_button_cancel->Rescale();
} }
@ -462,7 +487,7 @@ void UpdateVersionDialog::update_version_info(wxString release_note, wxString ve
{ {
//bbs check whether the web display is used //bbs check whether the web display is used
bool use_web_link = false; bool use_web_link = false;
std::string url_line = ""; url_line = "";
auto split_array = splitWithStl(release_note.ToStdString(), "###"); auto split_array = splitWithStl(release_note.ToStdString(), "###");
if (split_array.size() >= 3) { if (split_array.size() >= 3) {
@ -482,6 +507,7 @@ void UpdateVersionDialog::update_version_info(wxString release_note, wxString ve
m_text_up_info->Hide(); m_text_up_info->Hide();
m_simplebook_release_note->SetSelection(1); m_simplebook_release_note->SetSelection(1);
m_vebview_release_note->LoadURL(from_u8(url_line)); m_vebview_release_note->LoadURL(from_u8(url_line));
m_link_open_in_browser->SetURL(url_line);
} }
else { else {
m_simplebook_release_note->SetMaxSize(wxSize(FromDIP(560), FromDIP(430))); m_simplebook_release_note->SetMaxSize(wxSize(FromDIP(560), FromDIP(430)));

View file

@ -23,6 +23,7 @@
#include <wx/artprov.h> #include <wx/artprov.h>
#include <wx/wrapsizer.h> #include <wx/wrapsizer.h>
#include <wx/event.h> #include <wx/event.h>
#include <wx/hyperlink.h>
#include "AmsMappingPopup.hpp" #include "AmsMappingPopup.hpp"
#include "GUI_Utils.hpp" #include "GUI_Utils.hpp"
@ -84,7 +85,6 @@ public:
void RunScript(std::string script); void RunScript(std::string script);
void on_dpi_changed(const wxRect& suggested_rect) override; void on_dpi_changed(const wxRect& suggested_rect) override;
void update_version_info(wxString release_note, wxString version); void update_version_info(wxString release_note, wxString version);
void alter_choice(wxCommandEvent& event);
std::vector<std::string> splitWithStl(std::string str, std::string pattern); std::vector<std::string> splitWithStl(std::string str, std::string pattern);
wxStaticBitmap* m_brand{nullptr}; wxStaticBitmap* m_brand{nullptr};
@ -94,9 +94,12 @@ public:
wxScrolledWindow* m_scrollwindows_release_note{nullptr}; wxScrolledWindow* m_scrollwindows_release_note{nullptr};
wxBoxSizer * sizer_text_release_note{nullptr}; wxBoxSizer * sizer_text_release_note{nullptr};
Label * m_staticText_release_note{nullptr}; Label * m_staticText_release_note{nullptr};
wxCheckBox* m_remind_choice; wxStaticBitmap* m_bitmap_open_in_browser;
Button* m_button_ok; wxHyperlinkCtrl* m_link_open_in_browser;
Button* m_button_skip_version;
Button* m_button_download;
Button* m_button_cancel; Button* m_button_cancel;
std::string url_line;
}; };
class SecondaryCheckDialog : public DPIFrame class SecondaryCheckDialog : public DPIFrame