From c66e2feb917e67c3c9b74f91541d684bf93f3831 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Thu, 28 Nov 2024 11:31:16 +0800 Subject: [PATCH] update --- uappbase/bean/appevent.hpp | 23 +-- uappbase/bean/appevent_type.hpp | 21 ++ usrc/db/dao/acid_distrubt_record_dao.cpp | 1 + usrc/db/dao/acid_distrubt_record_dao.hpp | 1 - usrc/uicontroler/base/ui_state.cpp | 4 +- usrc/uicontroler/page/home_page.cpp | 36 +++- usrc/uicontroler/page/login_page.cpp | 31 ++- usrc/uicontroler/page/mupage/MuAcidDistMgrPage.cpp | 218 +++++++++++++++++++++ .../uicontroler/page/mupage/muAcidTakeMgr_page.cpp | 207 ------------------- usrc/uicontroler/tjc/tjc.hpp | 18 +- usrc/uicontroler/ui_controler.hpp | 7 +- 11 files changed, 329 insertions(+), 238 deletions(-) create mode 100644 uappbase/bean/appevent_type.hpp create mode 100644 usrc/uicontroler/page/mupage/MuAcidDistMgrPage.cpp delete mode 100644 usrc/uicontroler/page/mupage/muAcidTakeMgr_page.cpp diff --git a/uappbase/bean/appevent.hpp b/uappbase/bean/appevent.hpp index 8923ce2..0f783ee 100644 --- a/uappbase/bean/appevent.hpp +++ b/uappbase/bean/appevent.hpp @@ -4,26 +4,7 @@ #include #include "uicontroler/tjc/tjc_base_type.h" - -typedef enum { - KAE_callOnAppEventBusLoop, - - kAE_RunModeChangeEvent, // 运行模式改变 - - kAppEvent_StateDisplayInfo, - kAppEvent_AcidChCfgChangeEvent, - - // UI_EVENT - KAE_UIEvent, - kAE_LoginEvent, - kAE_unLoginEvent, - KAE_PageChangeEvent, - - kAE_AcidStatChangeEvent, // 统计数据变化事件 - kAE_RemoterConnectedEvent, // 遥控器连接成功 - kAE_RemoterDisConnectedEvent, // 遥控器断开连接 - -} AppEventType_t; +#include "appevent_type.hpp" /** * @@ -37,7 +18,7 @@ typedef enum { class AppEvent { public: AppEventType_t type; - union { + union val { uint32_t placeholder; char bleName[20]; char stateDisplayInfo[30]; diff --git a/uappbase/bean/appevent_type.hpp b/uappbase/bean/appevent_type.hpp new file mode 100644 index 0000000..f4b822f --- /dev/null +++ b/uappbase/bean/appevent_type.hpp @@ -0,0 +1,21 @@ +#pragma once +#include +enum AppEventType { + KAE_callOnAppEventBusLoop, + + kAE_RunModeChangeEvent, // 运行模式改变 + + kAppEvent_StateDisplayInfo, + kAppEvent_AcidChCfgChangeEvent, + + // UI_EVENT + KAE_UIEvent, + kAE_LoginEvent, + kAE_unLoginEvent, + KAE_PageChangeEvent, + + kAE_AcidStatChangeEvent, // 统计数据变化事件 + kAE_RemoterConnectedEvent, // 遥控器连接成功 + kAE_RemoterDisConnectedEvent, // 遥控器断开连接 +}; +typedef enum AppEventType AppEventType_t; diff --git a/usrc/db/dao/acid_distrubt_record_dao.cpp b/usrc/db/dao/acid_distrubt_record_dao.cpp index 0ffb26f..8eaabe0 100644 --- a/usrc/db/dao/acid_distrubt_record_dao.cpp +++ b/usrc/db/dao/acid_distrubt_record_dao.cpp @@ -70,6 +70,7 @@ void AcidDistrubtRecordDao::addRecord(const acid_distrubt_record_t& record) { storgeItem(recordNum); } + acid_distrubt_record_table_t* AcidDistrubtRecordDao::getRecordTable() { ZASSERT_INFO(module_inited, "%s not inited", TABLE_NAME); return acid_distrubt_record_table; diff --git a/usrc/db/dao/acid_distrubt_record_dao.hpp b/usrc/db/dao/acid_distrubt_record_dao.hpp index 6c93e0e..ff6199d 100644 --- a/usrc/db/dao/acid_distrubt_record_dao.hpp +++ b/usrc/db/dao/acid_distrubt_record_dao.hpp @@ -31,7 +31,6 @@ class AcidDistrubtRecordDao { static acid_distrubt_record_table_t* getRecordTable(); static void addRecord(const acid_distrubt_record_t& record); - static void sync(); static void getRecord(int pageNum, AcidDistrubtRcordPage* page); static bool isAlmostFull(); static bool isFull(); diff --git a/usrc/uicontroler/base/ui_state.cpp b/usrc/uicontroler/base/ui_state.cpp index 32319d8..215e4e5 100644 --- a/usrc/uicontroler/base/ui_state.cpp +++ b/usrc/uicontroler/base/ui_state.cpp @@ -42,5 +42,7 @@ bool UIPublicState::popUIPopInfoBlock(UIPopInfo_t* info) { int UIPublicState::getPopInfoNum() { return popInfoNum; } -bool UIPublicState::setLoadingState(bool state) { loadingState = state; } +bool UIPublicState::setLoadingState(bool state) { loadingState = state; + return true; +} bool UIPublicState::getLoadingState() { return loadingState; } diff --git a/usrc/uicontroler/page/home_page.cpp b/usrc/uicontroler/page/home_page.cpp index 4d6d4ae..dff2174 100644 --- a/usrc/uicontroler/page/home_page.cpp +++ b/usrc/uicontroler/page/home_page.cpp @@ -3,8 +3,11 @@ #include "uappbase/apphal/apphal.hpp" #include "ui/ui.h" #include "uicontroler/base/page_processer.hpp" + // #include "db/dao/acid_ch_cfg_dao.hpp" +#include "db/dao/acid_distrubt_record_dao.hpp" +#include "db/dao/acid_use_record_dao.hpp" #include "db/dao/device_setting_dao.hpp" // #include "service/pump_ctrl_service.hpp" @@ -12,6 +15,14 @@ namespace iflytop { using namespace std; #define TAG "HomePage" +static const char* fmt(const char* txt, ...) { + static char buf[128]; + va_list args; + va_start(args, txt); + vsnprintf(buf, sizeof(buf), txt, args); + va_end(args); + return buf; +} class HomePage : public IPageProcesser { private: @@ -32,6 +43,29 @@ class HomePage : public IPageProcesser { ZLOGI(TAG, "OnPageLoad"); syncState(); } + + virtual void onChangePageEvent() { + if (UIStateMgr::ins()->lastPage == pg_login) { + // 检查酸液分发记录表是否满 + if (AcidDistrubtRecordDao::isFull()) { + UIS->popInfoWin(fmt("酸液分发记录表已满(%d/%d),请及时清理", // + AcidDistrubtRecordDao::getRecordTable()->recordNum, ACID_DISTRUBT_RECORD_NUM)); + } else if (AcidDistrubtRecordDao::isAlmostFull()) { + UIS->popInfoWin(fmt("酸液分发记录表即将满(%d/%d),请及时清理", // + AcidDistrubtRecordDao::getRecordTable()->recordNum, ACID_DISTRUBT_RECORD_NUM)); + } + + // 检查酸液使用记录表是否满 + if (AcidUseRecordDao::isFull()) { + UIS->popInfoWin(fmt("酸液使用记录表已满(%d/%d),请及时清理", // + AcidUseRecordDao::getRecordTable()->recordNum, ACIDUSERCORD_RECORD_NUM)); + } else if (AcidUseRecordDao::isAlmostFull()) { + UIS->popInfoWin(fmt("酸液使用记录表即将满(%d/%d),请及时清理", // + AcidUseRecordDao::getRecordTable()->recordNum, ACIDUSERCORD_RECORD_NUM)); + } + } + }; + virtual void onBackKey() override {} virtual void onInputFieldContentChange(uint8_t bid, uint8_t slecId, const char* text) override { if (bid == ob_home_acideval0) { @@ -65,7 +99,7 @@ class HomePage : public IPageProcesser { } else if (bid == ob_home_SelCH3) { setPumpSelectState(3, !GStateMgr::ins()->getPumpSelectState(3)); } else if (bid == ob_home_MenuButton) { - UIS->chpage(pg_navi,true); + UIS->chpage(pg_navi, true); } } virtual void onAppEvent(AppEvent* event) override { diff --git a/usrc/uicontroler/page/login_page.cpp b/usrc/uicontroler/page/login_page.cpp index 0f18d47..084c0d4 100644 --- a/usrc/uicontroler/page/login_page.cpp +++ b/usrc/uicontroler/page/login_page.cpp @@ -2,10 +2,15 @@ #include "db/dao/user_dao.hpp" #include "ui/ui.h" #include "uicontroler/base/page_processer.hpp" +// +#include "db/dao/acid_distrubt_record_dao.hpp" +#include "db/dao/acid_use_record_dao.hpp" namespace iflytop { using namespace std; #define TAG "LoginPage" + + class LoginPage : public IPageProcesser { private: char userName[20] = {0}; @@ -21,6 +26,11 @@ class LoginPage : public IPageProcesser { private: virtual void onPageLoad(OnPageLoadContext* cxt) override {} + virtual void onChangePageEvent() { + resetPage(); + return; + }; + virtual void onBackKey() override {} virtual void onInputFieldContentChange(uint8_t bid, uint8_t slecId, const char* text) override { if (bid == ob_login_uName) { @@ -36,6 +46,12 @@ class LoginPage : public IPageProcesser { } } virtual void onClickRelease(uint8_t bid, uint8_t val, const char* text) override { + if (bid == ob_login_uName) { + UIS->popFullKeyBoard(thisPage, ob_login_uName, 20, userName); + } else if (bid == ob_login_pwd) { + UIS->popPasswdKeyBoard(thisPage, ob_login_pwd, 6); + } + if (bid == ob_login_blogin) { user_t* user = UserDao::getUserByName(userName); if (user == nullptr) { @@ -48,12 +64,9 @@ class LoginPage : public IPageProcesser { return; } - ZLOGI(TAG, "login %s(%d) role:%d", userName, user->id, user->role); + - GStateMgr::ins()->setLogin(user->id, userName, (user_role_t)user->role); - AppEventBus::ins()->pushSimpleEvent(kAE_LoginEvent); - UIControler::ins()->chpage(pg_home, true); - resetPage(); + login(user); } } virtual void onAppEvent(AppEvent* event) override {} @@ -65,6 +78,14 @@ class LoginPage : public IPageProcesser { UIS->setTxt(thisPage, ob_login_pwd, ""); // 密码 UIS->setTxt(thisPage, ob_login_pwdEMsg, ""); // 密码错误信息 } + + void login(user_t* user) { + ZLOGI(TAG, "login %s(%d) role:%d", userName, user->id, user->role); + GStateMgr::ins()->setLogin(user->id, userName, (user_role_t)user->role); + AppEventBus::ins()->pushSimpleEvent(kAE_LoginEvent); + UIControler::ins()->chpage(pg_home, true); + + } }; // 实例化LoginPage, 使其自动注册 diff --git a/usrc/uicontroler/page/mupage/MuAcidDistMgrPage.cpp b/usrc/uicontroler/page/mupage/MuAcidDistMgrPage.cpp new file mode 100644 index 0000000..9c1fc4d --- /dev/null +++ b/usrc/uicontroler/page/mupage/MuAcidDistMgrPage.cpp @@ -0,0 +1,218 @@ + +#include "db/dao/acid_distrubt_record_dao.hpp" +#include "db/dao/acid_name_dao.hpp" +#include "db/dao/user_dao.hpp" +#include "uappbase/apphal/apphal.hpp" +#include "ui/ui.h" +#include "uicontroler/base/page_processer.hpp" +#include "usrc/db/dao/acid_ch_cfg_dao.hpp" +// +#include "db/dao/acid_ch_cfg_dao.hpp" +#include "db/dao/acid_use_record_dao.hpp" +#include "db/dao/device_acid_volume_dao.hpp" +#include "db/dao/device_setting_dao.hpp" +// +#include "service/pump_ctrl_service.hpp" +#include "service/remote_controler.hpp" + +namespace iflytop { +using namespace std; +#define TAG "MuAcidDistMgrPage" + +typedef struct { + uint8_t val[5]; // 时间 +} table_iterm_t; + +static table_iterm_t cfgbid_table[] = { + {ob_muAcidDistMgr_h0, ob_muAcidDistMgr_h1, ob_muAcidDistMgr_h2, ob_muAcidDistMgr_h3, ob_muAcidDistMgr_h4}, + {ob_muAcidDistMgr_val00, ob_muAcidDistMgr_val01, ob_muAcidDistMgr_val02, ob_muAcidDistMgr_val03, ob_muAcidDistMgr_val04}, + {ob_muAcidDistMgr_val10, ob_muAcidDistMgr_val11, ob_muAcidDistMgr_val12, ob_muAcidDistMgr_val13, ob_muAcidDistMgr_val14}, + {ob_muAcidDistMgr_val20, ob_muAcidDistMgr_val21, ob_muAcidDistMgr_val22, ob_muAcidDistMgr_val23, ob_muAcidDistMgr_val24}, + {ob_muAcidDistMgr_val30, ob_muAcidDistMgr_val31, ob_muAcidDistMgr_val32, ob_muAcidDistMgr_val33, ob_muAcidDistMgr_val34}, + {ob_muAcidDistMgr_val40, ob_muAcidDistMgr_val41, ob_muAcidDistMgr_val42, ob_muAcidDistMgr_val43, ob_muAcidDistMgr_val44}, + {ob_muAcidDistMgr_val50, ob_muAcidDistMgr_val51, ob_muAcidDistMgr_val52, ob_muAcidDistMgr_val53, ob_muAcidDistMgr_val54}, + {ob_muAcidDistMgr_val60, ob_muAcidDistMgr_val61, ob_muAcidDistMgr_val62, ob_muAcidDistMgr_val63, ob_muAcidDistMgr_val64}, + {ob_muAcidDistMgr_val70, ob_muAcidDistMgr_val71, ob_muAcidDistMgr_val72, ob_muAcidDistMgr_val73, ob_muAcidDistMgr_val74}, +}; + +static int m_takePers = 0; +static int m_chId = 0; +static int m_volumeVal = 0; + +class MuAcidDistMgrPage : public IPageProcesser { + public: + MuAcidDistMgrPage() : IPageProcesser(TAG, pg_muAcidDistMgr) {} + + virtual void initialize() override { + IPageProcesser::initialize(); + + setText(cfgbid_table[0].val[0], "时间"); + setText(cfgbid_table[0].val[1], "发放人"); + setText(cfgbid_table[0].val[2], "领酸人"); + setText(cfgbid_table[0].val[3], "酸液名称"); + setText(cfgbid_table[0].val[4], "容量"); + + for (int i = 0; i < 8; i++) { + setText(cfgbid_table[i + 1].val[0], ""); + setText(cfgbid_table[i + 1].val[1], ""); + setText(cfgbid_table[i + 1].val[2], ""); + setText(cfgbid_table[i + 1].val[3], ""); + setText(cfgbid_table[i + 1].val[4], ""); + } + } + + /*********************************************************************************************************************** + * CALL_BAK * + ***********************************************************************************************************************/ + + virtual void onPageLoad(OnPageLoadContext* cxt) override { return; }; + /** + * @brief 返回上一页 + */ + virtual void onBackKey() override { UIControler::ins()->chpage(pg_navi, true); } + virtual void onChangePageEvent() override { + resetForm(); + updateTableVolume(); + } + virtual void onClickRelease(uint8_t bid, uint8_t val, const char* text) override { + /*********************************************************************************************************************** + * 添加记录 * + ***********************************************************************************************************************/ + /** + * 绑定键盘 + */ + if (bid == ob_muAcidDistMgr_takePers) { + UIControler::ins()->popKeyBMutSel(thisPage, bid, 0, UserDao::getUsrNameTable()); + } else if (bid == ob_muAcidDistMgr_chId) { + UIControler::ins()->popKeyBMutSel(thisPage, bid, 0, AcidChCfgDao::getAcidCHNameList()); + } else if (bid == ob_muAcidDistMgr_volumeVal) { + UIControler::ins()->popNumKeyBoard(thisPage, bid, 4, ""); + } + + if (bid == ob_muAcidDistMgr_addNew) { + if (m_volumeVal <= 0) { + UIControler::ins()->popWarningWin("请输入容量"); + return; + } + if (m_takePers < 0) { + UIControler::ins()->popWarningWin("请选择发放人"); + return; + } + + if (m_chId < 0) { + UIControler::ins()->popWarningWin("请选择酸液名称"); + return; + } + + { + UILoadingCxt ctx; + acid_distrubt_record_t record; + AppHal::rtc_get(&record.date); + record.distrubtAcidUsrid = GStateMgr::ins()->getUserId(); + record.takeAcidUsrid = m_takePers; + record.distribuCh = m_chId; + record.distribuVolume = m_volumeVal; + AcidDistrubtRecordDao::addRecord(record); + + DeviceAcidVolume::updateAcidVolume(m_chId, m_volumeVal); + GStateMgr::ins()->setAcidRemain(m_chId, m_volumeVal); + resetForm(); + } + } + + /*********************************************************************************************************************** + * 表格操作 * + ***********************************************************************************************************************/ + + if (bid == ob_muAcidDistMgr_clearRecord) { + UIControler::ins()->popConfirmWin("您确定要清空领酸记录?", [this](bool isOk) { + if (isOk) { + UILoadingCxt loadingCxt; + AcidDistrubtRecordDao::clearRecord(); + UIControler::ins()->chpage(thisPage, true); + } + }); + } + + if (bid == ob_muAcidDistMgr_export) { + } + } + virtual void onInputFieldContentChange(uint8_t bid, uint8_t slecId, const char* text) override { + if (bid == ob_muAcidDistMgr_takePers) { + m_takePers = slecId; + setText(bid, "%s", UserDao::getUserByIdNotNull(slecId)->name); + } else if (bid == ob_muAcidDistMgr_chId) { + if (slecId < 0 || slecId > 3) { + ZLOGI(TAG, "slecId out of range"); + return; + } + m_chId = slecId; + setText(bid, "%s(%d)", AcidChCfgDao::getCfg(slecId)->acidChooseName, slecId); + } else if (bid == ob_muAcidDistMgr_volumeVal) { + float val = atof(text); + if (val < 0) { + UIControler::ins()->popInfoWin("体积不能小于0"); + return; + } + + m_volumeVal = val; + setText(bid, "%d", (int)val); + } + } + + /*********************************************************************************************************************** + * UTILS * + ***********************************************************************************************************************/ + + void updateTableVolume() { + // set val + + for (int i = 0; i < 8; i++) { + for (int j = 0; j < 5; j++) { + UIControler::ins()->setEffect(thisPage, cfgbid_table[i + 1].val[j], ktjc_effet_bottom_fly_in); + } + } + + UIControler::ins()->chpage(thisPage, false); + + AcidDistrubtRcordPage page; + AcidDistrubtRecordDao::getRecord(0, &page); + for (int i = 0; i < page.recordNum; i++) { + setText(cfgbid_table[i + 1].val[0], "%d/%d/%d %02d:%02d:%02d", page.record[i]->date.year, page.record[i]->date.month, page.record[i]->date.day, page.record[i]->date.hours, page.record[i]->date.minutes, page.record[i]->date.seconds); + setText(cfgbid_table[i + 1].val[1], "%s", UserDao::getUserByIdNotNull(page.record[i]->distrubtAcidUsrid)->name); + setText(cfgbid_table[i + 1].val[2], "%s", UserDao::getUserByIdNotNull(page.record[i]->takeAcidUsrid)->name); + setText(cfgbid_table[i + 1].val[3], "%s(%d)", AcidChCfgDao::getCfg(page.record[i]->distribuCh)->acidChooseName, page.record[i]->distribuCh); + setText(cfgbid_table[i + 1].val[4], "%d", page.record[i]->distribuVolume); + } + + for (int i = page.recordNum; i < 8; i++) { + setText(cfgbid_table[i + 1].val[0], ""); + setText(cfgbid_table[i + 1].val[1], ""); + setText(cfgbid_table[i + 1].val[2], ""); + setText(cfgbid_table[i + 1].val[3], ""); + setText(cfgbid_table[i + 1].val[4], ""); + } + for (int i = 0; i < 8; i++) { + for (int j = 0; j < 5; j++) { + UIControler::ins()->setEffect(thisPage, cfgbid_table[i + 1].val[j], ktjc_effet_immediately); + } + } + } + + void resetForm() { + m_takePers = -1; + m_chId = -1; + m_volumeVal = -1; + + updateTableVolume(); + setText(ob_muAcidDistMgr_distPerso, "%s", GStateMgr::ins()->getLoginUsr()); + setText(ob_muAcidDistMgr_takePers, ""); + setText(ob_muAcidDistMgr_chId, ""); + setText(ob_muAcidDistMgr_volumeVal, ""); + } +}; + +// 实例化Page, 使其自动注册 +static MuAcidDistMgrPage instance; + +} // namespace iflytop diff --git a/usrc/uicontroler/page/mupage/muAcidTakeMgr_page.cpp b/usrc/uicontroler/page/mupage/muAcidTakeMgr_page.cpp deleted file mode 100644 index 681e74a..0000000 --- a/usrc/uicontroler/page/mupage/muAcidTakeMgr_page.cpp +++ /dev/null @@ -1,207 +0,0 @@ - -#include "db/dao/acid_distrubt_record_dao.hpp" -#include "db/dao/acid_name_dao.hpp" -#include "db/dao/user_dao.hpp" -#include "uappbase/apphal/apphal.hpp" -#include "ui/ui.h" -#include "uicontroler/base/page_processer.hpp" -#include "usrc/db/dao/acid_ch_cfg_dao.hpp" -// -#include "db/dao/acid_ch_cfg_dao.hpp" -#include "db/dao/acid_use_record_dao.hpp" -#include "db/dao/device_acid_volume_dao.hpp" -#include "db/dao/device_setting_dao.hpp" -// -#include "service/pump_ctrl_service.hpp" -#include "service/remote_controler.hpp" - -namespace iflytop { -using namespace std; -#define TAG "MuAcidDistMgrPage" - -typedef struct { - uint8_t val[5]; // 时间 -} table_iterm_t; - -static table_iterm_t cfgbid_table[] = { - {ob_muAcidDistMgr_h0, ob_muAcidDistMgr_h1, ob_muAcidDistMgr_h2, ob_muAcidDistMgr_h3, ob_muAcidDistMgr_h4}, - {ob_muAcidDistMgr_val00, ob_muAcidDistMgr_val01, ob_muAcidDistMgr_val02, ob_muAcidDistMgr_val03, ob_muAcidDistMgr_val04}, - {ob_muAcidDistMgr_val10, ob_muAcidDistMgr_val11, ob_muAcidDistMgr_val12, ob_muAcidDistMgr_val13, ob_muAcidDistMgr_val14}, - {ob_muAcidDistMgr_val20, ob_muAcidDistMgr_val21, ob_muAcidDistMgr_val22, ob_muAcidDistMgr_val23, ob_muAcidDistMgr_val24}, - {ob_muAcidDistMgr_val30, ob_muAcidDistMgr_val31, ob_muAcidDistMgr_val32, ob_muAcidDistMgr_val33, ob_muAcidDistMgr_val34}, - {ob_muAcidDistMgr_val40, ob_muAcidDistMgr_val41, ob_muAcidDistMgr_val42, ob_muAcidDistMgr_val43, ob_muAcidDistMgr_val44}, - {ob_muAcidDistMgr_val50, ob_muAcidDistMgr_val51, ob_muAcidDistMgr_val52, ob_muAcidDistMgr_val53, ob_muAcidDistMgr_val54}, - {ob_muAcidDistMgr_val60, ob_muAcidDistMgr_val61, ob_muAcidDistMgr_val62, ob_muAcidDistMgr_val63, ob_muAcidDistMgr_val64}, - {ob_muAcidDistMgr_val70, ob_muAcidDistMgr_val71, ob_muAcidDistMgr_val72, ob_muAcidDistMgr_val73, ob_muAcidDistMgr_val74}, -}; - -static int m_takePers = 0; -static int m_chId = 0; -static int m_volumeVal = 0; - -class MuAcidDistMgrPage : public IPageProcesser { - public: - MuAcidDistMgrPage() : IPageProcesser(TAG, pg_muAcidDistMgr) {} - - virtual void initialize() override { - IPageProcesser::initialize(); - - setText(cfgbid_table[0].val[0], "时间"); - setText(cfgbid_table[0].val[1], "发放人"); - setText(cfgbid_table[0].val[2], "领酸人"); - setText(cfgbid_table[0].val[3], "酸液名称"); - setText(cfgbid_table[0].val[4], "容量"); - - for (int i = 0; i < 8; i++) { - setText(cfgbid_table[i + 1].val[0], ""); - setText(cfgbid_table[i + 1].val[1], ""); - setText(cfgbid_table[i + 1].val[2], ""); - setText(cfgbid_table[i + 1].val[3], ""); - setText(cfgbid_table[i + 1].val[4], ""); - } - } - - /*********************************************************************************************************************** - * CALL_BAK * - ***********************************************************************************************************************/ - - virtual void onPageLoad(OnPageLoadContext* cxt) override { return; }; - /** - * @brief 返回上一页 - */ - virtual void onBackKey() override { UIControler::ins()->chpage(pg_navi, true); } - virtual void onChangePageEvent() override { - resetForm(); - updateTableVolume(); - } - virtual void onClickRelease(uint8_t bid, uint8_t val, const char* text) override { - /*********************************************************************************************************************** - * 添加记录 * - ***********************************************************************************************************************/ - /** - * 绑定键盘 - */ - if (bid == ob_muAcidDistMgr_takePers) { - UIControler::ins()->popKeyBMutSel(thisPage, bid, 0, UserDao::getUsrNameTable()); - } else if (bid == ob_muAcidDistMgr_chId) { - UIControler::ins()->popKeyBMutSel(thisPage, bid, 0, AcidChCfgDao::getAcidCHNameList()); - } else if (bid == ob_muAcidDistMgr_volumeVal) { - UIControler::ins()->popNumKeyBoard(thisPage, bid, 4, ""); - } - - if (bid == ob_muAcidDistMgr_addNew) { - if (m_volumeVal <= 0) { - UIControler::ins()->popWarningWin("请输入容量"); - return; - } - if (m_takePers < 0) { - UIControler::ins()->popWarningWin("请选择发放人"); - return; - } - - if (m_chId < 0) { - UIControler::ins()->popWarningWin("请选择酸液名称"); - return; - } - - { - UILoadingCxt ctx; - acid_distrubt_record_t record; - AppHal::rtc_get(&record.date); - record.distrubtAcidUsrid = GStateMgr::ins()->getUserId(); - record.takeAcidUsrid = m_takePers; - record.distribuCh = m_chId; - record.distribuVolume = m_volumeVal; - AcidDistrubtRecordDao::addRecord(record); - - DeviceAcidVolume::updateAcidVolume(m_chId, m_volumeVal); - GStateMgr::ins()->setAcidRemain(m_chId, m_volumeVal); - resetForm(); - } - } - - /*********************************************************************************************************************** - * 表格操作 * - ***********************************************************************************************************************/ - - if (bid == ob_muAcidDistMgr_clearRecord) { - UIControler::ins()->popConfirmWin("您确定要清空领酸记录?", [this](bool isOk) { - if (isOk) { - UILoadingCxt loadingCxt; - AcidUseRecordDao::clearRecord(); - AcidUseRecordDao::sync(); - UIControler::ins()->chpage(thisPage, true); - } - }); - } - - if (bid == ob_muAcidDistMgr_export) { - } - } - virtual void onInputFieldContentChange(uint8_t bid, uint8_t slecId, const char* text) override { - if (bid == ob_muAcidDistMgr_takePers) { - m_takePers = slecId; - setText(bid, "%s", UserDao::getUserByIdNotNull(slecId)->name); - } else if (bid == ob_muAcidDistMgr_chId) { - if (slecId < 0 || slecId > 3) { - ZLOGI(TAG, "slecId out of range"); - return; - } - m_chId = slecId; - setText(bid, "%s(%d)", AcidChCfgDao::getCfg(slecId)->acidChooseName, slecId); - } else if (bid == ob_muAcidDistMgr_volumeVal) { - float val = atof(text); - if (val < 0) { - UIControler::ins()->popInfoWin("体积不能小于0"); - return; - } - - m_volumeVal = val; - setText(bid, "%d", (int)val); - } - } - - /*********************************************************************************************************************** - * UTILS * - ***********************************************************************************************************************/ - - void updateTableVolume() { - // set val - UIControler::ins()->chpage(thisPage, false); - - AcidDistrubtRcordPage page; - AcidDistrubtRecordDao::getRecord(0, &page); - for (int i = 0; i < page.recordNum; i++) { - setText(cfgbid_table[i + 1].val[0], "%d/%d/%d %02d:%02d:%02d", page.record[i]->date.year, page.record[i]->date.month, page.record[i]->date.day, page.record[i]->date.hours, page.record[i]->date.minutes, page.record[i]->date.seconds); - setText(cfgbid_table[i + 1].val[1], "%s", UserDao::getUserByIdNotNull(page.record[i]->distrubtAcidUsrid)->name); - setText(cfgbid_table[i + 1].val[2], "%s", UserDao::getUserByIdNotNull(page.record[i]->takeAcidUsrid)->name); - setText(cfgbid_table[i + 1].val[3], "%s", AcidChCfgDao::getCfg(page.record[i]->distribuCh)->acidChooseName); - setText(cfgbid_table[i + 1].val[4], "%d", page.record[i]->distribuVolume); - } - - for (int i = page.recordNum; i < 8; i++) { - setText(cfgbid_table[i + 1].val[0], ""); - setText(cfgbid_table[i + 1].val[1], ""); - setText(cfgbid_table[i + 1].val[2], ""); - setText(cfgbid_table[i + 1].val[3], ""); - setText(cfgbid_table[i + 1].val[4], ""); - } - } - - void resetForm() { - m_takePers = -1; - m_chId = -1; - m_volumeVal = -1; - - updateTableVolume(); - setText(ob_muAcidDistMgr_distPerso, "%s", GStateMgr::ins()->getLoginUsr()); - setText(ob_muAcidDistMgr_takePers, ""); - setText(ob_muAcidDistMgr_chId, ""); - setText(ob_muAcidDistMgr_volumeVal, ""); - } -}; - -// 实例化Page, 使其自动注册 -static MuAcidDistMgrPage instance; - -} // namespace iflytop diff --git a/usrc/uicontroler/tjc/tjc.hpp b/usrc/uicontroler/tjc/tjc.hpp index 61e3df7..f958bdb 100644 --- a/usrc/uicontroler/tjc/tjc.hpp +++ b/usrc/uicontroler/tjc/tjc.hpp @@ -1,3 +1,19 @@ #pragma once #include "tjc_constant.hpp" -#include "ui\ui.h" \ No newline at end of file +#include "ui\ui.h" + + +typedef enum { + // 0-立即加载;1-上边飞入;2-下边飞入;3-左边飞入;4-右边飞入;5-左上角飞入;6-右上角飞入;7-左下角飞入;8-右下角飞入;9-淡入渐变;10-中间放大 + ktjc_effet_immediately = 0, + ktjc_effet_top_fly_in, + ktjc_effet_bottom_fly_in, + ktjc_effet_left_fly_in, + ktjc_effet_right_fly_in, + ktjc_effet_left_top_fly_in, + ktjc_effet_right_top_fly_in, + ktjc_effet_left_bottom_fly_in, + ktjc_effet_right_bottom_fly_in, + ktjc_effet_fade_in, + ktjc_effet_center_zoom_in, +} tjc_effet_t; diff --git a/usrc/uicontroler/ui_controler.hpp b/usrc/uicontroler/ui_controler.hpp index b90db68..8ab7185 100644 --- a/usrc/uicontroler/ui_controler.hpp +++ b/usrc/uicontroler/ui_controler.hpp @@ -16,6 +16,7 @@ typedef struct { uint16_t datalen; } tjc_rx_packet_t; + #define UIS UIControler::ins() class UIControler { ZThread m_thread; @@ -65,6 +66,10 @@ class UIControler { void sendcmd(const char* format, ...); void sendcmd(const char* format, va_list args); + void setEffect(uint8_t pid, uint8_t bid, tjc_effet_t effect) { + zlock_guard lg(m_cmdlock); + sendcmd("p[%d].b[%d].effect=%d", pid, bid, effect); + } /*********************************************************************************************************************** * READ * @@ -99,7 +104,7 @@ class UIControler { void popKeyBMutSel(uint8_t fromPid, uint8_t fromBid, int selectvalindex, const char** selectvals); void popKeyBMutSel(uint8_t fromPid, uint8_t fromBid, int selectvalindex, const char* selectvals); - void popKeyBMutSelFix(uint8_t fromPid, uint8_t fromBid, int selectvalindex, const char* keyboardName,const char** selectvals); + void popKeyBMutSelFix(uint8_t fromPid, uint8_t fromBid, int selectvalindex, const char* keyboardName, const char** selectvals); /*********************************************************************************************************************** * UTILS *