📄 dcw_pb_api.c
字号:
DCW_PB_getCompareNumber(bcdNumPtr,&numItem.cmpNum);
DCW_PB_twoSplitSearch(0, g_pb.numSearchList.count, (void *)&numItem, DCW_PB_comparePhoneNumber,&searchInfo);
if(searchInfo.pos == 0)
{
posOne = DCW_PB_16_INVALID;
posTwo = searchInfo.pos;
}
else if(searchInfo.pos == g_pb.numSearchList.count)
{
posOne = searchInfo.pos - 1;
posTwo = DCW_PB_16_INVALID;
}
else
{
posOne = searchInfo.pos - 1;
posTwo = searchInfo.pos;
}
}
else
{
posOne = DCW_PB_16_INVALID;
posTwo = DCW_PB_16_INVALID;
}
if(posTwo != DCW_PB_16_INVALID)
{
if((numItem.cmpNum.high == g_pb.numSearchList.ptr[posTwo].cmpNum.high) &&
(numItem.cmpNum.low == g_pb.numSearchList.ptr[posTwo].cmpNum.low) &&
(numItem.cmpNum.len == g_pb.numSearchList.ptr[posTwo].cmpNum.len))
{
*idPtr = g_pb.numSearchList.ptr[posTwo].id;
*typePtr = g_pb.numSearchList.ptr[posTwo].type;
}
}
if(*idPtr == DCW_PB_16_INVALID && posOne != DCW_PB_16_INVALID)
{
if((numItem.cmpNum.high == g_pb.numSearchList.ptr[posOne].cmpNum.high) &&
(numItem.cmpNum.low == g_pb.numSearchList.ptr[posOne].cmpNum.low) &&
(numItem.cmpNum.len == g_pb.numSearchList.ptr[posOne].cmpNum.len))
{
*idPtr = g_pb.numSearchList.ptr[posOne].id;
*typePtr = g_pb.numSearchList.ptr[posOne].type;
}
}
if(*idPtr == DCW_PB_16_INVALID)
{ /* 没找到 */
return FALSE;
}
else
{ /* 找到了对应的记录,直接从存储器中读取 */
return TRUE;
}
}
/****************************************************************************
* Function name : DCW_PB_loadGroupInfo
* Description : Load 组信息
* Param : None
* Return : None
* Author: : *************
* Note : None
*****************************************************************************/
void DCW_PB_loadGroupInfo(void)
{
uint16 i;
for(i = 0; i < DCW_PB_MAX_GROUP_NUM; i++)
{
g_pb.group.count[i] = 0;
}
for(i = 0; i < g_pb.nv.usedRecord; i++)
{
SCI_ASSERT(g_pb.nv.recordPtr[i].groupId < DCW_PB_MAX_GROUP_NUM);
g_pb.group.count[g_pb.nv.recordPtr[i].groupId]++;
}
}
/****************************************************************************
* Function name : DCW_PB_loadGroupInfo
* Description : Load 组信息
* Param : include FALSE: 加载未分组成员
TRUE : 加载相应的组成员
* Return : None
* Author: : *************
* Note : None
*****************************************************************************/
void DCW_PB_LoadGroupMember(BOOLEAN include)
{
uint16 i;
uint16 j;
uint8 groupId;
BOOLEAN load;
GUI_LISTBOX_ITEM_T addItem;
if(g_pb.operate.listInfo.addrManager.ptr != PNULL)
{
SCI_FREE(g_pb.operate.listInfo.addrManager.ptr);
g_pb.operate.listInfo.addrManager.ptr = PNULL;
}
if(include == FALSE)
{ //加载未分组记录
groupId = 0;
}
else
{ //加载该分组记录
groupId = g_pb.group.index[g_pb.group.curIndex];
SCI_ASSERT(groupId < DCW_PB_MAX_GROUP_NUM);
}
if(g_pb.group.count[groupId] == 0)
{
return;
}
else
{
g_pb.operate.listInfo.addrManager.amount = g_pb.group.count[groupId];
}
SCI_ASSERT(g_pb.operate.listInfo.addrManager.ptr == PNULL);
g_pb.operate.listInfo.addrManager.ptr
= SCI_ALLOC(sizeof(T_PB_RECORD_ITEM_ADDR) * g_pb.operate.listInfo.addrManager.amount);
SCI_ASSERT(g_pb.operate.listInfo.addrManager.ptr != PNULL);
for(i = 0,j = 0; i < g_pb.nv.usedRecord; i++)
{
if(g_pb.nv.recordPtr[i].groupId == groupId)
{
g_pb.operate.listInfo.addrManager.ptr[j].type = PHONEBOOK_NV_STORAGE;
g_pb.operate.listInfo.addrManager.ptr[j].pos = i;
g_pb.operate.listInfo.addrManager.ptr[j].offset = 0;
j++;
}
if(j >= g_pb.operate.listInfo.addrManager.amount)
{
break;
}
}
}
/****************************************************************************
* Function name : DCW_PB_addRecordToGroup
* Description : 增加组记录
* Param : None
* Return : None
* Author: : *************
* Note : None
*****************************************************************************/
void DCW_PB_addRecordToGroup(void)
{
uint16 i;
uint16 j;
uint16 pos;
if(g_pb.operate.listInfo.selectNumber == 0)
{
return;
}
for(i = 0; i < g_pb.operate.listInfo.selectNumber; i++)
{
SCI_ASSERT(g_pb.operate.listInfo.selectItemPtr[i] < g_pb.operate.listInfo.addrManager.amount);
pos = g_pb.operate.listInfo.addrManager.ptr[g_pb.operate.listInfo.selectItemPtr[i]].pos;
for(j = 0; j < g_pb.group.amount;j++)
{
if(g_pb.group.index[j] == g_pb.nv.recordPtr[pos].groupId)
{
break;
}
}
SCI_ASSERT(j < g_pb.group.amount);
SCI_ASSERT(g_pb.group.count[j] > 0);
g_pb.group.count[j]--;
g_pb.group.count[g_pb.group.index[g_pb.group.curIndex]]++;
//animation start
g_pb.operate.processing = TRUE;
g_pb.nv.recordPtr[pos].groupId = g_pb.group.index[g_pb.group.curIndex];
DCW_PB_WriteOneRecordToNv(& g_pb.nv.recordPtr[pos],FALSE);
g_pb.operate.processing = FALSE;
//animation end
}
}
/****************************************************************************
* Function name : DCW_PB_delRecordFromGroup
* Description : 删除组记录
* Param : None
* Return : None
* Author: : *************
* Note : None
*****************************************************************************/
void DCW_PB_delRecordFromGroup(void)
{
uint16 i;
uint16 pos;
if(g_pb.operate.listInfo.selectNumber == 0)
{
return;
}
for(i = 0; i < g_pb.operate.listInfo.selectNumber; i++)
{
SCI_ASSERT(g_pb.operate.listInfo.selectItemPtr[i] < g_pb.operate.listInfo.addrManager.amount);
pos = g_pb.operate.listInfo.addrManager.ptr[g_pb.operate.listInfo.selectItemPtr[i]].pos;
SCI_ASSERT(g_pb.group.count[g_pb.group.index[g_pb.group.curIndex]] > 0);
g_pb.group.count[g_pb.group.index[g_pb.group.curIndex]]--;
g_pb.group.count[0]++;
g_pb.operate.processing = TRUE;
g_pb.nv.recordPtr[pos].groupId = 0;
DCW_PB_WriteOneRecordToNv(& g_pb.nv.recordPtr[pos],FALSE);
g_pb.operate.processing = FALSE;
}
}
/****************************************************************************
* Function name : DCW_PB_delOneGroup
* Description : 删除组
* Param : None
* Return : None
* Author: : *************
* Note : None
*****************************************************************************/
void DCW_PB_delOneGroup(void)
{
uint16 i;
uint16 offset;
uint16 groupId;
groupId = g_pb.group.index[g_pb.group.curIndex];
for(i = g_pb.group.curIndex; i < g_pb.group.amount - 1; i++)
{
g_pb.group.index[i] = g_pb.group.index[i + 1];
}
g_pb.group.count[groupId] = 0;
g_pb.group.groupName[groupId].len = 0;
g_pb.group.curIndex = 0;
g_pb.operate.processing = TRUE;
for(i = 0; i < g_pb.nv.usedRecord; i++)
{
if(g_pb.nv.recordPtr[i].groupId == groupId)
{
g_pb.nv.recordPtr[i].groupId = 0;
DCW_PB_WriteOneRecordToNv(& g_pb.nv.recordPtr[i],FALSE);
}
}
offset = (uint16)(MMINV_PHONEBOOK_GROUP_0 + groupId - DCW_PB_MIN_GROUP_NUM);
if(MNNV_WriteItem(offset, sizeof(T_PB_M_STRING), (void *)(&(g_pb.group.groupName[g_pb.group.curIndex]))) == MN_RETURN_FAILURE)
{
}
else
{
//TRACE
}
g_pb.group.amount--;
g_pb.operate.processing = FALSE;
}
/* ***************************************************************************
* Function name : DCW_PB_replaceGroupName
* Description : 替换组名字
* Param : *strInfo : 字符串
pos : 替换哪一个组
* Return : None
* Author: : *************
* Note : None
*****************************************************************************/
void DCW_PB_replaceGroupName(TEXTEDIT_STRING_INFO_T *strInfoPtr,uint8 pos)
{
uint16 i;
uint16 j;
uint8 addr = 0xff;
uint16 offset;
if(pos == g_pb.group.amount)
{ /* 新增组名 */
for(i = DCW_PB_MIN_GROUP_NUM; i < DCW_PB_MAX_GROUP_NUM; i++)
{
if(g_pb.group.groupName[i].len == 0)
{
addr = i;
break;
}
}
g_pb.group.amount++;
}
else
{
addr = g_pb.group.index[pos];
}
SCI_ASSERT(addr >= DCW_PB_MIN_GROUP_NUM && addr < DCW_PB_MAX_GROUP_NUM);
g_pb.group.groupName[addr].ucs2 = strInfoPtr->is_ucs2;
g_pb.group.groupName[addr].len = MIN(LISTBOX_STRING_MAX_NUM,strInfoPtr->str_len);
SCI_MEMCPY(g_pb.group.groupName[addr].array,strInfoPtr->str_ptr,g_pb.group.groupName[addr].len);
g_pb.group.index[pos] = addr;
offset = (uint16)(MMINV_PHONEBOOK_GROUP_0 + addr - DCW_PB_MIN_GROUP_NUM);
if(MNNV_WriteItem(offset, sizeof(T_PB_M_STRING), (void *)(&(g_pb.group.groupName[addr]))) == MN_RETURN_FAILURE)
{
SCI_ASSERT(FALSE);
}
else
{
}
}
/****************************************************************************
* Function name : DCW_PB_getPhoneNumInNv
* Description : 得到nv记录里的电话数
* Param : None
* Return : uint16 nv记录里的电话数
* Author: : *************
* Note : None
*****************************************************************************/
uint16 DCW_PB_getPhoneNumInNv(void)
{
uint16 i = 0;
uint16 j = 0;
uint16 count = 0;
for(i = 0; i < g_pb.nv.usedRecord; i++)
{
for(j = 0; j < DCW_PB_MAX_NV_PHONE_NUM; j++)
{
if(g_pb.nv.recordPtr[i].num[j].len > 0)
{
count++;
}
}
}
return count;
}
/****************************************************************************
* Function name : DCW_PB_setBaseWinId
* Description : Pb的窗口,基于g_pb.baseWinId之上
* Param : winId 一个窗口Id
* Return : None
* Author: : *************
* Note : None
*****************************************************************************/
void DCW_PB_setBaseWinId(MMI_COMMON_WINDOW_ID_E winId)
{
g_pb.baseWinId = winId;
}
/****************************************************************************
* Function name : DCW_PB_getBaseWinId
* Description : Pb的窗口,基于g_pb.baseWinId之上
* Param : None
* Return : MMI_COMMON_WINDOW_ID_E 一个窗口Id
* Author: : *************
* Note : None
*****************************************************************************/
MMI_COMMON_WINDOW_ID_E DCW_PB_getBaseWinId(void)
{
return g_pb.baseWinId;
}
/****************************************************************************
* Function name : DCW_PB_closeWinUntilOneWinId
* Description : 关闭winId以上的所有窗口
* Param : winId 一个窗口Id
* Return : None
* Author: : *************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -