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

📄 synchtododb.cpp

📁 symbian手机上记事本的程序
💻 CPP
字号:
#include"ToDo.h"
#include"ToDoList.h"
#include"SynchToDoDb.h"

CSynchToDoDb* CSynchToDoDb::NewLC( TDesC& aFileName )
	{
	CSynchToDoDb* self = new(ELeave)CSynchToDoDb;
	CleanupStack::PushL(self);
	self->ConstructL(aFileName);
	return self;
	}

CSynchToDoDb* CSynchToDoDb::NewL( TDesC& aFileName )
	{
	CSynchToDoDb* self = CSynchToDoDb::NewLC(aFileName);
	CleanupStack::Pop(self);
	return self;
	}

void CSynchToDoDb::ConstructL(const TDesC& aFileName)
	{
	iFileName = aFileName.AllocL();
	iToDoList = CToDoList::NewL(10);
	User::LeaveIfError(iFs.Connect());
	iFs.MkDir(_L("c:\\") );
	
	}

CSynchToDoDb::~CSynchToDoDb()
	{
	delete iFileName;
	delete iToDoList;
	iToDoList = NULL;
	iFs.Close();
	}

void CSynchToDoDb::AddToDoL( CToDo* aToDo )
	{
	iToDoList->AddToDoL( aToDo );
	SaveL();
	}

TInt CSynchToDoDb::Count() const
	{
	return iToDoList->Count();
	}

void CSynchToDoDb::InsertL( TInt aIndex, CToDo* aToDo )
	{
	if ( aIndex < 0 || aIndex > Count())
	{
	return;
	}
	iToDoList->InsertL(aIndex, aToDo);
	SaveL();
	}

void CSynchToDoDb::ModifyL(CToDo* aToDo , TInt aIndex )
	{
	iToDoList->ModifyL(aToDo, aIndex);
	SaveL();
	}

void CSynchToDoDb::RemoveToDo( TInt aIndex )
	{
	iToDoList->RemoveToDo(aIndex);
	SaveL();
	}

TInt CSynchToDoDb::Find(TDesC& aTitle) const
	{
	iToDoList->Find(aTitle);// 封装前两个类,可以直接调用
	return 0;
	}

const CArrayPtr<CToDo>* CSynchToDoDb::ToDoList() const
	{
	return iToDoList->ToDoList();
	}

CToDo* CSynchToDoDb::At( TInt aIndex )
	{
	return iToDoList->At(aIndex);
	}

CToDo* CSynchToDoDb::operator[](TInt index)
	{
	return (*iToDoList)[index];
	}

const CToDo* CSynchToDoDb::operator[](TInt index) const
	{
	return (*iToDoList)[index];
	}

void CSynchToDoDb::SaveL()
	{
	RFileWriteStream writeStream;
	CleanupClosePushL( writeStream );
	User::LeaveIfError( writeStream.Replace( iFs, *iFileName, EFileWrite ) );
	iToDoList->ExternalizeL( writeStream );
	CleanupStack::PopAndDestroy( &writeStream );
	}

void CSynchToDoDb::Reset()
	{
	iToDoList->ToDoList()->ResetAndDestroy();
	SaveL();
	}

void CSynchToDoDb::RestoreL()//恢复数据 把数据从流中读出来,放到iToDoList中
	{
	RFileReadStream readStream;
	TInt err =  readStream.Open( iFs, *iFileName, EFileRead ) ; //刚开始用的是user::leaveerr 没有把文件读进去,
	//直接leave了,打开的是空的,所以做一下判断是否为空!
	if ( KErrNone != err )
		{
		return;
		}
	CleanupClosePushL( readStream );
	iToDoList->InternalizeL( readStream );
	CleanupStack::PopAndDestroy( &readStream );
	}

void CSynchToDoDb::SaveL( TDesC8& aData )
	{
	RFile file;
	file.Replace( iFs, *iFileName, EFileWrite );
	CleanupClosePushL( file );
	file.Write( aData );
	CleanupStack::PopAndDestroy( &file );
	}

HBufC8* CSynchToDoDb::DataLC()
	{
	RFile file;
	file.Open( iFs, *iFileName, EFileRead );
	CleanupClosePushL( file );
	
	TInt size = 0;
	User::LeaveIfError( file.Size( size ) );
	HBufC8* buf8 = HBufC8::NewLC( size );
	TPtr8 ptr8 = buf8->Des();
	file.Read( ptr8 );
	
	CleanupStack::Pop( buf8 );
	CleanupStack::PopAndDestroy( &file );
	
	return buf8;
	} 

⌨️ 快捷键说明

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