📄 bookengine.cpp
字号:
#include <cpbkcontactengine.h> //PbkEng.lib
#include <tpbkcontactitemfield.h>
#include <cpbkcontactitem.h>
#include <CNTFLDST.H>
#include "BookEngine.h"
#define MEMORY_FREE(p) if(p){delete p; p=NULL;}
/*****************************************************************
*********************** CQBookEngine ******************************
*****************************************************************/
CQBookEngine* CQBookEngine::NewL()
{
CQBookEngine* self = CQBookEngine::NewLC();
CleanupStack::Pop();
return self;
}
CQBookEngine* CQBookEngine::NewLC()
{
CQBookEngine* self = new(ELeave) CQBookEngine;
CleanupStack::PushL(self);
self->ConstructL();
return self;
}
CQBookEngine::CQBookEngine()
{
m_pPbkContactEngine = NULL;
}
void CQBookEngine::ConstructL()
{
m_pPbkContactEngine = CPbkContactEngine::NewL();
}
CQBookEngine::~CQBookEngine()
{
MEMORY_FREE(m_pPbkContactEngine);
}
void CQBookEngine::AddBookL(RPointerArray<CQBookInfo>& aBookInfo)
{
TInt i = 0;
for(i = 0; i<aBookInfo.Count(); i++)
{
CQBookInfo* pBookInfo = static_cast<CQBookInfo*>(aBookInfo[i]);
CPbkContactItem* pContactItem = m_pPbkContactEngine->CreateEmptyContactL();
CleanupStack::PushL(pContactItem);
TPbkContactItemField* pField = NULL;
//lastName
pField = pContactItem->FindField(EPbkFieldIdLastName);
if(pField && (pBookInfo->GetLastName()))
{
pField->TextStorage()->SetTextL(pBookInfo->GetLastName()->Des());
}
//firstName
pField = pContactItem->FindField(EPbkFieldIdFirstName);
if(pField && (pBookInfo->GetFirstName()))
{
pField->TextStorage()->SetTextL(pBookInfo->GetFirstName()->Des());
}
//telephone
pField = pContactItem->FindField(EPbkFieldIdPhoneNumberGeneral);
if(pField && (pBookInfo->GetTelephone()))
{
pField->TextStorage()->SetTextL(pBookInfo->GetTelephone()->Des());
}
//hometelephone
pField = pContactItem->FindField(EPbkFieldIdPhoneNumberHome);
if(pField && (pBookInfo->GetHomeTelephone()))
{
pField->TextStorage()->SetTextL(pBookInfo->GetHomeTelephone()->Des());
}
//businesstelephone
pField = pContactItem->FindField(EPbkFieldIdPhoneNumberWork);
if(pField && (pBookInfo->GetBusinessTelephone()))
{
pField->TextStorage()->SetTextL(pBookInfo->GetBusinessTelephone()->Des());
}
//homemobile
pField = pContactItem->FindField(EPbkFieldIdPhoneNumberMobile);
if(pField && (pBookInfo->GetHomeMobileNumber()))
{
pField->TextStorage()->SetTextL(pBookInfo->GetHomeMobileNumber()->Des());
}
//添加条目
TContactItemId contactId = m_pPbkContactEngine->AddNewContactL(*pContactItem);
//设置条目ID
pBookInfo->SetItemID(contactId);
CleanupStack::PopAndDestroy(pContactItem);
}
}
void CQBookEngine::GetBookL(RPointerArray<CQBookInfo>& aBookInfo)
{
TInt i = 0;
_LIT(KEmpty, "");
TBuf<128> sTempBuf;
CQBookInfo* pBookInfo = NULL;
CContactIdArray* pArrayOfID = m_pPbkContactEngine->FindLC(KEmpty);
for(i = 0; i<pArrayOfID->Count(); i++)
{
pBookInfo = CQBookInfo::NewL();
CPbkContactItem* pContactItem = m_pPbkContactEngine->ReadContactLC((*pArrayOfID)[i]);
TPbkContactItemField* pField = NULL;
pBookInfo->SetItemID((*pArrayOfID)[i]);
CleanupStack::PushL(pContactItem);
//lastName
pField = pContactItem->FindField(EPbkFieldIdLastName);
sTempBuf.Zero();
if (pField)
{
pField->GetTextL(sTempBuf);
pBookInfo->SetLastName(sTempBuf);
}
//firstName
pField = pContactItem->FindField(EPbkFieldIdFirstName);
sTempBuf.Zero();
if (pField)
{
pField->GetTextL(sTempBuf);
pBookInfo->SetFirstName(sTempBuf);
}
//telephone
pField = pContactItem->FindField(EPbkFieldIdPhoneNumberGeneral);
sTempBuf.Zero();
if (pField)
{
pField->GetTextL(sTempBuf);
pBookInfo->SetTelephone(sTempBuf);
}
//hometelephone
pField = pContactItem->FindField(EPbkFieldIdPhoneNumberHome);
sTempBuf.Zero();
if (pField)
{
pField->GetTextL(sTempBuf);
pBookInfo->SetHomeTelephone(sTempBuf);
}
//businesstelephone
pField = pContactItem->FindField(EPbkFieldIdPhoneNumberWork);
sTempBuf.Zero();
if (pField)
{
pField->GetTextL(sTempBuf);
pBookInfo->SetBusinessTelephone(sTempBuf);
}
//homemobile
pField = pContactItem->FindField(EPbkFieldIdPhoneNumberMobile);
sTempBuf.Zero();
if (pField)
{
pField->GetTextL(sTempBuf);
pBookInfo->SetHomeMobileNumber(sTempBuf);
}
CleanupStack::PopAndDestroy(pField);
aBookInfo.Append(pBookInfo);
CleanupStack::PopAndDestroy(pContactItem);
}
CleanupStack::PopAndDestroy(pArrayOfID);
}
void CQBookEngine::ModifyBookL(RPointerArray<CQBookInfo>& aBookInfo)
{
TInt i = 0;
_LIT(KEmpty, "");
TBuf<128> sTempBuf;
CContactIdArray* pArrayOfID = m_pPbkContactEngine->FindLC(KEmpty);
for(i = 0; i<pArrayOfID->Count(); i++)
{
CPbkContactItem* pContactItem = m_pPbkContactEngine->ReadContactLC((*pArrayOfID)[i]) ;
if (pContactItem == NULL)
{
continue;
}
else
{
CleanupStack::PopAndDestroy(pContactItem);
pContactItem = m_pPbkContactEngine->OpenContactLCX((*pArrayOfID)[i]);
}
CQBookInfo* pBookInfo = static_cast<CQBookInfo*>(aBookInfo[i]);
//lastName
TPbkContactItemField* pField = pContactItem->FindField(EPbkFieldIdLastName);
if(pField && (pBookInfo->GetLastName()))
{
pField->TextStorage()->SetTextL(pBookInfo->GetLastName()->Des());
}
//firstName
pField = pContactItem->FindField(EPbkFieldIdFirstName);
if(pField && (pBookInfo->GetFirstName()))
{
pField->TextStorage()->SetTextL(pBookInfo->GetFirstName()->Des());
}
//telephone
pField = pContactItem->FindField(EPbkFieldIdPhoneNumberGeneral);
if(pField && (pBookInfo->GetTelephone()))
{
pField->TextStorage()->SetTextL(pBookInfo->GetTelephone()->Des());
}
//hometelephone
pField = pContactItem->FindField(EPbkFieldIdPhoneNumberHome);
if(pField && (pBookInfo->GetHomeTelephone()))
{
pField->TextStorage()->SetTextL(pBookInfo->GetHomeTelephone()->Des());
}
//businesstelephone
pField = pContactItem->FindField(EPbkFieldIdPhoneNumberWork);
if(pField && (pBookInfo->GetBusinessTelephone()))
{
pField->TextStorage()->SetTextL(pBookInfo->GetBusinessTelephone()->Des());
}
//homemobile
pField = pContactItem->FindField(EPbkFieldIdPhoneNumberMobile);
if(pField && (pBookInfo->GetHomeMobileNumber()))
{
pField->TextStorage()->SetTextL(pBookInfo->GetHomeMobileNumber()->Des());
}
m_pPbkContactEngine->CommitContactL(*pContactItem);
CleanupStack::PopAndDestroy(2);
}
CleanupStack::PopAndDestroy(pArrayOfID);
}
TInt CQBookEngine::GetCountL()
{
_LIT(KEmpty, "");
CContactIdArray* pArrayOfID = m_pPbkContactEngine->FindLC(KEmpty);
TInt nCount = pArrayOfID->Count();
CleanupStack::PopAndDestroy();
return nCount;
}
void CQBookEngine::DeleteBookByIdL(TInt aContactId)
{
m_pPbkContactEngine->DeleteContactL(aContactId);
}
void CQBookEngine::DeleteAllBookL()
{
_LIT(KEmpty, "");
CContactIdArray* pArrayOfID = m_pPbkContactEngine->FindLC(KEmpty);
m_pPbkContactEngine->DeleteContactsL(*pArrayOfID);
CleanupStack::PopAndDestroy();
}
TBool CQBookEngine::IsGroupL(TInt aContactId)
{
CContactGroup* pCntGroup = m_pPbkContactEngine->ReadContactGroupL(aContactId);
if(pCntGroup)
return ETrue;
return EFalse;
}
/*****************************************************************
*********************** CQGroupInfo ******************************
*****************************************************************/
CQGroupInfo* CQGroupInfo::NewL()
{
CQGroupInfo* self = CQGroupInfo::NewLC();
CleanupStack::Pop();
return self;
}
CQGroupInfo* CQGroupInfo::NewLC()
{
CQGroupInfo* self = new(ELeave) CQGroupInfo;
CleanupStack::PushL(self);
self->ConstructL();
return self;
}
CQGroupInfo::CQGroupInfo()
{
m_pStrGroupName = NULL;
m_nGroupID = -1;
}
void CQGroupInfo::ConstructL()
{
}
CQGroupInfo::~CQGroupInfo()
{
MEMORY_FREE(m_pStrGroupName);
m_arrBookID.ResetAndDestroy();
}
/*****************************************************************
*********************** CQBookInfo ******************************
*****************************************************************/
CQBookInfo* CQBookInfo::NewL()
{
CQBookInfo* self = CQBookInfo::NewLC();
CleanupStack::Pop();
return self;
}
CQBookInfo* CQBookInfo::NewLC()
{
CQBookInfo* self = new(ELeave) CQBookInfo;
CleanupStack::PushL(self);
self->ConstructL();
return self;
}
CQBookInfo::CQBookInfo()
{
m_nItem_ID = -1;
m_pStrLastName = NULL;
m_pStrFirstName = NULL;
m_pStrTelephone = NULL;
m_pStrHomeTelephone = NULL;
m_pStrBusinessTelephone = NULL;
m_pStrHomeMobile = NULL;
m_pStrModifyTime = NULL;
m_pStrModifyDate = NULL;
}
void CQBookInfo::ConstructL()
{
}
CQBookInfo::~CQBookInfo()
{
MEMORY_FREE(m_pStrLastName);
MEMORY_FREE(m_pStrFirstName);
MEMORY_FREE(m_pStrTelephone);
MEMORY_FREE(m_pStrHomeTelephone);
MEMORY_FREE(m_pStrBusinessTelephone);
MEMORY_FREE(m_pStrHomeMobile);
MEMORY_FREE(m_pStrModifyTime);
MEMORY_FREE(m_pStrModifyDate);
}
void CQBookInfo::SetLastName(const TDesC& aBuf)
{
MEMORY_FREE(m_pStrLastName);
if(aBuf.Length() > 0)
{
m_pStrLastName = HBufC::NewLC(aBuf.Length());
m_pStrLastName->Des().Copy(aBuf);
CleanupStack::Pop();
}
}
void CQBookInfo::SetFirstName(const TDesC& aBuf)
{
MEMORY_FREE(m_pStrFirstName);
if(aBuf.Length() > 0)
{
m_pStrFirstName = HBufC::NewLC(aBuf.Length());
m_pStrFirstName->Des().Copy(aBuf);
CleanupStack::Pop();
}
}
void CQBookInfo::SetTelephone(const TDesC& aBuf)
{
MEMORY_FREE(m_pStrTelephone);
if(aBuf.Length() > 0)
{
m_pStrTelephone = HBufC::NewLC(aBuf.Length());
m_pStrTelephone->Des().Copy(aBuf);
CleanupStack::Pop();
}
}
void CQBookInfo::SetHomeTelephone(const TDesC& aBuf)
{
MEMORY_FREE(m_pStrHomeTelephone);
if(aBuf.Length() > 0)
{
m_pStrHomeTelephone = HBufC::NewLC(aBuf.Length());
m_pStrHomeTelephone->Des().Copy(aBuf);
CleanupStack::Pop();
}
}
//m_sBusinessTelephone
void CQBookInfo::SetBusinessTelephone(const TDesC& aBuf)
{
MEMORY_FREE(m_pStrBusinessTelephone);
if(aBuf.Length() > 0)
{
m_pStrBusinessTelephone = HBufC::NewLC(aBuf.Length());
m_pStrBusinessTelephone->Des().Copy(aBuf);
CleanupStack::Pop();
}
}
//m_sHomeMobile
void CQBookInfo::SetHomeMobileNumber(const TDesC& aBuf)
{
MEMORY_FREE(m_pStrHomeMobile);
if(aBuf.Length() > 0)
{
m_pStrHomeMobile = HBufC::NewLC(aBuf.Length());
m_pStrHomeMobile->Des().Copy(aBuf);
CleanupStack::Pop();
}
}
//m_sModifyTime
void CQBookInfo::SetModifyTime(const TDesC& aBuf)
{
MEMORY_FREE(m_pStrModifyTime);
if(aBuf.Length() > 0)
{
m_pStrModifyTime = HBufC::NewLC(aBuf.Length());
m_pStrModifyTime->Des().Copy(aBuf);
CleanupStack::Pop();
}
}
//m_sModifyTime
void CQBookInfo::SetModifyDate(const TDesC& aBuf)
{
MEMORY_FREE(m_pStrModifyDate);
if(aBuf.Length() > 0)
{
m_pStrModifyDate = HBufC::NewLC(aBuf.Length());
m_pStrModifyDate->Des().Copy(aBuf);
CleanupStack::Pop();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -