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

📄 dcw_pb_interface.c

📁 重写的展迅电话本, 重写的展迅电话本, 重写的展迅电话本,
💻 C
📖 第 1 页 / 共 2 页
字号:

/*****************************************************************************
** File Name:      dcw_pb_interface.c                                        *
** Author:         *************                                             *
** Date:           2006-04-05                                                *
** Copyright:      2006 ************* All Rights                             *
** Description:    此文件包括 PB 的所有对外接口                              *
/*****************************************************************************
**                         Important Edit History                            *
** --------------------------------------------------------------------------*
** DATE                 NAME             DESCRIPTION                         *
** 2006-04-05           *************     Create                             *
******************************************************************************/

#ifndef _DCW_PB_INTERFACE_C_
#define _DCW_PB_INTERFACE_C_

#include "dcw_pb.h"

/****************************************************************************
 *  Function name : DCW_PB_InitApp
 *  Description   : 此函数由开机时候的初始化程序调用,用于初始化 PB 的数据
 *  Param         : None
 *  Return        : None
 *  Author:       : *************
 *  Note          : None
 *****************************************************************************/
void DCW_PB_InitApp(void)
{
    /* 初始化 PB 的全局变量 */
    DCW_PB_InitGlobeValiable();

    /* 初始化 PB 的 Application */
    g_pb_app.ProcessMsg     = DCW_PB_handlePsMsg;
    g_pb_app.component_type = CT_APPLICATION;
}
/****************************************************************************
 *  Function name : DCW_PB_handlePsMsg
 *  Description   : PB 的协议栈消息处理函数
 *  Param         : None
 *  Return        : None
 *  Author:       : *************
 *  Note          : None 
 *****************************************************************************/
MMI_RESULT_E DCW_PB_handlePsMsg(PWND app_ptr, uint16 msg_id, DPARAM  param)
{
    MMI_RESULT_E result = MMI_RESULT_TRUE;

    SCI_TRACE_LOW("\r\n--DCW_PB_handlePsMsg---all--msg_id = %d", msg_id);

    switch (msg_id)
	{
	case APP_MN_CALL_READY_IND:
	    /* 发送从 SIM卡 装载数据的请求 */
        SCI_TRACE_LOW("DCW_PB_handlePsMsg: received APP_MN_CALL_READY_IND");
        DCW_PB_ReadDataFromSimCard();
	    result = MMI_RESULT_CONTINUE;
	    break;

    case APP_MN_MSISDN_UPDATE_CNF:
        /* 关于本机号码 */
        SCI_TRACE_LOW("DCW_PB_handlePsMsg: received APP_MN_MSISDN_UPDATE_CNF");
		break;

	case APP_MN_ADN_UPDATE_CNF:
        SCI_TRACE_LOW("DCW_PB_handlePsMsg: received APP_MN_ADN_UPDATE_CNF");
        SCI_TRACE_LOW("\r\n--DCW_PB_handlePsMsg-----received APP_MN_ADN_UPDATE_CNF");
        DCW_PB_handleSimCallBack(param);
		break;

    default:
        result = MMI_RESULT_FALSE;
        break;
    }
	return (result);
}
/****************************************************************************
 *  Function name : DCW_PB_ReadDataFromSimCard
 *  Description   : 读取 SIM卡 里的数据,并整理从Nv及SIm卡读度出来的数据。      
 *  Param         : None
 *  Return        : None
 *  Author:       : *************
 *  Note          : None 
 *****************************************************************************/
void DCW_PB_ReadDataFromSimCard(void)
{  
    /* 读取 SIM卡 里的记录信息*/
    DCW_PB_ReadSimCardRecordsInfo();    

    /* 发送从nv装载数据的请求 */
    DCW_PB_AskReadDataFromNv();    
}
/****************************************************************************
 *  Function name : DCW_PB_ReadDataFromNv
 *  Description   : 读取 Nv 里的数据,并发出读SIM请求     
 *  Param         : None
 *  Return        : None
 *  Author:       : *************
 *  Note          : None 
 *****************************************************************************/
void DCW_PB_ReadDataFromNv(void)
{
    /* 读取组信息 */
    DCW_PB_ReadGroupsInfo();

    /* 读取Nv里的 记录 信息*/
    DCW_PB_ReadNvRecordsInfo();

    /* 生成号码列表,以便于从号码查找记录 */
    DCW_PB_createNumberList();

    /* 初始化完成 */
    DCW_PB_initialFinish();
}
/****************************************************************************
 *  Function name : DCW_PB_OpenMainMenuWin
 *  Description   : 打开电话薄的主菜单      
 *  Param         : None
 *  Return        : None
 *  Author:       : *************
 *  Note          : None 
 *****************************************************************************/
void DCW_PB_OpenMainMenuWin(void)
{
    DCW_PB_openWindows(g_pb_mainMenuWinTab,PNULL);
    DCW_PB_setBaseWinId(MMK_GetFocusWinId());
}
/****************************************************************************
 *  Function name : DCW_PB_IsReady
 *  Description   : PB是否可以调用
 *  Param         : void
 *  Return        : BOOLEAN                    
 *  Author:       : *************
 *  Note          : None 
 *****************************************************************************/
BOOLEAN DCW_PB_IsReady(void)
{
    if(g_pb.operate.processing == FALSE && DCW_PB_IsPBInitialized() == TRUE)
    {
        return TRUE;
    }
    else
    {
        return FALSE;
    }
}
BOOLEAN DCW_PB_Processing(void)
{
    return g_pb.operate.processing;
}
/****************************************************************************
 *  Function name : DCW_PB_IsPBInitialized
 *  Description   : PB是否初始化完成
 *  Param         : None
 *  Return        : BOOLEAN     TRUE    完成了
                                FALSE   没有完成
 *  Author:       : *************
 *  Note          : None 
 ***************************************************************************/
BOOLEAN DCW_PB_IsPBInitialized(void)
{
    return (g_pb.nv.initialize  == TRUE && g_pb.sim.initialize == TRUE);
}
/****************************************************************************
 *  Function name : DCW_PB_browseRecords
 *  Description   : 浏览电话记录
 *  Param         : operateType     操作类型
                    maxSelectedNum  最大可选条目
 *  Return        : None
 *  Author:       : *************
 *  Note          : None 
 *****************************************************************************/
void DCW_PB_browseRecords(E_PB_OPERATE_TYPE	 operateType,uint16 maxSelectedNum)
{
    if(g_pb.nv.usedRecord != 0 || g_pb.sim.usedRecord != 0)
    {
        switch(operateType)
        {
        case PB_OPERATE_SMS_SGL_SELECT_BROWSE_E:
        case PB_OPERATE_MMS_SGL_SELECT_BROWSE_E:
            DCW_PB_loadOperateInfo(operateType,PB_SUB_OPERATE_NONE_E,(void *)&maxSelectedNum);
            DCW_PB_openWindows(g_pb_singleSelectBrowseWinTab, PNULL);
            DCW_PB_setBaseWinId(MMK_GetFocusWinId());
            break;
        case PB_OPERATE_SMS_MUL_SELECT_BROWSE_E:
        case PB_OPERATE_MMS_MUL_SELECT_BROWSE_E:
            DCW_PB_loadOperateInfo(operateType,PB_SUB_OPERATE_NONE_E,(void *)&maxSelectedNum);
            DCW_PB_openWindows(g_pb_multipleSelectBrowseWinTab, PNULL);
            DCW_PB_setBaseWinId(MMK_GetFocusWinId());
            break;
        case PB_OPERATE_GENERAL_BROWSE_E:
            DCW_PB_loadOperateInfo(operateType,PB_SUB_OPERATE_NONE_E,(void *)&maxSelectedNum);
            DCW_PB_openWindows(g_pb_recordBrowseWinTab, PNULL);
            DCW_PB_setBaseWinId(MMK_GetFocusWinId());
            break;
        default:
            break;
        }
    }
    else
    {
         DCW_PB_openWindows(PNULL,&g_pb_recordEmptyWinTab);
    }
}
/****************************************************************************
 *  Function name : DCW_PB_addOneBcdNumberToRecord
 *  Description   : 把一个电话添加为一条nv记录的一项
 *  Param         : *bcdNum      要添加的电话号码
 *  Return        : None
 *  Author:       : *************
 *  Note          : None 
 *****************************************************************************/
void DCW_PB_addOneBcdNumberToRecord(T_PB_BCD_NUMBER *bcdNumPtr)
{   
    SCI_ASSERT(bcdNumPtr != PNULL && bcdNumPtr->len != 0);

    g_pb_bcdNum = *bcdNumPtr;
 
    if(g_pb.nv.usedRecord > 0)
    {
        DCW_PB_loadOperateInfo(PB_OPERATE_ADD_NUM_TO_RECORD_E,PB_SUB_OPERATE_NONE_E,PNULL);
        DCW_PB_openWindows(g_pb_recordBrowseWinTab, PNULL);
        DCW_PB_setBaseWinId(MMK_GetFocusWinId());
    }
    else
    {
        DCW_PB_openWindows(PNULL,&g_pb_recordEmptyWinTab);
    }
}
/****************************************************************************
 *  Function name : DCW_PB_IsTwoBcdEqual
 *  Description   : 判断两个BCD电话码是否相等
 *  Param         : *bcdNumSrc      BCD电话码1
                    *bcdNumDst      BCD电话码2
 *  Return        : BOOLEAN     TRUE    相等
                                FALSE   不等
 *  Author:       : *************
 *  Note          : None 
 *****************************************************************************/
BOOLEAN DCW_PB_IsTwoBcdEqual(T_PB_BCD_NUMBER  *bcdNumSrcPtr,T_PB_BCD_NUMBER  *bcdNumDstPtr)
{
    T_PB_COMPARE_NUMBER     cmpNumSrc;
    T_PB_COMPARE_NUMBER     cmpNumDst;

    DCW_PB_getCompareNumber(bcdNumSrcPtr,&cmpNumSrc);
    DCW_PB_getCompareNumber(bcdNumDstPtr,&cmpNumDst);

    if(cmpNumSrc.high == cmpNumDst.high && cmpNumSrc.low == cmpNumDst.low && cmpNumSrc.len == cmpNumDst.len)
    {
        return TRUE;
    }
    else
    {
        return FALSE;
    }
}

/****************************************************************************
 *  Function name : DCW_PB_addOneRecordByNum
 *  Description   : 由一个电话做一条记录,并且插入Nv或者Sim卡
 *  Param         : bcdNum 电话的BCD码
 *  Return        : None
 *  Author:       : *************
 *  Note          : None
 *****************************************************************************/
void DCW_PB_addOneRecordByNum(T_PB_BCD_NUMBER *bcdNumPtr)
{
    SCI_MEMSET(&g_pb_simRecord,0x00,sizeof(T_PB_SIM_RECORD));
    SCI_MEMSET(&g_pb_nvRecord,0x00,sizeof(T_PB_NV_RECORD));

    g_pb_simRecord.num = *bcdNumPtr;
    /* 先暂时把电话保存在g_pb_bcdNum,等选择类型后,再把此电话放在相应的位置 */
    g_pb_bcdNum = *bcdNumPtr;

    /* 打开一个Menu */
    DCW_PB_openWindows(g_pb_addOneRecordWinTab, PNULL);
    DCW_PB_setBaseWinId(MMK_GetFocusWinId());
}
/****************************************************************************
 *  Function name : DCW_PB_addOneRecordByMail
 *  Description   : 由一个mail做一条记录,并且插入Nv
 *  Param         : mail 电子邮件
 *  Return        : None
 *  Author:       : *************
 *  Note          : None 
 *****************************************************************************/
void DCW_PB_addOneRecordByMail(T_PB_L_STRING *mailPtr) 
{
    SCI_MEMSET(&g_pb_nvRecord,0x00,sizeof(T_PB_NV_RECORD));
    g_pb_nvRecord.mail  = *mailPtr;

    if(g_pb.nv.usedRecord < g_pb.nv.maxRecord)
    {   
        DCW_PB_loadOperateInfo(PB_OPERATE_ADD_IN_NV_E,PB_SUB_OPERATE_NONE_E,PNULL);                
        DCW_PB_openWindows(g_pb_editNvRecordWinTab, PNULL);
        DCW_PB_setBaseWinId(MMK_GetFocusWinId());
    }
    else
    {   /* Nv记录满 */
         DCW_PB_openWindows(PNULL,&g_pb_nvFullWinTab);
    }
}
/****************************************************************************
 *  Function name : DCW_PB_getRecordInfoByBcdNum
 *  Description   : 通过一个BCD电话码,查找包含该电话的记录的信息
 *  Param         : *namePtr    记录的名字
                    nameMaxLen  名字的最大长度
                    groupId     该电话在记录重的组别
                    iconId      该电话对应的小图标
                    bcdNum      BCD电话码,InPut
 *  Return        : BOOLEAN     TRUE    查找成功
                                FALSE   查找失败
 *  Author:       : *************
 *  Note          : None 
 *****************************************************************************/
BOOLEAN DCW_PB_getRecordInfoByBcdNum(MMI_STRING_T      *namePtr,
                                     uint16             nameMaxLen,
                                     uint8             *groupIdPtr,
                                     MMI_IMAGE_ID_T    *iconIdPtr,
                                     T_PB_BCD_NUMBER   *bcdNumPtr)  
{
    uint16              id;
    PHONEBOOK_STORAGE_E type;

    if(DCW_PB_searchNumInNumList(bcdNumPtr,&id,&type) == TRUE)
    {   /* 存在包含该电话码的记录 */
        if(type == PHONEBOOK_SIM_STORAGE)
        {   /* 包含该电话码的记录在SIM卡里 */
            T_PB_SIM_RECORD record;
            
            if(DCW_PB_ReadOneRecordFromSim(&record,id,PHONEBOOK_SIM_STORAGE) == FALSE)
            {   /* 读出记录 */
                SCI_ASSERT(FALSE);
            }

            if(namePtr != PNULL)
            {
                namePtr->is_ucs2 = record.outerName.ucs2;
                namePtr->length  = MIN(nameMaxLen,record.outerName.len);
                SCI_MEMCPY(namePtr->str_ptr,record.outerName.array,namePtr->length);
            }
        }
        else if(type == PHONEBOOK_NV_STORAGE)
        {   /* 包含该电话码的记录在NV里 */
            T_PB_NV_RECORD record;
            
            if(DCW_PB_ReadOneRecordFromNv(&record,id) == FALSE)
            {   /* 读出记录 */
                SCI_ASSERT(FALSE);
            }

            if(namePtr != PNULL)
            {
                namePtr->is_ucs2 = record.outerName.ucs2;
                namePtr->length  = MIN(nameMaxLen,record.outerName.len);
                SCI_MEMCPY(namePtr->str_ptr,record.outerName.array,namePtr->length);
            }
            
            if(groupIdPtr != PNULL)
            {
                *groupIdPtr = record.groupId;
                if(iconIdPtr != PNULL)
                {
                    switch(*groupIdPtr)
                    {
                    case 1:

⌨️ 快捷键说明

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