📄 mmismsread.c
字号:
{
0,
&SmsRead_R_OPTArea,
MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */
-1, /* use default font */
SmsRead_FST_OPTItems, /* with these items */
sizeof(SmsRead_FST_OPTItems)/sizeof(MfwMnuItem) /* number of items */
};
static MfwMnuItem SmsRead_FSO_OPTItems [] =
{
{(MfwIcnAttr *)&colist,0,0,(char *)TxtForward,0,(MenuFunc)SmsRead_R_OPTExeForward,item_flag_none},
{(MfwIcnAttr *)&colist,0,0,(char *)TxtDelete,0,(MenuFunc)SmsRead_R_OPTExeDelete,item_flag_none}
};
static MfwMnuAttr SmsRead_FSO_OPTAttrib =
{
0,
&SmsRead_R_OPTArea,
MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */
-1, /* use default font */
SmsRead_FSO_OPTItems, /* with these items */
sizeof(SmsRead_FSO_OPTItems)/sizeof(MfwMnuItem) /* number of items */
};
static MfwMnuItem SmsRead_RO_OPTItems [] =
{
{(MfwIcnAttr *)&colist,0,0,(char *)TxtForward,0,(MenuFunc)SmsRead_R_OPTExeForward,item_flag_none},
{(MfwIcnAttr *)&colist,0,0,(char *)TxtDelete,0,(MenuFunc)SmsRead_R_OPTExeDelete,item_flag_none},
{(MfwIcnAttr *)&colist,0,0,(char *)TxtSaveToNVM,0,(MenuFunc)SmsRead_R_OPTExeToNVM,item_flag_none}
};
static MfwMnuAttr SmsRead_RO_OPTAttrib =
{
0,
&SmsRead_R_OPTArea,
MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */
-1, /* use default font */
SmsRead_RO_OPTItems, /* with these items */
sizeof(SmsRead_RO_OPTItems)/sizeof(MfwMnuItem) /* number of items */
};
static MfwMnuItem SmsRead_R_OPTInvalidItems [] =
{
{(MfwIcnAttr *)&colist,0,0,(char *)TxtDelete,0,(MenuFunc)SmsRead_R_OPTExeDelete,item_flag_none}
};
static MfwMnuAttr SmsRead_R_OPTInvalidAttrib =
{
0,
&SmsRead_R_OPTArea,
MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */
-1, /* use default font */
SmsRead_R_OPTInvalidItems, /* with these items */
sizeof(SmsRead_R_OPTInvalidItems)/sizeof(MfwMnuItem) /* number of items */
};
SHORT g_sms_list_counter=0;
static SHORT g_nb_line_sms;
static T_MFW_HND info_win=0;
static T_MFW_HND deleting_win = 0;
static T_MFW_HND list_win=0;
/* R is the identifier used for the function of the Read menu window */
static T_MFW_HND SmsRead_R_create (T_MFW_HND parent);
static void SmsRead_R_destroy (T_MFW_HND window);
static void SmsRead_R_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter);
static int SmsRead_R_win_cb (MfwEvt e, MfwWin *w);
static int SmsRead_R_mfw_cb(MfwEvt event, void *parameter);
static int SmsRead_R_dialog_cb(T_MFW_HND win, USHORT Identifier, USHORT Reason);
static void SmsRead_R_smslist_cb(T_MFW_HND * Parent, ListMenuData * ListData);
static void SmsRead_R_BuildList(T_MFW_HND win,int inUnicode);
void SmsRead_R_Flash_BuildList(T_MFW_HND win, int inUnicode);
// Fill an unicode structure for display
void string_CopyW2W(wstring_t *strDestination, charw_t *strSource, USHORT count );
static T_MFW_HND SmsRead_R_TEXTEDT_create (T_MFW_HND parent);
static void SmsRead_R_TEXTEDT_destroy (T_MFW_HND window);
static void SmsRead_R_TEXTEDT_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter);
static int SmsRead_R_TEXTEDT_win_cb (MfwEvt e, MfwWin *w);
static void SmsRead_R_TEXTEDT_editor_cb(T_MFW_HND win, USHORT Identifier, USHORT Reason);
static T_MFW_HND SmsRead_R_TEXTEDT2_create (T_MFW_HND parent);
static void SmsRead_R_TEXTEDT2_destroy (T_MFW_HND window);
static void SmsRead_R_TEXTEDT2_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter);
static int SmsRead_R_TEXTEDT2_win_cb (MfwEvt e, MfwWin *w);
static void SmsRead_R_TEXTEDT2_editor_cb(T_MFW_HND win, USHORT Identifier, USHORT Reason);
static void SmsRead_R_TEXTEDT2_smslist_cb(T_MFW_HND * Parent, ListMenuData * ListData);
int SmsRead_R_KINDExeIncoming(MfwMnu* m, MfwMnuItem* i);
int SmsRead_R_KINDExeOutgoing(MfwMnu* m, MfwMnuItem* i);
int FlashSMS_DEL_OPT_dialog_cb(T_MFW_HND win, USHORT Identifier, USHORT Reason);
void FLASH_Sms_DELETED_Dialog(T_MFW_HND win, int TextId, ULONG duration);
int FLASH_Sms_DELETED_dialog_cb(T_MFW_HND win, USHORT Identifier, USHORT Reason);
int FlashSMS_DEL_OPT_dialog_cb(T_MFW_HND win, USHORT Identifier, USHORT Reason);
// Added new dialog for searching for numbers in SMS message.
static T_MFW_HND smsRead_NumberName_info_screen(T_MFW_HND parent_window, T_SmsUserData *UserData,char* name);
UBYTE check_assoc_name(char *name, T_MFW_SMS_ADDR sms_addr);
char sms_text_ascii[MAX_MSG_LEN+3];//[MAX_LISTSMS_LEN];
char sms_readtext[MAX_MSG_LEN+3];
char sms_text_buffer[MAX_LISTSMS_LEN+3];
MfwEdtAttr sms_editor_attr;
/* we need this variable "read_status" to know which sms message we are going
to edit (user pressed in the sms menu-> EDIT)
because SMS_MT & SMS_MO have different size of character
(current length saved in "current_sms_len") !!
SMS_MT includes additional TIME, DATE and NUMBER and we dont want
to show it when we are editing.
*/
//static UBYTE read_status;
static USHORT current_sms_len= 0;
static T_SmsUserData SmsData;
char buf[MAX_EDITOR_LEN];
//char indexsms[5];
static T_MFW_SMS_STAT sms_list_type;
static T_MFW_SMS_MO MO;
static T_MFW_SMS_MT MT;
static char sms_list_time[30];
static int type;
//int type;/* 2004/4/20, wangyan modify */
static int ModifyMenuList=0;
static BOOL Search_forNextNumber(T_SmsUserData *UserData);
int ComTime(UINT16 y1,UINT16 m1,UINT16 d1,UINT16 h1,UINT16 mi1,
UINT16 y2,UINT16 m2,UINT16 d2,UINT16 h2,UINT16 mi2);
void SortSms(SHORT l_found,T_MFW_SMS_MSG * msg_list) ;
int Flash_sms_delete(SHORT index,ListMenuData *menu_list_data);
int Moveup_Flash_sms(SHORT index,ListMenuData *menu_list_data);
extern UINT8 g_pcsyncstatus ;//hxl add ,if pcsync run ,return,2003-2-13
int SmsDel_Useless_dialog_cb(T_MFW_HND win, USHORT Identifier, USHORT Reason);
int Moveup_List_sms(SHORT index,T_SMS_LIST_DATA * list_data,ListMenuData *menu_list_data);
extern unsigned char no_wait;
#define TIME_THREESEC 3000//every 6 seconds read SMS PBK state
static MfwHnd smsphkchecktimer; /* clock via software timer */
/*******************************************************************************
$Function: charPtrToUBYTEPtr
$Description: Converts a char ptr to a UBYTE ptr. The procedures can be replaced by macro
once all conversions are confirmed as valid.
$Returns: data set to new type
$Arguments: data -data item of input type.
*******************************************************************************/
#ifndef MMI_USE_MACROS
UBYTE charToUBYTE ( char chr ) { return((UBYTE)chr);}
UBYTE* charPtrToUBYTEPtr ( char *ptr ) { return((UBYTE*)ptr);}
UBYTE SHORTToUBYTE ( SHORT data ) { return((UBYTE)data);}
char UBYTEToChar ( UBYTE data) { return((char)data);}
char* UBYTEPtrToCharPtr ( UBYTE* data) { return((char*)data);}
char* USHORTPtrToCharPtr ( USHORT* data) { return((char*)data);}
USHORT charToUSHORT ( char chr ) { return((USHORT)chr);}
USHORT UBYTEToUSHORT ( UBYTE data) { return((USHORT)data);}
USHORT* charPtrToUSHORTPtr (char* data) { return((USHORT*)data);}
#else
#define charToUBYTE (UBYTE)
#define charPtrToUBYTEPtr (UBYTE*)
#define SHORTToUBYTE (UBYTE)
#define UBYTEPtrToCharPtr (char*)
#define UBYTEToChar (char)
#define USHORTPtrToCharPtr (char*)
#define charToUSHORT (USHORT)
#define UBYTEToUSHORT (USHORT)
#define charPtrToUSHORTPtr (USHORT*)
#endif
T_MMI_FLASH_SORT_INDEX Flash_sms_sort_index[FLSAH_SMS_NUM];
int total=0;
FlashSms * tmp_flash;
/*******************************************************************************
$Function: smsphkchecktimeEvent
$Description: times event clock
$Returns: none.
$Arguments:
*******************************************************************************/
static int smsphkchecktimeEvent (MfwEvt e, MfwTim *t)
{
static int wait=2;/**/
if( no_wait )
{
if( (bookPhoneBookLoading()==BOOK_SUCCESS) && smsidle_get_ready_state() )
{
if( wait )
{
timStart(smsphkchecktimer);
wait--;
}
else
{
timStop(smsphkchecktimer);
timDelete(smsphkchecktimer);
smsphkchecktimer=0;
//yq added for set phbwaitflag
no_wait=0;
if( info_win )
{
SEND_EVENT(info_win,DIALOG_DESTROY,0,0 );
info_win = 0;
}
SmsRead_R_start(NULL,(T_MFW_SMS_STAT*) &sms_list_type);
}
}
else
timStart(smsphkchecktimer);
}
else
{
timStop(smsphkchecktimer);
timDelete(smsphkchecktimer);
smsphkchecktimer=0;
if( info_win )
{
SEND_EVENT(info_win,DIALOG_DESTROY,0,0 );
info_win = 0;
}
SmsRead_R_start(NULL,(T_MFW_SMS_STAT*) &sms_list_type);
}
return 1;
}
/*******************************************************************************
$Function: Moveup_List_sms
$Description: move flash sms up
$Returns: if success return 1 else return 0
$Arguments:
*******************************************************************************/
int Moveup_List_sms(SHORT index,T_SMS_LIST_DATA * list_data,ListMenuData *menu_list_data)
{
SHORT i=index,Count;
TRACE_FUNCTION ("Moveup_List_sms()");
Count = list_data->nb_sms_stored;
sprintf(buf,">>>> ,list_data->nb_sms_stored=%d",list_data->nb_sms_stored);
TRACE_EVENT(buf);
/* Move the list data up one. */
while( i < Count-1 ) //c005 rsa avoid copying from behind the array
{
list_data->sms_messages[i] = list_data->sms_messages[i+1] ;
memcpy(menu_list_data->List[i].str,menu_list_data->List[i+1].str,MENU_TEXT_LENGTH);
menu_list_data->List[i].icon=menu_list_data->List[i+1].icon;
i++;
}
//list_data->nb_sms_stored--;
g_nb_line_sms =list_data->nb_sms_stored-1;
return MFW_SMS_OK;
}
/*******************************************************************************
$Function: Find_avail
$Description: find available flash sms table location
$Returns: if success return location else return 0
$Arguments:
*******************************************************************************/
int Find_avail()
{
int i,j=0,k=-1;
TRACE_FUNCTION ("Find_avail()");
/*first find the available item in current table */
for( i=0;i<FlashSMS_table_len;i++ )
{
if( Flash_sms_messages[CurrentFlashSmsTable*FlashSMS_table_len+i].flag==FALSE )
{
k=i;
break;
}
}
if( k!=-1 )
/*if find one return the index*/
return k;
else
{
for( i=0;i<FLSAH_SMS_NUM;i++ )
if( Flash_sms_messages[i].flag==FALSE )
{
k=i;
break;
}
CurrentFlashSmsTable=k/FlashSMS_table_len;
flash_Smsread(FlashSMSTable[CurrentFlashSmsTable]);
/*if find one return the index*/
return(k%FlashSMS_Table);
}
}
/*******************************************************************************
$Function: Find_Del_Table
$Description: find which table has the right id sms
$Returns: if success return location else return 0
$Arguments:
*******************************************************************************/
int Find_Del_Table(UBYTE id)
{
int i,j=0,k=-1;
TRACE_FUNCTION ("Find_Del_Table()");
for( i=0;i<FlashSMS_table_len;i++ )
if( Flash_sms_messages[CurrentFlashSmsTable*FlashSMS_table_len+i].id==id )
{
k=i;
break;
//return i;
}
if( k!=-1 )
return k;
else
{
for( j=0;((j<FlashSMS_Table)&&(j !=CurrentFlashSmsTable));j++ )//
{
for( i=0;i<FlashSMS_table_len;i++ )
if( Flash_sms_messages[j*FlashSMS_table_len+i].id==id )
{
k=i;
//return i;
sprintf(buf,">>>> ,Find_CurrentFlashSmsTable=%d,i=%d",CurrentFlashSmsTable,i);
TRACE_EVENT(buf);
break;
}
if( k!=-1 )
break;
}
flash_Smsread(FlashSMSTable[j]);
CurrentFlashSmsTable=j;
return k;
}
}
/*******************************************************************************
$Function: FreshTableId
$Description: Fresh every item's id for deleted one
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -