imaxsp_sms.c 12.3 KB
 /*  Include: MMI header file */
#include "MMI_features.h"

#ifdef __TOPWELL_IMAXSP_SMS__
#include "fseditorcuigprot.h"

#include "menucuigprot.h"
#include "inlinecuigprot.h"
#include "MMIDataType.h"
#include "kal_non_specific_general_types.h"
#include "wgui_touch_screen.h"
#include "Unicodexdcl.h"
#include "stdlib.h"
#include "kal_release.h"
#include "stdio.h"
#include "string.h"
#include "wgui_categories_util.h"

#include "wgui_categories_inputs.h"
#include "GlobalResDef.h"
#include "GlobalConstants.h"
#include "mmi_frm_mem_gprot.h"
#include "app_buff_alloc.h"
#include "mmi_frm_scenario_gprot.h"
#include "wgui_inline_edit.h"
#include "CustDataRes.h"
#include "gui_data_types.h"
#include "gui_typedef.h"
#include "ImeGprot.h"
#include "ImeGprotEnums.h"
#include "mmi_frm_events_gprot.h"
#include "SmsSrvGprot.h"
#include "imaxsp_sms.h"
#include "AlertScreen.h"
#include "CommonScreensResDef.h"
//static mmi_menu_id imaxsp_select_menu_id;

/*  Include: PS header file */
#ifdef __TOPWELL_MMI_IMAX_MODE2__
imaxsp_data_struct g_imaxsp_sms_list[]=
{
	{MENU_IMAXSP_01_01_01,"START MCCN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
	{MENU_IMAXSP_01_01_02,"STOP MCCN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
	{MENU_IMAXSP_01_04_01,"START MCBN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
	{MENU_IMAXSP_01_04_02,"STOP MCBN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},                                                                                                                        
};
#elif defined(__TOPWELL_MMI_IMAX_MODE3__)
imaxsp_data_struct g_imaxsp_sms_list[]=
{
	{MENU_IMAXSP_01_01_01,"START MCCN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
	{MENU_IMAXSP_01_01_02,"STOP MCCN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
	{MENU_IMAXSP_01_04_01,"START MCBN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
	{MENU_IMAXSP_01_04_02,"STOP MCBN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},                                                                                                                        
};
#else
imaxsp_data_struct g_imaxsp_sms_list[]=
{
	{MENU_IMAXSP_01_01_01,"START IMXCN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
	{MENU_IMAXSP_01_01_02,"STOP IMXCN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
	{MENU_IMAXSP_01_02,"CRIC",IMAXSP_SMS_PORT_6969,IMAXSP_SRV_TYPE_SMS},
	{MENU_IMAXSP_01_03_01,"START IMXSN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
	{MENU_IMAXSP_01_03_02,"STOP IMXSN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
	{MENU_IMAXSP_01_04_01,"START IMXBN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
	{MENU_IMAXSP_01_04_02,"STOP IMXBN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
	{MENU_IMAXSP_02_01,"NULL",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_IVR},
	{MENU_IMAXSP_02_02,"NULL",IMAXSP_SMS_PORT_6969,IMAXSP_SRV_TYPE_IVR},
	{MENU_IMAXSP_02_03,"NULL",IMAXSP_SMS_PORT_16232,IMAXSP_SRV_TYPE_IVR}
                                                                                                                       
};
#endif

/*  Include: PS header file */

char g_imaxsp_send_content_buff[IMAXSP_SMS_CONTENT_LEN];
U16 g_imaxsp_sms_list_index;


/*  * Local Function */
void mmi_imaxspsms_allmenu_selected(mmi_menu_id imaxspsms_menuid);
void mmi_imaxspsms_prepare_sms(U16 index);
void mmi_imaxspcall_confirm(void);
void mmi_imaxspsms_confirm(void);
extern void MakeCall(PS8);

mmi_ret mmi_main_imaxspsms_proc(mmi_event_struct *evt)
{
	
	cui_menu_event_struct *menu_evt = (cui_menu_event_struct*)evt;
	mmi_menu_id hilight_menu = menu_evt->highlighted_menu_id;
	if(evt->evt_id == EVT_ID_GROUP_EXIT)
	{
	}
	switch (menu_evt->evt_id)
	{
		case EVT_ID_CUI_MENU_LIST_ENTRY:
		break;
		case EVT_ID_CUI_MENU_LIST_EXIT:
		break;
		case EVT_ID_CUI_MENU_ITEM_HILITE:
			//mmi_imaxspsms_allmenu_Highlight(hilight_menu);
		break;
		case EVT_ID_CUI_MENU_ITEM_SELECT:
			mmi_imaxspsms_allmenu_selected(hilight_menu);
		break;
		case EVT_ID_CUI_MENU_ITEM_TAP:
		break;
		case EVT_ID_CUI_MENU_ITEM_CSK_SELECT:
			mmi_imaxspsms_allmenu_selected(hilight_menu);
		break;
		case EVT_ID_CUI_MENU_CLOSE_REQUEST:
			cui_menu_close(menu_evt->sender_id);
		break;
		case EVT_ID_CUI_MENU_CHECKBOX_CHANGE_STATE:
		break;	

	}
	return MMI_RET_OK;
}
void mmi_imaxspsms_entry_screen(void)
{
	mmi_id imaxsp_menu_cui_id;
	imaxsp_menu_cui_id = cui_menu_create(
		GRP_ID_IMAXSP_SMS, 
		CUI_MENU_SRC_TYPE_RESOURCE, 
		CUI_MENU_TYPE_APPSUB, 
		MENU_IMAXSP, 
		MMI_TRUE, 
		NULL);
	cui_menu_run(imaxsp_menu_cui_id);
}
void mmi_imaxspsms_entry_common_screen(mmi_menu_id imaxspsms_menuid)
{
	mmi_id horse_menu_cui_id;
	horse_menu_cui_id = cui_menu_create(
		GRP_ID_IMAXSP_SMS, 
		CUI_MENU_SRC_TYPE_RESOURCE, 
		CUI_MENU_TYPE_APPSUB, 
		imaxspsms_menuid, 
		MMI_TRUE, 
		NULL);
	cui_menu_run(horse_menu_cui_id);
}

void mmi_imaxspsms_entry(void)
{
	S16 error;

	
	mmi_frm_group_create(GRP_ID_ROOT, GRP_ID_IMAXSP_SMS, mmi_main_imaxspsms_proc, (void*)NULL);
	mmi_frm_group_enter(GRP_ID_IMAXSP_SMS, MMI_FRM_NODE_SMART_CLOSE_FLAG);
	mmi_imaxspsms_entry_screen();
}
void Highlightimaxspsms(void)
{
	SetLeftSoftkeyFunction(mmi_imaxspsms_entry, KEY_EVENT_UP);
	SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
	SetKeyHandler(mmi_imaxspsms_entry, KEY_ENTER, KEY_EVENT_UP);
}
void mmi_imaxspsms_allmenu_selected(mmi_menu_id imaxspsms_menuid)
{
	U16 i = 0;
	U16 thearraylenth = sizeof(g_imaxsp_sms_list)/sizeof(imaxsp_data_struct);
	//xiaonan note
	if((srv_sim_ctrl_is_available(MMI_SIM1) == MMI_FALSE)&&(srv_sim_ctrl_is_available(MMI_SIM2) == MMI_FALSE))
    {
    	mmi_sms_display_popup_ext(
        STR_GLOBAL_INSERT_SIM_CARD,
        MMI_EVENT_FAILURE);
	    return;
    }	
	for(;i<thearraylenth;i++)
	{
		if(g_imaxsp_sms_list[i].menuid == imaxspsms_menuid)
		{
			g_imaxsp_sms_list_index = i;
			mmi_imaxspsms_prepare_sms(i);
		}
	}
	if(i == thearraylenth)	
		mmi_imaxspsms_entry_common_screen(imaxspsms_menuid);
}
static mmi_ret mmi_imaxspsms_confirm_callback(mmi_event_struct *mmi_evt)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    mmi_alert_result_evt_struct *evt = (mmi_alert_result_evt_struct*)mmi_evt;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if(evt->evt_id == EVT_ID_ALERT_QUIT)
    {
        switch(evt->result)
        {
            case MMI_ALERT_CNFM_1:
                mmi_imaxspsms_sending_sms();
                break;
            case MMI_ALERT_CNFM_3:
             mmi_frm_group_close(evt->alert_id);
                break;
            default:
                break;
        }
    }
    return MMI_RET_OK;
}
void mmi_imaxspsms_confirm(void)
{
	mmi_confirm_property_struct confirm_arg;
	U16 i = 0;
    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
	//此处加一个弹出框 yes or no的确认
	//弹出框的内容是STR_MENU_IMAXSP_SMS_POPUP_INFO  or STR_MENU_IMAXSP_IVR_POPUP_INFO
    mmi_confirm_property_init(&confirm_arg, CNFM_TYPE_USER_DEFINE);
    confirm_arg.softkey[0].str = (WCHAR *)((UI_string_type)get_string(STR_GLOBAL_OK));
    confirm_arg.softkey[2].str = (WCHAR *)((UI_string_type)get_string(STR_GLOBAL_EXIT));
    confirm_arg.parent_id = GRP_ID_ROOT;
    confirm_arg.callback = mmi_imaxspsms_confirm_callback;

    mmi_confirm_display_ext(STR_MENU_IMAXSP_SMS_POPUP_INFO,
                            MMI_EVENT_QUERY,
                            &confirm_arg);
}
static mmi_ret mmi_imaxspcall_confirm_callback(mmi_event_struct *mmi_evt)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    mmi_alert_result_evt_struct *evt = (mmi_alert_result_evt_struct*)mmi_evt;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if(evt->evt_id == EVT_ID_ALERT_QUIT)
    {
        switch(evt->result)
        {
            case MMI_ALERT_CNFM_1:
                mmi_imaxspsms_call();
                break;
            case MMI_ALERT_CNFM_3:
             mmi_frm_group_close(evt->alert_id);
                break;
            default:
                break;
        }
    }
    return MMI_RET_OK;
}
void mmi_imaxspcall_confirm(void)
{
	mmi_confirm_property_struct confirm_arg;
	U16 i = 0;
    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
	//此处加一个弹出框 yes or no的确认
	//弹出框的内容是STR_MENU_IMAXSP_SMS_POPUP_INFO  or STR_MENU_IMAXSP_IVR_POPUP_INFO
    mmi_confirm_property_init(&confirm_arg, CNFM_TYPE_USER_DEFINE);
    confirm_arg.softkey[0].str = (WCHAR *)((UI_string_type)get_string(STR_GLOBAL_OK));
    confirm_arg.softkey[2].str = (WCHAR *)((UI_string_type)get_string(STR_GLOBAL_EXIT));
    confirm_arg.parent_id = GRP_ID_ROOT;
    confirm_arg.callback = mmi_imaxspcall_confirm_callback;

    mmi_confirm_display_ext(STR_MENU_IMAXSP_IVR_POPUP_INFO,
                            MMI_EVENT_QUERY,
                            &confirm_arg);
}

void mmi_imaxspsms_prepare_sms(U16 index)
{

	//此处加一个弹出框 yes or no的确认
	//弹出框的内容是STR_MENU_IMAXSP_SMS_POPUP_INFO  or STR_MENU_IMAXSP_IVR_POPUP_INFO
	//自行完成
	if(g_imaxsp_sms_list[index].type ==IMAXSP_SRV_TYPE_SMS)
	{
		mmi_asc_n_to_ucs2((S8*)g_imaxsp_send_content_buff,
			(S8*)g_imaxsp_sms_list[index].smscontent, 
			sizeof(g_imaxsp_sms_list[index].smscontent));
		mmi_imaxspsms_confirm();
	}
	else
	{
	mmi_imaxspcall_confirm();
	}
}

MMI_BOOL mmi_imaxspsms_call(void)
{
	S8 ucs2_addr[20];
	switch(g_imaxsp_sms_list[g_imaxsp_sms_list_index].port)
	{
	case IMAXSP_SMS_PORT_5959:
		mmi_asc_n_to_ucs2((S8*)ucs2_addr, (S8*)"5959", SRV_SMS_MAX_ADDR_LEN+1);
		break;
	case IMAXSP_SMS_PORT_6969:
		mmi_asc_n_to_ucs2((S8*)ucs2_addr, (S8*)"6969", SRV_SMS_MAX_ADDR_LEN+1);
		break;
	case IMAXSP_SMS_PORT_16232:
		mmi_asc_n_to_ucs2((S8*)ucs2_addr, (S8*)"16232", SRV_SMS_MAX_ADDR_LEN+1);
		break;
	}
	//makecall(ucs2_addr);//自行完成
	MakeCall(ucs2_addr);

}

MMI_BOOL mmi_imaxspsms_sending_sms(void)
{

	int numlen = 0;
	SMS_HANDLE srv_send_handle,srv_save_handle = NULL;
	srv_sms_setting_struct default_setting;
	S8 ucs2_addr[(SRV_SMS_MAX_ADDR_LEN + 1) * ENCODING_LENGTH];
	S8 temp_imaxsp_uni_send[80];
	S8 pError = 0;
		
	srv_send_handle = srv_sms_get_send_handle ();

	if(srv_sim_ctrl_is_available(MMI_SIM1) == MMI_TRUE)
	{
		memcpy(&default_setting, srv_sms_get_default_setting(SRV_SMS_SIM_1), sizeof (srv_sms_setting_struct));
		srv_sms_set_sim_id (srv_send_handle, SRV_SMS_SIM_1);
		pError = 1;
	}
	if(srv_sim_ctrl_is_available(MMI_SIM2) == MMI_TRUE && pError == 0)
	{
		memcpy(&default_setting, srv_sms_get_default_setting(SRV_SMS_SIM_2), sizeof (srv_sms_setting_struct));
		srv_sms_set_sim_id (srv_send_handle, SRV_SMS_SIM_2);
		pError = 1;
	}
	if(!pError) return MMI_FALSE;
	
	if (default_setting.sc_addr[0] == '\0')		return;
	switch(g_imaxsp_sms_list[g_imaxsp_sms_list_index].port)
	{
	case IMAXSP_SMS_PORT_5959:
		mmi_asc_n_to_ucs2((S8*)ucs2_addr, (S8*)"5959", SRV_SMS_MAX_ADDR_LEN+1);
		break;
	case IMAXSP_SMS_PORT_6969:
		mmi_asc_n_to_ucs2((S8*)ucs2_addr, (S8*)"6969", SRV_SMS_MAX_ADDR_LEN+1);
		break;
	}

	srv_sms_set_address(srv_send_handle, ucs2_addr);

	srv_sms_set_content_dcs (srv_send_handle, SRV_SMS_DCS_7BIT);

	mmi_asc_n_to_ucs2((S8*)temp_imaxsp_uni_send,
		(S8*)g_imaxsp_sms_list[g_imaxsp_sms_list_index].smscontent, 
		sizeof(g_imaxsp_sms_list[g_imaxsp_sms_list_index].smscontent));
	mmi_ucs2cpy((CHAR *)g_imaxsp_send_content_buff, (CHAR *)temp_imaxsp_uni_send);
	srv_sms_set_content (srv_send_handle,(S8*) g_imaxsp_send_content_buff,(U16)((app_ucs2_wcslen(g_imaxsp_send_content_buff)+1)*2));
	srv_sms_set_send_type (srv_send_handle, SRV_SMS_BG_SAVE_SEND);
//	srv_sms_set_status_report(srv_send_handle, MMI_FALSE);
//	if(srv_save_handle != NULL)
//	    srv_sms_save_msg(srv_save_handle, mmi_sms_schedule_save_sms_rsp, NULL);
	#ifdef __MTK_TARGET__
	srv_sms_send_msg(srv_send_handle, NULL, (void*)0);
	#endif
	mmi_sms_display_popup_ext(STR_GLOBAL_SENT, MMI_EVENT_FAILURE);//xiaonan note
}
#endif