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

📄 mmimmsdeleteall.c

📁 是一个手机功能的模拟程序
💻 C
字号:
#ifdef _MMS_ENABLE_

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

#if defined (NEW_FRAME)
#include "typedefs.h"
#include "vsi.h"
#include "pei.h"
#include "custom.h"
#include "gsm.h"
#else
#include "stddefs.h"
#include "custom.h"
#include "gsm.h"
#include "vsi.h"
#endif

#include "p_sim.h"
#include "mfw_mfw.h"
#include "mfw_win.h"
#include "mfw_edt.h"
#include "mfw_tim.h"
#include "mfw_phb.h"
#include "ksd.h"
#include "psa.h"
#include "mfw_sms.h"
#include "mfw_smsi.h"
#include "mfw_icn.h"
#include "mfw_mnu.h"
#include "mfw_lng.h"
#include "mfw_sat.h"
#include "mfw_kbd.h"
#include "mfw_nm.h"


#include "dspl.h"
#include "MmiMain.h"
#include "MmiDummy.h"
#include "MmiMmi.h"

#include "MmiDialogs.h"
#include "MmiLists.h"
#include "MmiMenu.h"
#include "MmiSoftKeys.h"
#include "MmiEditor.h"

//begin xie
#include "mmimms_cfg.h"
#include "mmibookshared.h"
#include "MmiSmsIdle.h"
#include "mmiMMSffs.h"  //add by xie 04-07-08
#include "mmiMMSDeleteAll.h"
#include "mmiMMSGlobalDef.h"
#include "mmimms_cfg.h"  //#include "Mmiutilapi.h"  //modified by xie 04-07-12 
//#include "mmiMMSNew.h"
//end xie

MMS_PARA_SETTING_STATE  stateDelAll          = MMS_PARAM_OFF,
                        stateDelSendFolder   = MMS_PARAM_OFF,
                        stateDelRecvFolder   = MMS_PARAM_OFF,
                        stateDelDraftFolder  = MMS_PARAM_OFF,
						stateDelSentFolder   = MMS_PARAM_OFF;

typedef struct
{
    /* administrative data */	
    T_MMI_CONTROL   mmi_control;
    T_MFW_HND       win;
    T_MFW_HND       parent;	
    /* associated handlers */	
    T_MFW_HND       kbd;
    T_MFW_HND       kbd_long;
    T_MFW_HND       menu;
	
	//begin feng
	T_MFW_HND       info_win;
	//end feng
}T_MMS_DELETE_ALL_OPT;

static int MMS_DeleteAll_Opt_win_cb(MfwEvt e, MfwWin *w);
static int MMS_DeleteAll_Opt_mnu_cb ( MfwEvt e, MfwMnu *m );
static int MMS_DeleteAll_Opt_kbd_cb(MfwEvt e, MfwKbd *k);
static void MMS_DeleteAll_Opt_dialog(T_MFW_HND win, USHORT event, SHORT value, void * parameter);
static void MMS_DeleteAll_Opt_destroy(T_MFW_HND win);
static T_MFW_HND MMS_DeleteAll_Opt_create(T_MFW_HND parent_window);
static T_MFW_HND MMS_DeleteAll_Opt_start(MfwHnd parent_window , MfwMnuAttr *menuAttr);

static void MMS_DeleteAll_InforDialog (T_MFW_HND win);
static int MMS_DeleteAll_InforDialog_cb(T_MFW_HND win,USHORT identifier, UBYTE reason);

int MMS_Menu_Delete_All      (MfwMnu* m, MfwMnuItem* i)
{
	T_MFW_HND    win  = mfwParent(mfw_header());
	MMS_TRACE_FUNCTION("MMS_Menu_Delete_All");
	MMS_DeleteAll_Opt_start(win,(MfwMnuAttr *)MMSDeleteAllOptionMenuAttributes());
}

static T_MFW_HND MMS_DeleteAll_Opt_start(MfwHnd parent_window , MfwMnuAttr *menuAttr)
{
    T_MFW_HND win;	
	MMS_TRACE_FUNCTION("MMS_DeleteAll_Opt_start");
    win = MMS_DeleteAll_Opt_create (parent_window);	
    if( win NEQ NULL )
    {
        SEND_EVENT (win, E_INIT, NULL, (void *)menuAttr);
    }
    return win;
}

static T_MFW_HND MMS_DeleteAll_Opt_create(T_MFW_HND parent_window)
{
	T_MMS_DELETE_ALL_OPT      * data = (T_MMS_DELETE_ALL_OPT *)ALLOC_MEMORY (sizeof (T_MMS_DELETE_ALL_OPT));
    T_MFW_WIN  * win;
	
	MMS_TRACE_FUNCTION("MMS_DeleteAll_Opt_create");
    data->win = win_create (parent_window, 0, E_WIN_VISIBLE, (T_MFW_CB)MMS_DeleteAll_Opt_win_cb);
    if( data->win EQ NULL )
    {
        return NULL;
    }
    /* 
	* connect the dialog data to the MFW-window
	*/	
    data->mmi_control.dialog = (T_DIALOG_FUNC)MMS_DeleteAll_Opt_dialog;
    data->mmi_control.data   = data;
    win                      = ((T_MFW_HDR *)data->win)->data;
    win->user                = (void *)data;
    data->parent             = parent_window;

    return data->win;
}

static void MMS_DeleteAll_Opt_destroy(T_MFW_HND win)
{
    T_MFW_WIN              * win_data;
    T_MMS_DELETE_ALL_OPT     * data;

	stateDelAll          = MMS_PARAM_OFF,
	stateDelSendFolder   = MMS_PARAM_OFF,
	stateDelRecvFolder   = MMS_PARAM_OFF,
	stateDelDraftFolder  = MMS_PARAM_OFF,
	stateDelSentFolder   = MMS_PARAM_OFF;

	MMS_TRACE_FUNCTION("MMS_DeleteAll_Opt_destroy");
    if(win)
    {
        win_data = ((T_MFW_HDR *)win)->data;
        data = (T_MMS_DELETE_ALL_OPT *)win_data->user;

        if(data->info_win)
	    	win_delete (data->info_win);

        if( data )
        {
            win_delete (data->win);
            FREE_MEMORY ((void *)data, sizeof (T_MMS_DELETE_ALL_OPT));
        }
        else
        {
            MMS_TRACE_EVENT((" "));
        }
    }
}

static void MMS_DeleteAll_Opt_dialog(T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
	T_MFW_WIN        * win_data = ((T_MFW_HDR *) win)->data;
    T_MMS_DELETE_ALL_OPT  * data     = (T_MMS_DELETE_ALL_OPT *)win_data->user;
    T_MFW_HDR    * parent      =  data->parent;
    char * title;
	
	MMS_TRACE_FUNCTION("MMS_DeleteAll_Opt_dialog");
    switch( event )
    {
    case E_INIT:
        /* initialization of administrative data */        
        data->kbd =      kbdCreate(data->win,KEY_ALL,         (MfwCb)MMS_DeleteAll_Opt_kbd_cb);
        data->kbd_long = kbdCreate(data->win,KEY_ALL|KEY_LONG,(MfwCb)MMS_DeleteAll_Opt_kbd_cb);
        title = (char *) MmiRsrcGetText(TxtMMSDeleteAll);  // get the editor title text

        data->menu = mnuListCreate(data->win,(MfwMnuAttr*)parameter, E_MNU_ESCAPE, (MfwCb)MMS_DeleteAll_Opt_mnu_cb,title);
        mnuLang(data->menu,mainMmiLng);
        /* put the (new) dialog window on top of the window stack */
        mnuUnhide(data->menu);
        winShow(win);
        break;
    default:
        return;
    }
}

