zhaohe 8 months ago
parent
commit
c66e2feb91
  1. 23
      uappbase/bean/appevent.hpp
  2. 21
      uappbase/bean/appevent_type.hpp
  3. 1
      usrc/db/dao/acid_distrubt_record_dao.cpp
  4. 1
      usrc/db/dao/acid_distrubt_record_dao.hpp
  5. 4
      usrc/uicontroler/base/ui_state.cpp
  6. 36
      usrc/uicontroler/page/home_page.cpp
  7. 31
      usrc/uicontroler/page/login_page.cpp
  8. 17
      usrc/uicontroler/page/mupage/MuAcidDistMgrPage.cpp
  9. 18
      usrc/uicontroler/tjc/tjc.hpp
  10. 7
      usrc/uicontroler/ui_controler.hpp

23
uappbase/bean/appevent.hpp

@ -4,26 +4,7 @@
#include <functional>
#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];

21
uappbase/bean/appevent_type.hpp

@ -0,0 +1,21 @@
#pragma once
#include <stdint.h>
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;

1
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;

1
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();

4
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; }

36
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 {

31
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, 使其自动注册

17
usrc/uicontroler/page/mupage/muAcidTakeMgr_page.cpp → usrc/uicontroler/page/mupage/MuAcidDistMgrPage.cpp

@ -128,8 +128,7 @@ class MuAcidDistMgrPage : public IPageProcesser {
UIControler::ins()->popConfirmWin("ÄúÈ·¶¨ÒªÇå¿ÕÁìËá¼Ç¼?", [this](bool isOk) {
if (isOk) {
UILoadingCxt loadingCxt;
AcidUseRecordDao::clearRecord();
AcidUseRecordDao::sync();
AcidDistrubtRecordDao::clearRecord();
UIControler::ins()->chpage(thisPage, true);
}
});
@ -167,6 +166,13 @@ class MuAcidDistMgrPage : public IPageProcesser {
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;
@ -175,7 +181,7 @@ class MuAcidDistMgrPage : public IPageProcesser {
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[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);
}
@ -186,6 +192,11 @@ class MuAcidDistMgrPage : public IPageProcesser {
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() {

18
usrc/uicontroler/tjc/tjc.hpp

@ -1,3 +1,19 @@
#pragma once
#include "tjc_constant.hpp"
#include "ui\ui.h"
#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;

7
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 *

Loading…
Cancel
Save