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

📄 datamanage.cpp

📁 symbian手机加密记事本
💻 CPP
字号:
#include "DataManage.h"
#include <e32std.h>
#include <S32FILE.H>

CDataManage* CDataManage::NewLC()
{
	CDataManage* pDataManage = new(ELeave) CDataManage;
	CleanupStack::PushL(pDataManage);
	pDataManage->ConstructL();
	return pDataManage;
}

CDataManage* CDataManage::NewL()
{
	CDataManage* pDataManage = CDataManage::NewLC();
	CleanupStack::Pop(pDataManage);
	return pDataManage;
}

void CDataManage::ConstructL()
{
	iName = HBufC::NewL(30);
	iName->Des().FillZ();
	iAllUserInfo = new(ELeave) CArrayPtrSeg<CUserInfo>(10);
	iAllFileDir = new(ELeave) CArrayPtrSeg<CDirInfo>(10);
/*	iUserFileDir =  new(ELeave) CArrayPtrSeg<CDirInfo>(10);*/
	LoadUserInfo();
	LoadFileData();
}

CDataManage::~CDataManage()
{
	if(iAllFileDir != NULL)
	{
		SaveFileData();
		iAllFileDir->ResetAndDestroy();
		delete iAllFileDir;
		iAllFileDir = NULL;
	}

// 	if(iUserFileDir != NULL)
// 	{
// 		iUserFileDir->Reset();
// 		delete iUserFileDir;
// 		iUserFileDir = NULL;
// 	}
	if(iAllUserInfo != NULL)
	{
		iAllUserInfo->ResetAndDestroy();
		delete iAllUserInfo;
		iAllUserInfo = NULL;
	}
	if(iName)
	{
		delete iName;
		iName = NULL;
	}
}

TBool CDataManage::IsLogin()
{
	return (iAllUserInfo->Count() != 0?ETrue:EFalse);
}

TInt CDataManage::IsUser(const TDesC& aName, const TDesC& aPassWord)
{
	for(TInt i=0; i<iAllUserInfo->Count();i++)
	{
		if(*(iAllUserInfo->At(i)->iName) == aName)
		{
			if(aPassWord == *(iAllUserInfo->At(i)->iPassWord))
			{
				return 1;           //用户名,密码匹配
			}
			else
			{
				return 2;           //用户名匹配,密码不匹配
			}
		}
	}
 	return 0;                   //找不到用户名
}



TBool CDataManage::CreateUserL(const TDesC& aName, const TDesC& aPassWord)
{
	if(IsUser(aName,aPassWord) != 0)  //用户名重复了
	{
		return EFalse;                       //返回错误
	}
	CUserInfo* tempUser = new(ELeave) CUserInfo;
	CleanupStack::PushL(tempUser);
	tempUser->iName = HBufC::NewL(aName.Length());
	tempUser->iName->Des().Copy(aName);
	tempUser->iPassWord = HBufC::NewL(aPassWord.Length());
	tempUser->iPassWord->Des().Copy(aPassWord);

	iAllUserInfo->AppendL(tempUser);
	CleanupStack::Pop(tempUser);
	iName->Des().Copy(aName);
	SaveUserInfo();
 	return ETrue;
}

TBool CDataManage::LoadUser(const TDesC& aName, const TDesC& aPassWord)
{
	if(IsUser(aName,aPassWord) != 1)  //登录信息错误
	{
		return EFalse;                //返回错误
	}
	iName->Des().Copy(aName);

	return ETrue;
}



void CDataManage::LoadUserInfo()
{
	_LIT(KUserFile, "C:\\system\\Apps\\Memento\\UserInfo.data");
	RFs iFession;
	User::LeaveIfError(iFession.Connect());
	RFileReadStream readStream;
	if( KErrNone != readStream.Open(iFession, KUserFile, EFileRead))
	{
		return;
	}
	readStream.PushL();
	
	TInt nCount = readStream.ReadInt32L();
	for (TInt i=0; i<nCount; i++)
	{
		CUserInfo* pTemp = new (ELeave) CUserInfo;
		CleanupStack::PushL(pTemp);
		pTemp->InternalizeL(readStream);
		iAllUserInfo->AppendL(pTemp);
		CleanupStack::Pop(pTemp);
	}

	readStream.Pop();
	readStream.Release();
	iFession.Close();
}

void CDataManage::SaveUserInfo()
{
	_LIT(KUserFile, "C:\\system\\Apps\\Memento\\UserInfo.data");
	RFs iFession;
	User::LeaveIfError(iFession.Connect());
	iFession.Delete(KUserFile);
	RFileWriteStream writeStream;
	User::LeaveIfError(writeStream.Replace(iFession,KUserFile,EFileWrite));
//	writeStream.PushL();
	
	writeStream.WriteInt32L(iAllUserInfo->Count());
	for (TInt i=0; i<iAllUserInfo->Count(); i++)
	{
		CUserInfo* pTemp = iAllUserInfo->At(i);
		pTemp->ExternalizeL(writeStream);
	}
	
	writeStream.CommitL();
//	writeStream.Pop();
	writeStream.Release();	
	iFession.Close();
}

void CDataManage::LoadFileData()
{
	_LIT(KFileData, "C:\\system\\Apps\\Memento\\FileData.data");
	RFs iFession;
	User::LeaveIfError(iFession.Connect());
	RFileReadStream readStream;
	if( KErrNone != readStream.Open(iFession, KFileData, EFileRead))
	{
		return;
	}
	readStream.PushL();

	TInt nCount = readStream.ReadInt32L();
	for (TInt i=0; i<nCount; i++)
	{
		CDirInfo* pTemp = new (ELeave) CDirInfo;
		CleanupStack::PushL(pTemp);
		pTemp->InternalizeL(readStream);
/*		iUserFileDir->AppendL(pTemp);*/
		iAllFileDir->AppendL(pTemp);
		CleanupStack::Pop(pTemp);
	}
	
	readStream.Pop();
	readStream.Release();
	iFession.Close();
}

void CDataManage::SaveFileData()
{
	_LIT(KFileData, "C:\\system\\Apps\\Memento\\FileData.data");
	RFs iFession;
	User::LeaveIfError(iFession.Connect());
	iFession.Delete(KFileData);
	RFileWriteStream writeStream;
	User::LeaveIfError(writeStream.Create(iFession,KFileData,EFileWrite));
//	writeStream.PushL();
	
	writeStream.WriteInt32L(iAllFileDir->Count());
	for (TInt i=0; i<iAllFileDir->Count(); i++)
	{
		CDirInfo* pTemp = iAllFileDir->At(i);
		pTemp->ExternalizeL(writeStream);
	}
	
	writeStream.CommitL();
//	writeStream.Pop();
	writeStream.Release();
	iFession.Close();
}


TBool CDataManage::IsEmpty()
{
	if (iAllUserInfo->Count() == 0)
	{
		return ETrue;
	}
	else
	{
		return EFalse;
	}
}


void CDataManage::clear()
{
	_LIT(KUserFile, "C:\\system\\Apps\\Memento\\UserInfo.data");
	RFs iFession;
	User::LeaveIfError(iFession.Connect());
	iFession.Delete(KUserFile);
	RFileWriteStream writeStream;
	User::LeaveIfError(writeStream.Replace(iFession,KUserFile,EFileWrite));
//	writeStream.PushL();
	
	writeStream.WriteInt32L(0);

	writeStream.CommitL();
//	writeStream.Pop();
	writeStream.Release();	
	iFession.Close();
}

TPtr CDataManage::GetName()
{
	return iAllUserInfo->At(0)->iName->Des();
}

TBool CDataManage::CreateUserFileInfoL(const TDesC& aTilte, const TDesC& aContent)
{
// 	_LIT(TimeFormat,"%2.%3");
// 	TBuf<5> FileTime;
// 	TTime temptime;
// 	temptime.HomeTime();
// 	FileTime.FillZ();
//	temptime.FormatL(FileTime,TimeFormat);
	CDirInfo* ptemp = new(ELeave) CDirInfo;
	CleanupStack::PushL(ptemp);
	ptemp->SetInfoL(aTilte,aContent);
	iAllFileDir->AppendL(ptemp);
/*	iUserFileDir->AppendL(ptemp);*/
	CleanupStack::Pop(ptemp);
	return ETrue;
}

TBool CDataManage::DeleteUserFileInfo(const TInt& aIndex)
{
// 	CDirInfo* ptemp = iUserFileDir->At(aIndex);
// 	for(TInt i=0; i< iAllFileDir->Count();i++)
// 	{
// 		if(ptemp == iAllFileDir->At(i))
// 		{
// 			iAllFileDir->Delete(i);
// 			break;
// 		}
// 	}
// 	iUserFileDir->Delete(aIndex);
	iAllFileDir->Delete(aIndex);
/*	delete ptemp;*/
	return ETrue;
}

CArrayPtrSeg<CDirInfo>& CDataManage::GetUserDirInfo()
{
/*	return *iUserFileDir;*/
	return *iAllFileDir;
}

TBool CDataManage::SetUserFileInfo(const TInt& aIndex, const TDesC& aTilte, const TDesC& aContent)
{
// 	_LIT(TimeFormat,"%2.%3");
// 	TBuf<5> FileTime;
// 	TTime temptime;
// 	temptime.HomeTime();
// 	FileTime.FillZ();
// 	temptime.FormatL(FileTime,TimeFormat);
//	CDirInfo* ptemp = iUserFileDir->At(aIndex);
	CDirInfo* ptemp = iAllFileDir->At(aIndex);
	ptemp->SetInfoL(aTilte,aContent);
	return ETrue;
}


TInt CDataManage::getNumber()
{
	return iAllFileDir->Count();
}

⌨️ 快捷键说明

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