📄 set_a_sys.c
字号:
#ifdef _MNT_
#include <assert.h>
#else
#define assert(x)
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "datatype.h"
#include "mmalloc.h"
#include "at.h"
#include "METAWNDO1.H"
#include "paramanage.h"
#include "windows.h"
#include "debug_out.h"
#include "selectwnd.h"
#include "Message.h"
#include "translate.h"
extern int Waiting(int a);
#define COMPILE_OK 0
#define COMPILING 1
#if COMPILING
#define D112SET
#define BASEAREASET
#define ENRECIEVESET
//#define MAX_CFG_ITEM 3
enum Sys_set_t
{
// S_area_set_id,
S_D112_set_id,
S_checkArea_set_id,
S_baseArea_set_id,
S_baseNum_set_id,
S_en_Recieve_set_id,
S_en_MoneyCnt_set_id,
MAX_CFG_ITEM
};
const static char *cfgName[] = {
// "区号设置",
"紧急呼叫号码",//最多十个(4位)//112
"限制区域功能",//(默认禁止)
"基站区号",//最多3个
"基站编号",//最多30个
"允许接听电话",//默认允许
"计费设置",
};
//====================
//strcpy (&gDevicePara.sysdata.D112[0][0],"112");
//gDevicePara.sysdata.D112[10][5];//紧急呼叫号码10个
//默认112
//gDevicePara.sysdata.checkArea;//默认禁止
//gDevicePara.sysdata.baseArea[3][8];//基站区号3个
//gDevicePara.sysdata.baseNum[30][8];//基站编码30个
//gDevicePara.sysdata.en_RecieveCAll = TRUE;//默认允许
#if 1
typedef struct {
window_t wnd;
listbox_t lbox;
char *item[20+10];
int num;
int sel;
} sel_window_tt;
static sel_window_tt *sgSelectWnd;
#define MAX_Dis_En_able 2
const static char *YNcfgName[] = {
"禁用",
"启用",//TRUE
};
static int sOnDrawMainItem(listbox_t *lb, rect *rc, int num)
{char drstr[10];
if (num >= sgSelectWnd->num)
return -1;
memset(drstr, 0, 10);
MoveTo(rc->Xmin + 1, rc->Ymax);
sprintf(drstr, "%d.", (num+1));
DrawString((BYTE*)drstr);
MoveTo(rc->Xmin + 1+(strlen(drstr))*6, rc->Ymax);
// MoveTo(rc->Xmin + 1, rc->Ymax);
DrawString((BYTE*)sgSelectWnd->item[num]);
return 0;
}
static int sselMainProc(XMSG *msg)
{
switch (msg->message) {
case MSG_KEYDOWN:
switch (msg->param1) {
case KEY_UP:
case KEY_DOWN:
XListBoxKeyHandle(&sgSelectWnd->lbox, msg->param1);
break;
//case KEY_MENU://yu add 1
case KEY_OK:
sgSelectWnd->sel = XListBoxGetSelect(&sgSelectWnd->lbox);
XPostQuitMessage(&sgSelectWnd->wnd);
break;
case KEY_CANCEL:
sgSelectWnd->sel = -1;
XPostQuitMessage(&sgSelectWnd->wnd);
break;
}
break;
default:
XDefaultWindowProc(msg);
break;
}
return 0;
}
//yu int XSelectWindow(const char *item[], int num, int defsel)
static int sXSelectWindow( char *item[], int num, int defsel,int saveBack)
{
rect area;
XMSG msg;
int ret;
sgSelectWnd = (sel_window_tt*)malloc(sizeof(sel_window_tt));
if (NULL == sgSelectWnd)
return -1;
memcpy(sgSelectWnd->item, item, num*sizeof(char*));
sgSelectWnd->num = num;
SetRect(&area, 0, LCD_ICONEND+1, LCD_WIDTH-1, LCD_HEIGHT-1);
//yu test XCreateWindow(NULL, &gSelectWnd->wnd, &area, NULL, selMainProc, FALSE);
XCreateWindow(NULL, &sgSelectWnd->wnd, &area, NULL, sselMainProc, saveBack);
XCreateListBox(&sgSelectWnd->wnd.comp, \
&sgSelectWnd->lbox, &area, \
num, HZ_MAIN, sOnDrawMainItem);
sgSelectWnd->sel = XListBoxSetCurrent(&sgSelectWnd->lbox, defsel);
XShowComponent(&sgSelectWnd->wnd.comp);
v_WriteLcdBuff();
sgSelectWnd->sel = -2;
while (XGetMessage(&msg) != -1)
XDispatchMessage(&msg);
XDestroyWindow(&sgSelectWnd->wnd);
ret = sgSelectWnd->sel;
free(sgSelectWnd);
sgSelectWnd = NULL;
return ret;
}
#endif
#ifdef D112SET
static void setD112Number(int id)
{
int ret;
rect area;
char number[16];
memset(number, 0, 16);
strncpy(number, gDevicePara.sysdata.D112[id], 5);
SetRect(&area, 10, 12, 102, LCD_HEIGHT-14);//yuSetRect(&area, 10, LCD_ICONEND+2, LCD_WIDTH-10, LCD_HEIGHT-17);
ret = InputLine(&area, TranslateChar("输入号码"), (BYTE*)number, 4, INPUT_DIGITAL | INPUT_FIXED );
if (ret < 0)
return;
strncpy(gDevicePara.sysdata.D112[id], number, 5);
Para_Store(&gDevicePara);
XTipWndShow(TranslateChar("设置成功"),1);
}
#define MAX_D112 10
static void v_D112_set_id(void)
{
//rect area;
char *Numberbf[MAX_D112];
int kk;
int selMenu, id = 1;
selMenu = 0;
while (id) {
//id = cfgMainWnd(selMenu);// yu 显示所有菜单
for (kk=0;kk<MAX_D112;kk++)
{
Numberbf[kk]=&gDevicePara.sysdata.D112[kk][0];
}
// id = XSelectWindow(&gDevicePara.sysdata.D112, 10, selMenu,TRUE);
id = sXSelectWindow((char**)Numberbf,MAX_D112, selMenu,TRUE);
if (id < 0)
break;
selMenu = id;
if((id>=0)&&(id<MAX_D112))
{
setD112Number(id);
id = 1;
}
else
id = 0;
}
}
#if 1
extern setDialNumber(char * number);
int Select112Number(void)
{
//rect area;
char *Numberbf[MAX_D112];
int kk;
int selMenu, id = 1;
int ret=0;
selMenu = 0;
while (id) {
//id = cfgMainWnd(selMenu);// yu 显示所有菜单
for (kk=0;kk<MAX_D112;kk++)
{
Numberbf[kk]=&gDevicePara.sysdata.D112[kk][0];
}
// id = XSelectWindow(&gDevicePara.sysdata.D112, 10, selMenu,TRUE);
id = sXSelectWindow((char**)Numberbf,MAX_D112, selMenu,TRUE);
if (id < 0)
break;
selMenu = id;
if((id>=0)&&(id<MAX_D112))
{
setDialNumber(gDevicePara.sysdata.D112[id]);
ret=1;
id=0;
}
else
{
ret=0;
id = 0;
}
}
return ret;
}
#endif
#endif
#ifdef BASEAREASET
static void v_checkArea_set_id(void)
{
int selMenu, id = 1;
selMenu = gDevicePara.sysdata.checkArea;
while (id) {
id = XSelectWindow((char**)YNcfgName, MAX_Dis_En_able, selMenu);//,TRUE)
if (id < 0)
break;
selMenu = id;
if((id>=0)&&(id<MAX_Dis_En_able))
{
gDevicePara.sysdata.checkArea=id;
Para_Store(&gDevicePara);
XTipWndShow(TranslateChar("设置成功"),1);
id = 0;
}
else
id = 0;
}
}
#if 1
static void setDBaseID(int id)
{
int ret;
rect area;
char number[16];
memset(number, 0, 16);
strncpy(number, gDevicePara.sysdata.baseArea[id],8);
SetRect(&area, 10, 12, 102, LCD_HEIGHT-14);//yuSetRect(&area, 10, LCD_ICONEND+2, LCD_WIDTH-10, LCD_HEIGHT-17);
ret = InputLine(&area, TranslateChar("输入号码"), (BYTE*)number, 4, INPUT_DIGITAL | INPUT_FIXED );
if (ret < 0)
return;
strncpy(gDevicePara.sysdata.baseArea[id], number, 8);
Para_Store(&gDevicePara);
XTipWndShow(TranslateChar("设置成功"),1);
}
#define MAXBASE_AREA_ID 3
static void v_baseArea_set_id(void)
{
//rect area;
char *Numberbf[MAXBASE_AREA_ID];
int kk;
int selMenu, id = 1;
selMenu = 0;
while (id) {
//id = cfgMainWnd(selMenu);// yu 显示所有菜单
for (kk=0;kk<MAXBASE_AREA_ID;kk++)
Numberbf[kk]=&gDevicePara.sysdata.baseArea[kk][0];
// id = XSelectWindow(&gDevicePara.sysdata.D112, 10, selMenu,TRUE);
id = sXSelectWindow((char**)Numberbf, MAXBASE_AREA_ID, selMenu,TRUE);
if (id < 0)
break;
selMenu = id;
if((id>=0)&&(id<MAXBASE_AREA_ID))
{
setDBaseID(id);
id = 1;
}
else
id = 0;
}
}
#endif
#if 1
void static setDBaseNUmID(int id )
{
int ret;
rect area;
char number[16];
memset(number, 0, 16);
strncpy(number, gDevicePara.sysdata.baseNum[id],8);
SetRect(&area, 10, 12, 102, LCD_HEIGHT-14);//yuSetRect(&area, 10, LCD_ICONEND+2, LCD_WIDTH-10, LCD_HEIGHT-17);
ret = InputLine(&area, TranslateChar("输入号码"), (BYTE*)number, 4, INPUT_DIGITAL | INPUT_FIXED );
if (ret < 0)
return;
strncpy(gDevicePara.sysdata.baseNum[id], number, 8);
Para_Store(&gDevicePara);
XTipWndShow(TranslateChar("设置成功"),1);
}
#define MAXBASE_Num_ID 30
static void v_baseNum_set_id(void)
{
//rect area;
char *Numberbf[MAXBASE_Num_ID];
int kk;
int selMenu, id = 1;
selMenu = 0;
while (id) {
//id = cfgMainWnd(selMenu);// yu 显示所有菜单
for (kk=0;kk<MAXBASE_Num_ID;kk++)
Numberbf[kk]=&gDevicePara.sysdata.baseNum[kk][0];
// id = XSelectWindow(&gDevicePara.sysdata.D112, 10, selMenu,TRUE);
id = sXSelectWindow((char**)Numberbf, MAXBASE_Num_ID, selMenu,TRUE);
if (id < 0)
break;
selMenu = id;
if((id>=0)&&(id<MAXBASE_Num_ID))
{
setDBaseNUmID(id);
id = 1;
}
else
id = 0;
}
}
#endif
#endif
#ifdef ENRECIEVESET
static void v_en_Recieve_set_id(void)
{
int selMenu, id = 1;
selMenu = gDevicePara.sysdata.en_RecieveCAll;
while (id) {
id = XSelectWindow((char**)YNcfgName, MAX_Dis_En_able, selMenu);//,TRUE)
if (id < 0)
break;
selMenu = id;
if((id>=0)&&(id<MAX_Dis_En_able))
{
gDevicePara.sysdata.en_RecieveCAll=id;
Para_Store(&gDevicePara);
XTipWndShow(TranslateChar("设置成功"),1);
id = 0;
}
else
id = 0;
}
}
#endif
#if 1
static void v_en_MoneyCnt_set_id(void)
{
int selMenu, id = 1;
selMenu = gDevicePara.sysdata.en_MoneyCnt;
while (id) {
id = XSelectWindow((char**)YNcfgName, MAX_Dis_En_able, selMenu);//,TRUE)
if (id < 0)
break;
selMenu = id;
if((id>=0)&&(id<MAX_Dis_En_able))
{
gDevicePara.sysdata.en_MoneyCnt=id;
Para_Store(&gDevicePara);
XTipWndShow(TranslateChar("设置成功"),1);
id = 0;
}
else
id = 0;
}
}
#endif
void manage_set(void)
{
int selMenu, id = 1;
selMenu = 0;
while (id) {
//id = cfgMainWnd(selMenu);// yu 显示所有菜单
id = XSelectWindow((char**)cfgName, MAX_CFG_ITEM, selMenu);//,TRUE
if (id < 0)
break;
selMenu = id;
switch (id) {
case S_D112_set_id:
v_D112_set_id();
id = 1;
break;
case S_checkArea_set_id:
v_checkArea_set_id();
id = 1;
break;
case S_baseArea_set_id:
v_baseArea_set_id();
id = 1;
break;
case S_baseNum_set_id:
v_baseNum_set_id();
id = 1;
break;
case S_en_Recieve_set_id:
v_en_Recieve_set_id();
id = 1;
break;
case S_en_MoneyCnt_set_id:
v_en_MoneyCnt_set_id();
id = 1;
break;
default:
id = 0;
break;
}
}
}
#endif
#define FACTORY_SET 1
#ifdef FACTORY_SET
//gDevicePara.factoryData.Serve_ID [8];
//gDevicePara.factoryData.Sim_LOCK;//默认禁止
//gDevicePara.factoryData.Auto_PIN=TRUE;//默认启用
//gDevicePara.factoryData.Language;
//gDevicePara.factoryData.Logo[LOGOMAX];
const static char *f_cfgName[] = {
"指定运营商",
"SIMLOCK",
"AUTOPIN",
"语言设置",
"运营商LOGO",
"开机LOGO",
};
enum Fac_set_t
{
F_SERVE_ID,
F_SIMLOCK,
F_AUTOPIN,
F_LANGUAGE,
F_LOGO,
F_BMPLOGO,
MAX_CFG_ITEM_F
};
static void fv_SERVE_ID()
{
rect area;
char Numberbf[24];
strcpy(Numberbf,gDevicePara.factoryData.Serve_ID);
debug_print_str(DM_RUNINFO, (info_buffer, "输入运营商ID: %s", Numberbf));
//读取记录
SetRect(&area, 10, 12, 102, LCD_HEIGHT-14);
if (0 > InputLine(&area, TranslateChar("输入运营商ID"),(BYTE*)Numberbf, 6, INPUT_DIGITAL | INPUT_FIXED))
{return;
}
//-----------
strncpy(gDevicePara.factoryData.Serve_ID,Numberbf,6);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -