zhaohe 8 months ago
parent
commit
7ce43060be
  1. 6
      uappbase/bean/dbtype/user_role_enum.cpp
  2. 4
      uappbase/bean/dbtype/user_role_enum.hpp
  3. 11
      usrc/db/dao/user_dao.cpp
  4. 26
      usrc/uicontroler/base/page_processer.cpp
  5. 2
      usrc/uicontroler/event_proceesser/inputfield_content_change_event_processer.cpp
  6. 2
      usrc/uicontroler/event_proceesser/inputfield_content_selected_change_event_processer.cpp
  7. 27
      usrc/uicontroler/page/mupage/muUsrMgr_page.cpp
  8. 76
      usrc/uicontroler/tjc/tjc_base_type.h
  9. 2
      usrc/uicontroler/tjc/tjc_constant.cpp
  10. 79
      usrc/uicontroler/tjc/ui_event.h
  11. 3
      usrc/uicontroler/ui_controler.cpp
  12. 21
      usrc/uicontroler/ui_controler.hpp

6
uappbase/bean/dbtype/user_role_enum.cpp

@ -6,7 +6,9 @@ const UserRole UserRole::admin = UserRole(kadmin, "admin", "
const UserRole UserRole::storekeeper = UserRole(kstorekeeper, "storekeeper", "仓库管理员");
const UserRole UserRole::user = UserRole(kuser, "user", "用户");
const UserRole* UserRole::table[3] = {&admin, &storekeeper, &user};
const int UserRole::tableNum = 3;
const UserRole* UserRole::table[4] = {&admin, &storekeeper, &user, nullptr};
const char* UserRole::chNametable[4] = {"管理员", "仓库管理员", "用户", nullptr};
const int UserRole::tableNum = 3;
} // namespace iflytop

4
uappbase/bean/dbtype/user_role_enum.hpp