static int MMS_DeleteAll_Opt_kbd_cb(MfwEvt e, MfwKbd *k)
{
    T_MFW_HND    win  = mfwParent(mfw_header());
    T_MFW_WIN  * win_data = ((T_MFW_HDR *)win)->data;
    T_MMS_DELETE_ALL_OPT      * data = (T_MMS_DELETE_ALL_OPT *)win_data->user;
	P_MMS mms = getMMS();
	MMS_TRACE_FUNCTION("MMS_DeleteAll_Opt_kbd_cb");
    if( e & KEY_LONG )
    {
        switch( k->code )
        {
        case KCD_HUP: /* back to previous menu */ 			
/*			if(mms->manager)
			{
			    MMS_Codec_Destory();
				manager_on_destroy();
				mms->manager = NULL;
			}
			*/

            returntoidle(0);
            //mnuEscape(data->menu);
            break;
        case KCD_RIGHT: /* Power Down */
            return MFW_EVENT_REJECTED; /* handled by idle */
        default: /* no response to all other keys */
            return MFW_EVENT_CONSUMED;
        }
    }
    else
    {
        switch( k->code )
        {
        case KCD_MNUUP: /* highlight previous entry */
            mnuUp(data->menu);
            break;
        case KCD_MNUDOWN: /* highlight next entry */
            mnuDown(data->menu);
            break;
        case KCD_LEFT: /* activate this entry */
        case KCD_OK:
            mnuSelect(data->menu);
            break;
        case KCD_HUP: /* back to previous menu */
	/*		if(mms->manager)
			{
				MMS_Codec_Destory();
				manager_on_destroy();
				mms->manager = NULL;
			}
			*/

            returntoidle(0);
            break;
        case KCD_RIGHT: /* back to previous menu */
            mnuEscape(data->menu);
            break;
        default: /* no response to all other keys */
            return MFW_EVENT_CONSUMED;
        }
    }
    return MFW_EVENT_CONSUMED;//when change to MFW_EVENT_REJECTED,deleting string will lead to collapsed.
}

static int MMS_DeleteAll_Opt_mnu_cb ( MfwEvt e, MfwMnu *m )
{ 
	T_MFW_HND    win  = mfwParent(mfw_header());
    T_MFW_WIN  * win_data = ((T_MFW_HDR *)win)->data;
    T_MMS_DELETE_ALL_OPT      * data = (T_MMS_DELETE_ALL_OPT *)win_data->user;
	MMS_TRACE_FUNCTION("MMS_DeleteAll_Opt_mnu_cb");
    switch( e )
    {
    case E_MNU_ESCAPE: /* back to previous menu */
		if(
			MMS_PARAM_OFF==stateDelSendFolder   &&
		    MMS_PARAM_OFF==stateDelRecvFolder   &&
		    MMS_PARAM_OFF==stateDelDraftFolder  &&
		    MMS_PARAM_OFF==stateDelSentFolder   &&
		    MMS_PARAM_OFF==stateDelAll )
		{
			MMS_DeleteAll_Opt_destroy(data->win);
		}
		else
		{
			MMS_DeleteAll_InforDialog(data->win);
		}
        break;
    default: /* in mnuCreate() only E_MNU_ESCAPE has been enabled! */
        return MFW_EVENT_REJECTED;
    }
    return MFW_EVENT_CONSUMED;
}

static int MMS_DeleteAll_Opt_win_cb(MfwEvt e, MfwWin *w)
{
	MMS_TRACE_FUNCTION("MMS_DeleteAll_Opt_win_cb");
    switch( e )
    {
    case MfwWinVisible:  /* window is visible  */
        dspl_ClearAll();
		if(
			MMS_PARAM_OFF==stateDelSendFolder   &&
			MMS_PARAM_OFF==stateDelRecvFolder   &&
			MMS_PARAM_OFF==stateDelDraftFolder  &&
			MMS_PARAM_OFF==stateDelSentFolder   &&
			MMS_PARAM_OFF==stateDelAll )
		{
			displaySoftKeys(TxtSoftSelect,TxtSoftBack);
		}
		else
            displaySoftKeys(TxtSoftSelect,TxtSoftConfirm);
        break;
    case MfwWinFocussed: /* input focus / selected   */
    case MfwWinDelete:   /* window will be deleted   */
    default:
        return MFW_EVENT_REJECTED;
    }
    return MFW_EVENT_CONSUMED;
}

