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

📄 mmiservices.c

📁 GSM手机设计软件代码
💻 C
📖 第 1 页 / 共 5 页
字号:

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

 $Function:    	servicesExit

 $Description:	exit services handling

 $Returns:		

 $Arguments:	
 
*******************************************************************************/



void servicesExit (void)
{
    TRACE_FUNCTION("servicesExit");

    ss_delete(ss_data.win);
    ss_exit();
}


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

 $Function:    	services_create

 $Description:	Creation of an instance for the Services dialog.

 $Returns:		

 $Arguments:	
 
*******************************************************************************/


T_MFW_HND services_create (T_MFW_HND parent_window)
{
    T_ss     * data = &ss_data;
    T_MFW_WIN     * win;

    TRACE_FUNCTION("services_create");

    data->win = win_create (parent_window, 0, E_WIN_VISIBLE, (T_MFW_CB)services_win_cb);

    if (data->win EQ 0)
      return 0;

    /*
     * Create window handler
     */
    data->mmi_control.dialog    = (T_DIALOG_FUNC)services;
    data->mmi_control.data      = data;
    win                         = ((T_MFW_HDR *)data->win)->data;
    win->user                   = (void *) data;

    /*
     * Create any other handler
     */
    data->info_win = 0;
    data->info_wait = 0;
    data->cb_menu_win = 0;

	/* SPR#1428 - SH - New Editor changes - this editor never used */
#if 0
    data->ussd_num_win = 0;
    data->ussd_name_win = 0;
#endif

    data->input_number_win = 0;
	memset(data->edt_buf_name,'\0',sizeof(data->edt_buf_name));
	memset(data->edt_buf_number,'\0',sizeof(data->edt_buf_number));
	memset(data->edt_buf_cb_password,'\0',sizeof(data->edt_buf_number));
	/* SPR#1428 - SH - New Editor changes - no longer required*/
#ifndef NEW_EDITOR
	bookSetEditAttributes(SERVICE_CREATE_EDITOR,COLOUR_EDITOR_XX,0,edtCurBar1,0,(char*)data->edt_buf_name,PHB_MAX_LEN,&data->edt_attr_name);
	bookSetEditAttributes(SERVICE_CREATE_EDITOR,COLOUR_EDITOR_XX,0,edtCurBar1,0,(char*)data->edt_buf_number,PHB_MAX_LEN,&data->edt_attr_number);
#endif /* ifndef NEW_EDITOR */

    winShow (data->win);

  /*
   * return window handle
   */
  return data->win;
}


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

 $Function:    	services_destroy

 $Description:	

 $Returns:		

 $Arguments:	
 
*******************************************************************************/


void services_destroy (T_MFW_HND own_window)
{
  T_MFW_WIN     * win;
  T_ss     * data = &ss_data;

  TRACE_FUNCTION("=== services_destroy");

  if (data)
  {
    /*
     * Delete WIN Handler
     */

    if (data->info_win)
    {
      SEND_EVENT(data->info_win, DIALOG_DESTROY, 0, 0);
      data->info_win=0;
    }
    if (ss_data.info_wait)
    {
    	TRACE_FUNCTION("destroying the wait screen b");
        SEND_EVENT(ss_data.info_wait, DIALOG_DESTROY, 0, 0);
        ss_data.info_wait = 0;
    }
    

    if (data->input_number_win)
    {
       TRACE_FUNCTION("killing input number win");
       services_input_destroy( data->input_number_win );
       data->input_number_win=0;
    }
  }
}

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

 $Function:    	services_win_cb

 $Description:	

 $Returns:		

 $Arguments:	
 
*******************************************************************************/

static int services_win_cb(T_MFW_EVENT e, T_MFW_SS_PARA * para)
{
  /*
   * Top Window has no output
   */
    TRACE_FUNCTION ("services_win_cb()");
    switch (e)
    {
        case MfwWinVisible:
        break;
        default:
        return 0;
    }
  return 1;

}

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

 $Function:    	destroyInfoWindow

 $Description:	

 $Returns:		

 $Arguments:	
 
*******************************************************************************/

static void destroyInfoWindow( void)
{
    TRACE_FUNCTION("destroyInfoWindow");

    /* kill info win if there */
    if (ss_data.info_wait)
    {
        TRACE_FUNCTION("destroying the wait screen a");
        SEND_EVENT(ss_data.info_wait, DIALOG_DESTROY, 0, 0);
        ss_data.info_wait = 0;
    }
    if (ss_data.input_number_win)
    {
        TRACE_FUNCTION("destroying input window!!!");
        SEND_EVENT(ss_data.input_number_win, SERVICES_INPUT_DESTROY, 0, 0);
        ss_data.input_number_win = 0;
    }

}
/*******************************************************************************

 $Function:    	services_ss_cb

 $Description:	

 $Returns:		

 $Arguments:	
 
*******************************************************************************/


static int services_ss_cb(T_MFW_EVENT e, T_MFW_HND para)
{

    TRACE_FUNCTION ("services_ss_cb()");

    {
      T_MFW_WIN * win;
      win = (T_MFW_WIN *) ((T_MFW_HDR *)ss_data.win)->data;
    }

    switch (e)
	{
	case E_SS_RES:
        if (!ss_data.info_wait) 
        {
			TRACE_FUNCTION ("show the wait screen");
        	showWait( ss_data.win );
        }
        /*
         * ignore the event
         */
        break;

	case E_SS_NOTIFY:
		if(!ss_data.info_win)
	        SEND_EVENT(ss_data.win,E_SS_NOTIFY,0, para);

        destroyInfoWindow();
        break;

     case E_SS_CF_CNF:

		if(!ss_data.info_win)
	        SEND_EVENT(ss_data.win,E_SS_CF_CNF,0, para);

        destroyInfoWindow();
        break;

     case E_SS_CW_CNF:
		if(!ss_data.info_win)
	        SEND_EVENT(ss_data.win,E_SS_CW_CNF,0, para);

        destroyInfoWindow();
        break;

     case E_SS_CLI_CNF:
		if(!ss_data.info_win)
	        SEND_EVENT(ss_data.win,E_SS_CLI_CNF,0, para);

        destroyInfoWindow();
        break;

     case E_SS_CB_CNF:
		if(!ss_data.info_win)
	        SEND_EVENT(ss_data.win,E_SS_CB_CNF,0, para);

	    destroyInfoWindow();
        break;

    /* we must display the ussd info and then edit and send a user ussd */
    case E_SS_USSD_REQ:

		if(!ss_data.info_win)
	        SEND_EVENT(ss_data.win,E_SS_USSD_REQ,0, para);

        destroyInfoWindow();		
        break;

    /* just display the ussd info */
    case E_SS_USSD_CNF:

		if(!ss_data.info_win)
	        SEND_EVENT(ss_data.win,E_SS_USSD_CNF,0, para);

        destroyInfoWindow();
        break;

    case E_SS_IMEI:

		if(!ss_data.info_win)
	        SEND_EVENT(ss_data.win,E_SS_IMEI,0, para);

        destroyInfoWindow();
        break;


	case E_SS_GET_PW:

		if(!ss_data.info_win)
			SEND_EVENT(ss_data.win,E_SS_GET_PW,0, para);

        destroyInfoWindow();
	break;
     default:
        break;
    }

    return 1;  /* consumed */
}


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

 $Function:    	services

 $Description:	

 $Returns:		

 $Arguments:	
 
*******************************************************************************/

void services (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
    T_MFW_WIN      * win_data = ((T_MFW_HDR *) win)->data;
    T_ss           * data = (T_ss *)win_data->user;

    T_MFW_SS_PARA  * ss_cnf = (T_MFW_SS_PARA *)parameter;

    unsigned int i = 0;

    char line[MAX_LINE];

    TRACE_FUNCTION ("services()");

    switch (event)
	{


        case ServicesError:
            TRACE_FUNCTION ("ServicesError");
            showError(win, ss_cnf->cb_cnf.ss_error);
            break;

        case ServicesFailed:
            TRACE_FUNCTION ("ServicesFailed");
            showFailed(win);
            break;

        case ServicesOtherNumber:
            TRACE_FUNCTION("ServicesOtherNumber");
            ServicesGetOtherNumber(win);
            break;

        case ServicesOk:
            TRACE_FUNCTION ("ServicesOk");
            showOk(win);
            break;

        case ServicesUSSDEnter:
        {
#ifdef NEW_EDITOR	
				T_AUI_EDITOR_DATA editor_data;	/* SPR#1428 - SH - New Editor data */
#else
        		T_EDITOR_DATA	editor_data;
#endif /* NEW_EDITOR */

				TRACE_FUNCTION("ServicesUSSDEnter");

				memset(ss_data.edt_buf_number,'\0',PHB_MAX_LEN);

				/* SPR#1428 - SH - New Editor changes */
#ifdef NEW_EDITOR /* NEW_EDITOR */
				AUI_edit_SetDefault(&editor_data);
				AUI_edit_SetDisplay(&editor_data, ZONE_FULL_SK_TITLE, COLOUR_EDITOR_XX, EDITOR_FONT);
				AUI_edit_SetMode(&editor_data, 0, ED_CURSOR_UNDERLINE);
				AUI_edit_SetBuffer(&editor_data, ATB_DCS_ASCII, (UBYTE *)ss_data.edt_buf_number, MAX_USSD_LEN);
				AUI_edit_SetTextStr(&editor_data, TxtSoftOK, TxtSoftBack, TxtEntAnw, NULL);
				AUI_edit_SetAltTextStr(&editor_data, 1, TxtNull, FALSE, TxtNull);
				AUI_edit_SetEvents(&editor_data, ServicesUSSDEnter, TRUE, FOREVER, (T_AUI_EDIT_CB)services_info_cb);

				AUI_edit_Start(ss_data.win, &editor_data);  /* start the editor */
#else /* NEW_EDITOR */
				editor_data.editor_attr.win.px   = 6;
				editor_data.editor_attr.win.py   = 12;
				editor_data.editor_attr.win.sx   = 80;
				editor_data.editor_attr.win.sy   = 20;
				editor_data.editor_attr.edtCol	= COLOUR_EDITOR_XX,
				editor_data.editor_attr.font     = 0;
				editor_data.editor_attr.mode    = edtCurBar1;
				editor_data.editor_attr.controls   = 0;
				editor_data.hide			    = FALSE;

				editor_data.editor_attr.text	= (char*)ss_data.edt_buf_number;

				editor_data.editor_attr.size	= sizeof(ss_data.edt_buf_number);
				editor_data.LeftSoftKey			= TxtSoftOK;
				editor_data.RightSoftKey		= TxtSoftBack;
				editor_data.AlternateLeftSoftKey     = TxtNull;
				editor_data.TextString			= '\0';
				editor_data.TextId				= TxtEntAnw;
				editor_data.Identifier			= ServicesUSSDEnter;
				editor_data.mode				= DIGITS_MODE;
				editor_data.timeout		        = FOREVER;
				editor_data.min_enter		    = 1;
				editor_data.Callback		    = (T_EDIT_CB)services_info_cb;
				editor_data.destroyEditor	    = TRUE;


				/* create the dialog handler */
				editor_start(ss_data.win, &editor_data);  /* start the editor */
#endif /* NEW_EDITOR */
        	}
            break;

        case SERVICES_DO_CALL_VOICE_DIVERT:
            servicesStoreVoiceMailNumber();
            servicesSendCallDivert(0);
            break;
        case ServicesDoCallDivert:
            servicesSendCallDivert(0);
            break;

	case E_SS_RES:
        /*
         * event is ignored
         */
        break;
	case E_SS_NOTIFY:
        TRACE_FUNCTION(" E_SS_NOTIFY");
        showSSNotify( win, (T_MFW_SS_NOTIFY*) parameter );  /* all short ss-related notfications */
        break;

    /*
     * modified handling for results taking lists in account
     */
	case E_SS_CF_CNF:
      /*
       * check whether we received data what was requested / consistent
       */
      switch(ss_cnf->cf_cnf.ss_code)
      {
        case SS_CODES_UNKNOWN:
          /* Marcus: Issue 1652: 03/02/2003: Start */
          TRACE_EVENT("SS_CODES_UNKNOWN");
          {
            T_DISPLAY_DATA   display_info;
        	dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtNull, TxtNull,  TxtExecuted, COLOUR_STATUS);
        	dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)services_info_cb, FOREVER, KEY_CLEAR | KEY_LEFT );
            display_info.Identifier   = E_SS_CF_CNF;  // can be used also for CF and CW

            /*
             * Call Info Screen
             */

            ss_data.info_win = info_dialog (ss_data.win, &display_info);
          }
          /* Marcus: Issue 1652: 03/02/2003: End */
          break;
        case SS_CF_CFU:
		case SS_CF_ALL:
          TRACE_EVENT("SS_CF_CFU/SS_CF_ALL");
		  /*
		   * Update icons for idle screen if CFU and telephony
		   */
		  //SPR#984 - DS - Only update icons if activating / cancelling.
			   if (ss_cnf->cf_cnf.ss_category != SS_INTERROGATION)
			   {
				  switch (srv_check_CF_telephony_status ( &ss_cnf->cf_cnf ))
				  {
					case CF_ACTIVE_STATUS:
					  iconsSetState(iconIdCallFor);
					  break;
					case CF_PROVISIONED_STATUS: // Marcus: Issue 1652: 02/03/2003
					case CF_INACTIVE_STATUS:
					  iconsDeleteState(iconIdCallFor);
					  break;
					 /* Marcus: Issue 1652: 02/03/2003: Start */
					case CF_UNKNOWN_STATUS:
					    TRACE_EVENT("CF_UNKNOWN_STATUS");
					default:
					  if ((ss_cnf->cf_cnf.ss_category == SS_ERASURE) ||
					    (ss_cnf->cf_cnf.ss_category == SS_DEACTIVATION))
					    iconsDeleteState(iconIdCallFor);
					 /* Marcus: Issue 1652: 02/03/2003: End */

⌨️ 快捷键说明

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