📄 phone_a.c
字号:
if(gRunParam.initModule<4)
{
XTipWndShow(TranslateChar("未准备好"),1);//yu XMessageBox(NULL, TranslateChar("未准备好"), ID_OK);
return -1;
}
if(Sim_init_read_ok<0)
{
XTipWndShow(TranslateChar("未准备好"),1);//yu XMessageBox(NULL, TranslateChar("未准备好"), ID_OK);
return -1;
}
//-------------------
gSimPBBrowse = (pb_browse_t*)malloc(sizeof(pb_browse_t));
if (NULL == gSimPBBrowse)
return -1;
gSimPBBrowse->idFind = 0;
gSimPBBrowse->select = -1; /* 没有选择项 */
repeat:
gSimPBBrowse->total = sPB_GetIndex(0xFF, gSimPBBrowse->acard);
gSimPBBrowse->keyLen = 0;
gSimPBBrowse->keyWord[0] = 0;
/* 参数设置模块窗口的矩形区域 */
SetRect(&area, 0, LCD_ICONEND+1, LCD_WIDTH, LCD_HEIGHT);
/* 创建参数设置模块的窗口,父窗口为空 */
XCreateWindow(NULL, &gSimPBBrowse->wnd, &area, TranslateChar("电话本"), pbSimBrowseProc, FALSE);
/* 设置该窗口为基准窗口,便于直接返回 */
XSetBaseWindow(&gSimPBBrowse->wnd);
SetRect(&area, 0, LCD_ICONEND+1, LCD_WIDTH-1, LCD_HEIGHT-HZ_MAIN-2);
/* 创建列表框,父组件为参数设置窗口 */
XCreateListBox(&gSimPBBrowse->wnd.comp, \
&gSimPBBrowse->list, &area, \
0, HZ_MAIN, OnDrawSimCardItem);
gSimPBBrowse->keyb = XCreateInputBoard(&gSimPBBrowse->wnd.comp, INPUT_ENGLISH | INPUT_FIXED);
SimSearchPhoneCard();
XListBoxSet(&gSimPBBrowse->list, gSimPBBrowse->sum, HZ_MAIN, OnDrawSimCardItem);
gSimPBBrowse->select = XListBoxSetCurrent(&gSimPBBrowse->list, gSimPBBrowse->select);
XCreateMenu(NULL, &gSimPBBrowse->tmenu);
XAppendMenuItem(&gSimPBBrowse->tmenu, TranslateChar(menuName[0]), OnMenuSimNewCard);
XAppendMenuItem(&gSimPBBrowse->tmenu, TranslateChar(menuName[1]), OnMenuSimDeleteOne);
XAppendMenuItem(&gSimPBBrowse->tmenu, TranslateChar(menuName[2]), OnMenuSimDeleteAll);
/* 显示参数设置窗口,包括其子组件 */
XShowComponent(&gSimPBBrowse->wnd.comp);
v_WriteLcdBuff();
gSimPBBrowse->next = 0;
while (XGetMessage(&msg) != -1)
XDispatchMessage(&msg);
XDestroyWindow(&gSimPBBrowse->wnd);
// gDisplayGroup = gSimPBBrowse->grpShow;
ret = gSimPBBrowse->next;
if (2 == gSimPBBrowse->next)
goto repeat;
free(gSimPBBrowse);
gSimPBBrowse = NULL;
return ret;
}
//
#endif
#if COMPILE_OK
const static char *detailMenuName[] = {
"拨打电话",
"发送短信",
"修改记录",
"删除记录",
};
typedef struct {
window_t wnd;
phone_book_t nCard;
textbox_t tBox;
menu_t tmenu;
int len;
char info[256];
int store;//WORD store;
int exit;
} pb_detail_t;
static pb_detail_t *gPBDetail = NULL;
static int OnMenuDetailModify(menu_t *pMenu)
{
int inStat;
inStat = inputSimFullCard(&gPBDetail->nCard);
if (inStat == 0) {
if(0==PHBOOK_WriteOne(&gPBDetail->nCard))//PB_WriteOne(gPBDetail->store, &gPBDetail->nCard);
{
XTipWndShow(TranslateChar("正在操作..."),0);//
if(0==ReReadSim())//重新加载电话本
XTipWndShow(TranslateChar("保存成功"),1);//"设置成功"
}
else{
XTipWndShow(TranslateChar("保存失败"),1);
}
XPostQuitMessage(&gPBDetail->wnd);
}
else {
XTipWndShow(TranslateChar("保存失败"),1);
XShowComponent(&gPBDetail->wnd.comp);
v_WriteLcdBuff();
}
return 0;
}
static int OnMenuDetailDelete(menu_t *pMenu)
{
if (XMessageBox(NULL, TranslateChar("删除电话本?"), ID_OK) == ID_OK) {
if(0==PHBOOK_DeleteOne(gPBDetail->nCard.index))//yu PB_DeleteOne(gPBDetail->store);
{
XTipWndShow(TranslateChar("正在操作..."),0);//
if(0==ReReadSim())//重新加载电话本
XTipWndShow(TranslateChar("删除成功"),1);//"设置成功"
}
XPostQuitMessage(&gPBDetail->wnd);
}
return 0;
}
static int OnMenuSendSms(menu_t *pMenu)
{
SMS_SendMessageTo(gPBDetail->nCard.number);
XPostQuitMessage(&gPBDetail->wnd);
return 0;
}
static int phoneCardToShow(phone_book_t *pCard)
{
char info[32], *pDst;
pDst = gPBDetail->info;
strcpy(pDst,TranslateChar("SIM卡位置"));
sprintf(info, ": %d", pCard->index);
strcat(pDst, info);
strcat(pDst, "\n");
strcat(pDst, TranslateChar("姓名:"));
strcat(pDst, pCard->name);
strcat(pDst, "\n");
strcat(pDst, TranslateChar("电话:"));
strcat(pDst, "\n");
strcat(pDst, pCard->number);
return strlen(pDst);
}
static int pbDetailProc(XMSG *msg)
{
switch (msg->message) {
case MSG_KEYDOWN:
switch (msg->param1) {
case KEY_UP:
case KEY_DOWN:
XTextBoxKeyHandle(&gPBDetail->tBox, msg->param1);
break;
case KEY_OK:
memcpy(&gSimFindedCard, &gPBDetail->nCard, sizeof(phone_book_t));
XPostQuitMessage(&gPBDetail->wnd);
gPBDetail->exit = 1;
break;
case KEY_MENU:
XPopMenu(&gPBDetail->tmenu, 1, LCD_HEIGHT-2, 0);
break;
case KEY_CANCEL:
gPBDetail->exit = -1;
XPostQuitMessage(&gPBDetail->wnd);
break;
}
break;
default:
XDefaultWindowProc(msg);
break;
}
return 0;
}
static int PB_SimDetailShow(WORD num)//(WORD pos)
{
int exit;
rect area;
XMSG msg;
gPBDetail = (pb_detail_t*)malloc(sizeof(pb_detail_t));
if (NULL == gPBDetail)
return -1;
gPBDetail->store = num;//pos;
gPBDetail->nCard=SIM_BOOK[num];//PB_ReadOne(pos, &gPBDetail->nCard);
gPBDetail->len = phoneCardToShow(&gPBDetail->nCard);
SetRect(&area, 0, LCD_ICONEND+1, LCD_WIDTH-1, LCD_HEIGHT-1);
XCreateWindow(NULL, &gPBDetail->wnd, &area, "详细", pbDetailProc, FALSE);
XCreateTextBox(&gPBDetail->wnd.comp, &gPBDetail->tBox, \
&area, gPBDetail->len, (BYTE*)gPBDetail->info);
XCreateMenu(NULL, &gPBDetail->tmenu);
XAppendMenuItem(&gPBDetail->tmenu, TranslateChar(detailMenuName[1]), OnMenuSendSms);
XAppendMenuItem(&gPBDetail->tmenu, TranslateChar(detailMenuName[2]), OnMenuDetailModify);
XAppendMenuItem(&gPBDetail->tmenu, TranslateChar(detailMenuName[3]), OnMenuDetailDelete);
XShowComponent(&gPBDetail->wnd.comp);
v_WriteLcdBuff();
gPBDetail->exit = 0;
while (XGetMessage(&msg) != -1)
XDispatchMessage(&msg);
XDestroyWindow(&gPBDetail->wnd);
exit = gPBDetail->exit;
free(gPBDetail);
gPBDetail = NULL;
return exit;
}
#endif
//-----------
#if 1
enum PH_enum_t
{
F_FLASH_BK,
F_SIM_BK,
F_PB_STATE,
MAX_Dis_En_PB
};
const static char *PBcfgName[] = {
"本机电话本",
"SIM电话本",//TRUE
"存储状态"
};
extern void setDialNumber(char *number);
extern void PB_StoreInfo_(void);
int select_PB(void)
{
int selMenu, id = 1;
int ret=0;
selMenu = 0;
while (id) {
id = XSelectWindow((char**)PBcfgName, MAX_Dis_En_PB, selMenu);//,FALSE
if (id < 0)
break;
selMenu = id;
switch (id) {
case F_FLASH_BK:
if (PB_Browse(NULL) == 1) {
setDialNumber(GetSelectCard()->number);
ret=1;
id=0;
break;
}
id = 1;
break;
case F_SIM_BK:
if (PB_Sim_Browse(NULL) == 1) {
setDialNumber(gSimFindedCard.number);
ret=1;
id=0;
break;
}
id = 1;
break;
case F_PB_STATE:
PB_StoreInfo_();
id = 1;
break;
default:
id = 0;
break;
}
}
return ret;
}
#if 1
int Readselect_PB(char *Number)
{
int selMenu, id = 1;
int ret=0;
selMenu = 0;
while (id) {
id = XSelectWindow((char**)PBcfgName, MAX_Dis_En_PB-1, selMenu);//,FALSE
if (id < 0)
break;
selMenu = id;
switch (id) {
case F_FLASH_BK:
if (PB_Browse((void*)1) == 1) {
strncpy(Number,GetSelectCard()->number,NUMBER_LEN);
ret=1;
id=0;
break;
}
id = 1;
break;
case F_SIM_BK:
if (PB_Sim_Browse((void*)1) == 1) {
strncpy(Number,GetSelectCard()->number,NUMBER_LEN);
ret=1;
id=0;
break;
}
id = 1;
break;
default:
id = 0;
break;
}
}
return ret;
}
#endif
#endif
//-----------
#if 1
int OnStoreSimCard(char *number)
{
phone_book_t nCard;
rect area;
int sel;
//-------
if(gRunParam.initModule<4)
{
XTipWndShow(TranslateChar("未准备好"),1);//yu XMessageBox(NULL, TranslateChar("未准备好"), ID_OK);
return -1;
}
if(Sim_init_read_ok<0)
{
XTipWndShow(TranslateChar("未准备好"),1);//yu XMessageBox(NULL, TranslateChar("未准备好"), ID_OK);
return -1;
}
//-------
if (strlen(number) == 0)
return -1;
if (phoneBookSize == phoneBookRead) {
XTipWndShow(TranslateChar("空间已满"),1);//yu XMessageBox(NULL, TranslateChar("空间已满"), ID_OK);
return -1;
}
memset(&nCard, 0, sizeof(phone_book_t));
nCard.index=-1;//由模块决定存储位置
inputname:
SetRect(&area, 10, 12, 102, LCD_HEIGHT-14);//yuSetRect(&area, 10, LCD_ICONEND+2, LCD_WIDTH-10, LCD_HEIGHT-17);
sel = InputLine(&area, TranslateChar("输入姓名"), (BYTE*)nCard.name, 14, INPUT_PINYIN);
if (sel < 0)
return -1;
if(0==strlen(nCard.name))
goto inputname;
//input_ok:
memcpy(nCard.number, number, NUMBER_LEN-1);
if(0==PHBOOK_WriteOne(&nCard))//PB_WriteOne(NEW_CARD, &nCard);
{
XTipWndShow(TranslateChar("正在操作..."),0);//
ReReadSim();//重新加载电话本
//保存成功在之后显示
}
else
return -1;//保存失败
return 0;
}
#endif
#if 1
int FindSimPhoneBook(char *number, char *name)
{
int readloop;
int len,cmplen;
int numboffset;
if(Sim_init_read_ok<0)
return -1;
/* 小于9个数字的号码进行全词比较 */
/* 大于等于9个数字的号码根据存储号码长度比较 */
len=strlen(number);
if (len < 9) /* 小于9个数字的号码进行全词比较 */
{
for(readloop=0;readloop<phoneBookRead;readloop++)
{
if(0==strncmp(number,SIM_BOOK[readloop].number,NUMBER_LEN-1))
{
strncpy(name,SIM_BOOK[readloop].name,NAME_LEN-1);
return (readloop+1000);
}
}
}
else /* 大于等于9个数字的号码根据存储号码长度比较 */
{
for(readloop=0;readloop<phoneBookRead;readloop++)
{
cmplen=strlen(SIM_BOOK[readloop].number);
//----
if((len<cmplen)||(cmplen<9))
continue;//比较下一个记录
else//(len== cmplen || len > cmplen )||( cmplen>=9 )
numboffset=len-cmplen;
//----
if(0==strncmp(&number[numboffset],SIM_BOOK[readloop].number,cmplen))
{
strncpy(name,SIM_BOOK[readloop].name,NAME_LEN-1);
return (readloop+1000);
}
}
}
return -1;
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -