diff -r 000000000000 -r e686773b3f54 logsui/EngineSrc/CLogsClearLog.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/EngineSrc/CLogsClearLog.cpp Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,251 @@ +/* +* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Class for log clearing +* +*/ + + +// INCLUDE FILES +#include +#include +#include + +#include "CLogsClearLog.h" +#include "MLogsObserver.h" +#include "LogsUID.h" + +#include "LogsDebug.h" +#include "LogsTraces.h" + +// CONSTANTS +_LIT( KMaxTime, "99991130:235959.999999"); +const TInt KBytesToRequest ( 64 * 1024 ); + + +// ---------------------------------------------------------------------------- +// CLogsClearLog::NewL +// ---------------------------------------------------------------------------- +// +CLogsClearLog* CLogsClearLog::NewL( + RFs& aFsSession, + MLogsObserver* aObserver ) + { + TRACE_ENTRY_POINT; + + CLogsClearLog* self = new (ELeave) CLogsClearLog( aFsSession, aObserver ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop(); + + TRACE_EXIT_POINT; + return self; + } + +// ---------------------------------------------------------------------------- +// CLogsClearLog::CLogsClearLog +// ---------------------------------------------------------------------------- +// +CLogsClearLog::CLogsClearLog( + RFs& aFsSession, MLogsObserver* aObserver ) : + CActive( EPriorityStandard ), + iFsSession( aFsSession ), + iObserver( aObserver ), + iState( EStateUndefined ) + { + TRACE_ENTRY_POINT; + TRACE_EXIT_POINT; + } + +// ---------------------------------------------------------------------------- +// CLogsClearLog::ConstructL +// ---------------------------------------------------------------------------- +// +void CLogsClearLog::ConstructL() + { + TRACE_ENTRY_POINT; + iLogClient = CLogClient::NewL( iFsSession ); + CActiveScheduler::Add( this ); + TRACE_EXIT_POINT; + } + +// ---------------------------------------------------------------------------- +// CLogsClearLog::~CLogsClearLog +// ---------------------------------------------------------------------------- +// +CLogsClearLog::~CLogsClearLog() + { + TRACE_ENTRY_POINT; + Cancel(); + delete iViewRecent; + delete iLogClient; + TRACE_EXIT_POINT; + } + +// ---------------------------------------------------------------------------- +// CLogsClearLog::SetObserver +// ---------------------------------------------------------------------------- +// +void CLogsClearLog::SetObserver( MLogsObserver* aObserver ) + { + TRACE_ENTRY_POINT; + iObserver = aObserver; + TRACE_EXIT_POINT; + } + +// ---------------------------------------------------------------------------- +// CLogsClearLog::DoCancel +// ---------------------------------------------------------------------------- +// +void CLogsClearLog::DoCancel() + { + TRACE_ENTRY_POINT; + + if( iViewRecent ) + { + iViewRecent->Cancel(); + } + + if( iLogClient ) + { + iLogClient->Cancel(); + } + + TRACE_EXIT_POINT; + } + + +// ---------------------------------------------------------------------------- +// CLogsClearLog::State +// ---------------------------------------------------------------------------- +// +TLogsState CLogsClearLog::State() const + { + TRACE_ENTRY_POINT; + TRACE_EXIT_POINT; + return iState; + } + + +// ---------------------------------------------------------------------------- +// CLogsClearLog::ClearModelL +// ---------------------------------------------------------------------------- +// +void CLogsClearLog::ClearModelL( const TLogsModel aModel ) + { + TRACE_ENTRY_POINT; + TTime time( KMaxTime ); + + iPhase = EClearLog; + + if( !IsActive() ) + { + // If disk space below critical, we will leave here and a global error note is + // to be shown + if ( SysUtil::FFSSpaceBelowCriticalLevelL( &iFsSession, KBytesToRequest ) ) + { + LOGS_DEBUG_PRINT(LOGS_DEBUG_STRING + ( "CLogsClearLog::ClearModelL - FFSSpaceBelowCriticalLevelL" )); + // don't show any own notes here + User::Leave( KErrDiskFull ); + } + + + switch( aModel ) + { + case ELogsMainModel: + iLogClient->ClearLog( time, iStatus ); + break; + + case ELogsAllRecent: // fall through + case ELogsReceivedModel: + case ELogsDialledModel: + case ELogsMissedModel: + default: + iLogClient->ClearLog( aModel, iStatus ); + break; + } + + SetActive(); + } + + TRACE_EXIT_POINT; + } + +// ---------------------------------------------------------------------------- +// CLogsClearLog::DeleteEventL +// ---------------------------------------------------------------------------- +// +void CLogsClearLog::DeleteEventL( TLogId aId ) + { + TRACE_ENTRY_POINT; + iPhase = EClearEvent; + + if( iViewRecent ) + { + delete iViewRecent; + iViewRecent = NULL; + } + + iViewRecent = CLogViewRecent::NewL( *iLogClient ); + iViewRecent->RemoveL( aId ); + iState = EStateClearLogFinished; + + if( iObserver ) + { + iObserver->StateChangedL( this ); + } + + TRACE_EXIT_POINT; + } + +// ---------------------------------------------------------------------------- +// CLogsClearLog::RunL +// ---------------------------------------------------------------------------- +// +void CLogsClearLog::RunL() + { + TRACE_ENTRY_POINT; + + iState = EStateClearLogFinished; + + if( iObserver ) + { + iObserver->StateChangedL( this ); + } + + TRACE_EXIT_POINT; + } + +// ---------------------------------------------------------------------------- +// CLogsClearLog::RunError +// ---------------------------------------------------------------------------- +// +TInt CLogsClearLog::RunError(TInt aError) + { + TRACE_ENTRY_POINT; + TInt ret; + + if( aError == KErrAccessDenied ) + { + ret = KErrNone; + } + else + { + ret = aError; + } + + TRACE_EXIT_POINT; + return ret; + }