通过函数实现删除通话记录

这里只讨论双卡平台,并以已拨电话为例(其他类似),卡1跟卡2的实现函数不一样。

 

 

1

1、  函数实现调用入口:myapp_DeleteDialedNum()

其函数原型为:myapp_DeleteDialedNum()

{

myapp_ReqDeleteCallLog(PHB_LND, chis_p->currDialedCallIndex, 1);

return;

}//和系统函数一样,只是改了函数名

2、  调用函数myapp_ReqDeleteCallLogU8 type, U8 index, U8 no_data

其函数原型为:void myapp_ReqDeleteCallLog(U8 type, U8 index, U8 no_data)

{

   

    MYQUEUE Message;

    DEL_LAST_NUMBER_REQ *dataPtr;

    ClearInputEventHandler(MMI_DEVICE_ALL);

    if(type==PHB_LND)

       {

            SetProtocolEventHandler(myapp_RspDeleteDialedNum, PRT_MMI_PHB_DEL_LAST_NUMBER_RSP);

       }

    else{

               return;

           }

    

         

    dataPtr = (DEL_LAST_NUMBER_REQ*) OslConstructDataPtr(sizeof(DEL_LAST_NUMBER_REQ));

    dataPtr->type = type;

    dataPtr->index = index;

    dataPtr->no_data = no_data;

 

    Message.oslSrcId = MOD_MMI;

    Message.oslDestId = MOD_L4C;

    Message.oslMsgId = PRT_MMI_PHB_DEL_LAST_NUMBER_REQ;

    Message.oslDataPtr = (oslParaType*) dataPtr;

    Message.oslPeerBuffPtr = NULL;

 

    ClearInputEventHandler(MMI_DEVICE_ALL);

    OslMsgSendExtQueue(&Message);

    return;

}//和系统函数不一样,改的地方是if语句,原为switch语句,实现选择删除哪种通话记录,我们只需实现删除已拨电话(其他类同),所以除去多余代码。

3、  在上一个函数里的if条件满足后调用函数myapp_RspDeleteDialedNum(void *info)

其函数原型为:void myapp_RspDeleteDialedNum(void *info)

{

   

    S32 i;

    DEL_LAST_NUMBER_RSP *rsp;

 

   

    rsp = (DEL_LAST_NUMBER_RSP*) info;

   

    if (rsp->result.flag == CALL_LOG_RESULT_OK)

{  

        for (i = chis_p->currDialedCallIndex; i < (chis_p->nDialedCalls - 1); i++)

        {

            memcpy(&chis_p->dialedCalls[i], &chis_p->dialedCalls[i + 1], sizeof(DIALED_CALL));

        }

        chis_p->nDialedCalls--;

        if ((chis_p->currDialedCallIndex >= chis_p->nDialedCalls) && (chis_p->nDialedCalls !=

 

0))

        {              chis_p->currDialedCallIndex = chis_p->nDialedCalls - 1;

        }

 }

    if (chis_p->nDialedCalls == 0)

    {    #ifdef __MMI_CH_MIXED_CALL_LOG__

        if (!IsScreenPresent(SCR8055_CALLS_LIST_DIALED))

    #ifdef __MMI_CH_OPTIONS_INCLUDE_INFO__

            DeleteScreenIfPresent(SCR8009_DIALED_CALL_OPTIONS);

    #else

            DeleteBetweenScreen(SCR8008_CALL_DIALED, SCR8009_DIALED_CALL_OPTIONS);

    #endif

        else

    #endif /* __MMI_CH_MIXED_CALL_LOG__ */

            DeleteBetweenScreen(SCR8055_CALLS_LIST_DIALED, SCR8009_DIALED_CALL_OPTIONS);

    }

    else

#ifdef __MMI_CH_OPTIONS_INCLUDE_INFO__

        DeleteScreenIfPresent(SCR8009_DIALED_CALL_OPTIONS);

#else

        DeleteBetweenScreen(SCR8008_CALL_DIALED, SCR8009_DIALED_CALL_OPTIONS);

#endif

    return;

}//和系统函数不一样,修改部分为除去了删除成功后的提示

 

 

至此,用以上三个函数可实现删除卡1已拨电话的记录,每次删除一条。

2

1、调用函数入口MTPNP_PFAL_CallLog_Del_DialedNum(),是系统函数。

其函数原型为:void MTPNP_PFAL_CallLog_Del_DialedNum(void)

{

    U8 index;

 

    ClearInputEventHandler(MMI_DEVICE_ALL);

    ClearKeyHandler(KEY_END, KEY_EVENT_UP);

    ClearKeyHandler(KEY_END, KEY_EVENT_DOWN);

    ClearKeyHandler(KEY_END, KEY_LONG_PRESS);

    ClearKeyHandler(KEY_END, KEY_REPEAT);

    myapp_trace("111");

    index = slave_chis_p->currDialedCallIndex;

    g_slave_chist_del_call_log_type = MTPNP_PFAL_DIALED;

    slave_chis_p->isDeleteAll = MTPNP_FALSE;

    MTPNP_AD_DelDialedCallHistory(index);

}

2、调用了一个系统封装了的函数MTPNP_AD_DelDialedCallHistory(index);

3、在上个函数应该是实现了删除卡2已拨电话的功能,完成后调用函数

MTPNP_PFAL_Delete_DialedCalllog_Success(),

在该函数里有弹出删除成功的语句,所以需要在实现我们功能时候跳过提示语句

DisplayPopup((MTPNP_UINT8 *) GetString(STR_GLOBAL_DELETED), IMG_GLOBAL_ACTIVATED, 1, CS_NOTIFYDURATION, SUCCESS_TONE);

因此增加了一个全局变量标志位myapp_deleteFlag,在函数myapp_DeleteSim2DialedFlag里对其实现赋值为真,再用语句if(myapp_deleteFlag==1)

{myapp_deleteFlag=0;

}else{提示}把提示包含起来,实现在通过我们函数删除卡2已拨电话时不提示删除成功。

因此在调用卡2删除已拨电话函数入口的时候,需先调用函数myapp_DeleteSim2DialedFlag

总结:因为卡1、卡2不一样,所以在实现总的删除已拨电话是还需要判断卡,在此引用了系统函数mmi_bootup_is_sim_valid(),所以实现功能调用时为:

#ifdef __MMI_DUAL_SIM_SINGLE_CALL__

       if(mmi_bootup_is_sim_valid())

       { 

          myapp_DeleteDialedNum();//实现删除卡1已拨电话

}

       else{

             

myapp_DeleteSim2DialedFlag();//置标志位值为真跳过删除成功提示

          MTPNP_PFAL_CallLog_Del_DialedNum();//实现删除卡2已拨电话

              }      

          #endif

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值