icfans

Dataaccount CUI根据apptype来显示dataaccount A

0
阅读(1341)

[DESCRIPTION]
10A data account, 调用data account CUI时会将所有的data account全部显示出来,而不能针对设置的app type只显
示对应的dataaccount.
[SOLUTION]
在data account CUI中添加一个属性apptype,可以只显示apptype赋值了的。Apptype为0时,仍显示所有的data
account
可以按如下修改方式修改:
1. 增加apptype的字段
dataaccountcui.h
cui_dtcnt_select_account_option_struct;
最后加上一个字段
kal_uint64 AppType;
Dataaccountcuigprot.h
cui_dtcnt_select_run_struct;
最后加上一个字段
kal_uint64 AppType;
2. set param时给apptype赋值
dataaccountcui.c
cui_dtcnt_select_set_param()
最后加上语句
g_cui_dtcnt_sel_acct[index].AppType = p_args->AppType;
3. cui run时进行判断
dataaccountcui.c
a. 先include相应的文件
#include "DtcntSrvIntDef.h"
#include "DtcntSrvIntEnum.h"
#include "DtcntSrvIntStruct.h"
#include "DtcntSrvDb.h"
b. 在以下各个函数中都添加相应的判断(10A,11A版本)
cui_dtcnt_prepare_list_info_cbm()
cui_dtcnt_prepare_list_info_dual()
cui_dtcnt_prepare_list_info_single()
增加一个变量定义
srv_dtcnt_account_info_st* dtcnt_app = NULL;
增加比较判断的语句:
if(!srv_sim_ctrl_any_sim_is_available())
{
selected = 0;
}
查找整个函数,在这个语句的后面,加上判断比较. 每个函数有多处需要添加,还请注意.
if(g_cui_dtcnt_sel_acct[cntx_index].AppType != 0)
{
dtcnt_app = srv_dtcnt_db_store_get_acc_info((U8)g_mmi_dtcnt_list_item[i].profile_id);
if((dtcnt_app->app_type & g_cui_dtcnt_sel_acct[cntx_index].AppType) == 0)
selected = 0;
}
11B版本如下ICfans
在cui_dtcnt_is_account_display函数中增加一个变量定义
srv_dtcnt_account_info_st* dtcnt_app = NULL;
并且在这个语句的后面增加//add code部分的代码
if ((sel_acct->option & CUI_DTCNT_SELECT_WITHOUT_PROXY_ONLY) &&
(cui_dtcnt_is_account_use_proxy(acct_info->profile_id)))
{
return MMI_FALSE;
}
//add code begin
if (sel_acct->AppType != 0)
{
dtcnt_app = srv_dtcnt_db_store_get_acc_info(acct_info->profile_id);
if ((sel_acct->AppType & dtcnt_app->app_type) == 0)
{
return MMI_FALSE;
} }
//add code end
4. 调用data account的cui时,不同的app赋值不同的apptype(wap和mms为例)
wapprofilemain.c(10A)
mmi_wap_prof_entry_dtcnt_cui()
cui_dtcnt_select_set_param(mmi_wap_prof_dtcnt_cui_id, ¶);
之前加上语句
if(g_mmi_wap_prof_cntx.app_id == MMI_WAP_PROF_APPID_MMS)
para.AppType = DTCNT_APPTYPE_MMS; //MMS
else
para.AppType = DTCNT_APPTYPE_BRW_HTTP | DTCNT_APPTYPE_BRW_WAP; //wap
wapprofilemain.c(11A)
mmi_wap_prof_app_entry_dtcnt_cui 函数:
#if defined (__MMI_WAP_PROF_CBM_WAP_FALLBACK_SUPPORT__)
if(app_id == SRV_WAP_PROF_APPID_BRW)
para.option = CUI_DTCNT_SELECT_BEARER_SWITCH |
CUI_DTCNT_SELECT_ALLOW_SAME_BEARER_SWITCH | CUI_DTCNT_SELECT_NOT_SUBSCRIBE_ACCOUNT;
para.AppType = DTCNT_APPTYPE_BRW_HTTP | DTCNT_APPTYPE_BRW_WAP; //wap
#else
if(app_id == SRV_WAP_PROF_APPID_BRW)
para.option = CUI_DTCNT_SELECT_NOT_SUBSCRIBE_ACCOUNT;
para.AppType = DTCNT_APPTYPE_BRW_HTTP | DTCNT_APPTYPE_BRW_WAP; //wap
#endif
#if defined (__MMI_WAP_PROF_CBM_MMS_FALLBACK_SUPPORT__)
if(app_id == SRV_WAP_PROF_APPID_MMS)
para.option = CUI_DTCNT_SELECT_BEARER_SWITCH |
CUI_DTCNT_SELECT_ALLOW_SAME_BEARER_SWITCH | CUI_DTCNT_SELECT_NOT_SUBSCRIBE_ACCOUNT |
CUI_DTCNT_SELECT_SIM_PROFILE ;
para.AppType = DTCNT_APPTYPE_MMS; //MMS
#else
if(app_id == SRV_WAP_PROF_APPID_MMS)
para.option = CUI_DTCNT_SELECT_NOT_SUBSCRIBE_ACCOUNT | CUI_DTCNT_SELECT_SIM_PROFILE;
para.AppType = DTCNT_APPTYPE_MMS; //MMS
#endif