static void MMS_DeleteAll_InforDialog (T_MFW_HND win)
{
	T_MFW_WIN              * win_data;
    T_MMS_DELETE_ALL_OPT     * data;
	T_DISPLAY_DATA   display_info;
	MMS_TRACE_FUNCTION("MMS_DeleteAll_InforDialog");
    if(win)
    {
        win_data = ((T_MFW_HDR *)win)->data;
        data = (T_MMS_DELETE_ALL_OPT *)win_data->user;
		
		dialog_info_init(&display_info);
		display_info.LeftSoftKey  = TxtSoftOK;
		display_info.RightSoftKey = TxtCancel;//TxtSoftBack;
		display_info.TextId2       = TxtMMSDelAllMsg;//TxtCFCancelAffirm;
		display_info.TextId      = '\0';
		display_info.TextString   = '\0';
		display_info.TextString2   = '\0';
		display_info.Time         = FOREVER;
		display_info.iconindex=REMIND_REQUIRE; 
		display_info.Callback     = (T_VOID_FUNC)MMS_DeleteAll_InforDialog_cb;
		display_info.KeyEvents    = KEY_HUP | KEY_LEFT | KEY_RIGHT;
		
		data->info_win=info_dialog(data->win, &display_info);
	}
	return;
}

static int MMS_DeleteAll_InforDialog_cb(T_MFW_HND win,USHORT identifier, UBYTE reason)
{
	T_MFW_WIN              * win_data;
    T_MMS_DELETE_ALL_OPT     * data;
	pMessage	pMsg;
	P_MMS		mms = getMMS();	
	
	win_data = ((T_MFW_HDR *)win)->data;
    data = (T_MMS_DELETE_ALL_OPT *)win_data->user;
	MMS_TRACE_FUNCTION("MMS_DeleteAll_InforDialog_cb");
	switch(reason)
	{
	case INFO_KCD_LEFT:
		if(stateDelAll == MMS_PARAM_ON)
		{
			manager_on_deleteall(mms->manager->unsendfolder);
			manager_on_deleteall(mms->manager->receivefolder);
			manager_on_deleteall(mms->manager->draftfolder);
			manager_on_deleteall(mms->manager->sendfolder);
			manager_on_store(); //add by xie 04-07-13
			MMS_TRACE_EVENT(("MMS_info_cb  stateDelAll == MMS_PARAM_ON"));
			MMS_TRACE_EVENT((" "));
			MMS_TRACE_EVENT((" "));
		}
		
		if(stateDelSendFolder == MMS_PARAM_ON)
		{
			manager_on_deleteall(mms->manager->unsendfolder);
			//manager_on_store();  //add by xie 04-07-13
			storemessagefolder(mms->manager->unsendfolder);//modified by xie 04-08-05
			MMS_TRACE_EVENT(("MMS_info_cb  stateDelSendFolder == MMS_PARAM_ON"));
			MMS_TRACE_EVENT((" "));
			MMS_TRACE_EVENT((" "));
		}
		
		if(stateDelRecvFolder  == MMS_PARAM_ON)
		{
			manager_on_deleteall(mms->manager->receivefolder);
			//manager_on_store();  //add by xie 04-07-13
			storemessagefolder(mms->manager->receivefolder);//modified by xie 04-08-05
			MMS_TRACE_EVENT(("MMS_info_cb  stateDelRecvFolder  == MMS_PARAM_ON"));
			MMS_TRACE_EVENT((" "));
			MMS_TRACE_EVENT((" "));
		}
		
		if(stateDelDraftFolder == MMS_PARAM_ON)
		{
			manager_on_deleteall(mms->manager->draftfolder);
			//manager_on_store();  //add by xie 04-07-13
			storemessagefolder(mms->manager->draftfolder);//modified by xie 04-08-05
			MMS_TRACE_EVENT(("MMS_info_cb  stateDelSendFolder == MMS_PARAM_ON"));
			MMS_TRACE_EVENT((" "));
			MMS_TRACE_EVENT((" "));
		}
		
		if(stateDelSentFolder  == MMS_PARAM_ON)
		{
			manager_on_deleteall(mms->manager->sendfolder);
			//manager_on_store();  //add by xie 04-07-13
			storemessagefolder(mms->manager->sendfolder);//modified by xie 04-08-05
			MMS_TRACE_EVENT(("MMS_info_cb  stateDelSentFolder == MMS_PARAM_ON"));
			MMS_TRACE_EVENT((" "));
			MMS_TRACE_EVENT((" "));
		}		
		MMS_DeleteAll_Opt_destroy(data->win);
		break;
	case INFO_KCD_RIGHT:
		MMS_DeleteAll_Opt_destroy(data->win);
		break;
	case INFO_KCD_HUP: /* back to previous menu */
		/*if(mms->manager)
		{
			MMS_Codec_Destory();
			manager_on_destroy();
			mms->manager = NULL;
		}*/

		if( returntoidle(0) )
			break;
	default:
		break;
	}
	
}

int MMS_Del_All_OnOff        (MfwMnu* m, MfwMnuItem* i)
{	
	T_MFW_HND    win  = mfwParent(mfw_header());
    stateDelAll = ((stateDelAll==MMS_PARAM_OFF)?MMS_PARAM_ON:MMS_PARAM_OFF);
	MMS_TRACE_FUNCTION("MMS_Del_All_OnOff");
	if(stateDelAll == MMS_PARAM_ON)
	{
		stateDelSendFolder   = MMS_PARAM_OFF,
		stateDelRecvFolder   = MMS_PARAM_OFF,
		stateDelDraftFolder  = MMS_PARAM_OFF,
		stateDelSentFolder   = MMS_PARAM_OFF;
	}
    mnuUpdate(m); 
	winShow(win);
}

int MMS_Del_SendFolder_OnOff (MfwMnu* m, MfwMnuItem* i)
{
	T_MFW_HND    win  = mfwParent(mfw_header());
	MMS_TRACE_FUNCTION("MMS_Del_SendFolder_OnOff");
	if(stateDelAll == MMS_PARAM_OFF)
	{
		stateDelSendFolder = ((stateDelSendFolder==MMS_PARAM_OFF)?MMS_PARAM_ON:MMS_PARAM_OFF);
		mnuUpdate(m); 
		winShow(win);
	}
}
int MMS_Del_RecvFolder_OnOff (MfwMnu* m, MfwMnuItem* i)
{
	T_MFW_HND    win  = mfwParent(mfw_header());
	MMS_TRACE_FUNCTION("MMS_Del_RecvFolder_OnOff");
	if(stateDelAll == MMS_PARAM_OFF)
	{
		stateDelRecvFolder = ((stateDelRecvFolder==MMS_PARAM_OFF)?MMS_PARAM_ON:MMS_PARAM_OFF);
		mnuUpdate(m);  
		winShow(win);
	}  
}

int MMS_Del_DraftFolder_OnOff(MfwMnu* m, MfwMnuItem* i)
{
	T_MFW_HND    win  = mfwParent(mfw_header());
	MMS_TRACE_FUNCTION("MMS_Del_DraftFolder_OnOff");
	if(stateDelAll == MMS_PARAM_OFF)
	{
		stateDelDraftFolder = ((stateDelDraftFolder==MMS_PARAM_OFF)?MMS_PARAM_ON:MMS_PARAM_OFF);
		mnuUpdate(m);
		winShow(win);
	}  
}

int MMS_Del_SentFolder_OnOff (MfwMnu* m, MfwMnuItem* i)
{
	T_MFW_HND    win  = mfwParent(mfw_header());
	MMS_TRACE_FUNCTION("MMS_Del_SentFolder_OnOff");
	if(stateDelAll == MMS_PARAM_OFF)
	{
		stateDelSentFolder = ((stateDelSentFolder==MMS_PARAM_OFF)?MMS_PARAM_ON:MMS_PARAM_OFF);
		mnuUpdate(m);
		winShow(win);
	}  
}

USHORT MMS_Del_flagFunc( struct MfwMnuTag *m, struct MfwMnuAttrTag *ma, struct MfwMnuItemTag *mi )
{
    if(
		((int)mi->str == TxtMMSDelAll         && stateDelAll         == MMS_PARAM_ON)||
        ((int)mi->str == TxtMMSDelSendFolder  && stateDelSendFolder  == MMS_PARAM_ON)||
		((int)mi->str == TxtMMSDelRecvFolder  && stateDelRecvFolder  == MMS_PARAM_ON)||
		((int)mi->str == TxtMMSDelDraftFolder && stateDelDraftFolder == MMS_PARAM_ON)||
		((int)mi->str == TxtMMSDelSentFolder  && stateDelSentFolder  == MMS_PARAM_ON)
      )                     
	{
		return FLAGFUNC_TRUE_ICON;
	}
	else 
	    return FLAGFUNC_FALSE_ICON;
}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -