www.pudn.com > LDFUCK.rar > OperateInfo.cpp
/* Copyright (c) 2007, Nokia. All rights reserved */ #include#include #include #include #include #include #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 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 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 COperateInfo::getTempInfo() { return iTempArray; } //return history information of number to Note view RArray COperateInfo::getNoteNumInfo() { return iNoteNumArray; } //return history information of content to Note view RArray 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; // } }