Home arrow Developer arrow Symbian C++ arrow Deleting latest phone log entry  
 
Main Menu
Home
Developer
Downloads
Links
Contact Us

 

 
Deleting latest phone log entry PDF Print E-mail
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;
            }            
        }    
    }
 
Next >
© 2010 mobilenme.com