📄 mmismsread.c
字号:
winShow(data->win);
/* return window handle */
return data->win;
}
/*******************************************************************************
$Function: SmsRead_R_destroy
$Description: Destroy the SMS read window (dynamic list of all the SMS)
$Returns: none
$Arguments: own_window - window handler
*******************************************************************************/
static void SmsRead_R_destroy(MfwHnd own_window)
{
T_MFW_WIN * win_data;
T_SMSREAD_R * data;
USHORT i;
TRACE_FUNCTION ("SmsRead_R_destroy()");
if( own_window )
{
win_data = ((T_MFW_HDR *)own_window)->data;
data = (T_SMSREAD_R *)win_data->user;
if( data )
{
/*
* Delete WIN handler
*/
if( data->sms_handle )
sms_delete(data->sms_handle);
if( smsphkchecktimer )
timDelete(smsphkchecktimer);
if( info_win )
{
SEND_EVENT(info_win,DIALOG_DESTROY,0,0 );
info_win = 0;
}
if( data->list_editor )
edtDelete(data->list_editor);
if( list_win )
{
listsDestroy(list_win);
//SEND_EVENT(list_win,DIALOG_DESTROY,0,0 );
list_win = 0;
}
win_delete (data->win);
/*
* Free Memory
*/
/* Free the data allocated for the name associated to the phone number */
//if (data->sms_editor_data.assoc_name != NULL)
// FREE_MEMORY( (void *)data->sms_editor_data.assoc_name, strlen(data->sms_editor_data.assoc_name) + 1);
/* Free the data allocated for the dynamic list */
if( data->menu_list_data != NULL )
{
sprintf(buf,">>>> SmsRead_R_destroy,(data->sms_list_data).nb_sms_stored=%d",(data->sms_list_data).nb_sms_stored);
TRACE_EVENT(buf);
if( (data->sms_list_data.nb_sms_stored) )
for( i = 0; i <(data->sms_list_data).nb_sms_stored; i++ )
{
// sprintf(buf,">> R_destroy: Free sms_header :%d, size:%d ",(void *)data->sms_list_data.sms_header[i],MENU_TEXT_LENGTH+ 1);
// TRACE_EVENT(buf);
//FREE_MEMORY( (void *)data->sms_list_data.sms_header[i], MENU_TEXT_LENGTH+ 1);
FREE_MEMORY( (void *)data->menu_list_data->List[i].str, MENU_TEXT_LENGTH);
}
else
for( i = 0; i <g_nb_line_sms; i++ )
{
FREE_MEMORY( (void *)data->menu_list_data->List[i].str, MENU_TEXT_LENGTH);
}
FREE_MEMORY ((void *)data->menu_list_data->List,MAX_MESSAGES * sizeof(T_MFW_MNU_ITEM));
FREE_MEMORY ((UBYTE *)data->menu_list_data, sizeof(ListMenuData));
}
data->menu_list_data = NULL;
//FREE_MEMORY ((void *)data->sms_editor_data.sms_info, sizeof (T_MFW_SMS_PARA));
FREE_MEMORY ((void *)data, sizeof (T_SMSREAD_R));
total=0;
}
else
{
TRACE_EVENT ("SmsRead_R_destroy() called twice");
}
}
}
/*******************************************************************************
$Function: SmsRead_R_exec_cb
$Description: Exec callback function of the SMS read window (dynamic list of
all the SMS)
$Returns: none
$Arguments: win - window handler
event - mfw event
parameter - optional data.
*******************************************************************************/
void SmsRead_R_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
/* callback handler for events sent to to trigger execution */
{
T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data;
T_SMSREAD_R * data = (T_SMSREAD_R *)win_data->user;
T_SMS_LIST_DATA * list_data = &data->sms_list_data;
T_MFW_EVENT MfwEvents;
T_MFW_HND l_parent;
T_DISPLAY_DATA DisplayInfo;
// Status of SMS reading
T_MFW status;
char info[30];
int i;
TRACE_FUNCTION ("SmsRead_R_exec_cb()");
/* clrobert delete
sms_list_type = *(T_MFW_SMS_STAT *)parameter;
*/
switch( event )
{
case E_INIT:
/* initialization of administrative data */
info_win=0;
data->id = value;
data->menu_list_data = NULL;
if( (sms_list_type == MFW_SMS_MO)||(sms_list_type == MFW_SMS_MT) )
{
//NM 24.8
/* Verify that SMS handling has been correctly initialised */
/* we want to get the whole SMS list */
list_data->nb_sms_stored = sms_message_list(sms_list_type, list_data->sms_messages, MAX_MESSAGES);
if( list_data->nb_sms_stored > 0 )
{
// We want to read all the SMS
g_sms_state = READ_SMS_LIST;
/* global counter to decrement each time a message is read */
//g_sms_list_counter = 0;
ModifyMenuList=0;
/* Initialise counter for number of entries in sms list. used to call the correct no of FreeAllocs MZ 8/03/01 */
g_nb_line_sms =list_data->nb_sms_stored;
if( sms_list_type==MFW_SMS_MT )
{
SortSms(data->sms_list_data.nb_sms_stored ,data->sms_list_data.sms_messages);
}
SmsRead_R_BuildList(win,0);
//dspl_Clear(0, 128, 120, 142);/*2003/10/29, wangyan, fix bug*/
if( (data->sms_list_data.sms_messages[g_sms_list_counter].stat == MFW_SMS_UNREAD)
||(data->sms_list_data.sms_messages[g_sms_list_counter].stat == MFW_SMS_READ) )
{
memset(sms_list_time,0, sizeof(sms_list_time));
ChangeTime( (char *) sms_list_time,&data->sms_list_data.sms_messages[g_sms_list_counter].rctp);
ShowTime((char * )sms_list_time);
}
/* We have to handle E_SMS_MO and E_SMS_MT MFW events, in order to retrieve the SMS */
MfwEvents = E_SMS_MT | E_SMS_MO | E_SMS_MT_RECEIVED | E_SMS_MO_AVAIL|
E_SMS_ERR | E_SMS_OK | E_SMS_MEM_FREE | E_SMS_MEM_FULL;
data->sms_handle = sms_create(win,MfwEvents,(MfwCb)SmsRead_R_mfw_cb);
}
else
SmsRead_DisplayStandardDialog(win, TxtNoMessages, ONE_SECS);
}
else //if((sms_list_type == MFW_SMS_FLASH_MO)||(sms_list_type == MFW_SMS_FLASH_MT))
{
/* global counter to decrement each time a message is read */
//g_sms_list_counter = 0;
/* Initialise counter for number of entries in sms list. used to call the correct
no of FreeAllocs MZ 8/03/01 */
SortFlashSms(sms_list_type,Flash_sms_messages);
g_nb_line_sms =total;
if( g_nb_line_sms > 0 )
{
ModifyMenuList=0;
g_sms_state = READ_FLASH_SMS_LIST;
SmsRead_R_Flash_BuildList(win,0);
if( Flash_sms_messages[Flash_sms_sort_index[g_sms_list_counter].index].state == MFW_SMS_MT )
{
memset(sms_list_time,0, sizeof(sms_list_time));
ChangeTime( (char *) sms_list_time,&Flash_sms_messages[Flash_sms_sort_index[g_sms_list_counter].index].time);
ShowTime((char * )sms_list_time);
}
/* else
dspl_Clear(0, 128, 120, 142);*//*2003/12/5, wangyan modify*/
}
else
SmsRead_DisplayStandardDialog(win, TxtNoMessages, ONE_SECS);
}
break;
case E_RETURN:
MMI_TRACE_EVENT(("wangyan SmsRead_R_exec_cb E_RETURN type=%d",type));
/* Call the recreate function that will create and display a dynamic list from the list of SMS */
//l_parent = data->parent;
//SmsRead_R_destroy(win);
//SEND_EVENT(l_parent, E_RETURN, data->id, NULL);
MMI_TRACE_EVENT(("wangyan g_sms_fixed_state=%d ModifyMenuList=%d",g_sms_fixed_state,ModifyMenuList));
if( g_sms_fixed_state EQ READ_SELECTED_SMS )
{
g_sms_state = READ_SMS_LIST;
//data->menu_list_data->ListPosition=g_sms_list_counter+1;
//listDisplayListMenu(win, data->menu_list_data, (ListCbFunc_t)SmsRead_R_smslist_cb,0);
//list_win = data->menu_list_data->win;
sms_list_type=type;
// dspl_Clear(0, 128, 120, 142);/*2003/12/5, wangyan modify*/
if( type==MFW_SMS_MT )
{
ShowTime((char * )sms_list_time);
}
}
else if( g_sms_fixed_state EQ READ_SELECTED_FLASH_SMS )
{
if( ModifyMenuList==1 )
{
#if 1
listsDestroy(list_win);
list_win = 0;
if( data->menu_list_data->ListLength>0 )
{
if( g_sms_list_counter<data->menu_list_data->ListLength )
data->menu_list_data->ListPosition=g_sms_list_counter+1;
else
{
g_sms_list_counter=0;
data->menu_list_data->ListPosition=1;
}
listDisplayListMenu(data->win, data->menu_list_data, (ListCbFunc_t)SmsRead_R_smslist_cb,0);
list_win = data->menu_list_data->win;
g_sms_state = READ_FLASH_SMS_LIST;
//type=MFW_SMS_FLASH;
if( CurrentFlashSmsTable!=Flash_sms_sort_index[g_sms_list_counter].index/FlashSMS_table_len )
{
CurrentFlashSmsTable=Flash_sms_sort_index[g_sms_list_counter].index/FlashSMS_table_len;
flash_Smsread(FlashSMSTable[CurrentFlashSmsTable]);
}
i=Flash_sms_sort_index[g_sms_list_counter].index%FlashSMS_table_len;
//i=Find_Del_Table(Flash_sms_sort_index[g_sms_list_counter].id);
MMI_TRACE_EVENT(("wangyan listDisplayListMenu state=%d",FFS_SMSData.NVMSMS[i].state));
if( FFS_SMSData.NVMSMS[i].state == MFW_SMS_MT )
{
memset(sms_list_time,0, sizeof(sms_list_time));
ChangeTime( (char *) sms_list_time,&FFS_SMSData.NVMSMS[i].time);
ShowTime((char * )sms_list_time);
}
/*else
dspl_Clear(0, 128, 120, 142);*//*2003/12/5, wangyan modify*/
}
else
SmsRead_R_destroy(data->win);
if( info_win )
{
SEND_EVENT(info_win,DIALOG_DESTROY,0,0 );
info_win = 0;
}
#endif
}
else
{
g_sms_state = READ_FLASH_SMS_LIST;
//dspl_Clear(0, 128, 120, 142);/*2003/12/5, wangyan modify*/
if( type==MFW_SMS_FLASH_MT )
{
ShowTime((char * )sms_list_time);
}
}
}
break;
case E_BACK:
/* Received an E_BACK event from the dynamic list --> suicide and E_RETURN to parent */
#if 0
SmsRead_R_destroy(win);
sprintf(buf,">>>> E_BACK,sms_list_type=%d",sms_list_type);
TRACE_EVENT(buf);
sprintf(buf,">>>> E_BACK,sms_fixed_list_type=%d",sms_fixed_list_type);
TRACE_EVENT(buf);
sms_list_type=sms_fixed_list_type;
SmsRead_R_start(NULL, (T_MFW_SMS_STAT*)&sms_list_type);
#endif
l_parent = data->parent;
SmsRead_R_destroy(win);
SEND_EVENT(l_parent, E_RETURN, data->id, NULL);
break;
case E_EXIT: // Terminate exit from sms send...
//listDisplayListMenu(win, data->menu_list_data, (ListCbFunc_t)SmsRead_R_smslist_cb,0);
l_parent = data->parent;
SmsRead_R_destroy(win);
SEND_EVENT(l_parent, E_RETURN, data->id, NULL);
//edtShow(data->list_editor);
break;
default:
break;
}
}
/*******************************************************************************
$Function: SmsRead_R_win_cb
$Description: Window callback function of the SMS read window (dynamic list of
all the SMS)
$Returns: none
$Arguments: w - mfw window handler
e - mfw event
*******************************************************************************/
static int SmsRead_R_win_cb (MfwEvt e, MfwWin *w) /* yyy window event handler */
{
TRACE_FUNCTION ("SmsRead_R_win_cb()");
switch( e )
{
case MfwWinVisible: /* window is visible */
break;
case MfwWinFocussed: /* input focus / selected */
case MfwWinDelete: /* window will be deleted */
default:
return MFW_EVENT_REJECTED;
}
return MFW_EVENT_CONSUMED;
}
/*******************************************************************************
$Function: SmsRead_R_mfw_cb
$Description: MFW callback function of the SMS read window (dynamic list of all the SMS).
Only interesting events for reading are handled here
$Returns: event status
$Arguments: parameter - optional data
event - mfw event
*******************************************************************************/
int SmsRead_R_mfw_cb(MfwEvt event, void *parameter)
{
T_MFW_HND win = mfwPare
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -