📄 datamanage.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 + -