⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmismsread.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
    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 + -