📄 callman.c
字号:
/****************************************************************
** *
** FILE : CallMan.C *
** COPYRIGHT : (c) 2001 .Xiamen Yaxon NetWork CO.LTD *
** *
** *
** By : CCH 2002.1.15 *
****************************************************************/
#include "includes.h"
#include "tools.h"
#include "db_talk.h"
#include "db_tb.h"
#include "screen.h"
#include "prompt.h"
#include "menuwin.h"
#include "itemmenu.h"
#include "virphone.h"
#include "telbook.h"
#include "handset.h"
#include "callman.h"
#if EN_HANDSET > 0
/*
********************************************************************************
* DEFINE MODULE VARIANTS
********************************************************************************
*/
static INT8U TalkType, dplybuf[30], dplytime[] = {"共通话:\n 00:00:00\n时间:00:00\n2003.01.01"};
static TALKREC_STRUCT CurRecord;
static void OPREC_DIAL(void)
{
ActivateVirPhone_Dial(FALSE, CurRecord.tellen, CurRecord.tel);
}
static void OPREC_READ(void)
{
FormatTime(&dplytime[10], 0, CurRecord.talktime[0], CurRecord.talktime[1]);
FormatYear(&dplytime[30], CurRecord.date[0], CurRecord.date[1], CurRecord.date[2]);
FormatTime(dplybuf, CurRecord.time[0], CurRecord.time[1], CurRecord.time[2]);
memcpy(&dplytime[24], dplybuf, 5);
if (TalkType == TALK_MISS)
ActivateStringPrompt_TIME((char *)&dplytime[19], 0);
else
ActivateStringPrompt_TIME((char *)dplytime, 0);
}
static void ACK_OP_ERASE(void)
{
INT16U DelRec;
PopMenuWin();
DelRec = GetMenuWinRecordNum();
PopMenuWin();
ActivateStringPrompt("删除中…");
DelTalkRecord(TalkType, DelRec);
ActivateStringPrompt("已删除");
}
static void OPREC_ERASE(void)
{
ActivateSelPrompt("删除?", 0, ACK_OP_ERASE);
}
static void OPREC_DISPLAY(void)
{
INT8U len;
len = CurRecord.tellen;
if (len > 0) {
memcpy(dplybuf, CurRecord.tel, len);
dplybuf[len] = '\0';
ActivateStringPrompt_TIME((char *)dplybuf, 0);
} else {
ActivateStringPrompt_TIME("(空白)", 0);
}
}
static void OPREC_SAVE(void)
{
SaveToTB(CurRecord.tel, CurRecord.tellen);
}
static ITEMMENU_STRUCT MENU_OPREC_DIAL = {ITEM_FCN, "呼出", OPREC_DIAL, 0, 0};
static ITEMMENU_STRUCT MENU_OPREC_READ = {ITEM_FCN, "通话时间", OPREC_READ, 0, 0};
static ITEMMENU_STRUCT MENU_OPREC_ERASE = {ITEM_FCN, "删除", OPREC_ERASE, 0, 0};
static ITEMMENU_STRUCT MENU_OPREC_DISPLAY = {ITEM_FCN, "显示号码", OPREC_DISPLAY, 0, 0};
static ITEMMENU_STRUCT MENU_OPREC_SAVE = {ITEM_FCN, "存储", OPREC_SAVE, 0, 0};
static ITEMMENU_STRUCT *MENU_OPREC_CHILD[] = {&MENU_OPREC_DIAL, &MENU_OPREC_READ, &MENU_OPREC_ERASE, &MENU_OPREC_DISPLAY, &MENU_OPREC_SAVE};
static ITEMMENU_STRUCT MENU_OPREC = {ITEM_LMENU, 0, 0, 5, MENU_OPREC_CHILD};
static void Handler_KEY_ACK(void)
{
if (GetTalkRecord(TalkType, GetMenuWinRecordNum(), &CurRecord) == 0)
PopMenuWin();
else
ActivateItemMenu(&MENU_OPREC);
}
static INT16U MaxRecordProc(void)
{
return GetNumTalkRecord(TalkType);
}
static INT16U ReadRecordProc(INT16S numrec, INT8U *ptr)
{
INT8U screensize, len, templen, dplylen, *dplyptr;
if (numrec == -1) {
memcpy(ptr, "无通话记录", strlen("无通话记录"));
return strlen("无通话记录");
}
if (GetTalkRecord(TalkType, numrec, &CurRecord) == 0) return 0;
screensize = GetScreenSize();
if (TalkType == TALK_MISS) {
len = strlen("未接");
memcpy(ptr, "未接", len);
} else if (TalkType == TALK_DIAL) {
len = strlen("已拨");
memcpy(ptr, "已拨", len);
} else {
len = strlen("已接");
memcpy(ptr, "已接", len);
}
ptr += len;
templen = DecToAscii(ptr, numrec + 1, 0);
len += templen;
ptr += templen;
*ptr++ = ':';
len++;
if (CurRecord.tellen == 0) {
dplylen = strlen("未知电话");
dplyptr = (INT8U *)"未知电话";
} else {
dplylen = GetTBNameByTel(dplybuf, CurRecord.tellen, CurRecord.tel);
if (dplylen == 0) {
dplylen = CurRecord.tellen;
dplyptr = CurRecord.tel;
} else {
dplyptr = dplybuf;
}
}
if (len + dplylen < screensize) {
templen = screensize - (len + dplylen);
InitBuf(ptr, ' ', templen);
len += templen;
ptr += templen;
} else {
*ptr++ = '\n';
len++;
}
memcpy(ptr, dplyptr, dplylen);
return len + dplylen;
}
static MENUWIN_STRUCT SelMenuWinEntry =
{WIN_FMENU, Handler_KEY_ACK, 0, 0, 0, 0, MaxRecordProc, 0, ReadRecordProc};
static void SelTalkProc(void)
{
INT8U index;
index = GetMenuWinRecordNum();
if (index == 0)
TalkType = TALK_MISS;
else if (index == 1)
TalkType = TALK_DIAL;
else
TalkType = TALK_RECV;
ActivateMenuWin(&SelMenuWinEntry);
}
static void ACK_DelTalkProc(void)
{
INT8U index;
index = GetMenuWinRecordNum();
PopMenuWin();
ActivateStringPrompt("删除中…");
if (index == 3) {
DelAllTalkRecord(TALK_DIAL);
DelAllTalkRecord(TALK_MISS);
DelAllTalkRecord(TALK_RECV);
} else if (index == 0) {
DelAllTalkRecord(TALK_DIAL);
} else if (index == 1) {
DelAllTalkRecord(TALK_MISS);
} else if (index == 2) {
DelAllTalkRecord(TALK_RECV);
}
ActivateStringPrompt("已删除");
}
static void DelTalkProc(void)
{
ActivateSelPrompt("删除?", 0, ACK_DelTalkProc);
}
static ITEMMENU_STRUCT MENU_ERASE_DIAL = {ITEM_FCN, "已拨电话", DelTalkProc, 0, 0};
static ITEMMENU_STRUCT MENU_ERASE_MISS = {ITEM_FCN, "未接电话", DelTalkProc, 0, 0};
static ITEMMENU_STRUCT MENU_ERASE_RECV = {ITEM_FCN, "已接电话", DelTalkProc, 0, 0};
static ITEMMENU_STRUCT MENU_ERASE_ALL = {ITEM_FCN, "所有电话", DelTalkProc, 0, 0};
static ITEMMENU_STRUCT *MENU_ERASE_CHILD[] = {&MENU_ERASE_DIAL, &MENU_ERASE_MISS, &MENU_ERASE_RECV, &MENU_ERASE_ALL};
static ITEMMENU_STRUCT MENU_MISS = {ITEM_FCN, "未接电话", SelTalkProc, 0, 0};
static ITEMMENU_STRUCT MENU_DIAL = {ITEM_FCN, "已拨电话", SelTalkProc, 0, 0};
static ITEMMENU_STRUCT MENU_RECV = {ITEM_FCN, "已接电话", SelTalkProc, 0, 0};
static ITEMMENU_STRUCT MENU_ERASE = {ITEM_LMENU, "删除", 0, 4, MENU_ERASE_CHILD};
static ITEMMENU_STRUCT *MENU_CALLMAN_CHILD[] = {&MENU_MISS, &MENU_DIAL, &MENU_RECV, &MENU_ERASE};
ITEMMENU_STRUCT MENU_CALLMAN = {ITEM_LMENU, " 通话记录", 0, 4, MENU_CALLMAN_CHILD};
void ActivateDialTalkRec(void)
{
TalkType = TALK_DIAL;
ActivateMenuWin(&SelMenuWinEntry);
}
static void ListMissTel(void)
{
TalkType = TALK_MISS;
ActivateMenuWin(&SelMenuWinEntry);
}
static void ExitPromptReadMissTel(void)
{
HstMiss.NumTel = 0;
}
static PROMPT_STRUCT PromptEntry = {PROMPT_ACKINFORM, 0, 0, 0, ListMissTel, ExitPromptReadMissTel};
BOOLEAN PromptReadMissTel(void)
{
INT8U len;
if (HstMiss.NumTel == 0) return FALSE;
len = DecToAscii(dplybuf, HstMiss.NumTel, 0);
memcpy(&dplybuf[len], "个\n未接电话", strlen("个\n未接电话"));
len += strlen("个\n未接电话");
PromptEntry.TextPtr = dplybuf;
PromptEntry.TextLen = len;
ActivatePrompt(&PromptEntry);
return TRUE;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -