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

📄 operateinfo.cpp

📁 自己做的Symbian小项目 可给大家参考
💻 CPP
字号:
/* Copyright (c) 2007, Nokia. All rights reserved */
#include <aknnotewrappers.h>
#include <f32file.h>
#include <e32std.h>
#include <charconv.h>
#include <eikmsg.h>
#include <mtmuibas.h>

#include "LDFUCKAppUi.h"
#include "OperateInfo.h"
#include "LDFUCK.hrh"
#include "LDFUCK.rsg"


COperateInfo* COperateInfo::NewL()
{
    COperateInfo* self = NewLC();
    CleanupStack::Pop(self);
    return self;
}

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

void COperateInfo::ConstructL()
{
//	m_pNoteContainer = NULL;
//	getStoreTemp();
}

COperateInfo::COperateInfo()
{	getStoreNote();
	getStoreTemp();

}

//get information from Edit view;
void COperateInfo::getEditInfo(HBufC* aNum,HBufC* aText)
{

	iNoteNumArray.Append(aNum);

	iNoteNameArray.Append(aText);

}

//save information of history
void COperateInfo::saveNoteInfo()
{
	RFs& fs = CEikonEnv::Static()->FsSession();
	RFile file;
	TBuf<32> sFileName;
#ifdef __WINS__
	sFileName.Copy(_L("c:\\Note.txt"));
#else
	CLDFUCKAppUi* pApp = (CLDFUCKAppUi*)CEikonEnv::Static()->AppUi();
	pApp->GetPath(sFileName);
	sFileName.Append(_L("Note.txt"));
#endif
	fs.Delete(sFileName);
	TInt err = file.Open(fs, sFileName, EFileRead);

	if (err == KErrNotFound) 
	{
		err = file.Create(fs, sFileName, EFileRead);
	}

	if (err != KErrNone) 
	{
		return;
	}

	TInt nFileSize;
	HBufC8* pSSS = HBufC8::NewL(526);
//	CleanupStack::PushL(pSSS);
	TInt noteArrayNum = iNoteNumArray.Count();

	for(TInt i = 0; i < noteArrayNum; i++)
	{
		pSSS->Des().Append(iNoteNumArray[i]->Des());
		pSSS->Des().Append(_L("\t"));
		pSSS->Des().Append(iNoteNameArray[i]->Des());
		pSSS->Des().Append(_L("\t"));
	}
	file.Write(pSSS->Des());
//	CleanupStack::PopAndDestroy(pSSS);
	delete pSSS;
	file.Close();
}

//get history information from file

void COperateInfo::getStoreNote()
{
 	RFs& fs = CEikonEnv::Static()->FsSession();
	RFile file;
	TBuf<32> sFileName;
	#ifdef __WINS__
	sFileName.Copy(_L("c:\\Note.txt"));
	#else
	CLDFUCKAppUi* pApp = (CLDFUCKAppUi*)CEikonEnv::Static()->AppUi();
	pApp->GetPath(sFileName);
	sFileName.Append(_L("Note.txt"));
	#endif

	TInt err = file.Open(fs, sFileName, EFileRead);

	if (err == KErrNotFound) 
	{
		err = file.Create(fs, sFileName, EFileRead);
	}

	if (err != KErrNone) 
	{
		return;
	}
	TInt nFileSize = 0;
	file.Size(nFileSize);
	if(nFileSize == 0)
	{
		file.Close();
		return;
	}
	for(TInt l = 0; l < iNoteNameArray.Count(); l++)
	{
		delete iNoteNameArray[l];
	}
	iNoteNameArray.Reset();
	for(l = 0; l < iNoteNumArray.Count(); l++)
	{
		delete iNoteNumArray[l];
	}
	iNoteNumArray.Reset();
	HBufC8* pstr8File = HBufC8::NewL(nFileSize);
//	CleanupStack::PushL(pstr8File);
	file.Read(pstr8File->Des());
	
#ifdef __WINS__
	HBufC16* buf16 = HBufC16::NewL(nFileSize+10);
	buf16->Des().Copy(pstr8File->Des());
#else
//转换代码
	CCnvCharacterSetConverter* iConvert = CCnvCharacterSetConverter::NewLC();
//	CleanupStack::PushL(iConvert);
	TInt State = CCnvCharacterSetConverter::KStateDefault;
	if ((iConvert->PrepareToConvertToOrFromL(KCharacterSetIdentifierGbk,
	fs)) != CCnvCharacterSetConverter::EAvailable)
	{
		User::LeaveIfError(KErrNotSupported);
	}
	HBufC16* buf16 = HBufC16::NewL(nFileSize+10);
	TPtr16 ptr = buf16->Des();

	if (iConvert->ConvertToUnicode(ptr,pstr8File->Des(),State))
	{
		User::LeaveIfError(KErrArgument);
	}
	CleanupStack::PopAndDestroy(iConvert);

#endif
	pLineData = NULL;
	TInt i = 0, nPos = 0;
	TInt saveNum = 0;
	TPtr16 p = buf16->Des();
	for (i; i<buf16->Length(); i++) 
	{
		if(p[i] == '\t')
		{
				
			if(nPos == 0)
			{
				pLineData = HBufC::NewL(i);
//				CleanupStack::PushL(pLineData);
				pLineData->Des().Copy(buf16->Mid(0, i));
			}
			else
			{
				pLineData = HBufC::NewL(i-nPos-1);
//				CleanupStack::PushL(pLineData);
				pLineData->Des().Copy(buf16->Mid(nPos+1, i-nPos-1));	
			}
			if (saveNum%2 == 0) 
			{
				iNoteNumArray.Append(pLineData);
			}
			 if(saveNum%2 != 0)
			{
				iNoteNameArray.Append(pLineData);
			}
			nPos = i;
//			CleanupStack::Pop(pLineData);
			saveNum++;
		}
	}
		
//	CleanupStack::PopAndDestroy(pstr8File);
	delete pstr8File;
	delete buf16;
	file.Close();
}

//get temporary information form file

 void COperateInfo::getStoreTemp()
{
	RFs& fs = CEikonEnv::Static()->FsSession();
	RFile file;
	TBuf<32> sFileName;
#ifdef __WINS__
	sFileName.Copy(_L("c:\\temp.txt"));

#else
	CLDFUCKAppUi* pApp = (CLDFUCKAppUi*)CEikonEnv::Static()->AppUi();
	pApp->GetPath(sFileName);
	sFileName.Append(_L("temp.txt"));
#endif
	
	TInt err = file.Open(fs, sFileName, EFileRead);

	if (err == KErrNotFound) 
	{
		err = file.Create(fs, sFileName, EFileRead);
	}

	if (err != KErrNone) 
	{
		return;
	}
	TInt nFileSize = 0;
	file.Size(nFileSize);
	if(nFileSize == 0)
	{
		file.Close();
		return;
	}
	HBufC8* pstr8File = HBufC8::NewL(nFileSize);
	CleanupStack::PushL(pstr8File);
	file.Read(pstr8File->Des());
	
#ifdef __WINS__
	HBufC16* buf16 = HBufC16::NewL(nFileSize+10);
	buf16->Des().Copy(pstr8File->Des());
#else
//转换代码
	CCnvCharacterSetConverter* iConvert = CCnvCharacterSetConverter::NewLC();
//	CleanupStack::PushL(iConvert);
	TInt State = CCnvCharacterSetConverter::KStateDefault;
	if ((iConvert->PrepareToConvertToOrFromL(KCharacterSetIdentifierGbk,
	fs)) != CCnvCharacterSetConverter::EAvailable)
	{
		User::LeaveIfError(KErrNotSupported);
	}
	HBufC16* buf16 = HBufC16::NewL(nFileSize+10);
	TPtr16 ptr = buf16->Des();

	if (iConvert->ConvertToUnicode(ptr,pstr8File->Des(),State))
	{
		User::LeaveIfError(KErrArgument);
	}
	CleanupStack::PopAndDestroy(iConvert);

#endif
	
	TInt m;
	pLineTemp = NULL;
	TInt i = 0, nPos = 0;
	TPtr p = buf16->Des();
	for (i; i<buf16->Length(); i++) 
	{
		if(p[i] == '\t')
		{
			
			m++;
			if(nPos == 0)
			{
				pLineTemp = HBufC::NewL(i);
				CleanupStack::PushL(pLineTemp);
				pLineTemp->Des().Copy(buf16->Mid(0, i));
				
			}
			else
			{
				pLineTemp = HBufC::NewL(i-nPos-1);
				CleanupStack::PushL(pLineTemp);
				pLineTemp->Des().Copy(buf16->Mid(nPos+1, i-nPos-1));
			}
			iTempArray.Append(pLineTemp);
			nPos = i;
			CleanupStack::Pop(pLineTemp);
		}
	}

	CleanupStack::PopAndDestroy(pstr8File);
	delete buf16;
	file.Close();	

}

//delete history information 

void COperateInfo::delInfo(TInt aPosition)
{
	if(aPosition == -1)
	{
		HBufC* pNum = iNoteNumArray[0];
		if(pNum != NULL)
		{
			delete pNum;
		}
		iNoteNumArray.Remove(0);
	}
	else
	{
	HBufC* pNum = iNoteNumArray[aPosition];
	if(pNum != NULL)
	{
		delete pNum;
	}
	iNoteNumArray.Remove(aPosition);
	TInt i = iNoteNumArray.Count();
	HBufC* pName = iNoteNameArray[aPosition];
	if(pName != NULL)
	{
		delete pName;
	}
	iNoteNameArray.Remove(aPosition);
	TInt m = iNoteNameArray.Count();
	}
	
}

//return temporary information to Temp view

RArray<HBufC*> COperateInfo::getTempInfo()
{
	return iTempArray;
}

//return history information of number to Note view

RArray<HBufC*> COperateInfo::getNoteNumInfo()
{
	return iNoteNumArray;
}

//return history information of content to Note view

RArray<HBufC*> COperateInfo::getNoteNameInfo()
{
	return iNoteNameArray;
}


COperateInfo::~COperateInfo()
{
	saveNoteInfo();
	TInt s= iTempArray.Count();
	for(TInt i = 0; i < iTempArray.Count(); i++)
	{
		HBufC *p = iTempArray[i];
		if(p != NULL)
		{
			delete p;
		}
	}
	iTempArray.Reset();
	iTempArray.Close();
	for(TInt l = 0; l < iNoteNumArray.Count(); l++)
	{
		HBufC *p = iNoteNumArray[l];
		if(p != NULL)
		{
			delete p;
		}
	}
	iNoteNumArray.Reset();
	iNoteNumArray.Close();
	for(TInt m = 0; m < iNoteNameArray.Count(); m++)
	{
		HBufC *p = iNoteNameArray[m];
		if(p != NULL)
		{
			delete p;
		}
	}
	iNoteNameArray.Reset();
	iNoteNameArray.Close();
	if(m_pNoteContainer)
	{
		delete m_pNoteContainer;
		m_pNoteContainer = NULL;
	}
//	if(pLineData)
//	{
//		delete pLineData;
//		pLineData = NULL;
//	}
//		
//	if(pLineTemp)
//	{
//		delete pLineTemp;
//		pLineTemp = NULL;
//	}
}



⌨️ 快捷键说明

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