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

📄 messagedb.cpp

📁 symbian 3nd 实现短信息收发
💻 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 + -