📄 smsbrowse.c
字号:
strcat(pDst, info);
strcat(pDst, "\n");
strcat(pDst, TranslateChar("日期"));
strcat(pDst, ":\n");
sprintf(info, "%04d-%02d-%02d", \
(int)((sms->date>>16)&0xFFFF), \
(int)((sms->date>>8)&0xFF), \
(int)(sms->date&0xFF));
strcat(pDst, info);
sprintf(info, "\n%s: %02d:%02d\n", \
TranslateChar("时间"),\
(int)((sms->time>>16)&0xFF), \
(int)((sms->time>>8)&0xFF) );
strcat(pDst, info);
strcat(pDst, "===========\n");
}
strcat(pDst, gSmsDetail->sms.message);
return strlen(pDst);
}
static int OnMenuDial(menu_t* pmenu)
{
char *phone;
phone = gSmsDetail->sms.number;
if (strncmp(phone, "+86", 3) == 0)
phone += 3;
setDialNumber(phone);
gSmsDetail->exit = 1;
XPostQuitMessage(&gSmsDetail->wnd);
// XMessageBox("x", "拨号", ID_OK);
return 0;
}
/* 回复短信 */
static int OnMenuReply(menu_t* pmenu)
{
rect area;
SMS_ITEM *sms;
sms=&gCurrentSms;// 2
memset(sms, 0, sizeof(SMS_ITEM));
SetRect(&area, 0, LCD_ICONEND+1, LCD_WIDTH-1, LCD_HEIGHT-2-INPUT_AREA_HEIGHT);
if (InputWindow(&area, (BYTE*)sms->message, MAX_SMS_LEN/2, INPUT_PINYIN) < 0) {
XShowComponent(&gSmsDetail->wnd.comp);
v_WriteLcdBuff();
return -1;
}
strncpy(sms->number, gSmsDetail->sms.number, NUMBER_LEN-1);
SMS_SendMessage(sms);
XPostQuitMessage(&gSmsDetail->wnd);
return 0;
}
/* 转发短信 */
static int OnMenuSendTo(menu_t* pmenu)
{
int sel;
BYTE box;
rect area;
menu_t popmenu;
SMS_ITEM *sms;
sms=&gCurrentSms; // 3
memset(sms, 0, sizeof(SMS_ITEM));
//--yu move
strncpy(sms->message, gSmsDetail->sms.message, MAX_SMS_LEN/2);
ReEditSms:
SetRect(&area, 0, LCD_ICONEND+1, LCD_WIDTH-1, LCD_HEIGHT-2-INPUT_AREA_HEIGHT);
if (InputWindow(&area, (BYTE*)sms->message, MAX_SMS_LEN/2, INPUT_PINYIN) < 0) {
XShowComponent(&gSmsDetail->wnd.comp);
v_WriteLcdBuff();
return -1;
}
//--
sms->len=strlen(sms->message);
XCreateMenu(NULL, &popmenu);
XAppendMenuItem(&popmenu, TranslateChar("选择号码"), NULL);
XAppendMenuItem(&popmenu, TranslateChar("输入号码"), NULL);
XAppendMenuItem(&popmenu, TranslateChar("保存短信"), NULL);//yu add
XAppendMenuItem(&popmenu, TranslateChar("保存模板"), NULL);
sel = XPopMenu(&popmenu, 1, LCD_HEIGHT-2, 0); //sel = XPopMenu(&popmenu, 28, LCD_HEIGHT-18, 0);
box = 0;
switch (sel) {
case 0:
if (1 == Readselect_PB(sms->number)) {
//if (1 == PB_Browse((void*)1)) {
// memcpy(sms->number, GetSelectCard()->number, NUMBER_LEN-1);
box = 1;
}
else
{
XShowComponent(&gSmsDetail->wnd.comp);
v_WriteLcdBuff();
goto ReEditSms;
}
break;
case 1:
SetRect(&area, 10, 12, 102, LCD_HEIGHT-14);//yuSetRect(&area, 10, LCD_ICONEND+2, LCD_WIDTH-10, LCD_HEIGHT-17);
if (InputLine(&area, TranslateChar("输入号码"), (BYTE*)sms->number, NUMBER_LEN-1, INPUT_DIGITAL | INPUT_FIXED) < 0) {
XShowComponent(&gSmsDetail->wnd.comp);
v_WriteLcdBuff();
goto ReEditSms;
}
else {
box = 1;
}
break;
case 2:// yu add
//----------------- yu
if(0==sms->len)
{
XTipWndShow(TranslateChar("保存错误"),1);
XShowComponent(&gSmsDetail->wnd.comp);
v_WriteLcdBuff();
goto ReEditSms;
}
else
{
SMS_WriteOne(SMS_UNSEND, NEW_DATA, sms);
if (gSmsPage == SMS_UNSEND)
{
//SMS_DeleteOne(SMS_UNSEND, gSmsDetail->storepos);
gSmsDetail->exit = 2;
}
XTipWndShow(TranslateChar("保存成功"),1);
sel = SMS_UNSEND;
gSmsDetail->exit = 2;
XPostQuitMessage(&gSmsDetail->wnd);
}
//-----------------
break;
case 3:
SMS_WriteOne(SMS_SAMPLE, NEW_DATA, sms);
sel = SMS_SAMPLE;
XTipWndShow(TranslateChar("保存成功"),1);
gSmsDetail->exit = 2;
XPostQuitMessage(&gSmsDetail->wnd);
break;
default:
goto ReEditSms;
break;
}
if (box == 0)
return -1;
//--
box = SMS_SendMessage(sms);
if (gSmsPage == SMS_UNSEND) {
SMS_DeleteOne(SMS_UNSEND, gSmsDetail->storepos);
gSmsDetail->exit = 2;
}
XPostQuitMessage(&gSmsDetail->wnd);
return 0;
}
/* 存储号码 */
extern int OnStoreSimCard(char * number);
static int OnMenuStore(menu_t* pmenu)
#if 1
{
int sel;
BYTE box;
menu_t popmenu;
char *phone;
phone = gSmsDetail->sms.number;
if (strncmp(phone, "+86", 3) == 0)
phone += 3;
XCreateMenu(NULL, &popmenu);
XAppendMenuItem(&popmenu, TranslateChar("本机电话本"), NULL);
XAppendMenuItem(&popmenu, TranslateChar("SIM电话本"), NULL);
sel = XPopMenu(&popmenu, 28, LCD_HEIGHT-18, 1);
box = 0;
switch (sel) {
case 0:
if(0==OnStoreCard(phone))
box = 1;
break;
case 1:
if(0==OnStoreSimCard(phone))
box = 1;
break;
default:
break;
}
if (box == 0)
{
XTipWndShow(TranslateChar("保存失败"),1);
XPostQuitMessage(&gSmsDetail->wnd);
return -1;
}
XTipWndShow(TranslateChar("保存成功"),1);
XPostQuitMessage(&gSmsDetail->wnd);
return 0;
}
#else
{
char *phone;
phone = gSmsDetail->sms.number;
if (strncmp(phone, "+86", 3) == 0)
phone += 3;
OnStoreCard(phone);
XPostQuitMessage(&gSmsDetail->wnd);
return 0;
}
#endif
static int smsDetailProc(XMSG *msg)
{
switch (msg->message) {
case MSG_KEYDOWN:
switch (msg->param1) {
case KEY_UP:
case KEY_DOWN:
XTextBoxKeyHandle(&gSmsDetail->tbox, msg->param1);
break;
case KEY_MENU:
if ((gSmsPage == SMS_SAMPLE) || (gSmsPage == SMS_UNSEND)) {
//if (gSmsPage == SMS_UNSEND) {
//OnMenuSendTo(&gSmsDetail->tmenu);
}
else {
XPopMenu(&gSmsDetail->tmenu, 1, LCD_HEIGHT-2, 0);
}
break;
case KEY_OK:
//case KEY_DH:
if ((gSmsPage == SMS_SAMPLE) || (gSmsPage == SMS_UNSEND)) {
//if (gSmsPage == SMS_UNSEND) {
OnMenuSendTo(&gSmsDetail->tmenu);
}
else {
//XPopMenu(&gSmsDetail->tmenu, 1, LCD_HEIGHT-2, 0);
}
break;
case KEY_CANCEL:
gSmsDetail->exit = -1;
XPostQuitMessage(&gSmsDetail->wnd);
break;
}
break;
default:
XDefaultWindowProc(msg);
break;
}
return 0;
}
static int SMS_DetailShow(int pos)
{
int exit;
rect area;
XMSG msg;
gSmsDetail = (sms_detail_t*)malloc(sizeof(sms_detail_t));
if (NULL == gSmsDetail)
return -1;
SMS_ReadOne(gSmsPage, pos, &gSmsDetail->sms);
if (gSmsPage == SMS_RECEIVE)
SMS_WriteReadFlag(gSmsPage,pos);
gSmsDetail->storepos = pos;
gSmsDetail->len = smsToShow(&gSmsDetail->sms);
SetRect(&area, 0, LCD_ICONEND+1, LCD_WIDTH-1, LCD_HEIGHT-1);
XCreateWindow(NULL, &gSmsDetail->wnd, &area, "SMS", smsDetailProc, FALSE);
XCreateTextBox(&gSmsDetail->wnd.comp, &gSmsDetail->tbox, \
&area, gSmsDetail->len, (BYTE*)gSmsDetail->info);
XCreateMenu(NULL, &gSmsDetail->tmenu);
XAppendMenuItem(&gSmsDetail->tmenu, TranslateChar("拨打电话"), OnMenuDial);
XAppendMenuItem(&gSmsDetail->tmenu, TranslateChar("回复短信"), OnMenuReply);
XAppendMenuItem(&gSmsDetail->tmenu, TranslateChar("转发短信"), OnMenuSendTo);
XAppendMenuItem(&gSmsDetail->tmenu, TranslateChar("保存号码"), OnMenuStore);
XShowComponent(&gSmsDetail->wnd.comp);
v_WriteLcdBuff();
gSmsDetail->exit = 0;
while (XGetMessage(&msg) != -1)
XDispatchMessage(&msg);
XDestroyWindow(&gSmsDetail->wnd);
exit = gSmsDetail->exit;
free(gSmsDetail);
gSmsDetail = NULL;
return exit;
}
/*#############################################*/
typedef struct {
window_t wnd;
} sms_store_t;
static sms_store_t *gSmsStore = NULL;
static int smsStoreProc(XMSG *msg)
{
switch (msg->message) {
case MSG_KEYDOWN:
XPostQuitMessage(&gSmsStore->wnd);
break;
default:
XDefaultWindowProc(msg);
break;
}
return 0;
}
//static short gSmsUsed = 0;
//static short gSmsMax = 0;
static int SMS_StoreInfo(void)
{
char info[32];
rect area;
XMSG msg;
gSmsStore = (sms_store_t*)malloc(sizeof(sms_store_t));
if (NULL == gSmsStore)
return -1;
SetRect(&area, 0, LCD_ICONEND+1, LCD_WIDTH, LCD_HEIGHT);
XCreateWindow(NULL, &gSmsStore->wnd, &area, "SMS", smsStoreProc, FALSE);
XShowComponent(&gSmsStore->wnd.comp);
area.Ymin += 1;
sprintf(info, "%s: %2d/50",TranslateChar("收件箱"), SMS_GetSum(SMS_RECEIVE));
MoveTo(area.Xmin+10, area.Ymin+HZ_MAIN);
DrawString((BYTE*)info);
sprintf(info, "%s: %2d/50",TranslateChar("发件箱"), SMS_GetSum(SMS_SENDED));
MoveTo(area.Xmin+10, area.Ymin+HZ_MAIN*2);
DrawString((BYTE*)info);
sprintf(info, "%s: %2d/50",TranslateChar("草稿箱"), SMS_GetSum(SMS_UNSEND));
MoveTo(area.Xmin+10, area.Ymin+HZ_MAIN*3);
DrawString((BYTE*)info);
sprintf(info, "%s: %2d/50",TranslateChar("模 板"), SMS_GetSum(SMS_SAMPLE));
MoveTo(area.Xmin+10, area.Ymin+HZ_MAIN*4);
DrawString((BYTE*)info);
v_WriteLcdBuff();
while (XGetMessage(&msg) != -1)
XDispatchMessage(&msg);
XDestroyWindow(&gSmsStore->wnd);
free(gSmsStore);
gSmsStore = NULL;
return 0;
}
/* 已知号码发送消息,电话本和通话记录中使用 */
void SMS_SendMessageTo(char *number)
{
BYTE box;
rect area;
SMS_ITEM *sms;
sms=&gCurrentSms; // 4
//yu memset(sms, 0, sizeof(SMS_ITEM));
SetRect(&area, 0, LCD_ICONEND+1, LCD_WIDTH-1, LCD_HEIGHT-2-INPUT_AREA_HEIGHT);
if (InputWindow(&area, (BYTE*)sms->message, MAX_SMS_LEN/2, INPUT_PINYIN) < 0)
return;
strncpy(sms->number, number, NUMBER_LEN-1);
box = SMS_SendMessage(sms);
return;
}
void SMS_TEST_fLASH(void)
{
static int number=0;
int adloop;
SMS_ITEM rsms;
int ret;
for(adloop=0;adloop<10;adloop++)
{
memset(&rsms, 0, sizeof(SMS_ITEM));
rsms.date = 0x20051211;
rsms.time = 0x00100908;
rsms.type = SMS_RECEIVE;
rsms.read = 0xFF;
sprintf(rsms.number,"%d",number);
sprintf(rsms.message,"姓名%d",number);
rsms.len = strlen(rsms.message);
number++;
ret=SMS_WriteOne(SMS_RECEIVE, NEW_DATA, &rsms);
debug_print_str(DM_RUNINFO, (info_buffer, "number=%s;name=%s;ret= %d", rsms.number,rsms.message,ret));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -