logsui/EngineSrc/CLogsClearLog.cpp
changeset 0 e686773b3f54
--- /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 <logcli.h>
+#include <logview.h>
+#include <sysutil.h>
+
+#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;	
+	}