FIX:change tray id from 1,2,3,4 to A1,A2,A3,A4

Change-Id: I9da42abb50d95c7a9c41064a993c3cebb68394d9
This commit is contained in:
tao wang 2022-12-09 14:58:00 +08:00 committed by Lane.Wei
parent a9938d7676
commit 0d4b8382f5
2 changed files with 31 additions and 37 deletions

View File

@ -2,6 +2,7 @@
#include "Label.hpp"
#include "../BitmapCache.hpp"
#include "../I18N.hpp"
#include "../GUI_App.hpp"
#include <wx/simplebook.h>
#include <wx/dcgraph.h>
@ -34,26 +35,6 @@ wxDEFINE_EVENT(EVT_AMS_CLIBRATION_CANCEL, wxCommandEvent);
wxDEFINE_EVENT(EVT_AMS_GUIDE_WIKI, wxCommandEvent);
wxDEFINE_EVENT(EVT_AMS_RETRY, wxCommandEvent);
inline int hex_digit_to_int(const char c)
{
return (c >= '0' && c <= '9') ? int(c - '0') : (c >= 'A' && c <= 'F') ? int(c - 'A') + 10 : (c >= 'a' && c <= 'f') ? int(c - 'a') + 10 : -1;
}
static wxColour decode_color(const std::string &color)
{
std::array<int, 3> ret = {0, 0, 0};
const char * c = color.data() + 1;
if (color.size() == 8) {
for (size_t j = 0; j < 3; ++j) {
int digit1 = hex_digit_to_int(*c++);
int digit2 = hex_digit_to_int(*c++);
if (digit1 == -1 || digit2 == -1) break;
ret[j] = float(digit1 * 16 + digit2);
}
}
return wxColour(ret[0], ret[1], ret[2]);
}
bool AMSinfo::parse_ams_info(Ams *ams, bool remain_flag)
{
if (!ams) return false;
@ -110,19 +91,19 @@ bool AMSinfo::parse_ams_info(Ams *ams, bool remain_flag)
Description:AMSrefresh
**************************************************/
AMSrefresh::AMSrefresh() { SetFont(Label::Body_10); }
AMSrefresh::AMSrefresh() { SetFont(Label::Body_10);}
AMSrefresh::AMSrefresh(wxWindow *parent, wxWindowID id, wxString number, Caninfo info, const wxPoint &pos, const wxSize &size) : AMSrefresh()
{
m_info = info;
m_text = number;
m_can_id = number.ToStdString();
create(parent, id, pos, size);
}
AMSrefresh::AMSrefresh(wxWindow *parent, wxWindowID id, int number, Caninfo info, const wxPoint &pos, const wxSize &size) : AMSrefresh()
{
m_info = info;
m_text = wxString::Format("%d", number);
m_can_id = wxString::Format("%d", number).ToStdString();
create(parent, id, pos, size);
}
@ -257,16 +238,24 @@ void AMSrefresh::paintEvent(wxPaintEvent &evt)
dc.SetPen(wxPen(colour));
dc.SetBrush(wxBrush(colour));
dc.SetFont(Label::Body_12);
dc.SetFont(Label::Body_11);
dc.SetTextForeground(colour);
auto tsize = dc.GetTextExtent(m_text);
auto tsize = dc.GetTextExtent(m_refresh_id);
pot = wxPoint((size.x - tsize.x) / 2, (size.y - tsize.y) / 2);
dc.DrawText(m_text, pot);
dc.DrawText(m_refresh_id, pot);
}
void AMSrefresh::Update(Caninfo info)
void AMSrefresh::Update(std::string ams_id, Caninfo info)
{
m_info = info;
m_ams_id = ams_id;
m_info = info;
if (!m_ams_id.empty() && !m_can_id.empty()) {
auto aid = atoi(m_ams_id.c_str());
auto tid = atoi(m_can_id.c_str());
auto tray_id = aid * 4 + tid;
m_refresh_id = wxGetApp().transition_tridid(tray_id);
}
StopLoading();
}
@ -1195,7 +1184,7 @@ void AmsCans::Update(AMSinfo info)
for (auto i = 0; i < m_can_refresh_list.GetCount(); i++) {
Canrefreshs *refresh = m_can_refresh_list[i];
if (i < m_can_count) {
refresh->canrefresh->Update(info.cans[i]);
refresh->canrefresh->Update(info.ams_id, info.cans[i]);
refresh->canrefresh->Show();
} else {
refresh->canrefresh->Hide();
@ -1230,9 +1219,11 @@ void AmsCans::AddCan(Caninfo caninfo, int canindex, int maxcan)
amscan->SetBackgroundColour(AMS_CONTROL_DEF_BLOCK_BK_COLOUR);
wxBoxSizer *m_sizer_ams = new wxBoxSizer(wxVERTICAL);
m_sizer_ams->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(14));
auto m_panel_refresh = new AMSrefresh(amscan, wxID_ANY, m_can_count + 1, caninfo);
auto m_panel_refresh = new AMSrefresh(amscan, wxID_ANY, m_can_count, caninfo);
m_sizer_ams->Add(m_panel_refresh, 0, wxALIGN_CENTER_HORIZONTAL, 0);
m_sizer_ams->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(2));
auto m_panel_lib = new AMSLib(amscan, wxID_ANY, caninfo);
m_panel_lib->Bind(wxEVT_LEFT_DOWN, [this, canindex](wxMouseEvent &ev) {
m_canlib_selection = canindex;
@ -1886,10 +1877,10 @@ void AMSControl::CreateAms()
auto caninfo0_2 = Caninfo{"def_can_2", (""), *wxWHITE, AMSCanType::AMS_CAN_TYPE_NONE};
auto caninfo0_3 = Caninfo{"def_can_3", (""), *wxWHITE, AMSCanType::AMS_CAN_TYPE_NONE};
AMSinfo ams1 = AMSinfo{"def_ams_0", std::vector<Caninfo>{caninfo0_0, caninfo0_1, caninfo0_2, caninfo0_3}};
AMSinfo ams2 = AMSinfo{"def_ams_1", std::vector<Caninfo>{caninfo0_0, caninfo0_1, caninfo0_2, caninfo0_3}};
AMSinfo ams3 = AMSinfo{"def_ams_2", std::vector<Caninfo>{caninfo0_0, caninfo0_1, caninfo0_2, caninfo0_3}};
AMSinfo ams4 = AMSinfo{"def_ams_3", std::vector<Caninfo>{caninfo0_0, caninfo0_1, caninfo0_2, caninfo0_3}};
AMSinfo ams1 = AMSinfo{"0", std::vector<Caninfo>{caninfo0_0, caninfo0_1, caninfo0_2, caninfo0_3}};
AMSinfo ams2 = AMSinfo{"1", std::vector<Caninfo>{caninfo0_0, caninfo0_1, caninfo0_2, caninfo0_3}};
AMSinfo ams3 = AMSinfo{"2", std::vector<Caninfo>{caninfo0_0, caninfo0_1, caninfo0_2, caninfo0_3}};
AMSinfo ams4 = AMSinfo{"3", std::vector<Caninfo>{caninfo0_0, caninfo0_1, caninfo0_2, caninfo0_3}};
std::vector<AMSinfo> ams_info{ams1, ams2, ams3, ams4};
std::vector<AMSinfo>::iterator it;
Freeze();

View File

@ -149,17 +149,20 @@ public:
void OnClick(wxMouseEvent &evt);
void post_event(wxCommandEvent &&event);
void paintEvent(wxPaintEvent &evt);
void Update(Caninfo info);
void Update(std::string ams_id, Caninfo info);
void msw_rescale();
Caninfo m_info;
protected:
wxTimer *m_playing_timer= {nullptr};
int m_rotation_angle = 0;
bool m_play_loading = {false};
bool m_selected = {false};
std::string m_ams_id;
std::string m_can_id;
ScalableBitmap m_bitmap_normal;
ScalableBitmap m_bitmap_selected;
ScalableBitmap m_bitmap_ams_rfid_0;
@ -172,7 +175,7 @@ protected:
ScalableBitmap m_bitmap_ams_rfid_7;
std::vector<ScalableBitmap> m_rfid_bitmap_list;
wxString m_text;
wxString m_refresh_id;
wxBoxSizer * m_size_body;
virtual void DoSetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
};