|
Deleting latest phone log entry |
|
|
|
|
Wednesday, 10 January 2007 |
To instantiate the iCallLogger, from the observing class, use something like this: iCallLogger = CmytravelrCallLogAgent::NewL();
Lates Entry Deletion:iCallLogger->ReadRecentEventsL();//read and delete recent dialed number
Then, in the destructor of the instantiating class:delete iCallLogger;
Code:.h File:#include <f32file.h> // RFs #include <logcli.h> // CLogClient #include <logview.h> // CLogViewEvent #include <logwrap.h> #include <logwrap.hrh>
enum { EGetRecent, EDeleteEvent, EIdle };
RFs iFs; CLogClient* iLogClient; CLogViewRecent* iLogViewRecent; TInt iTask; // task for RunL
.cpp File: CmyCallLogAgent* CmyCallLogAgent::NewL() { CmyCallLogAgent* self = CmyCallLogAgent::NewLC(); CleanupStack::Pop(self); return self; }
CmyCallLogAgent* CmyCallLogAgent::NewLC() { CmyCallLogAgent* self = new (ELeave) CmyCallLogAgent(); CleanupStack::PushL(self); self->ConstructL(); return self; } CmyCallLogAgent::CmyCallLogAgent():CActive(EPriorityStandard) { }
// initiation of handles, Log client and recent viewer
void CmyCallLogAgent::ConstructL() { User::LeaveIfError(iFs.Connect()); // Establish a connection to log engine iLogClient = CLogClient::NewL(iFs); iLogViewRecent = CLogViewRecent::NewL(*iLogClient); iTask = EIdle;
CActiveScheduler::Add(this); }
//object destruction
CmyCallLogAgent::~CmyCallLogAgent() { Cancel(); delete iLogViewRecent; delete iLogClient; iFs.Close(); }
//Start Reading and deleting most recent entry
void CmyCallLogAgent::ReadRecentEventsL() { Cancel(); if(iLogViewRecent->SetRecentListL(KLogNullRecentList, iStatus)) { iTask = EGetRecent; SetActive(); } }
void CmyCallLogAgent::DeleteRecentEventL() { Cancel(); iLogClient->DeleteEvent(iLogViewRecent->Event().Id(), iStatus); SetActive(); }
void CmyCallLogAgent::DoCancel() { //Cancel appropriate request switch ( iTask ) { case EGetRecent: { iLogViewRecent->Cancel(); break; } case EDeleteEvent: { iLogClient->Cancel(); break; } case EIdle: default: break; } }
void CmyCallLogAgent::RunL() { switch (iTask) { case EGetRecent: { iLogViewRecent->FirstL(iStatus); iTask = EDeleteEvent; SetActive(); } break; case EDeleteEvent: { //call delete event to delete recent dialed number DeleteRecentEventL(); iTask = EIdle; break; } case EIdle: default: { break; } } }
|