📄 mmicphs.c
字号:
{
SEND_EVENT(win, MAILBOX, NULL, NULL);
}
return win;
}
T_MFW_HND mmi_cphs_create(T_MFW_HND parent)
{ T_MMI_CPHS_DATA * data = (T_MMI_CPHS_DATA *)ALLOC_MEMORY (sizeof (T_MMI_CPHS_DATA ));
T_MFW_WIN * mailbox_win;
if (data EQ NULL)
{
return NULL;
}
// Create window handler
data->mailbox_win = win_create (parent, 0, E_WIN_VISIBLE, (MfwCb)cphs_win_cb);
if (data->mailbox_win EQ NULL)
{
return NULL;
}
// connect the dialog data to the MFW-window
data->mmi_control.dialog = (T_DIALOG_FUNC)cphs_dialog_cb;
data->mmi_control.data = data;
mailbox_win = ((T_MFW_HDR *)data->mailbox_win)->data;
mailbox_win->user = (void *)data;
data->parent_win = parent;
data->win = mailbox_win;
return data->mailbox_win;
}
void mailbox_destroy(MfwHnd own_window)
{
T_MFW_WIN * win_data;
T_MMI_CPHS_DATA * data = NULL;
if (own_window)
{
win_data = ((T_MFW_HDR *)own_window)->data;
if (win_data != NULL) //PATCH TB
data = (T_MMI_CPHS_DATA *)win_data->user;
if (data)
{
TRACE_EVENT ("mailbox_destroy()");
win_delete (data->win);
// Free Memory
FREE_MEMORY ((void *)data, sizeof (T_MMI_CPHS_DATA));
}
else
{
TRACE_EVENT ("mailbox_destroy() called twice");
}
}
}
void cphs_dialog_cb(T_MFW_HND win, USHORT e, SHORT identifier, void *parameter)
{ TRACE_EVENT("cphs_dialog_cb()");
switch(e)
{ case (MAILBOX): cphs_get_mailbox();break;
// pin1_check(win); break;
//case(PIN1_OK): cphs_get_mailbox();break;
//case(PIN2_OK): cphs_get_mailbox();break;
default: break;
}
}
static int cphs_win_cb (T_MFW_EVENT event, T_MFW_WIN * win)
{
T_MMI_CPHS_DATA * data = (T_MMI_CPHS_DATA *)win->user;
TRACE_FUNCTION ("cphs_win_cb()");
if(data EQ 0)
return 1;
switch (event)
{
case E_WIN_VISIBLE:
if (win->flags & E_WIN_VISIBLE)
{
/* Print the information dialog */
/* Clear Screen */
dspl_ClearAll();
}
default:
return 0;
}
return 1;
}
/*******************************************************************************
$Function: show_cphs_mb_numbers
$Description: Show the list of mailbox numbers
$Returns: nothing
$Arguments: none
*******************************************************************************/
void show_cphs_mb_numbers()
{
T_MFW_HND win;
T_MFW_HND parent_win= mfw_parent(mfw_header());
{
win = buildInfoNumberMenu(parent_win);
if (win NEQ NULL)
{
SEND_EVENT (win, E_INIT, 0, 0);
}
}
}
/*******************************************************************************
$Function: show_cphs_mb_number
$Description: Show the passed mailbox number in editor
$Returns: status int
$Arguments: mailbox number entry
*******************************************************************************/
int show_cphs_mb_number(T_MFW_CPHS_ENTRY* mb_number)
{ T_MFW_HND parent_win = mfw_parent(mfw_header());
T_EDITOR_DATA editor_data;
char temp_number[PHB_MAX_LEN];
memset(temp_number, 0, PHB_MAX_LEN);
editor_attr_init(&editor_data.editor_attr, NULL, edtCurBar1, 0, 0, 0);
editor_data.hide = FALSE;
editor_data.min_enter = 1; // Avoid returning empty strings
editor_data.Identifier = 0;
editor_data.TextString = "Mailbox?";
editor_data.timeout = FOREVER; // Avoid returning empty strings
editor_data.destroyEditor = TRUE;
editor_data.editor_attr.size = PHB_MAX_LEN-1;
editor_data.TextId = '\0';
editor_data.LeftSoftKey = TxtSoftOK;
editor_data.AlternateLeftSoftKey = TxtNull;
editor_data.RightSoftKey = TxtDelete;
editor_data.mode = DIGITS_MODE;
editor_data.Callback = (T_EDIT_CB)mailbox_edit_cb;
//if it's an international number without a '+'
if (mb_number->ton == MFW_TON_INTERNATIONAL && mb_number->number[0] != '+')
{ strcat(temp_number, "+"); //put a + in front of number
strcat(temp_number, (char*)mb_number->number);
strcpy((char*)mb_number->number, temp_number);
}
editor_data.editor_attr.text = (char*)mb_number->number;
editor_start(parent_win,&editor_data); /* start the editor */
// winShow(win);
}
/*******************************************************************************
$Function: mailbox_edit_cb
$Description: callback for mailbox editor screen
$Returns: nothing
$Arguments: window, identifier, reason
*******************************************************************************/
static void mailbox_edit_cb( T_MFW_HND win, USHORT Identifier,UBYTE reason)
{
TRACE_FUNCTION("mailbox_edit_cb()");
switch (reason )
{
case INFO_KCD_LEFT:
{
TRACE_EVENT((char*)cphs_voicemail_num.number);
cphs_set_mailbox(&cphs_voicemail_num);
}
break;
default:
{
/* otherwise no action to be performed
*/
break;
}
}
}
/*******************************************************************************
$Function: cphs_mfw_cb
$Description: Callback handler for mfw_cphs events
$Returns: status int
$Arguments: event, parameter pointer
*******************************************************************************/
int cphs_mfw_cb(T_MFW_EVENT event, void* para)
{ T_MFW_HND parent = mfwParent( mfw_header());
T_MFW_CPHS_VC_NUM* number_list =(T_MFW_CPHS_VC_NUM* )para;
char debug[50];
T_MFW_CPHS_PARA* parameter = (T_MFW_CPHS_PARA*)para;
T_MFW_CPHS_STATUS temp;
switch(event)
{ case E_CPHS_IND:
TRACE_EVENT("Getting cphs status");
if(para != NULL)
{ cphs_status =(* (T_MFW_CPHS_STATUS*)para);
if (cphs_status != CPHS_OK)
{ sprintf(debug,"cphs not supported, apparently%d", cphs_status);
TRACE_EVENT(debug);
}
cphs_operator_name();
}
break;
case E_CPHS_OP_NAME:
if(para != NULL)
{
memcpy(&operator_name, para, sizeof(T_MFW_CPHS_OP_NAME));
TRACE_EVENT("operator name callback");
if (operator_name.longName.data[0] == NULL)
TRACE_EVENT("Blank long name");
if (operator_name.shortName.data[0] == NULL)
TRACE_EVENT("Blank short name");
cphs_get_csp();
}
break;
case E_CPHS_GET_VC_NUM:
{
if (para!= NULL)
{ memcpy(&cphs_voicemail_numbers, para, sizeof(T_MFW_CPHS_VC_NUM));
sprintf(debug,"Voicemail No %s", cphs_voicemail_numbers.entries[0].number);
TRACE_EVENT(debug);
show_cphs_mb_numbers();
}
}
break;
case E_CPHS_SET_VC_NUM:
{ //result of writing mailbox number
UBYTE write_result;
if(para != NULL)
{ write_result = *(UBYTE*)para;
if (write_result == MFW_SIMOP_WRITE_OK)
ShowMessage(parent, TxtSaved, TxtNull,REMIND_SUCCEED);
else
ShowMessage(parent, TxtWriteError, TxtNull,REMIND_SUCCEED);//display "Write Error"
}
}
break;
case E_CPHS_GET_VC_STAT:
{
MfwHnd idle_win =idle_get_window();
UBYTE line;
if(para != NULL)
{ cphs_voicemail_status = (T_MFW_CPHS_VC_STAT*)para;
TRACE_EVENT("Getting voicemail status");
if (cphs_voicemail_status->line1 == MFW_CFLAG_SET)
{
//ShowMessage(idle_win, TxtVoicemail, TxtLine1,0);zy 2003-03-17 needn't show these information
}
if (cphs_voicemail_status->line2 == MFW_CFLAG_SET)
{
// ShowMessage(idle_win, TxtVoicemail, TxtLine2,0);zy 2003-03-17 needn't show these information
}
}
}
break;
case E_CPHS_SET_VC_STAT:
{ //result of resetting mailbox status
UBYTE write_result;
TRACE_EVENT("Mailbox status set");
//Update our copy of the mailbox status
GetCphsVoicemailStatus(0);
}
break;
case E_CPHS_GET_DV_STAT:
{
TRACE_EVENT("Getting divert status");
if(para != NULL)
memcpy(&call_forwarding_status, para, sizeof(T_MFW_CPHS_DV_STAT));
{UBYTE line;
//check for divert on active line
line = GetAlsLine();
//check if current outgoing line diverted
if (line == MFW_SERV_LINE2)
DivertStatus = GetCphsDivertStatus(MFW_SERV_LINE2);
else//if (line == MFW_SERV_LINE1)
DivertStatus = GetCphsDivertStatus(MFW_SERV_LINE1);
/*
//set the call forwarding icon
if (DivertStatus == MFW_CFLAG_SET)
iconsSetState(iconIdCallFor);
//gid rid of call forwarding icon
if (DivertStatus == MFW_CFLAG_NOTSet)
iconsDeleteState(iconIdCallFor);
*/ //hu binhao 2003-2-26 for bug-when set lineselect to open ro close for the lineselect-suppoted sim card,the call forward icon will shown in iidle interface
}
}break;
case E_CPHS_SET_DV_STAT:
{ //result of setting divert status
UBYTE write_result;
TRACE_EVENT("Divert status set");
/*if(para != NULL)
{ write_result = *(UBYTE*)para;
if (write_result == MFW_SIMOP_WRITE_OK)
ShowMessage(parent, TxtSaved, TxtNull);
if (write_result == MFW_SIMOP_WRITE_ERR)
ShowMessage(parent, TxtWriteError, TxtNull);//display "Write Error"
}*/
cphs_get_divert_status(); //refresh divert status
}
break;
case E_CPHS_GET_ALS_STATUS:
{ if(para != NULL)
memcpy(&als_status, para, sizeof(T_MFW_CPHS_ALS_STATUS));
}
break;
case E_CPHS_SET_LINE:
{ //result of set ALS line
UBYTE write_result;
if(para != NULL)
{ write_result = *(UBYTE*)para;
if (write_result == MFW_SIMOP_WRITE_OK)
ShowMessage(parent, TxtChanged, TxtNull,REMIND_SUCCEED);
if (write_result == MFW_SIMOP_WRITE_ERR)
ShowMessage(parent, TxtWriteError, TxtNull,REMIND_FAILURE);//display "Write Error"
}
cphs_get_als_info();//refresh current line
cphs_get_divert_status(); //refresh divert status
}
break;
case E_CPHS_SET_ALS_STATUS:
{ //result of setting ALS status
UBYTE write_result;
if(para != NULL)
{ write_result = *(UBYTE*)para;
if (write_result == MFW_SIMOP_WRITE_OK)
ShowMessage(parent, TxtSaved, TxtNull,REMIND_SUCCEED);
if (write_result == MFW_SIMOP_WRITE_ERR)
ShowMessage(parent, TxtWriteError, TxtNull,REMIND_FAILURE);//display "Write Error"
}
}
break;
case E_CPHS_GET_CSP:
{ if(para != NULL)
{ memcpy(&customer_service_profile, para, sizeof(T_MFW_CPHS_CSP));
sprintf(debug, "CSP: %x,%x,%x,%x,%x,%x,%x,%x,%x,%x", customer_service_profile.csp[0], customer_service_profile.csp[1],
customer_service_profile.csp[2], customer_service_profile.csp[3], customer_service_profile.csp[4], customer_service_profile.csp[5],
customer_service_profile.csp[6], customer_service_profile.csp[7], customer_service_profile.csp[8], customer_service_profile.csp[9]);
debug[49] = 0;//ensure we've got a null-terminated string
TRACE_EVENT(debug);
sprintf(debug, "CSP: %x,%x,%x,%x,%x,%x,%x,%x,%x,%x", customer_service_profile.csp[10], customer_service_profile.csp[11],
customer_service_profile.csp[12], customer_service_profile.csp[13], customer_service_profile.csp[14], customer_service_profile.csp[15],
customer_service_profile.csp[16], customer_service_profile.csp[17], customer_service_profile.csp[18], customer_service_profile.csp[19]);
debug[49] = 0;//ensure we've got a null-terminated string
TRACE_EVENT(debug);
cphs_get_info_num(1, info_num_index);
}
}break;
case E_CPHS_GET_INFO_NUM:
{
if(para != NULL)
{
memcpy(¤t_info_num, para, sizeof( T_MFW_CPHS_INFONUM_ENTRY));
TRACE_EVENT("Getting info number");
if (current_info_num.result !=MFW_SIMOP_READ_ERR)
{ T_DISPLAY_DATA Dialog;
TRACE_EVENT("Displaying num");
/* Initialise the dialog control block with default information
*/
dialog_info_init(&Dialog);//gdy add
Dialog.KeyEvents = KEY_LEFT| KEY_RIGHT|KEY_CLEAR;
Dialog.TextId = 0;
Dialog.TextId2 = 0;
Dialog.TextString = (char*)current_info_num.alpha.data;
Dialog.TextString2 = (char*)current_info_num.number;
Dialog.LeftSoftKey = TxtSoftCall;
Dialog.RightSoftKey = TxtSoftBack;
//need to write callback func for this
Dialog.Callback = (T_VOID_FUNC) info_num_display_cb;
Dialog.Identifier = 0;
Dialog.Time = FOREVER;
/* Show the dialog
*/
info_dialog( parent, &Dialog );
}
}
}
break;
case E_CPHS_GET_INFO_LIST:
{
if (para == NULL)
{
TRACE_EVENT("Invalid info num list");
}
else
{ //populate next pointer
if (info_numbers[info_num_level] = (T_MFW_CPHS_INFONUM_LIST*) ALLOC_MEMORY(sizeof(T_MFW_CPHS_INFONUM_LIST)))
memcpy(info_numbers[info_num_level], para, sizeof(T_MFW_CPHS_INFONUM_LIST));
TRACE_EVENT("Getting info numbers!!");
if (info_numbers[info_num_level]->count != 0)
{ sprintf(debug, "Valid info num list, count:%d",info_numbers[info_num_level]->count);
TRACE_EVENT(debug);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -