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