⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 phone_a.c

📁 本程序是使用CDMA450模块开发的一个无线公话完整程序
💻 C
📖 第 1 页 / 共 2 页
字号:
	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 + -