📄 mmicall.c
字号:
// {0,0,0,(char *)TxtCallTransfer, 0,(MenuFunc)transferExec, item_flag_none},//MC//zy dont use it temp
{(MfwIcnAttr*)&colist,0,0,(char *)TxtStartConference, 0,(MenuFunc)startConferenceExec, item_flag_none},
{(MfwIcnAttr*)&colist,0,0,(char*) TxtSendMessage, 0, (MenuFunc)M_callSendNew, item_flag_none},
{(MfwIcnAttr*)&colist,0,0,(char*) TxtRecVoice, 0, (MenuFunc)CallRecord, item_flag_none},//zy 12/03
{(MfwIcnAttr*)&colist,0,0,(char*) TxtMemo, 0, (MenuFunc)memoAdd, item_flag_none},//gdy add 03/01/07
/*#ifdef FIELD_TEST_MODE
{0,0,0,(char*) TxtTestCommand, 0, (MenuFunc)TestModeStart, item_flag_none}//xzy add 03/02/12 for testmode
#endif*//*2003/12/1, wangyan delete*/
};
static const MfwMnuAttr menuCallTwo =
{
0,
&menuListArea,
MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */
-1, /* use default font */
menuCallTwoItems, /* with these items */
sizeof(menuCallTwoItems)/sizeof(T_MFW_MNU_ITEM) /* number of items */
};
//18/12/2001 MC added sms message option
//2004-03-5 Sunny modify for item icon
static T_MFW_MNU_ITEM menuCallConferenceItems[] =
{
{(MfwIcnAttr*)&colist,0,0,(char *)TxtPrivateCall, 0,(MenuFunc)privateStartAddConferenceExec, item_flag_none},
// {0,0,0,(char *)TxtSwap, 0,(MenuFunc)swapExec, item_flag_none},
{(MfwIcnAttr*)&colist,0,0,(char *)TxtEndAll, 0,(MenuFunc)endConferSingleExec, item_flag_none},/*zy 2003-03-19 replace endAllExec*/
// {0,0,0,(char *)TxtContacts, 0,(MenuFunc)contactsExec, item_flag_none},//zy Mobile Innovation 01/08/02 seemed not need
{(MfwIcnAttr*)&colist,0,0,(char *)TxtHold, 0,(MenuFunc)holdExec, item_flag_none},
// {0,0,0,(char *)TxtMute, 0,(MenuFunc)muteExec, item_flag_none},
// {0,0,0,(char *)TxtScratchPad, 0,(MenuFunc)scratchPadExec, item_flag_none},
// {0,0,0,(char *)TxtMainMenu, 0,(MenuFunc)mainMenuExec, item_flag_none},
{(MfwIcnAttr*)&colist,0,0,(char *)TxtAddNewCall, 0,(MenuFunc)addNewCall, item_flag_none},//zy Mobile Innovation 01/08/02 add new call menu
{(MfwIcnAttr*)&colist,0,0,(char*) TxtSendMessage, 0, (MenuFunc)M_callSendNew, item_flag_none},
// {0,0,0,(char *)TxtEndOne, 0,(MenuFunc)endOneExec, item_flag_none},//zy 2003-03-04move it zy Mobile Innovation 01/08/02 add end active call
{(MfwIcnAttr*)&colist,0,0,(char*) TxtRecVoice, 0, (MenuFunc)CallRecord, item_flag_none},//zy 12/03
{(MfwIcnAttr*)&colist,0,0,(char*)TxtMemo, 0, (MenuFunc)memoAdd, item_flag_none},//gdy add 03/01/07
/*#ifdef FIELD_TEST_MODE
{0,0,0,(char*) TxtTestCommand, 0, (MenuFunc)TestModeStart, item_flag_none}//xzy add 03/02/12 for testmode
#endif*//*2003/12/1, wangyan delete*/
};
static const MfwMnuAttr menuCallConference =
{
0,
&menuListArea,
MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */
-1, /* use default font */
(T_MFW_MNU_ITEM *)menuCallConferenceItems, /* with these items */
sizeof(menuCallConferenceItems)/sizeof(T_MFW_MNU_ITEM) /* number of items */
};
/****************zy 10/08/2002 add for single conferenceItems needn't hold items******/
//2004-03-5 Sunny modify for item icon
static T_MFW_MNU_ITEM menuCallConferSingleItems[] =
{
{(MfwIcnAttr*)&colist,0,0,(char *)TxtPrivateCall, 0,(MenuFunc)privateStartAddConferenceExec, item_flag_none},
{(MfwIcnAttr*)&colist,0,0,(char *)TxtSwap, 0,(MenuFunc)swapExec, item_flag_none},
{(MfwIcnAttr*)&colist,0,0,(char *)TxtEndAll, 0,(MenuFunc)endConferSingleExec, item_flag_none},
// {0,0,0,(char *)TxtAddNewCall, 0,(MenuFunc)addNewCall, item_flag_none},//zy Mobile Innovation 01/08/02 add new call menu
{(MfwIcnAttr*)&colist,0,0,(char*) TxtSendMessage, 0, (MenuFunc)M_callSendNew, item_flag_none},
{(MfwIcnAttr*)&colist,0,0,(char *)TxtEndOne, 0,(MenuFunc)endOneExec, item_flag_none},//zy Mobile Innovation 01/08/02 add end active call
{(MfwIcnAttr*)&colist,0,0,(char*) TxtRecVoice, 0, (MenuFunc)CallRecord, item_flag_none},//zy 12/03
{(MfwIcnAttr*)&colist,0,0,(char*) TxtMemo, 0, (MenuFunc)memoAdd, item_flag_none},//gdy add 03/01/07
/*#ifdef FIELD_TEST_MODE
{0,0,0,(char*) TxtTestCommand, 0, (MenuFunc)TestModeStart, item_flag_none}//xzy add 03/02/12 for testmode
#endif*//*2003/12/1, wangyan delete*/
};
static const MfwMnuAttr menuCallConferSingle =
{
0,
&menuListArea,
MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */
-1, /* use default font */
(T_MFW_MNU_ITEM *)menuCallConferSingleItems, /* with these items */
sizeof(menuCallConferSingleItems)/sizeof(T_MFW_MNU_ITEM) /* number of items */
};
/****************end of zy 10/08/2002 add**********************************/
#if 0 /*2003/12/16, wangyan delete*/
static const T_MFW_MNU_ITEM menuDTMFItems [] =
{
{0,0,0, (char*)TxtSendMessage, 0,(MenuFunc)exeSendMessage, item_flag_none},
{0,0,0, (char*)TxtAddNew, 0,(MenuFunc)callExeNameEnter, item_flag_none}
};
static const T_MFW_MNU_ATTR menuDTMF =
{
0,
&menuListArea,
MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */
-1, /* use default font */
(T_MFW_MNU_ITEM *)menuDTMFItems, /* with these items */
sizeof(menuDTMFItems)/sizeof(T_MFW_MNU_ITEM) /* number of items */
};
#endif /*2003/12/16, wangyan delete*/
/*********************************************************************
**********************************************************************
CALL WINDOW. DECLARATION
*********************************************************************
**********************************************************************/
T_call call_data;
void call(T_MFW_HND win, USHORT event, SHORT value, void * parameter);
static int call_win_cb(MfwEvt e, MfwWin *w);
static int call_kbd_cb (MfwEvt e, MfwKbd *k);
static int call_kbd_long_cb (MfwEvt e, MfwKbd *k);
/*********************************************************************
**********************************************************************
MENU WINDOW. DECLARATION
*********************************************************************
**********************************************************************/
typedef struct
{
T_MMI_CONTROL mmi_control;
T_MFW_HND win;
T_MFW_HND kbd;
T_MFW_HND kbd_long;
T_MFW_HND menu;
T_VOID_FUNC func_cb;
T_MFW_HND parent;
/*
* internal data
*/
} T_call_menu;
static T_MFW_HND call_menu_create(MfwHnd parent);
static void call_menu_destroy(MfwHnd window);
T_MFW_HND call_menu_start(MfwHnd parent,MfwMnuAttr* menuAttr,T_VOID_FUNC func_cb);
void call_menu (T_MFW_HND win, USHORT event, SHORT value, void * parameter);
static int call_menu_win_cb (MfwEvt e, MfwWin *w);
static int call_menu_kbd_cb (MfwEvt e, MfwKbd *k);
static int call_menu_kbd_long_cb (MfwEvt e, MfwKbd *k);
static int call_menu_mnu_cb (MfwEvt e, MfwMnu *m);
/*********************************************************************
**********************************************************************
CALL FUNCTIONS. DECLARATION
*********************************************************************
**********************************************************************/
void call_incoming_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason);
void call_calling_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason);
void call_ending_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason);
void call_waiting_answer_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason);
void call_sending_dtmf_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason);
void call_menu_end_cb(void);
void call_failtryagain_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason);
void call_failure_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason);
static void call_calling_show (USHORT Identifier);
void call_info_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason);
/* Marcus: Issue 1057: 21/01/2003: Added the following function prototype
zy 2003-04-16 checkin
*/
void call_acm_max_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason);
/*********************************************************************
**********************************************************************
DIALLING WINDOW. DECLARATION
*********************************************************************
**********************************************************************/
typedef struct
{
T_MMI_CONTROL mmi_control;
T_MFW_HND win; // window handle
T_MFW_HND kbd;
T_MFW_HND kbd_long;
T_MFW_HND edt;
UBYTE mode;
UBYTE callstatus;
} T_call_scratchpad;
T_MFW_HND call_scratchpad_create(MfwHnd parent);
void call_scratchpad_exit (void);
static int call_scratchpad_kbd_cb (MfwEvt e, MfwKbd *k);
static int call_scratchpad_kbd_long_cb (MfwEvt e, MfwKbd *k);
static int call_scratchpad_win_cb (MfwEvt e, MfwWin *w);
void call_scratchpad (T_MFW_HND win, USHORT event, SHORT value, void * parameter);
T_MFW_HND call_scratchpad_start (T_MFW_HND win_parent,char character,UBYTE mode, UBYTE callstatus);
void StartAutoDtmf(void);
/*******************************************************************************
Private Methods
*******************************************************************************/
/*******************************************************************************
$Function: callInit
$Description: initiates the window
$Returns: none
$Arguments: parent window
*******************************************************************************/
void callInit (MfwHnd parent)
{
// MMI_TRACE_EVENT(("wangyan callInit"));
cm_init();
call_data.cm = cm_create(0, E_CM_ALL_SERVICES, (MfwCb)callCmEvent);
MMI_TRACE_EVENT(("wangyan callInit call_data.cm=%d",call_data.cm));
call_data.win = 0;
call_data.callStatus = CallInactive;
call_data.win_sms=0;//zy 2003-04-01 just initial smssend=0 at here it means there are a smssend win whereever it be
}
/*******************************************************************************
$Function: callExit
$Description: Exits the window
$Returns: none
$Arguments: none
*******************************************************************************/
void callExit (void)
{
MMI_TRACE_EVENT(("wangyan callExit"));
cm_delete(call_data.win);
cm_exit();
}
/*******************************************************************************
$Function: callAutoRedialKeyEvent
$Description: keyboard event handler
$Returns: none
$Arguments: typical
*******************************************************************************/
void callAutoRedialKeyEvent(T_MFW_HND win, USHORT identifier, USHORT reason)
{
TRACE_FUNCTION("callAutoRedialKeyEvent");
call_data.win_redial = 0;
switch( reason )
{
case INFO_KCD_LEFT:
/*
callSetMode(ViewAutoRedial);
cm_redial();
*/
break;
case INFO_KCD_HUP:
case INFO_KCD_RIGHT:
case INFO_KCD_CLEAR:
case INFO_KCD_F4:/*2004/4/27, wangyan add*/
cm_redial_abort();
callSetMode(ViewConnect);
/*2004/4/27, wangyan add*/
if( call_data.win_redial )
{
SEND_EVENT(call_data.win_redial,DIALOG_DESTROY,0,0);
MMI_TRACE_EVENT(("wangyan call_data.win_calling DIALOG_DESTROY"));
call_data.win_redial = 0;
}
/*2004/4/27, wangyan add*/
break;
default:
break;
}
}
/*******************************************************************************
$Function: callCmEvent
$Description: call management event handler
$Returns: 1, processed, 0 ignored
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -