📄 mmiaoc.c
字号:
/*******************************************************************************
$Function: aoc_change_limit
$Description:
$Returns:
$Arguments:
*******************************************************************************/
int aoc_change_limit (MfwMnu* m, MfwMnuItem* i)
{
T_MFW_HND win = mfw_parent(mfw_header());
TRACE_FUNCTION("aoc_charge_rate")
// create new dynamic dialog for the AOC
SEND_EVENT (service_Init (win), PIN_REQUEST_FOR_LIMIT_CHANGE, 0, 0);
return 0;
}
/*******************************************************************************
$Function: aoc_cancel_limit
$Description:
$Returns:
$Arguments:
*******************************************************************************/
int aoc_cancel_limit (MfwMnu* m, MfwMnuItem* i)
{
T_MFW_HND win = mfw_parent(mfw_header());
TRACE_FUNCTION("aoc_charge_rate")
// create new dynamic dialog for the AOC
SEND_EVENT (service_Init (win), PIN_REQUEST_FOR_LIMIT_CANCEL, 0, 0);
return 0;
}
/*******************************************************************************
$Function: aoc_reset_charge
$Description: Resets the charge counter for all calls
$Returns:
$Arguments:
*******************************************************************************/
int aoc_reset_charge (MfwMnu* m, MfwMnuItem* i)
{
T_MFW_HND win = mfw_parent(mfw_header());
TRACE_FUNCTION("aoc_charge_rate")
switch( service_check_pin_for_aoc () )
{
case MFW_SIM_PIN2_REQ:
// create new dynamic dialog for the AOC
SEND_EVENT (service_Init (win), PIN_REQUEST_FOR_RESET_CHARGE, 0, 0);
break;
case MFW_SIM_PIN_REQ:
case MFW_SIM_NO_PIN:
//pin 1 or no pin required, open now the editor for entering the currency
SEND_EVENT (service_Init (win), SERVICES_RESET_CHARGE, 0, 0);
break;
}
return 0;
}
/*******************************************************************************
$Function: service_Init
$Description:
$Returns:
$Arguments:
*******************************************************************************/
T_MFW_HND service_Init (T_MFW_HND parent_window)
{
return(service_create (parent_window));
}
/*******************************************************************************
$Function: service_Exit
$Description:
$Returns:
$Arguments:
*******************************************************************************/
void service_Exit (T_MFW_HND own_window)
{
T_MFW_WIN * win_data = ((T_MFW_HDR *)own_window)->data;
T_SERVICES * data = (T_SERVICES *)win_data->user;
service_destroy (data->service_win);
}
/*******************************************************************************
$Function: service_create
$Description:
$Returns:
$Arguments:
*******************************************************************************/
T_MFW_HND service_create (T_MFW_HND parent_window)
{
T_SERVICES * data = (T_SERVICES *)ALLOC_MEMORY (sizeof (T_SERVICES));
T_MFW_WIN * win;
TRACE_FUNCTION ("service_create()");
data->service_win = win_create (parent_window, 0, 0, (T_MFW_CB)service_win_cb);
if( data->service_win EQ 0 )
return 0;
/*
* Create window handler
*/
data->mmi_control.dialog = (T_DIALOG_FUNC)service;
data->mmi_control.data = data;
win = ((T_MFW_HDR *)data->service_win)->data;
win->user = (void *) data;
data->edt_win =NULL;
winShow(data->service_win);
/*
* return window handle
*/
return data->service_win;
}
/*******************************************************************************
$Function: service_destroy
$Description:
$Returns:
$Arguments:
*******************************************************************************/
void service_destroy (T_MFW_HND own_window)
{
T_MFW_WIN * win;
T_SERVICES * data;
TRACE_FUNCTION ("service_destroy()");
if( own_window )
{
win = ((T_MFW_HDR *)own_window)->data;
data = (T_SERVICES *)win->user;
if( data )
{
/* 2003/12/04 sunsj modify for new editor mode */
if( data->edt_win )
{
if( data->Identifier == SERVICES_ENTER_CURRENCY )
{
text_input_destroy(data->edt_win);
}
else
{
editor_destroy(data->edt_win);
}
}
/*
* Delete WIN handler
*/
win_delete (data->service_win);
data->service_win = 0;
FREE_MEMORY ((void *)data, sizeof (T_SERVICES));
}
}
}
/*******************************************************************************
$Function: service_win_cb
$Description:
$Returns:
$Arguments:
*******************************************************************************/
static int service_win_cb (T_MFW_EVENT event, T_MFW_WIN * win)
{
/*
* Top Window has no output
*/
return 1;
}
/*******************************************************************************
$Function: service_dialog_cb
$Description:
$Returns:
$Arguments:
*******************************************************************************/
void service_dialog_cb(T_MFW_HND win, USHORT identifier, UBYTE reason)
{
char buf [40];
TRACE_FUNCTION ("service_dialog_cb()");
switch( reason )
{
case INFO_KCD_LEFT:
/* no break; */
case INFO_TIMEOUT:
/* no break; */
case INFO_KCD_HUP:
/* no break; */
case INFO_KCD_RIGHT:
/* no break; */
case INFO_KCD_CLEAR:
sprintf(buf, "identifier: %d", identifier);
TRACE_EVENT(buf);
if( identifier EQ SERVICES_OUT_OF_RANGE )
{
TRACE_EVENT ("SERVICES_OUT_OF_RANGE");
SEND_EVENT (win, SERVICES_ONE_UNIT, 0, 0);
}
else
{
TRACE_EVENT (" destroy ");
service_Exit(win);
}
break;
}
}
/*******************************************************************************
$Function: service_editor_cb
$Description:
$Returns:
$Arguments:
*******************************************************************************/
static void service_editor_cb (T_MFW_HND win, USHORT Identifier, SHORT reason)
{
T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data;
T_SERVICES * data = (T_SERVICES *)win_data->user;
UBYTE PWD, i;
int result;
char buf[60];
TRACE_FUNCTION ("service_editor_cb()");
switch( reason )
{
case INFO_KCD_LEFT:
switch( Identifier )
{
case SERVICES_ENTER_CURRENCY:
TRACE_EVENT ("SERVICES_ENTER_CURRENCY");
TRACE_EVENT ("pressed left");
// clear old current currency before overwrite it
memset(data->aocInfo.cur, 0x80, sizeof(data->aocInfo.cur));
if( strlen(data->edt_Buf) NEQ 0 )
{
memcpy(data->aocInfo.cur, data->edt_Buf, MAX_ENTER_CURRENCY);
}
//termination from ASCII to GSM default
for( i=0; i< MAX_ENTER_CURRENCY-1; i++ )
{
if( data->aocInfo.cur[i] EQ '\0' )
data->aocInfo.cur[i] = 0x80;
}
// open the next editor for entering the price per unit
SEND_EVENT (win, SERVICES_ONE_UNIT, 0, 0);
break;
case SERVICES_ONE_UNIT:
TRACE_EVENT ("SERVICES_ONE_UNIT");
TRACE_EVENT ("pressed left");
// clear old current ppu before overwrite it
memset(data->aocInfo.ppu, '\0', sizeof(data->aocInfo.ppu));
if( strlen(data->edt_Buf) NEQ 0 )
{
memcpy(data->aocInfo.ppu, data->edt_Buf, strlen(data->edt_Buf));
}
// Password not necessary, Pin2 scenario done
PWD='\0';
// write cur and ppu in AOC
result = cm_set_aoc_value(CM_AOC_PUCT, &data->aocInfo, &PWD);
/*
sprintf(buf, "%s", data->aocInfo.ppu);
TRACE_EVENT(buf);
sprintf(buf, "%s", data->aocInfo.cur);
TRACE_EVENT(buf);
sprintf(buf, "%d", result);
TRACE_EVENT(buf);
*/
if( data->edt_win )
{
editor_destroy(data->edt_win);
data->edt_win=NULL;
}
if( result EQ CM_OK )
{
SEND_EVENT (win, SERVICES_RATE_CHANGED, 0, 0);
}
else
{
SEND_EVENT (win, SERVICES_OUT_OF_RANGE, 0, 0);
}
break;
case SERVICES_LIMIT_CHANGE:
// string => long
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -