diff --git a/usrc/service/front_end_controler.cpp b/usrc/service/front_end_controler.cpp index 2976835..eb63654 100644 --- a/usrc/service/front_end_controler.cpp +++ b/usrc/service/front_end_controler.cpp @@ -108,6 +108,7 @@ void FrontEndControler::startSchedule() { m_nowPage = packet.data[1]; } + event_cache.d.sys_event_page_id.isFromPopWin = m_isInPopWin; callUsrEventCb(&event_cache); if (input_file_event_cache_state) { @@ -115,20 +116,20 @@ void FrontEndControler::startSchedule() { input_file_event_cache_state = false; } - m_isFromPopWin = false; // 清空FromPopWin标志 + m_isInPopWin = false; // 清空FromPopWin标志 } else if (tjc::kpt_on_promopt_page_load == packetType) { event_cache.eventId = packetType; event_cache.pid = packet.data[0]; event_cache.bid = 0; callUsrEventCb(&event_cache); - m_isFromPopWin = true; // + m_isInPopWin = true; // } else if (tjc::kpt_on_keyboard_page_load == packetType) { event_cache.eventId = packetType; event_cache.pid = packet.data[0]; event_cache.bid = 0; callUsrEventCb(&event_cache); - m_isFromPopWin = true; + m_isInPopWin = true; } else { event_cache.eventId = packet.data[0]; callUsrEventCb(&event_cache); @@ -403,6 +404,11 @@ bool FrontEndControler::vis(uint16_t buuid, int32_t val) { void FrontEndControler::alert(const char* info, function onConfirm) { zlock_guard lg(m_cmdlock); + if (m_isInPopWin) { + ZLOGE(TAG, "isInPopWin,alert failed"); + return; + } + m_onAlertPageConfirmKey = onConfirm; static char buf[128]; sprintf(buf, "%s", info); @@ -413,6 +419,11 @@ void FrontEndControler::alert(const char* info, function onConfirm) } void FrontEndControler::alertNoConfirm(const char* info) { zlock_guard lg(m_cmdlock); + if (m_isInPopWin) { + ZLOGE(TAG, "isInPopWin,alertNoConfirm failed"); + return; + } + static char buf[128]; sprintf(buf, "%s", info); @@ -424,6 +435,11 @@ void FrontEndControler::alertNoConfirm(const char* info) { void FrontEndControler::confirmNoCancle(const char* info, function onConfirm) { zlock_guard lg(m_cmdlock); + if (m_isInPopWin) { + ZLOGE(TAG, "isInPopWin,confirmNoCancle failed"); + return; + } + m_onConfirmPageConfirmKey = onConfirm; static char buf[128]; @@ -437,8 +453,12 @@ void FrontEndControler::confirmNoCancle(const char* info, function o void FrontEndControler::confirm(const char* info, function onConfirm) { zlock_guard lg(m_cmdlock); - m_onConfirmPageConfirmKey = onConfirm; + if (m_isInPopWin) { + ZLOGE(TAG, "isInPopWin,confirm failed"); + return; + } + m_onConfirmPageConfirmKey = onConfirm; static char buf[128]; sprintf(buf, "%s", info); diff --git a/usrc/service/front_end_controler.hpp b/usrc/service/front_end_controler.hpp index c96fae5..4d1e2fe 100644 --- a/usrc/service/front_end_controler.hpp +++ b/usrc/service/front_end_controler.hpp @@ -37,7 +37,7 @@ class FrontEndControler { function m_onConfirmPageConfirmKey; function m_onAlertPageConfirmKey; - bool m_isFromPopWin = false; + bool m_isInPopWin = false; public: FrontEndControler() {}; @@ -86,8 +86,6 @@ class FrontEndControler { void setAph(uint8_t pid, uint8_t bid, int32_t state); // 组件透明度,最大127,设置为0则隐藏组件 void sendcmd(const char* format, ...); - bool isFromPopWin() { return m_isFromPopWin; } - private: void processScreenRxPacket(uint8_t* data, size_t len); void processUsrButtonEvent(uint8_t* data, size_t len); diff --git a/usrc/service/page/Page_login.cpp b/usrc/service/page/Page_login.cpp index 8f84f4c..5db4d08 100644 --- a/usrc/service/page/Page_login.cpp +++ b/usrc/service/page/Page_login.cpp @@ -20,7 +20,7 @@ static CfgItermCache cfgcache; bool Page_login::isBelongThisPage(int page) { return page == PAGE; } -void Page_login::OnPageLoad() { +void Page_login::OnPageLoad(OnPageLoadContext* cxt) { static int enusrNum; static char usrName[6][20]; @@ -49,7 +49,7 @@ void Page_login::OnPageLoad() { UIS->setVal(PAGE, OBJ(chooseUsr), (int32_t)0); UIS->setVal(PAGE, OBJ(cUsrName), getCfgStr((config_index_t)(kusr_name0))); - if (!UIS->isFromPopWin()) { + if (!cxt->isFromPopWin) { UIS->setVal(PAGE, OBJ(txtPasswd), ""); } } diff --git a/usrc/service/page/Page_login.hpp b/usrc/service/page/Page_login.hpp index 3bf760d..abd51b5 100644 --- a/usrc/service/page/Page_login.hpp +++ b/usrc/service/page/Page_login.hpp @@ -17,7 +17,7 @@ class Page_login : public IPageProcesser { private: bool isBelongThisPage(int page); - virtual void OnPageLoad() override; + virtual void OnPageLoad(OnPageLoadContext*cxt) override; virtual void OnLoginButtonClick(uint8_t bid, const char* userName, const char* passwd) override; virtual void OnInputFieldContentChange(uint8_t bid, const char* text) override; }; diff --git a/usrc/service/page/Page_main.cpp b/usrc/service/page/Page_main.cpp index bc9a1b7..eea40a4 100644 --- a/usrc/service/page/Page_main.cpp +++ b/usrc/service/page/Page_main.cpp @@ -41,7 +41,7 @@ void Page_main::updateRunModeState() { bool Page_main::isBelongThisPage(int page) { return page == PAGE; } -void Page_main::OnPageLoad() { +void Page_main::OnPageLoad(OnPageLoadContext*cxt) { // 只有管理员能够修改,酸液通道名称 if (GSM->isAdmin()) { UIS->setTouchEnableState(ob_main_acidname0, 1); diff --git a/usrc/service/page/Page_main.hpp b/usrc/service/page/Page_main.hpp index 23cddcf..d7cf9f1 100644 --- a/usrc/service/page/Page_main.hpp +++ b/usrc/service/page/Page_main.hpp @@ -17,7 +17,7 @@ class Page_main : public IPageProcesser { private: virtual bool isBelongThisPage(int page)override; - virtual void OnPageLoad() override; + virtual void OnPageLoad(OnPageLoadContext*cxt) override; virtual void OnButton(uint8_t bid, uint8_t val) override; virtual void OnInputFieldContentChange(uint8_t bid, const char* text) override; virtual void OnAppEvent(AppEvent_t* event) override; diff --git a/usrc/service/page/page_processer.hpp b/usrc/service/page/page_processer.hpp index d2f461b..8c42ad4 100644 --- a/usrc/service/page/page_processer.hpp +++ b/usrc/service/page/page_processer.hpp @@ -7,6 +7,11 @@ namespace iflytop { using namespace std; +class OnPageLoadContext { + public: + bool isFromPopWin = false; +}; + class IPageProcesser { private: /* data */ @@ -18,7 +23,9 @@ class IPageProcesser { return; } if (event->eventId == tjc::kpt_sys_event_page_id) { - OnPageLoad(); + OnPageLoadContext cxt = {0}; + cxt.isFromPopWin = event->d.sys_event_page_id.isFromPopWin; + OnPageLoad(&cxt); } else if (event->eventId == tjc::kpt_double_state_button_event) { OnButton(event->bid, event->d.double_state_button.val); } else if (event->eventId == tjc::kpt_button_event) { @@ -43,7 +50,7 @@ class IPageProcesser { private: virtual bool isBelongThisPage(int page) = 0; - virtual void OnPageLoad() { return; }; + virtual void OnPageLoad(OnPageLoadContext* cxt) { return; }; virtual void OnKeyboardPageLoad() { return; }; virtual void OnInputFieldContentChange(uint8_t bid, const char* text) { return; }; virtual void OnButton(uint8_t bid, uint8_t val) { return; }; diff --git a/usrc/service/page/submenu/Page_changePasswd.cpp b/usrc/service/page/submenu/Page_changePasswd.cpp index a407497..166e27f 100644 --- a/usrc/service/page/submenu/Page_changePasswd.cpp +++ b/usrc/service/page/submenu/Page_changePasswd.cpp @@ -12,8 +12,8 @@ static CfgItermCache cfgcache; bool Page_changePasswd::isBelongThisPage(int page) { return page == PAGE; } -void Page_changePasswd::OnPageLoad() { - if (!UIS->isFromPopWin()) { +void Page_changePasswd::OnPageLoad(OnPageLoadContext*cxt) { + if (!cxt->isFromPopWin) { memset(oldpasswdBuf, 0, sizeof(oldpasswdBuf)); memset(newpasswdBuf, 0, sizeof(newpasswdBuf)); memset(confirmPasswdBuf, 0, sizeof(confirmPasswdBuf)); diff --git a/usrc/service/page/submenu/Page_changePasswd.hpp b/usrc/service/page/submenu/Page_changePasswd.hpp index f143888..0c709a3 100644 --- a/usrc/service/page/submenu/Page_changePasswd.hpp +++ b/usrc/service/page/submenu/Page_changePasswd.hpp @@ -21,7 +21,7 @@ class Page_changePasswd : public IPageProcesser { private: virtual bool isBelongThisPage(int page) override; - virtual void OnPageLoad() override; + virtual void OnPageLoad(OnPageLoadContext*cxt) override; virtual void OnInputFieldContentChange(uint8_t bid, const char* text) override; virtual void OnButton(uint8_t bid, uint8_t val) override; diff --git a/usrc/service/page/submenu/Page_muAcidType.cpp b/usrc/service/page/submenu/Page_muAcidType.cpp index 5dd55d9..cb28cfb 100644 --- a/usrc/service/page/submenu/Page_muAcidType.cpp +++ b/usrc/service/page/submenu/Page_muAcidType.cpp @@ -12,7 +12,7 @@ using namespace iflytop; static CfgItermCache cfgcache; bool Page_muAcidType::isBelongThisPage(int page) { return page == PAGE; } -void Page_muAcidType::OnPageLoad() { // +void Page_muAcidType::OnPageLoad(OnPageLoadContext*cxt) { // UIS->setVal(PAGE, OBJ(t1), getCfgStr(kcfg_acidName1)); UIS->setVal(PAGE, OBJ(t2), getCfgStr(kcfg_acidName2)); UIS->setVal(PAGE, OBJ(t3), getCfgStr(kcfg_acidName3)); diff --git a/usrc/service/page/submenu/Page_muAcidType.hpp b/usrc/service/page/submenu/Page_muAcidType.hpp index 8aaa64a..680883f 100644 --- a/usrc/service/page/submenu/Page_muAcidType.hpp +++ b/usrc/service/page/submenu/Page_muAcidType.hpp @@ -17,7 +17,7 @@ class Page_muAcidType : public IPageProcesser { private: virtual bool isBelongThisPage(int page) override; - virtual void OnPageLoad() override; + virtual void OnPageLoad(OnPageLoadContext*cxt) override; virtual void OnInputFieldContentChange(uint8_t bid, const char* text) override; virtual void OnButton(uint8_t bid, uint8_t val) override; diff --git a/usrc/service/page/submenu/Page_muDeviceInfo.cpp b/usrc/service/page/submenu/Page_muDeviceInfo.cpp index 8cf2398..67bff24 100644 --- a/usrc/service/page/submenu/Page_muDeviceInfo.cpp +++ b/usrc/service/page/submenu/Page_muDeviceInfo.cpp @@ -6,7 +6,7 @@ using namespace iflytop; #define TAG "Page_muDeviceInfo" bool Page_muDeviceInfo::isBelongThisPage(int page) { return page == PAGE; } -void Page_muDeviceInfo::OnPageLoad() { +void Page_muDeviceInfo::OnPageLoad(OnPageLoadContext*cxt) { UIS->setVal(PAGE, ob_muDeviceInfo_deviceId, "SN000000"); UIS->setVal(PAGE, ob_muDeviceInfo_manufa, "中国黄金"); UIS->setVal(PAGE, ob_muDeviceInfo_softVers, APP_VERSION); diff --git a/usrc/service/page/submenu/Page_muDeviceInfo.hpp b/usrc/service/page/submenu/Page_muDeviceInfo.hpp index f746e52..891c796 100644 --- a/usrc/service/page/submenu/Page_muDeviceInfo.hpp +++ b/usrc/service/page/submenu/Page_muDeviceInfo.hpp @@ -17,7 +17,7 @@ class Page_muDeviceInfo : public IPageProcesser { private: virtual bool isBelongThisPage(int page) override; - virtual void OnPageLoad() override; + virtual void OnPageLoad(OnPageLoadContext*cxt) override; virtual void OnInputFieldContentChange(uint8_t bid, const char* text) override; virtual void OnButton(uint8_t bid, uint8_t val) override; diff --git a/usrc/service/page/submenu/Page_muInterval.cpp b/usrc/service/page/submenu/Page_muInterval.cpp index ca0a48f..5b4f075 100644 --- a/usrc/service/page/submenu/Page_muInterval.cpp +++ b/usrc/service/page/submenu/Page_muInterval.cpp @@ -12,7 +12,7 @@ static CfgItermCache cfgcache; bool Page_muInterval::isBelongThisPage(int page) { return page == PAGE; } -void Page_muInterval::OnPageLoad() { +void Page_muInterval::OnPageLoad(OnPageLoadContext*cxt) { // 设置加酸间隔时间 UIS->setVal(PAGE, ob_muInterval_stAcidInte, CS->getStr(kcfg_distrInterval, &cfgcache)); }; diff --git a/usrc/service/page/submenu/Page_muInterval.hpp b/usrc/service/page/submenu/Page_muInterval.hpp index a22da94..7b1e8e2 100644 --- a/usrc/service/page/submenu/Page_muInterval.hpp +++ b/usrc/service/page/submenu/Page_muInterval.hpp @@ -17,7 +17,7 @@ class Page_muInterval : public IPageProcesser { private: virtual bool isBelongThisPage(int page) override; - virtual void OnPageLoad() override; + virtual void OnPageLoad(OnPageLoadContext*cxt) override; virtual void OnInputFieldContentChange(uint8_t bid, const char* text) override; virtual void OnButton(uint8_t bid, uint8_t val) override; }; diff --git a/usrc/service/page/submenu/Page_muPumpTest.cpp b/usrc/service/page/submenu/Page_muPumpTest.cpp index c13f787..c11f2b6 100644 --- a/usrc/service/page/submenu/Page_muPumpTest.cpp +++ b/usrc/service/page/submenu/Page_muPumpTest.cpp @@ -6,7 +6,7 @@ using namespace iflytop; #define TAG "Page_muPumpTest" bool Page_muPumpTest::isBelongThisPage(int page) { return page == PAGE; } -void Page_muPumpTest::OnPageLoad() {} +void Page_muPumpTest::OnPageLoad(OnPageLoadContext*cxt) {} void Page_muPumpTest::OnInputFieldContentChange(uint8_t bid, const char* text) { // ZLOGI(TAG, "bid:%d %s", bid, text); } diff --git a/usrc/service/page/submenu/Page_muPumpTest.hpp b/usrc/service/page/submenu/Page_muPumpTest.hpp index dcbcbfa..27a7ae2 100644 --- a/usrc/service/page/submenu/Page_muPumpTest.hpp +++ b/usrc/service/page/submenu/Page_muPumpTest.hpp @@ -17,7 +17,7 @@ class Page_muPumpTest : public IPageProcesser { private: virtual bool isBelongThisPage(int page) override; - virtual void OnPageLoad() override; + virtual void OnPageLoad(OnPageLoadContext*cxt) override; virtual void OnInputFieldContentChange(uint8_t bid, const char* text) override; virtual void OnButton(uint8_t bid, uint8_t val) override; private: diff --git a/usrc/service/page/submenu/Page_muSettings.cpp b/usrc/service/page/submenu/Page_muSettings.cpp index 3ac6992..83fcdbe 100644 --- a/usrc/service/page/submenu/Page_muSettings.cpp +++ b/usrc/service/page/submenu/Page_muSettings.cpp @@ -12,7 +12,7 @@ static CfgItermCache cfgcache; bool Page_muSettings::isBelongThisPage(int page) { return page == PAGE; } -void Page_muSettings::OnPageLoad() { // +void Page_muSettings::OnPageLoad(OnPageLoadContext*cxt) { // UIS->setVal(PAGE, ob_muSettings_bleCliName, "testData"); UIS->setVal(PAGE, ob_muSettings_irun0, "1"); UIS->setVal(PAGE, ob_muSettings_irun1, "1"); diff --git a/usrc/service/page/submenu/Page_muSettings.hpp b/usrc/service/page/submenu/Page_muSettings.hpp index 3ac5b70..bfbc1e1 100644 --- a/usrc/service/page/submenu/Page_muSettings.hpp +++ b/usrc/service/page/submenu/Page_muSettings.hpp @@ -17,7 +17,7 @@ class Page_muSettings : public IPageProcesser { private: virtual bool isBelongThisPage(int page) override; - virtual void OnPageLoad() override; + virtual void OnPageLoad(OnPageLoadContext*cxt) override; virtual void OnInputFieldContentChange(uint8_t bid, const char* text) override; virtual void OnButton(uint8_t bid, uint8_t val) override; diff --git a/usrc/service/page/submenu/Page_muUsrMgr.cpp b/usrc/service/page/submenu/Page_muUsrMgr.cpp index d82c529..ba7510b 100644 --- a/usrc/service/page/submenu/Page_muUsrMgr.cpp +++ b/usrc/service/page/submenu/Page_muUsrMgr.cpp @@ -12,7 +12,7 @@ static CfgItermCache cfgcache; bool Page_muUsrMgr::isBelongThisPage(int page) { return page == PAGE; } -void Page_muUsrMgr::OnPageLoad() { // +void Page_muUsrMgr::OnPageLoad(OnPageLoadContext*cxt) { // ZLOGI(TAG, "OnPageLoad"); updatePage(); }; diff --git a/usrc/service/page/submenu/Page_muUsrMgr.hpp b/usrc/service/page/submenu/Page_muUsrMgr.hpp index 98fde6e..ac0b62f 100644 --- a/usrc/service/page/submenu/Page_muUsrMgr.hpp +++ b/usrc/service/page/submenu/Page_muUsrMgr.hpp @@ -17,7 +17,7 @@ class Page_muUsrMgr : public IPageProcesser { private: virtual bool isBelongThisPage(int page) override; - virtual void OnPageLoad() override; + virtual void OnPageLoad(OnPageLoadContext*cxt) override; virtual void OnInputFieldContentChange(uint8_t bid, const char* text) override; virtual void OnButton(uint8_t bid, uint8_t val) override; diff --git a/usrc/service/tjc/tjc_constant.hpp b/usrc/service/tjc/tjc_constant.hpp index 5a7d366..1142482 100644 --- a/usrc/service/tjc/tjc_constant.hpp +++ b/usrc/service/tjc/tjc_constant.hpp @@ -108,6 +108,10 @@ typedef struct { uint8_t fromPopPage; } on_page_load; + struct { + bool isFromPopWin; + } sys_event_page_id; + } d; } tjc_usr_event_t;