363 lines
12 KiB
C
363 lines
12 KiB
C
#include "include.h"
|
||
#include "func.h"
|
||
#include "app_variable.h"
|
||
|
||
#if TRACE_EN
|
||
#define TRACE(...) printf(__VA_ARGS__)
|
||
#else
|
||
#define TRACE(...)
|
||
#endif
|
||
|
||
#ifdef TJD_GUI_SOS_Show
|
||
//组件ID
|
||
enum {
|
||
COMPO_ID_TXT_BT = 1,
|
||
COMPO_ID_LOADING,
|
||
COMPO_ID_LOADING_TXT,
|
||
COMPO_ID_TXT_BT_NAME,
|
||
COMPO_ID_BTN_BT,
|
||
COMPO_ID_TXT_TIME,
|
||
COMPO_ID_TXT_NO_CONTACT,
|
||
COMPO_ID_PIC_NO_CONTACT,
|
||
COMPO_ID_TXT_NAME,
|
||
COMPO_ID_PIC_CALL,
|
||
COMPO_ID_PIC_CHANGE,
|
||
|
||
|
||
};
|
||
extern u8 get_call_book_cnt(void);
|
||
extern u8 get_sos_book_num(void);
|
||
extern void set_book_num(s32 n);
|
||
extern char call_name_str[LISTBOX_TEXT_LEN];
|
||
extern compo_listbox_custom_item_t tbl_call_txt_list[ADDRESS_BOOK_LIST_CNT];
|
||
static bool last_off_status = 0;
|
||
|
||
typedef struct f_sos_t_
|
||
{
|
||
compo_form_t *frm;
|
||
uint32_t tick;
|
||
} f_sos_t;
|
||
|
||
// 创建SOS窗体,创建窗体中不要使用功能结构体 func_cb.f_cb
|
||
compo_form_t *func_sos_form_create(void)
|
||
{
|
||
compo_form_t *frm = compo_form_create(true);
|
||
char text_buf[TEXTBOX_TEXT_BUF_LEN] = {0};
|
||
|
||
/* 加载图标 */
|
||
compo_picturebox_t *btn_loading = compo_picturebox_create(frm, UI_BUF_SOS_LOADING_BIN);
|
||
compo_setid(btn_loading, COMPO_ID_LOADING);
|
||
compo_picturebox_set_pos(btn_loading, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y);
|
||
|
||
/* SOS加载中文字 */
|
||
compo_textbox_t *txt_loading = compo_textbox_create(frm, 150);
|
||
compo_textbox_set_location(txt_loading, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y + 69, 180, 30);
|
||
compo_setid(txt_loading, COMPO_ID_LOADING_TXT);
|
||
compo_textbox_set(txt_loading, i18n[STR_SOS_LOADING]);
|
||
|
||
//设置标题栏
|
||
compo_form_set_title(frm, i18n[STR_SOS]);
|
||
compo_form_set_mode(frm, COMPO_FORM_MODE_SHOW_TITLE | COMPO_FORM_MODE_SHOW_TIME);
|
||
|
||
//BT未连接
|
||
compo_textbox_t *txt = compo_textbox_create(frm, 30);
|
||
compo_setid(txt, COMPO_ID_TXT_BT);
|
||
compo_textbox_set_location(txt, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y - 15, GUI_SCREEN_WIDTH - 40, 30);
|
||
compo_textbox_set_autoroll_mode(txt, TEXT_AUTOROLL_MODE_SROLL_CIRC);
|
||
compo_textbox_set(txt, i18n[STR_POPUP_PLEASE_PAIR]);
|
||
|
||
compo_textbox_t *txt_name = compo_textbox_create(frm, 50);
|
||
compo_setid(txt_name, COMPO_ID_TXT_BT_NAME);
|
||
compo_textbox_set_location(txt_name, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y + 15, GUI_SCREEN_WIDTH - 40, 30);
|
||
compo_textbox_set_autoroll_mode(txt_name, TEXT_AUTOROLL_MODE_SROLL_CIRC);
|
||
sprintf(text_buf, "%s", bt_get_local_name());
|
||
compo_textbox_set(txt_name, text_buf);
|
||
|
||
compo_picturebox_t *btn = compo_picturebox_create(frm, UI_BUF_POPUP_POP_CLOSE_BIN);
|
||
compo_setid(btn, COMPO_ID_BTN_BT);
|
||
compo_picturebox_set_pos(btn, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y + 112);
|
||
|
||
//未同步紧急联系人
|
||
compo_textbox_t *txt_no = compo_textbox_create(frm, 100);
|
||
compo_setid(txt_no, COMPO_ID_TXT_NO_CONTACT);
|
||
compo_textbox_set_multiline(txt_no, true);
|
||
compo_textbox_set_location(txt_no, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y, GUI_SCREEN_WIDTH - 20, 80);
|
||
compo_textbox_set(txt_no, i18n[STR_SOS_NO_EME_CONTACT]);
|
||
|
||
/* sos添加按钮图标 */
|
||
compo_button_t *btn_add = compo_button_create_by_image(frm, UI_BUF_SOS_ADD_BIN);
|
||
compo_setid(btn_add, COMPO_ID_PIC_NO_CONTACT);
|
||
compo_button_set_pos(btn_add, GUI_SCREEN_CENTER_X, 269);
|
||
|
||
//紧急联系人
|
||
compo_textbox_t *call_name = compo_textbox_create(frm, 100);
|
||
//compo_textbox_set_font(call_name, UI_BUF_0FONT_FONT_20_BIN);
|
||
compo_setid(call_name, COMPO_ID_TXT_NAME);
|
||
compo_textbox_set_location(call_name, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y, GUI_SCREEN_WIDTH - 40, 30);
|
||
if(get_sos_book_num()){
|
||
compo_textbox_set(call_name, call_name_str);
|
||
}
|
||
else{
|
||
compo_textbox_set(call_name, "000");
|
||
}
|
||
|
||
compo_button_t *btn_call = compo_button_create_by_image(frm, UI_BUF_SOS_ANSWER_BIN);
|
||
compo_setid(btn_call, COMPO_ID_PIC_CALL);
|
||
compo_button_set_pos(btn_call, GUI_SCREEN_CENTER_X, 250);
|
||
|
||
compo_button_t *btn_set = compo_button_create_by_image(frm, UI_BUF_SOS_SET_BIN);
|
||
compo_setid(btn_set, COMPO_ID_PIC_CHANGE);
|
||
compo_button_set_pos(btn_set, 195, 264);
|
||
|
||
if(last_off_status == true)
|
||
{
|
||
compo_textbox_set_visible(txt_loading, true);
|
||
compo_picturebox_set_visible(btn_loading, true);
|
||
compo_textbox_set_visible(txt, false);
|
||
compo_textbox_set_visible(txt_name, false);
|
||
compo_picturebox_set_visible(btn, false);
|
||
compo_textbox_set_visible(txt_no, false);
|
||
compo_button_set_visible(btn_add, false);
|
||
compo_textbox_set_visible(call_name, false);
|
||
compo_button_set_visible(btn_call, false);
|
||
compo_button_set_visible(btn_set, false);
|
||
}
|
||
else
|
||
{
|
||
compo_textbox_set_visible(txt_loading, false);
|
||
compo_picturebox_set_visible(btn_loading, false);
|
||
if(bt_is_connected())
|
||
{
|
||
if(get_call_book_cnt()&&get_sos_book_num())
|
||
{
|
||
compo_textbox_set_visible(txt, false);
|
||
compo_textbox_set_visible(txt_name, false);
|
||
compo_picturebox_set_visible(btn, false);
|
||
compo_textbox_set_visible(txt_no, false);
|
||
compo_button_set_visible(btn_add, false);
|
||
compo_textbox_set_visible(call_name, true);
|
||
compo_button_set_visible(btn_call, true);
|
||
compo_button_set_visible(btn_set, true);
|
||
}
|
||
else{
|
||
compo_textbox_set_visible(txt, false);
|
||
compo_textbox_set_visible(txt_name, false);
|
||
compo_picturebox_set_visible(btn, false);
|
||
compo_textbox_set_visible(txt_no, true);
|
||
compo_button_set_visible(btn_add, true);
|
||
compo_textbox_set_visible(call_name, false);
|
||
compo_button_set_visible(btn_call, false);
|
||
compo_button_set_visible(btn_set, false);
|
||
}
|
||
}
|
||
else{
|
||
compo_textbox_set_visible(txt, true);
|
||
compo_textbox_set_visible(txt_name, true);
|
||
compo_picturebox_set_visible(btn, true);
|
||
compo_textbox_set_visible(txt_no, false);
|
||
compo_button_set_visible(btn_add, false);
|
||
compo_textbox_set_visible(call_name, false);
|
||
compo_button_set_visible(btn_call, false);
|
||
compo_button_set_visible(btn_set, false);
|
||
}
|
||
}
|
||
|
||
return frm;
|
||
}
|
||
|
||
//点进图标进入应用
|
||
void func_sos_address_book_icon_click(void)
|
||
{
|
||
compo_textbox_t *txt_no = compo_getobj_byid(COMPO_ID_PIC_NO_CONTACT);
|
||
compo_button_t *btn_call = compo_getobj_byid(COMPO_ID_PIC_CALL);
|
||
compo_button_t *btn_set = compo_getobj_byid(COMPO_ID_PIC_CHANGE);
|
||
pbap_pb_buf_t *pb_list = SysVariable.pb_list;
|
||
u8 i = 0;
|
||
|
||
int id = compo_get_button_id();
|
||
printf("---------------id =%d\n",id);
|
||
switch (id) {
|
||
case COMPO_ID_PIC_NO_CONTACT:
|
||
case COMPO_ID_PIC_CHANGE:
|
||
if(bt_is_connected())
|
||
func_switch_to_assign_screen(FUNC_SOS_BOOK, false);
|
||
else
|
||
func_directly_back_to();
|
||
break;
|
||
case COMPO_ID_PIC_CALL:
|
||
if(get_call_book_cnt()&&get_sos_book_num() && (last_off_status == FALSE)){
|
||
memset(sys_cb.outgoing_number, 0, 20);
|
||
for (i = 0; i < 20; i++) {
|
||
sys_cb.outgoing_number[i] = pb_list[get_sos_book_num()-1].num[i];
|
||
}
|
||
if(bt_is_connected()){
|
||
bt_call_redial_number();
|
||
}
|
||
}
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
// 刷新界面
|
||
static void func_sos_refresh(void)
|
||
{
|
||
f_sos_t *f_sos = (f_sos_t *)func_cb.f_cb;
|
||
compo_textbox_t *txt_loading = compo_getobj_byid(COMPO_ID_LOADING_TXT);
|
||
compo_picturebox_t *btn_loading = compo_getobj_byid(COMPO_ID_LOADING);
|
||
compo_textbox_t *txt = compo_getobj_byid(COMPO_ID_TXT_BT);
|
||
compo_textbox_t *txt_name = compo_getobj_byid(COMPO_ID_TXT_BT_NAME);
|
||
compo_picturebox_t *btn = compo_getobj_byid(COMPO_ID_BTN_BT);
|
||
compo_textbox_t *txt_no = compo_getobj_byid(COMPO_ID_TXT_NO_CONTACT);
|
||
compo_button_t *btn_add = compo_getobj_byid(COMPO_ID_PIC_NO_CONTACT);
|
||
compo_textbox_t *call_name = compo_getobj_byid(COMPO_ID_TXT_NAME);
|
||
compo_button_t *btn_call = compo_getobj_byid(COMPO_ID_PIC_CALL);
|
||
compo_button_t *btn_set = compo_getobj_byid(COMPO_ID_PIC_CHANGE);
|
||
|
||
if (tick_check_expire(f_sos->tick, 1500))
|
||
{
|
||
last_off_status = false;
|
||
if(bt_is_connected()&&get_call_book_cnt()==0)
|
||
func_switch_to_assign_screen(FUNC_SOS_BOOK, true);
|
||
}
|
||
|
||
if(last_off_status == true)
|
||
{
|
||
compo_textbox_set_visible(txt_loading, true);
|
||
compo_picturebox_set_visible(btn_loading, true);
|
||
compo_textbox_set_visible(txt, false);
|
||
compo_textbox_set_visible(txt_name, false);
|
||
compo_picturebox_set_visible(btn, false);
|
||
compo_textbox_set_visible(txt_no, false);
|
||
compo_button_set_visible(btn_add, false);
|
||
compo_textbox_set_visible(call_name, false);
|
||
compo_button_set_visible(btn_call, false);
|
||
compo_button_set_visible(btn_set, false);
|
||
}
|
||
else
|
||
{
|
||
compo_textbox_set_visible(txt_loading, false);
|
||
compo_picturebox_set_visible(btn_loading, false);
|
||
if(bt_is_connected())
|
||
{
|
||
if(get_call_book_cnt()&&get_sos_book_num())
|
||
{
|
||
compo_textbox_set_visible(txt, false);
|
||
compo_textbox_set_visible(txt_name, false);
|
||
compo_picturebox_set_visible(btn, false);
|
||
compo_textbox_set_visible(txt_no, false);
|
||
compo_button_set_visible(btn_add, false);
|
||
compo_textbox_set_visible(call_name, true);
|
||
compo_button_set_visible(btn_call, true);
|
||
compo_button_set_visible(btn_set, true);
|
||
}
|
||
else{
|
||
compo_textbox_set_visible(txt, false);
|
||
compo_textbox_set_visible(txt_name, false);
|
||
compo_picturebox_set_visible(btn, false);
|
||
compo_textbox_set_visible(txt_no, true);
|
||
compo_button_set_visible(btn_add, true);
|
||
compo_textbox_set_visible(call_name, false);
|
||
compo_button_set_visible(btn_call, false);
|
||
compo_button_set_visible(btn_set, false);
|
||
}
|
||
}
|
||
else{
|
||
compo_textbox_set_visible(txt, true);
|
||
compo_textbox_set_visible(txt_name, true);
|
||
compo_picturebox_set_visible(btn, true);
|
||
compo_textbox_set_visible(txt_no, false);
|
||
compo_button_set_visible(btn_add, false);
|
||
compo_textbox_set_visible(call_name, false);
|
||
compo_button_set_visible(btn_call, false);
|
||
compo_button_set_visible(btn_set, false);
|
||
}
|
||
}
|
||
}
|
||
|
||
// SOS功能消息处理
|
||
static void func_sos_process(void)
|
||
{
|
||
func_sos_refresh();
|
||
func_process();
|
||
}
|
||
|
||
static void func_sos_message(size_msg_t msg)
|
||
{
|
||
switch (msg)
|
||
{
|
||
case MSG_CTP_TOUCH:
|
||
|
||
break;
|
||
|
||
case MSG_CTP_CLICK:
|
||
func_sos_address_book_icon_click();
|
||
break;
|
||
case MSG_CTP_SHORT_UP:
|
||
case MSG_CTP_SHORT_DOWN:
|
||
case MSG_CTP_LONG:
|
||
break;
|
||
|
||
case MSG_QDEC_BACKWARD:
|
||
|
||
break;
|
||
|
||
case MSG_QDEC_FORWARD:
|
||
|
||
break;
|
||
|
||
default:
|
||
func_message(msg);
|
||
break;
|
||
}
|
||
}
|
||
|
||
// 进入SOS功能
|
||
static void func_sos_enter(void)
|
||
{
|
||
func_cb.f_cb = func_zalloc(sizeof(f_sos_t));
|
||
f_sos_t *f_sos = (f_sos_t *)func_cb.f_cb;
|
||
if(get_sos_book_num()){
|
||
for(int i = 0;i < ADDRESS_BOOK_LIST_CNT;i++)
|
||
{
|
||
if(strcmp(call_name_str,tbl_call_txt_list[i].str_txt) == 0)
|
||
{
|
||
set_book_num(i);
|
||
break;
|
||
}
|
||
else{
|
||
set_book_num(-1);
|
||
}
|
||
}
|
||
}
|
||
if(func_cb.last == FUNC_SET_SUB_OFF)
|
||
{
|
||
last_off_status = true;
|
||
f_sos->tick = tick_get();
|
||
}
|
||
|
||
if(bt_is_connected() && get_call_book_cnt()==0 && last_off_status == false)
|
||
func_switch_to_assign_screen(FUNC_SOS_BOOK, true);
|
||
|
||
func_cb.frm_main = func_sos_form_create();
|
||
}
|
||
|
||
// 退出SOS功能
|
||
static void func_sos_exit(void)
|
||
{
|
||
func_cb.last = FUNC_SOS;
|
||
}
|
||
|
||
// SOS功能
|
||
void func_sos(void)
|
||
{
|
||
printf("%s\n", __func__);
|
||
func_sos_enter();
|
||
while (func_cb.sta == FUNC_SOS) {
|
||
func_sos_process();
|
||
func_sos_message(msg_dequeue());
|
||
}
|
||
func_sos_exit();
|
||
}
|
||
#endif
|