工单界面信息
This commit is contained in:
1 parent
a778be61f4
commit
532e37aa84
8 files changed
+279
-132
No files matched your search
@@ -17,6 +17,7 @@
|
||||
#include <guider/generated/events_init.h>
|
||||
#include <guider/generated/gui_guider.h>
|
||||
#include <guider/generated/widgets_init.h>
|
||||
#include <ui_data_labels.h>
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
@@ -36,90 +37,94 @@
|
||||
/**
|
||||
* Create a demo application
|
||||
*/
|
||||
int16_t g_selected_row = -1;
|
||||
int16_t Work_row = -1;
|
||||
int16_t Work_step_row = -1;
|
||||
// 绘图回调
|
||||
static void table_style_cb(lv_event_t *e)
|
||||
{
|
||||
lv_event_code_t code = lv_event_get_code(e);
|
||||
lv_obj_t *table = lv_event_get_target(e);
|
||||
lv_obj_t *table = lv_event_get_target(e);
|
||||
|
||||
if (code == LV_EVENT_DRAW_PART_BEGIN) {
|
||||
lv_obj_draw_part_dsc_t *dsc = lv_event_get_param(e);
|
||||
|
||||
// 检查是否是单元格绘制
|
||||
if (dsc->part == LV_PART_ITEMS && dsc->id < LV_TABLE_CELL_NONE) {
|
||||
uint16_t row = dsc->id / lv_table_get_col_cnt(table);
|
||||
//uint16_t col = dsc->id % lv_table_get_col_cnt(table);
|
||||
|
||||
if (row == 0) { // 表头
|
||||
dsc->rect_dsc->bg_opa = LV_OPA_COVER;
|
||||
dsc->rect_dsc->bg_color = lv_color_hex(0xd5dee6);
|
||||
dsc->label_dsc->color = lv_color_hex(0x000000);
|
||||
dsc->label_dsc->font = &lv_font_simsun_30;
|
||||
}// 如果是选中行,绘制蓝色背景
|
||||
else if (row == g_selected_row) {
|
||||
dsc->rect_dsc->bg_color = lv_color_hex(0x007185); // 蓝色背景
|
||||
dsc->rect_dsc->bg_opa = LV_OPA_COVER;
|
||||
dsc->label_dsc->color = lv_color_hex(0xFFFFFF); // 白色文字
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* lv_obj_draw_part_dsc_t *dsc = lv_event_get_draw_part_dsc(e);
|
||||
if (dsc->part != LV_PART_ITEMS) return;
|
||||
|
||||
uint16_t row = dsc->id / lv_table_get_col_cnt(lv_event_get_target(e));
|
||||
|
||||
if (row == 0) { // 表头
|
||||
dsc->rect_dsc->bg_opa = LV_OPA_COVER;
|
||||
dsc->rect_dsc->bg_color = lv_color_hex(0xd5dee6);
|
||||
dsc->label_dsc->color = lv_color_hex(0x000000);
|
||||
dsc->label_dsc->font = &lv_font_simsun_30;
|
||||
}*/
|
||||
if (code == LV_EVENT_DRAW_PART_BEGIN) {
|
||||
lv_obj_draw_part_dsc_t *dsc = lv_event_get_param(e);
|
||||
// 检查是否是单元格绘制
|
||||
if (dsc->part == LV_PART_ITEMS && dsc->id < LV_TABLE_CELL_NONE) {
|
||||
uint16_t row = dsc->id / lv_table_get_col_cnt(table);
|
||||
//uint16_t col = dsc->id % lv_table_get_col_cnt(table);
|
||||
if (row == 0) { // 表头
|
||||
dsc->rect_dsc->bg_opa = LV_OPA_COVER;
|
||||
dsc->rect_dsc->bg_color = lv_color_hex(0xd5dee6);
|
||||
dsc->label_dsc->color = lv_color_hex(0x000000);
|
||||
dsc->label_dsc->font = &lv_font_simsun_30;
|
||||
}// 如果是选中行,绘制蓝色背景
|
||||
else if ((row == Work_row)&&(table == guider_ui.screen_list_inf)) {
|
||||
dsc->rect_dsc->bg_color = lv_color_hex(0x007185); // 蓝色背景
|
||||
dsc->rect_dsc->bg_opa = LV_OPA_COVER;
|
||||
dsc->label_dsc->color = lv_color_hex(0xFFFFFF); // 白色文字
|
||||
}
|
||||
else if ((table == guider_ui.screen_w_list)&&(row == Work_step_row)) {
|
||||
dsc->rect_dsc->bg_color = lv_color_hex(0x007185); // 蓝色背景
|
||||
dsc->rect_dsc->bg_opa = LV_OPA_COVER;
|
||||
dsc->label_dsc->color = lv_color_hex(0xFFFFFF); // 白色文字
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//点击事件回调
|
||||
char value_W[32] = {0};
|
||||
static void table_click_event_cb(lv_event_t *e) {
|
||||
lv_obj_t *table = lv_event_get_target(e);
|
||||
lv_indev_t *indev = lv_indev_get_act();
|
||||
lv_indev_t *indev = lv_indev_get_act();
|
||||
|
||||
if (indev == NULL) return;
|
||||
if (indev == NULL) return;
|
||||
char sql[64] = {0};
|
||||
|
||||
// 获取点击坐标
|
||||
lv_point_t point;
|
||||
lv_indev_get_point(indev, &point);
|
||||
// 获取点击坐标
|
||||
lv_point_t point;
|
||||
lv_indev_get_point(indev, &point);
|
||||
|
||||
// 获取 table 区域
|
||||
lv_area_t table_area;
|
||||
lv_obj_get_coords(table, &table_area);
|
||||
// 获取 table 区域
|
||||
lv_area_t table_area;
|
||||
lv_obj_get_coords(table, &table_area);
|
||||
|
||||
// 计算相对 Y 坐标
|
||||
int32_t rel_y = point.y - table_area.y1;
|
||||
// 计算相对 Y 坐标
|
||||
int32_t rel_y = point.y - table_area.y1;
|
||||
|
||||
//通过内容高度和行数计算行高
|
||||
uint16_t row_cnt = lv_table_get_row_cnt(table);
|
||||
if (row_cnt == 0) return;
|
||||
//通过内容高度和行数计算行高
|
||||
uint16_t row_cnt = lv_table_get_row_cnt(table);
|
||||
if (row_cnt == 0) return;
|
||||
|
||||
// 获取表格内容区域高度(减去边框和padding)
|
||||
int32_t border_width = lv_obj_get_style_border_width(table, LV_PART_MAIN);
|
||||
int32_t pad_top = lv_obj_get_style_pad_top(table, LV_PART_MAIN);
|
||||
int32_t pad_bottom = lv_obj_get_style_pad_bottom(table, LV_PART_MAIN);
|
||||
// 获取表格内容区域高度(减去边框和padding)
|
||||
int32_t border_width = lv_obj_get_style_border_width(table, LV_PART_MAIN);
|
||||
int32_t pad_top = lv_obj_get_style_pad_top(table, LV_PART_MAIN);
|
||||
int32_t pad_bottom = lv_obj_get_style_pad_bottom(table, LV_PART_MAIN);
|
||||
int32_t content_h = table_area.y2 - table_area.y1 - border_width * 2 - pad_top - pad_bottom;
|
||||
|
||||
int32_t content_h = table_area.y2 - table_area.y1 - border_width * 2 - pad_top - pad_bottom;
|
||||
// 计算行高
|
||||
int32_t row_h = content_h / row_cnt;
|
||||
if (row_h <= 0) return;
|
||||
|
||||
// 计算行高
|
||||
int32_t row_h = content_h / row_cnt;
|
||||
|
||||
if (row_h <= 0) return;
|
||||
|
||||
// 计算行号
|
||||
int16_t row = rel_y / row_h;
|
||||
|
||||
if (row >= 0 && row < row_cnt) {
|
||||
g_selected_row = row;
|
||||
lv_obj_invalidate(table);
|
||||
//rt_kprintf("row: %d", row);
|
||||
}
|
||||
// 计算行号
|
||||
int16_t row = rel_y / row_h;
|
||||
if (row >= 0 && row < row_cnt) {
|
||||
lv_obj_invalidate(table);
|
||||
//rt_kprintf("row: %d", row);
|
||||
}
|
||||
Work_row=-1;
|
||||
Work_step_row=-1;
|
||||
//获得来源表
|
||||
if(table == guider_ui.screen_list_inf)//总览信息/工艺信息
|
||||
{
|
||||
Work_row = row;// 写入行号
|
||||
rt_snprintf(value_W, sizeof(value_W),lv_table_get_cell_value(guider_ui.screen_list_inf, row, 0));
|
||||
Work_Program_step_ui(value_W);
|
||||
}
|
||||
else if(table == guider_ui.screen_w_list){//步骤信息
|
||||
Work_step_row = row;// 写入行号
|
||||
if(value_W[0] == '\0') return;
|
||||
rt_snprintf(sql, sizeof(sql),"%s' AND Step = '%s'",value_W,lv_table_get_cell_value(guider_ui.screen_w_list, row, 0));
|
||||
Work_Program_stepINF_ui(sql);
|
||||
}
|
||||
}
|
||||
|
||||
// 初始化样式
|
||||
@@ -130,7 +135,7 @@ void table_style_init(lv_obj_t *container)
|
||||
lv_obj_add_event_cb(container, table_click_event_cb, LV_EVENT_CLICKED, NULL);
|
||||
|
||||
lv_obj_set_pos(container, 0, 0);
|
||||
lv_obj_set_scrollbar_mode(container, LV_SCROLLBAR_MODE_OFF);
|
||||
lv_obj_set_scrollbar_mode(container, LV_SCROLLBAR_MODE_OFF);
|
||||
|
||||
//Write style for screen_list_inf, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT.
|
||||
lv_obj_set_style_pad_top(container, 0, LV_PART_MAIN|LV_STATE_DEFAULT);
|
||||
@@ -195,6 +200,12 @@ void custom_init(lv_ui *ui)
|
||||
|
||||
guider_ui.screen_list_inf = lv_table_create(guider_ui.screen_inf_list);
|
||||
table_style_init(guider_ui.screen_list_inf);
|
||||
lv_table_set_col_cnt(guider_ui.screen_list_inf,6);
|
||||
|
||||
guider_ui.screen_w_list = lv_table_create(guider_ui.screen_step_list);
|
||||
table_style_init(guider_ui.screen_w_list);
|
||||
lv_table_set_col_cnt(guider_ui.screen_w_list,2);
|
||||
lv_table_set_row_cnt(guider_ui.screen_w_list,6);
|
||||
/* Add your codes here */
|
||||
}
|
||||
|
||||
@@ -15,7 +15,9 @@ extern "C" {
|
||||
|
||||
#include "guider/generated/gui_guider.h"
|
||||
|
||||
extern int16_t g_selected_row;
|
||||
extern int16_t Work_row;
|
||||
extern int16_t Work_step_row;
|
||||
|
||||
void custom_init(lv_ui *ui);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
Reference in new issue
Block a user