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

📄 mmisimtoolkit.c

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

 $Function:  sim_toolkit_sat_cb

 $Description:    Callback function for SAT handler of top window

 $Returns:    none.

 $Arguments:

*******************************************************************************/
static int sim_toolkit_sat_cb ( T_MFW_EVENT event, T_MFW_SAT * sat_bits)
{
    USHORT sat_event;

    TRACE_EVENT("sim_toolkit_sat_cb");
    /*
     * check whether a decoded message is available
     */
    if ((sat_bits EQ NULL) || (g_sim_toolkit_data->win EQ NULL))
    {
        TRACE_EVENT("sim_toolkit_sat_cb() unexp. event");
        return MFW_EVENT_CONSUMED;
    }

    /* convert the flag into an event */
    if (event == MfwSatSessionEnd)
    {
        sat_event = SAT_SESSION_END;
    }
    else
    {
        switch (event)
        {
        case MfwSatTextOut:         /* display string           */
            sat_event = SAT_DISPLAY_TEXT;
            break;
        case MfwSatGetKey:          /* get user keystroke       */
            sat_event = SAT_GET_KEY;
            break;
        case MfwSatGetString:       /* get user input           */
            sat_event = SAT_GET_STRING;
            break;
        case MfwSatPlayTone:        /* play audio tone          */
            sat_event = SAT_PLAY_TONE;
            break;
        case MfwSatSetupMenu:       /* setup toolkit menu       */
            sat_event = SAT_SETUP_MENU;
            break;
        case MfwSatSelectItem:      /* select menu item         */
            sat_event = SAT_SELECT_ITEM;
            break;
        case MfwSatSendSMS:         /* send short message       */
            sat_event = SAT_SEND_SMS;
            break;
        case MfwSatSendUSSD:
        case MfwSatSendSS:          /* send service command     */
            sat_event = SAT_SEND_SS;
            break;
        case MfwSatCall:            /* setup a call             */
            sat_event = SAT_SETUP_CALL;
            break;
        case MfwSatCcRes:           /* call control result      */
            sat_event = SAT_CALL_RESULT;
            break;
        case MfwSatCcAlert:         /* call control alerting    */
            sat_event = SAT_CALL_ALERT;
            break;
        case MfwSatRefresh:         /* refresh SIM fields     */
            sat_event = SAT_REFRESH;
            break;
        case MfwSatSetEvents:         /* Sat Set Events updated   */
            sat_event = SAT_SET_EVENTS;
            break;
        case MfwSatDataRefreshed:         /* Data refreshed     */
				TRACE_EVENT("MfwSatDataRefreshed event sent");
            break;
        case MfwSatOpenChannel:         /* Open channel     */
	      sat_event = SAT_OPEN_CHANNEL;
            break;
        case MfwSatCloseChannel:         /* Close channel    */
	      sat_event = SAT_CLOSE_CHANNEL;
            break;
        case MfwSatSendData:         /* Send data     */
	      sat_event = SAT_SEND_DATA;
            break;
        case MfwSatReceiveData:         /* Receive data     */
	      sat_event = SAT_RECEIVE_DATA;
            break;
#ifdef MMI_WAP_ENABLED /*Disable for testing without WAP*/
        case MfwSatLaunchBrowser:
				TRACE_EVENT("SAT_LAUNCH_BROWSER got to MMI");
#ifdef MMI_TEST_SAT_LAUNCH_BROWSER
           {
             #define LENGTH_URL 40
			 T_SAT_RES sat_res;
			 SatLaunchBrowser laun_brow;
			 char prov_url[LENGTH_URL];
             short pos = 0;
             int i;

             sat_res[SAT_ERR_INDEX] = SAT_RES_SUCCESS;
		     sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
		     sat_done (sat_bits->cmd, sat_res, sizeof(T_SAT_RES));            
            sat_event = SAT_LAUNCH_BROWSER;
             laun_brow = sat_bits->cmd->c.browser;
             memset(information,'\0',INFORMATION_SIZE);
			 TRACE_EVENT_P1("Browser identity -> %d",laun_brow.identity);
             memcpy(&prov_url,laun_brow.url,LENGTH_URL);
             prov_url[LENGTH_URL-1] = '\0';
			 TRACE_EVENT_P1("Browser url -> %s",prov_url);
             pos += sprintf(information+pos,
             	"BROWSER\n-Identity=%d\n-Url=%s\n-Bearers(%d)=",
             	laun_brow.identity,
             	prov_url,
             	laun_brow.n_bearer);
             for (i=0;i<5;i++)
                 pos+=sprintf(information+pos," %d",*laun_brow.bearer++);
             mmiOpenDummyBrowser(g_sim_toolkit_data->win,information);		  
		   }
			break;
#endif /*WAP*/
#endif /* MMI_TEST_SAT_LAUNCH_BROWSER */
        default:
            sat_event = SAT_UNKNOWN;
            break;
        }
    }
    SEND_EVENT (g_sim_toolkit_data->win, sat_event, 0, sat_bits->cmd);
    return MFW_EVENT_CONSUMED;
}

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

 $Function:  sat_setup_menu_proc

 $Description:   process SAT_SETUP_MENU event

 $Returns:    none.

 $Arguments:

*******************************************************************************/
static void sat_setup_menu_proc(T_SAT_CMD * sat_command)
{
  TRACE_FUNCTION("sat_setup_menu_proc");

    if (sat_command->c.menu.items[0].len EQ 0)
    {
       /*
        * "Item data object for item 1" is a null data object:
        * hide the SIM toolkit menu item in the main menu
        */
        menuDisableSimMenu();
    g_sim_toolkit_data->sat_available_on_SIM = FALSE;
		//release the labe of the mainmenu
		//GW-SPR#1035 Free memory using sat_destroy_TEXT_ASCIIZ (as it is allocated using corresponding procedure) 
		if (sat_mainmenu_label NEQ NULL)
		{
			sat_destroy_TEXT_ASCIIZ (sat_mainmenu_label);
			sat_mainmenu_label = NULL;
		}
		
        if (sat_get_setup_menu_win() NEQ NULL)
        {
            /* there's an active SETUP MENU */
            SEND_EVENT (sat_get_setup_menu_win(), SAT_EXIT, 0, NULL); /* SETUP_MENU shall selfdestroy */
        }
        if (g_sim_toolkit_data->sat_setup_menu_command NEQ NULL)
        {
            FREE_MEMORY ((U8 *)(g_sim_toolkit_data->sat_setup_menu_command), sizeof (T_SAT_CMD));
            g_sim_toolkit_data->sat_setup_menu_command = NULL;
        }
    }
    else
    {
        /* install new setup menu */
        if (sat_get_setup_menu_win() NEQ NULL)
        {
            /* there's already an active SETUP MENU */
            SEND_EVENT (sat_get_setup_menu_win(), SAT_EXIT, 0, NULL); /* SETUP_MENU shall selfdestroy */
        }

        /* store command contents for later use in sat_setup_menu_start() */
        if (g_sim_toolkit_data->sat_setup_menu_command EQ NULL)
        {
            /* if not already allocated, get storage for the SETUP MENU command */
            g_sim_toolkit_data->sat_setup_menu_command =
                (T_SAT_CMD *)ALLOC_MEMORY (sizeof (T_SAT_CMD));
        }
        *(g_sim_toolkit_data->sat_setup_menu_command) = *sat_command; /* copy contents */
        
/*#ifdef CHINESE_MMI*/
		/*
		  The label for the main menu 
	  
		*/
		TRACE_EVENT("SAT: Creating main menu label");
 		{
#ifdef NO_ASCIIZ
			/*MC,  SPR 940/2if we're in chinese, header may be converted from ASCII to Unicode*/
			if (Mmi_getCurrentLanguage() == CHINESE_LANGUAGE)
				header_len = g_sim_toolkit_data->sat_setup_menu_command->c.menu.header.len *2;
			else
#endif
				/* taking the label from menu command file and convert to ascii */
				 header_len = g_sim_toolkit_data->sat_setup_menu_command->c.menu.header.len;


			sat_mainmenu_label = sat_create_TEXT_ASCIIZ (&g_sim_toolkit_data->sat_setup_menu_command->c.menu.header);

			sat_mainmenu_label[header_len] = '\0';
/*JVJ #1576 The SimToolkit Title string is set here */
            res_set_SIMToolkit_title_string(sat_mainmenu_label);           
		}
        /* unhide the SIM toolkit menu item in the main menu */
        menuEnableSimMenu
            (
            "",  /* label */
            (SimMenuFunc)sat_setup_menu_start, /* callback when menu entered */
            g_sim_toolkit_data->sat_setup_menu_command /* parameter to callback */
            );
    }
    sat_set_setup_menu_win(NULL); // avoid notifications to a non-existent window
}


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

 $Function:  sat_win_cb

 $Description:   Default sat window event handler. Avoid intermediate visibility of lower menus


 $Returns:    none.

 $Arguments:

*******************************************************************************/
int sat_win_cb (T_MFW_EVENT event, T_MFW_WIN * win)
{
  TRACE_FUNCTION("sat_win_cb");

    if (win EQ NULL)
  return MFW_EVENT_CONSUMED;

    switch (event)
        {
        case E_WIN_VISIBLE: /* window changed visibility */
            if (win->flags & E_WIN_VISIBLE)
                {
                    /* window becomes visible */
                    dspl_ClearAll(); /* overwrite redraw of lower menus with cleared screen */
                    dspl_TextOut(0,12,/*DSPL_TXTATTR_NORMAL*/DSPL_TXTATTR_CURRENT_MODE/*MC*/,GET_TEXT(TxtPleaseWait)); /* sbh - so we don't get blank screen */
                }
            break;
        default:
            return MFW_EVENT_REJECTED;
        }
    return MFW_EVENT_CONSUMED;
}

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

 $Function:  sat_kbd_cb

 $Description:   Default sat window keyboard handler


 $Returns:    none.

 $Arguments:

*******************************************************************************/
int sat_kbd_cb (T_MFW_EVENT event, T_MFW_KBD * key)
{
  T_MFW_HND   win     = mfwParent( mfw_header() );

  TRACE_FUNCTION("sat_kbd_cb");

  /* make sure we handle null keyboards
  */
  if ( key == NULL )
    return MFW_EVENT_CONSUMED;

  /* deal with the incoming key code
  */
    switch( key->code )
    {

      /* Destroy the window on either right softkey or hangup keypresses */
    case KCD_HUP:
    case KCD_RIGHT:
    {
      SEND_EVENT(win, SAT_DESTROY_WINDOW, 0, 0);
      break;
    }
    }

    return MFW_EVENT_CONSUMED;
}


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

 $Function:  sat_info_cb

 $Description:  Callback function information dialog.

 $Returns:    none.

 $Arguments:

*******************************************************************************/
static void sat_info_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason)
{
    /* INFO DISPLAY */
    T_MFW_WIN       * info_win_data   = ((T_MFW_HDR *)win)->data;
    T_sim_toolkit   * info_data       = (T_sim_toolkit *)info_win_data->user;

    TRACE_FUNCTION("sat_info_cb");

    if (win EQ NULL)
        return;

        /*
        * Who has initiated the information screen
    */
    switch (identifier)
    {
    case SAT_SEND_SMS:
    case SAT_SEND_SS:
    case SAT_CALL_RESULT:
        if ((info_win_data EQ NULL) || (info_data EQ NULL))
            return;
        /* SPR#1428 - SH - New Editor changes */
#ifdef NEW_EDITOR
		sat_destroy_TEXT_ASCIIZ((char*)info_data->editor_data.TitleString); /* displayed text */
#else /* NEW_EDITOR */
        sat_destroy_TEXT_ASCIIZ((char*)info_data->editor_data.TextString); /* displayed text */
#endif /* NEW_EDITOR */
        break;
    default:
        TRACE_EVENT("sat_info_cb(): unexp. event");
        break;
    }
}


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

 $Function:  sat_set_setup_menu_win

 $Description:   set the window associated with the setup menu command

 $Returns:    none.

 $Arguments:

*******************************************************************************/
void sat_set_setup_menu_win(T_MFW_HND win)
{
  TRACE_FUNCTION("sat_set_setup_menu_win");

    g_sim_toolkit_data->sat_setup_menu_win = win;
}


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

 $Function:  sat_get_setup_menu_win

 $Description:   get the window associated with the setup menu command

 $Returns:    none.

 $Arguments:

*******************************************************************************/
T_MFW_HND sat_get_setup_menu_win(void)
{
  TRACE_EVENT("sat_get_setup_menu_win");
    return g_sim_toolkit_data->sat_setup_menu_win;
}


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

 $Function:  sat_set_call_setup_win

⌨️ 快捷键说明

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