@ -8,6 +8,7 @@ typedef enum {
kadmin, // 管理员
kstorekeeper, // 仓库管理员
kuser, // 用户
kuser_role_max
} user_role_t;
class UserRole : public ZEnum {
@ -20,7 +21,8 @@ class UserRole : public ZEnum {
const static UserRole storekeeper;
const static UserRole user;
const static UserRole* table[3];
const static UserRole* table[4];
const static char* chNametable[4];
const static int tableNum;
static const UserRole* of(int val) {

11
usrc/db/dao/user_dao.cpp

@ -224,10 +224,15 @@ void UserDao::updateUser(uint8_t userId, const char* name, const char* passwd, u
ZLOGE(TAG, "user %d not exist", userId);
return;
}
strcpy(user->name, name);
strcpy(user->passwd, passwd);
user->role = role;
if (name != nullptr) strcpy(user->name, name);
if (passwd != nullptr) strcpy(user->passwd, passwd);
if (user->role < 0 || user->role >= kuser_role_max) {
ZLOGE(TAG, "role %d not exist", role);
return;
}
user->role = role;
sortUsr();
storgeTableData();
}

26
usrc/uicontroler/base/page_processer.cpp

@ -29,18 +29,28 @@ void IPageProcesser::initialize() {
if (pageId != event->d.uiEvent.pid) {
return;
}
// uint8_t bid = event->d.uiEvent.bid;
UIEvent* uiEvent = &event->d.uiEvent;
if (event->d.uiEvent.eventId == kpt_sys_event_page_id) {
if (uiEvent->eventId == kpt_sys_event_page_id) {
OnPageLoadContext cxt = {0};
ZLOGI(TAG, "page %s(%d)-%d load", pageName, pageId, uiEvent->bid);
onPageLoad(&cxt);
} else if (event->d.uiEvent.eventId == kpt_button_event) {
onClickRelease(event->d.uiEvent.bid, event->d.uiEvent.val, event->d.uiEvent.text);
} else if (event->d.uiEvent.eventId == kpt_usr_def_clik_release_event) {
onClickRelease(event->d.uiEvent.bid, event->d.uiEvent.val, event->d.uiEvent.text);
} else if (event->d.uiEvent.eventId == kpt_page_back_event) {
} else if (uiEvent->eventId == kpt_button_event) {
ZLOGI(TAG, "page %s(%d)-%d onClickRelease,val %d text %s", pageName, pageId, uiEvent->bid, uiEvent->val, uiEvent->text);
onClickRelease(uiEvent->bid, uiEvent->val, uiEvent->text);
} else if (uiEvent->eventId == kpt_usr_def_clik_release_event) {
ZLOGI(TAG, "page %s(%d)-%d onClickRelease,val %d text %s", pageName, pageId, uiEvent->bid, uiEvent->val, uiEvent->text);
onClickRelease(uiEvent->bid, uiEvent->val, uiEvent->text);
} else if (uiEvent->eventId == kpt_page_back_event) {
ZLOGI(TAG, "page %s(%d)-%d onBackKey", pageName, pageId, uiEvent->bid);
onBackKey();
} else if (event->d.uiEvent.eventId == kpt_inputfield_content_change_event) {
onInputFieldContentChange(event->d.uiEvent.bid, event->d.uiEvent.val, event->d.uiEvent.text);
} else if (uiEvent->eventId == kpt_inputfield_content_selected_change_event) {
ZLOGI(TAG, "page %s(%d)-%d onInputFieldContentChange val %d text %s", pageName, pageId, uiEvent->bid, uiEvent->val, uiEvent->text);
onInputFieldContentChange(uiEvent->bid, uiEvent->val, uiEvent->text);
} else if (uiEvent->eventId == kpt_inputfield_content_change_event) {
ZLOGI(TAG, "page %s(%d)-%d onInputFieldContentChange val %d text %s", pageName, pageId, uiEvent->bid, uiEvent->val, uiEvent->text);
onInputFieldContentChange(uiEvent->bid, uiEvent->val, uiEvent->text);
}
//
} else {

2
usrc/uicontroler/event_proceesser/inputfield_content_change_event_processer.cpp

@ -19,7 +19,7 @@ void InputFieldContentChangeEventProcesser::process(uint8_t* indata, size_t len,
result->pid = indata[1];
result->bid = indata[2];
const char* strbegin = (const char*)&indata[3];
strbegin = TJCStrUtils::cpystr(result->text, strbegin, sizeof(*result->text));
strbegin = TJCStrUtils::cpystr(result->text, strbegin, sizeof(result->text));
result->butEventType = kbutton_release;
}

2
usrc/uicontroler/event_proceesser/inputfield_content_selected_change_event_processer.cpp

@ -21,6 +21,6 @@ void InputfieldContentSelectedChangeEventProcesser::process(uint8_t* indata, siz
result->bid = indata[2];
result->val = indata[3];
const char* strbegin = (const char*)&indata[4];
strbegin = TJCStrUtils::cpystr(result->text, strbegin, sizeof(*result->text));
strbegin = TJCStrUtils::cpystr(result->text, strbegin, sizeof(result->text));
result->butEventType = kbutton_release;
}

27
usrc/uicontroler/page/mupage/muUsrMgr_page.cpp

@ -130,13 +130,10 @@ class MuUsrMgr : public IPageProcesser {
*/
if (bid == ob_muUsrMgr_roleVal) {
// 修改用户角色
UserRole::of(val);
m_editContext.role = &UserRole::admin;
m_editContext.editDirty = true;
syncEditContext();
} else if (bid == ob_muUsrMgr_usrName) {
UIControler::ins()->popSelcKeyBoard(pg_muUsrMgr, ob_muUsrMgr_roleVal, m_editContext.role->val, UserRole::chNametable);
} else if (bid == ob_muUsrMgr_usrNameVal) {
// 修改用户名
popFullKeyBoard(ob_muUsrMgr_usrName, 20, m_editContext.name);
popFullKeyBoard(ob_muUsrMgr_usrNameVal, 20, m_editContext.name);
} else if (bid == ob_muUsrMgr_passwdRest) {
// 重置密码
m_editContext.resetPasswd = !m_editContext.resetPasswd;
@ -157,8 +154,14 @@ class MuUsrMgr : public IPageProcesser {
}
virtual void onInputFieldContentChange(uint8_t bid, uint8_t slecId, const char* text) {
if (bid == ob_muUsrMgr_usrName) {
if (bid == ob_muUsrMgr_usrNameVal) {
if (strlen(text) == 0) {
ZLOGW(TAG, "用户名为空");
return;
}
if (strlen(text) > sizeof(m_editContext.name)) {
UIControler::ins()->popWarningWin("用户名过长");
return;
}
@ -167,6 +170,13 @@ class MuUsrMgr : public IPageProcesser {
m_editContext.editDirty = true;
syncEditContext();
}
if (bid == ob_muUsrMgr_roleVal) {
m_editContext.role = UserRole::of(slecId);
ZASSERT(m_editContext.role != nullptr);
m_editContext.editDirty = true;
syncEditContext();
}
};
/***********************************************************************************************************************
@ -235,6 +245,7 @@ class MuUsrMgr : public IPageProcesser {
}
if (m_editContext.resetPasswd) {
ZLOGI(TAG, "reset passwd");
UserDao::updateUser(user->id, m_editContext.name, DEFAULT_PASSWD, (user_role_t)m_editContext.role->val);
} else {
UserDao::updateUser(user->id, m_editContext.name, NULL, (user_role_t)m_editContext.role->val);
@ -264,7 +275,7 @@ class MuUsrMgr : public IPageProcesser {
resetUiUsrTable();
for (int i = 0; i < numUser; i++) {
user_t* user = &users[i];
ZLOGI(TAG, "fill index:%d user(%d) %s", i, user->id, user->name);
ZLOGI(TAG, "fill index:%d user(%d) name:%s role:%d passwd:%s", i, user->id, user->name, user->role, user->passwd);
strcpy(m_uiUsrTable[i].userName, user->name);
m_uiUsrTable[i].role = UserRole::of(user->role);

76
usrc/uicontroler/tjc/tjc_base_type.h

@ -1,5 +1,6 @@
#pragma once
#include <stdint.h>
/**
* @brief
*
@ -23,83 +24,10 @@
*
*/
#define MAX_USR_PASSWD_LENGTH (6)
#define ELEMENT_ID_MAX_SIZE 14
#define TJC_MAX_PACKET_SIZE 256
typedef enum {
/**
* @brief
*/
kpt_sys_ecode_invalid = 0x00,
kpt_sys_ecode_suc = 0x01,
kpt_sys_ecode_invalid_control_id = 0x02,
kpt_sys_ecode_invalid_page_id = 0x03,
kpt_sys_ecode_invalid_image_id = 0x04,
kpt_sys_ecode_invalid_font_id = 0x05,
kpt_sys_ecode_file_op_failed = 0x06,
kpt_sys_ecode_crc_failed = 0x09,
kpt_sys_ecode_invalid_baudrate = 0x11,
kpt_sys_ecode_invalid_curve_id = 0x12,
kpt_sys_ecode_invalid_var_name = 0x1A,
kpt_sys_ecode_invalid_var_op = 0x1B,
kpt_sys_ecode_var_op_failed = 0x1C,
kpt_sys_ecode_flash_op_failed = 0x1D,
kpt_sys_ecode_invalid_param_num = 0x1E,
kpt_sys_ecode_io_op_failed = 0x1F,
kpt_sys_ecode_escape_char_failed = 0x20,
kpt_sys_ecode_var_name_too_long = 0x23,
kpt_sys_ecode_serial_buf_overflow = 0x24,
/**
* @brief
*/
kpt_button_event = 0x65, //
kpt_sys_event_page_id = 0x66, //
kpt_sys_event_touch_data = 0x67,
kpt_sys_event_sleep_touch = 0x68,
kpt_sys_event_string_var = 0x70,
kpt_sys_event_number_var = 0x71,
kpt_sys_event_sleep_mode = 0x86,
kpt_sys_event_auto_wakeup = 0x87,
kpt_sys_event_sys_start = 0x88,
kpt_sys_event_sd_upgrade = 0x89,
kpt_sys_event_passthrough_finish = 0xFD,
kpt_sys_event_passthrough_ready = 0xFE,
/**
* @brief
*/
kpt_ack = 0xAA,
//
kpt_inputfield_content_change_event = 0xAC, //
kpt_inputfield_content_selected_change_event = 0xAD, //
kpt_page_back_event = 0xB0, // 退
kpt_usr_def_clik_release_event = 0xB1, //
} tjc_packet_type_t;
typedef enum {
kbutton_release = 0,
kbutton_press = 1,
} button_event_t;
typedef enum {
k_button_release_event = 1,
k_input_confirm_event = 2,
} usr_event_type_t;
/***********************************************************************************************************************
* event *
***********************************************************************************************************************/
#include "ui_event.h"
typedef struct {
int32_t eventId;
uint8_t pid;
uint8_t bid;
// content
button_event_t butEventType; //
uint8_t val; //
char text[TJC_MAX_PACKET_SIZE]; //
} UIEvent;

2
usrc/uicontroler/tjc/tjc_constant.cpp

@ -42,8 +42,10 @@ const char* pt2str(uint8_t type) {
PT_ENUM(kpt_sys_event_passthrough_ready)
PT_ENUM(kpt_ack)
PT_ENUM(kpt_inputfield_content_change_event)
PT_ENUM(kpt_inputfield_content_selected_change_event)
PT_ENUM(kpt_page_back_event)
PT_ENUM(kpt_usr_def_clik_release_event)
default:
return "unkown_event";
break;

79
usrc/uicontroler/tjc/ui_event.h

@ -0,0 +1,79 @@
#pragma once
#include <stdint.h>
#define MAX_USR_PASSWD_LENGTH (6)
#define ELEMENT_ID_MAX_SIZE 14
#define TJC_MAX_PACKET_SIZE 256
typedef enum {
/**
* @brief
*/
kpt_sys_ecode_invalid = 0x00,
kpt_sys_ecode_suc = 0x01,
kpt_sys_ecode_invalid_control_id = 0x02,
kpt_sys_ecode_invalid_page_id = 0x03,
kpt_sys_ecode_invalid_image_id = 0x04,
kpt_sys_ecode_invalid_font_id = 0x05,
kpt_sys_ecode_file_op_failed = 0x06,
kpt_sys_ecode_crc_failed = 0x09,
kpt_sys_ecode_invalid_baudrate = 0x11,
kpt_sys_ecode_invalid_curve_id = 0x12,
kpt_sys_ecode_invalid_var_name = 0x1A,
kpt_sys_ecode_invalid_var_op = 0x1B,
kpt_sys_ecode_var_op_failed = 0x1C,
kpt_sys_ecode_flash_op_failed = 0x1D,
kpt_sys_ecode_invalid_param_num = 0x1E,
kpt_sys_ecode_io_op_failed = 0x1F,
kpt_sys_ecode_escape_char_failed = 0x20,
kpt_sys_ecode_var_name_too_long = 0x23,
kpt_sys_ecode_serial_buf_overflow = 0x24,
/**
* @brief
*/
kpt_button_event = 0x65, //
kpt_sys_event_page_id = 0x66, //
kpt_sys_event_touch_data = 0x67,
kpt_sys_event_sleep_touch = 0x68,
kpt_sys_event_string_var = 0x70,
kpt_sys_event_number_var = 0x71,
kpt_sys_event_sleep_mode = 0x86,
kpt_sys_event_auto_wakeup = 0x87,
kpt_sys_event_sys_start = 0x88,
kpt_sys_event_sd_upgrade = 0x89,
kpt_sys_event_passthrough_finish = 0xFD,
kpt_sys_event_passthrough_ready = 0xFE,
/**
* @brief
*/
kpt_ack = 0xAA,
//
kpt_inputfield_content_change_event = 0xAC, //
kpt_inputfield_content_selected_change_event = 0xAD, //
kpt_page_back_event = 0xB0, // 退
kpt_usr_def_clik_release_event = 0xB1, //
} tjc_packet_type_t;
typedef enum {
kbutton_release = 0,
kbutton_press = 1,
} button_event_t;
typedef enum {
k_button_release_event = 1,
k_input_confirm_event = 2,
} usr_event_type_t;
typedef struct {
int32_t eventId;
uint8_t pid;
uint8_t bid;
// content
button_event_t butEventType; //
uint8_t val; //
char text[TJC_MAX_PACKET_SIZE]; //
} UIEvent;

3
usrc/uicontroler/ui_controler.cpp

@ -104,11 +104,12 @@ void UIControler::startSchedule() {
tjc_packet_type_t packetType = (tjc_packet_type_t)packet.data[0];
auto* processer = TJCEventProcesserMgr::findProcesser((tjc_packet_type_t)packetType);
ZLOGI(TAG, "[eventprocess-thread]: rx_event:%s(%d)", tjc::pt2str(packetType), packetType);
if (processer != nullptr) {
processer->process(packet.data, packet.datalen, &event_cache);
} else {
event_cache.eventId = packet.data[0];
ZLOGI(TAG, "[eventprocess-thread]: rx_event:%s", tjc::pt2str(packetType));
}
callUsrEventCb(&event_cache);
}

21
usrc/uicontroler/ui_controler.hpp

@ -107,16 +107,25 @@ class UIControler {
chpage(pg_keybdB);
}
void popSelcKeyBoard(uint8_t fromPid, uint8_t fromBid, int numselect, const char * selectvals[], int selectvalindex) {
sendcmd("p[%d].b[%d].val=%d", pg_keybMutiSel, ob_keybMutiSel_loadpageid, fromPid);
sendcmd("p[%d].b[%d].val=%d", pg_keybMutiSel, ob_keybMutiSel_loadcmpid, fromBid);
sendcmd("p[%d].b[%d].val=%d", pg_keybMutiSel, ob_keybMutiSel_ctent, selectvalindex);
void popSelcKeyBoard(uint8_t fromPid, uint8_t fromBid, int selectvalindex, const char** selectvals) {
static char contentbus[128];
for (int i = 0; i < numselect; i++) {
for (int i = 0;; i++) {
// \r\n Æ´½Ó×Ö·û´®Êý×é
if (selectvals[i] == nullptr) break;
if (i == 0) {
sprintf(contentbus, "%s", selectvals[i]);
continue;
}
sprintf(contentbus, "%s\r\n%s", contentbus, selectvals[i]);
}
sendcmd("p[%d].b[%d].path=%s", pg_keybMutiSel, ob_keybMutiSel_ctent, contentbus);
popSelcKeyBoard(fromPid, fromBid, selectvalindex, contentbus);
}
void popSelcKeyBoard(uint8_t fromPid, uint8_t fromBid, int selectvalindex, const char* selectvals) {
sendcmd("p[%d].b[%d].val=%d", pg_keybMutiSel, ob_keybMutiSel_loadpageid, fromPid);
sendcmd("p[%d].b[%d].val=%d", pg_keybMutiSel, ob_keybMutiSel_loadcmpid, fromBid);
sendcmd("p[%d].b[%d].val=%d", pg_keybMutiSel, ob_keybMutiSel_ctent, selectvalindex);
sendcmd("p[%d].b[%d].path=\"%s\"", pg_keybMutiSel, ob_keybMutiSel_ctent, selectvals);
chpage(pg_keybMutiSel);
}

Loading…
Cancel
Save