📄 messagedb.cpp
字号:
#include "MessageDB.h"
#include "msvids.h"
//#include "badesca.h"
CMessageDB* CMessageDB::NewL(MMtmsEngineObserver& aObserver)
{
CMessageDB* self = NewLC(aObserver);
CleanupStack::Pop(self);
return self;
}
CMessageDB* CMessageDB::NewLC(MMtmsEngineObserver& aObserver)
{
CMessageDB* self = new(ELeave) CMessageDB();
CleanupStack::PushL(self);
self->ConstructL(aObserver);
return self;
}
void CMessageDB::ConstructL(MMtmsEngineObserver& aObserver)
{
m_pMtm = CMtmsEngine::NewL(aObserver);
m_InboxArray = new(ELeave) CArrayFixFlat<TInt32>(3);
m_OutboxArray = new(ELeave) CArrayFixFlat<TInt32>(3);
m_DraftboxArray = new(ELeave) CArrayFixFlat<TInt32>(3);
m_SendboxArray = new(ELeave) CArrayFixFlat<TInt32>(3);
}
CMessageDB::CMessageDB()
{
}
CMessageDB::~CMessageDB()
{
RemoveArray(m_InboxArray);
RemoveArray(m_OutboxArray);
RemoveArray(m_DraftboxArray);
RemoveArray(m_SendboxArray);
if(m_pMtm)
{
delete m_pMtm;
m_pMtm = NULL;
}
}
void CMessageDB::RemoveArray(CArrayFixFlat<TInt32>*& iArray)
{
TInt nCount = iArray->Count();
while(nCount)
{
delete (TMessageDBStruct*)iArray->At(--nCount);
}
delete iArray;
iArray = NULL;
}
void CMessageDB::RemoveDesArray(CDesCArrayFlat*& iArray)
{
if(iArray)
{
iArray->Reset();
delete iArray;
iArray = NULL;
}
}
void CMessageDB::ReadMessageToArrayL(TMsvId aFolder)
{
CDesCArrayFlat * IsReadArray = new(ELeave) CDesCArrayFlat(3);
CDesCArrayFlat * MobileArray = new(ELeave) CDesCArrayFlat(3);
CDesCArrayFlat * MessageArray = new(ELeave) CDesCArrayFlat(3);
m_pMtm->GetFolderSMSMessageInformation(aFolder,IsReadArray,
MobileArray,MessageArray);
CArrayFixFlat<TInt32>* tempArray = GetMessageArray(aFolder);
RemoveArray(tempArray);
tempArray = new(ELeave) CArrayFixFlat<TInt32>(3);
// tempArray->Reset();
TInt i;
for(i=0; i<MobileArray->Count(); i++)
{
TMessageDBStruct * mes = new(ELeave) TMessageDBStruct;
mes->iread.Copy(IsReadArray->MdcaPoint(i));
mes->imobile.Copy(MobileArray->MdcaPoint(i));
mes->imessage.Copy(MessageArray->MdcaPoint(i));
tempArray->AppendL((TInt32)mes);
}
RemoveDesArray(IsReadArray);
RemoveDesArray(MobileArray);
RemoveDesArray(MessageArray);
}
CMtmsEngine * CMessageDB::GetMtmsEnginePoint()
{
return m_pMtm;
}
void CMessageDB::AddMessageL(TMsvId aFolder,const TDesC& aAddress,
const TDesC& aMessage,TInt aIndex)
{
CArrayFixFlat<TInt32>* tempArray = GetMessageArray(aFolder);
TMessageDBStruct * mes = new(ELeave) TMessageDBStruct;
mes->iread.Copy(_L("0"));
mes->imobile.Copy(aAddress);
mes->imessage.Copy(aMessage);
// tempArray->AppendL((TInt32)mes);
tempArray->InsertL(aIndex,(TInt32)mes);
}
void CMessageDB::GetMessage(TMsvId aFolder,TInt aIndex,TDes& aAddress, TDes& aMessage)
{
CArrayFixFlat<TInt32>* tempArray = GetMessageArray(aFolder);
TMessageDBStruct* tmp = (TMessageDBStruct*)tempArray->At(aIndex);
aAddress.Copy(tmp->imobile);
aMessage.Copy(tmp->imessage);
}
void CMessageDB::DelMessage(TMsvId aFolder,TInt aIndex)
{
CArrayFixFlat<TInt32>* tempArray = GetMessageArray(aFolder);
TMessageDBStruct* tmp = (TMessageDBStruct*)tempArray->At(aIndex);//记录要删除的对象指针
tempArray->Delete(aIndex);//从数组中删除
delete tmp; //释放空间
}
CArrayFixFlat<TInt32> * CMessageDB::GetMessageArray(TMsvId aFolder)
{
switch(aFolder)
{
case KMsvGlobalInBoxIndexEntryId:
{
return m_InboxArray;
}
break;
case KMsvGlobalOutBoxIndexEntryId:
{
return m_OutboxArray;
}
break;
case KMsvDraftEntryId:
{
return m_DraftboxArray;
}
break;
case KMsvSentEntryId:
{
return m_SendboxArray;
}
break;
default:
break;
}
}
//
// TInt CMessageDB::GetCurrentIndex()
// {
// return m_CurrentIndex;
// }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -