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

📄 mmismsbroadcast.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
	return 1;
}



/*******************************************************************************

 $Function:    	smscb_M_CB_start

 $Description:	

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
T_MFW_HND smscb_M_CB_start(T_MFW_HND parent_window, void *dummy)
{
    T_MFW_HND win;

    TRACE_FUNCTION ("smscb_M_CB_start()");

    win = smscb_M_CB_create (parent_window);

    if (win NEQ NULL)
	{
	    SEND_EVENT (win, E_INIT, smscb_M_CB_ID, NULL);
	}
    return win;
}

/*******************************************************************************

 $Function:    	smscb_M_CB_create

 $Description:	

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
static T_MFW_HND smscb_M_CB_create(MfwHnd parent_window)
{
    T_M_CB      * data = (T_M_CB *)ALLOC_MEMORY (sizeof (T_M_CB));
    T_MFW_WIN  * win;

    TRACE_FUNCTION ("smscb_M_CB_create()");

    /*
     * Create window handler
     */

    data->win = 
	win_create (parent_window, 0, 0, NULL);
    if (data->win EQ NULL)
	{
	    return NULL;
	}

    /* 
     * connect the dialog data to the MFW-window
     */

    data->mmi_control.dialog = (T_DIALOG_FUNC)smscb_M_CB_exec_cb;
    data->mmi_control.data   = data;
    win                      = ((T_MFW_HDR *)data->win)->data;
    win->user                = (void *)data;
    data->parent             = parent_window;

    /*
     * return window handle
     */

    winShow(data->win);
    return data->win;
}
/*******************************************************************************

 $Function:    	smscb_M_CB_destroy

 $Description:

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
static void smscb_M_CB_destroy(MfwHnd own_window)
{
    T_MFW_WIN * win_data;
    T_M_CB     * data;

    TRACE_FUNCTION ("smscb_M_CB_destroy()");

    if (own_window)
	{
	    win_data = ((T_MFW_HDR *)own_window)->data;
	    data = (T_M_CB *)win_data->user;

	    if (data)
		{
		    /*
		     * Delete WIN handler
		     */ 
		    win_delete (data->win);

		    /*     
		     * Free Memory
		     */
		    FREE_MEMORY ((void *)data, sizeof (T_M_CB));
		}
	    else
		{
		    TRACE_EVENT ("smscb_M_CB_destroy() called twice");
		}
	}
}

/*******************************************************************************

 $Function:    	smscb_M_CB_exec_cb

 $Description:	

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
void smscb_M_CB_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * dummy)
    /* callback handler for events sent to to trigger execution */
{	
	//entry submenu "Broadcast": M_CB
	//on INIT: create staticlist (
	//	selection "Read": call smsCB_read()
	//	selection "Activate": menucreate M_CB_ACT

     //nm menu changed 7.2.01
	//	selection "Topics": menucreate M_CB_TOP
	//	selection "Delete All": menucreate M_DEL_ALL(Type=CB)
	//)
	//on EXIT: /* terminate EXIT from M_CB_ACT here */
	//defaultreaction
	//end

    T_MFW_WIN      * win_data = ((T_MFW_HDR *) win)->data;
    T_M_CB          * data = (T_M_CB *)win_data->user;
    T_MFW_HND      * l_parent;
    SHORT            l_id;

    TRACE_FUNCTION ("smscb_M_CB_exec_cb()");

    switch (event)
	{
	case E_INIT:
	    /* initialization of administrative data */
	    data->id = value;

	    /* initialization of the dialog data */

	    /* create the dialog handler */

	    listCreate (data->win,&smscb_M_CBAttrib, E_MNU_ESCAPE, (ListCbFunc)smscb_M_CB_mnu_cb); // c020 rsa
	    break;
	case E_ABORT:  /* defaultreaction */
	    l_parent = data->parent;
	    l_id = data->id;
	    smscb_M_CB_destroy(data->win);
	    SEND_EVENT (l_parent, event, l_id, NULL); /* forward event to parent */
	    break;
	case E_RETURN: /* back from child */
	case E_EXIT: /* terminate EXIT from M_CB_ACT here */
    	    /* winUpdate(data->win); c021 rsa */
	    break;

	case E_BACK:
	default:
	    TRACE_EVENT ("smscb_M_CB_exec_cb() unexpected event");
	    return;
	}
}

/*******************************************************************************

 $Function:    	smscb_M_CB_mnu_cb

 $Description:

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
// c020 rsa
static void smscb_M_CB_mnu_cb (T_MFW_HND * win, ListMenuData * ListData)
    /* smscb_M_CB menu event handler */
{
    T_MFW_WIN  * win_data = ((T_MFW_HDR *)win)->data;
    T_M_CB      * data = (T_M_CB *)win_data->user;
    T_MFW_HND  * l_parent;
    SHORT        l_id;
    int index;

    TRACE_FUNCTION ("smscb_M_CB_listmnu_cb()");

    switch (ListData->Reason)
        {
	case E_MNU_SELECT:
	    //on SELECT: menucreate 
	    break;
	case LISTS_REASON_BACK: /* back to previous menu */
	    l_parent = data->parent;
	    l_id = data->id;
	    smscb_M_CB_destroy(data->win);
	    SEND_EVENT (data->parent, E_RETURN, l_id, NULL); // c007 rsa
	    break;
	default:
	    return;
        }
    return;
}
// end c020 rsa

/*********************************************************************
**********************************************************************

			M_CB_ACT	 DYNAMIC MENU WINDOW. DECLARATION

*********************************************************************
**********************************************************************/

typedef struct
{
    /* administrative data */

    T_MMI_CONTROL   mmi_control;
    T_MFW_HND       win;
    SHORT           id;
    T_MFW_HND       parent;

    /* associated handlers */
    T_MFW_HND       kbd;

    T_MFW_HND       menu;

    /* internal data */
} T_M_CB_ACT;
static MfwMnuItem smscb_M_CB_ACTItems [] =
{
    {0,0,0,(char *)TxtOn,0,(MenuFunc)smscb_M_CB_ACT_ExeYes,item_flag_none},
    {0,0,0,(char *)TxtOff,0,(MenuFunc)smscb_M_CB_ACT_ExeNo,item_flag_none},
};

static MfwMnuAttr smscb_M_CB_ACTAttrib =
{
    &smscb_M_CB_ACTArea,
    MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu       */
    -1,                                 /* use default font         */
    smscb_M_CB_ACTItems,                      /* with these items         */
    sizeof(smscb_M_CB_ACTItems)/sizeof(MfwMnuItem) /* number of items     */
};
static T_MFW_HND smscb_M_CB_ACT_create (T_MFW_HND parent);
static void smscb_M_CB_ACT_destroy (T_MFW_HND window);
static void smscb_M_CB_ACT_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * dummy);
static void smscb_M_CB_ACT_mnu_cb (MfwEvt e, MfwMnu *m);
static int Smscb_M_CB_ACT_kbd_cb (MfwEvt e, MfwKbd *k);
static int Smscb_M_CB_ACT_win_cb (MfwEvt e, MfwWin *w);
static int smscb_M_CB_ACT_ExeNo(MfwMnu* m, MfwMnuItem* i);
static int smscb_M_CB_ACT_ExeYes(MfwMnu* m, MfwMnuItem* i);
/*********************************************************************
**********************************************************************

		M_CB_ACT	     DYNAMIC MENU WINDOW. CONTENTS DECLARATION

*********************************************************************
**********************************************************************/

static MfwMnuItem smscb_M_CB_MIDItems [] =
{
    {&colist, 0,0,(char *)TxtAdd,0,(MenuFunc)smscb_CB_EDT_ExeAdd,item_flag_none},
    {&colist, 0,0,(char *)TxtModify,0,(MenuFunc)smscb_CB_EDT_ExeModify,item_flag_none},
    {&colist, 0,0,(char *)TxtDelete,0,(MenuFunc)smscb_M_CB_MID_DEL,item_flag_none},
};

static MfwMnuAttr smscb_M_CB_MIDAttrib =
{
    0,
    &smscb_M_CB_ACTArea,
    MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu       */
    -1,                                 /* use default font         */
    smscb_M_CB_MIDItems,                      /* with these items         */
    sizeof(smscb_M_CB_MIDItems)/sizeof(MfwMnuItem) /* number of items     */
};
#endif
/*******************************************************************************

 $Function:    	SmsRead_R_dialog_cb

 $Description:	Dialog callback function of the SMS read window (dynamic list of all the SMS)
 				Case where SMS has not been initialized yet
 
 $Returns:		status

 $Arguments:	win - current window handler
 				Identifier - window id
 				Reason - Event cause.
 				
*******************************************************************************/

int SmsCB_dialog_cb(T_MFW_HND win, USHORT Identifier, USHORT Reason)
{
	T_MFW_WIN *win_data = ((T_MFW_HDR *)win)->data;
//	T_M_CB_ACT *data = (T_M_CB_ACT *)win_data->user;
	
    TRACE_FUNCTION ("SmsRead_dialog_cb()");
	
	switch (Reason)
	{
	case INFO_TIMEOUT:
	case INFO_KCD_HUP:
		// Commit suicide
	    SEND_EVENT (win, E_EXIT,0, NULL);
		return MFW_EVENT_CONSUMED;

	default:
		return MFW_EVENT_REJECTED;
	}
}

/******************************************************/
/*                                                    */
/*Function Name: CBLanguage_check                       */
/*Purpose:      CBLanguage_check items check                      */
/*Prarmeter:   struct MfwMnuTag *m, struct MfwMnuAttrTag *ma, struct MfwMnuItemTag *mi */
/*return   :     USHORT                                 */
/*                                                    */
/*Author   :     windy                              */
/*Date     :    Aug.16th,2002                             */
/******************************************************/
USHORT CBONOFF_check (struct MfwMnuTag *m, struct MfwMnuAttrTag *ma, struct MfwMnuItemTag *mi)
{
  	if(FFS_flashData.CBONOFF==1)
    		return FLAGFUNC_TRUE_ICON;
 	else if(FFS_flashData.CBONOFF==0)
    		return FLAGFUNC_FALSE_ICON;
}

/*********************************************************************
**********************************************************************

		M_CB_ACT	     DYNAMIC MENU WINDOW. CONTENTS BEHAVIOUR

*********************************************************************
**********************************************************************/
/*******************************************************************************

 $Function:    	smscb_M_CB_ACT_ExeyNo

 $Description:	

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
int smscb_M_CB_ACT_ExeOnOff(MfwMnu* m, MfwMnuItem* i)
{
    T_MFW_HND       win  = mfwParent((MfwHdr *)mfw_header());
  	T_DISPLAY_DATA display_info;

//nm    smscb_setCBsettings(SMSCB_SWITCH_OFF);
  	if(FFS_flashData.CBONOFF==1)
  	{
		sms_set_mt_ind(MT_CB_NO_IDX);
   	 	//		call infoscreen("Deactivated"); 

    	dialog_info_init(&display_info);//gdy add
    	display_info.RightSoftKey = 0;
    	display_info.Time         = ONE_SECS;//zy 12/22/2002 change 3sec to 1sec
    	display_info.KeyEvents    = KEY_RIGHT|KEY_LEFT|KEY_CLEAR;
    	display_info.TextId2      = TxtDeActivated;
    	display_info.Identifier   = DIALOGS_REASON_NULL;
    	display_info.iconindex	=REMIND_COMPLETE;
    	info_dialog (win, &display_info); 
    	//info_screen(win, TxtDeActivated,TxtNull, NULL);//(T_VOID_FUNC)SmsCB_dialog_cb); 
		//statusCBCH(TRUE);
		FFS_flashData.CBONOFF=0;
		flash_write();
  	}
 	 else if(FFS_flashData.CBONOFF==0)
  	{	
  		sms_set_mt_ind(MT_CB_MSG);
  	  	//call infoscreen("Activated"); 
    	dialog_info_init(&display_info);//gdy add
    	display_info.RightSoftKey = 0;
    	display_info.Time         = ONE_SECS;//zy 12/22/2002 change 3sec to 1sec
    	display_info.KeyEvents    = KEY_RIGHT|KEY_LEFT|KEY_CLEAR;
    	display_info.TextId2      = TxtActivated;
    	display_info.Identifier   = DIALOGS_REASON_NULL;
    	display_info.iconindex	=REMIND_COMPLETE;
    	info_dialog (win, &display_info); 
  	 	 //info_screen(win, TxtActivated,TxtNull,NULL);//(T_VOID_FUNC)SmsCB_dialog_cb); 
    	//statusCBCH(FALSE);
		FFS_flashData.CBONOFF=1;
		flash_write();
	}
    return MFW_EVENT_CONSUMED;
}
#if 0
/*********************************************************************
**********************************************************************

		M_CB_ACT	     DYNAMIC MENU WINDOW. CONTENTS BEHAVIOUR

*********************************************************************
**********************************************************************/
/*******************************************************************************

 $Function:    	smscb_M_CB_ACT_ExeNo

 $Description:	

⌨️ 快捷键说明

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