--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingappbase/mce/logengsrc/MceLogEngine.cpp Wed Sep 01 12:31:54 2010 +0100
@@ -0,0 +1,231 @@
+/*
+* 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:
+* This class communicates with the log db. This also handles all the
+* filtering options and registers Mce to LogEng to get notidied about
+* changes in log DB.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <e32base.h>
+
+#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include "logeng.h" // for Event Type enumerations
+#else
+#include "logeng.h" // for event type enumerations
+#include "logsmspdudata.h" // for event type enumerations
+#endif
+#include "MceLogEngine.h"
+#include "MceLogEngineReader.h"
+#include "MceLogPbkMatcher.h"
+#include "MMceLogEngObserver.h"
+
+// LOCAL CONSTANTS AND MACROS
+_LIT( KPrivateNumber, "Private");
+
+// LOCAL FUNCTIONS
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+CMceLogEngine::CMceLogEngine() :
+ iForeground( ETrue ), // at foreground
+ iDbDirty( EFalse ) // db is "clean"
+ {
+ }
+
+EXPORT_C CMceLogEngine* CMceLogEngine::NewL()
+ {
+ CMceLogEngine* self = new(ELeave) CMceLogEngine();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+CMceLogEngine::~CMceLogEngine()
+ {
+ if (iEventArray)
+ {
+ iEventArray->ResetAndDestroy();
+ delete iEventArray;
+ }
+ delete iEngineReader;
+ delete iLogClient;
+ delete iPbkMatcher;
+ iFsSession.Close();
+ }
+
+
+void CMceLogEngine::ConstructL()
+ {
+ User::LeaveIfError(iFsSession.Connect());
+ iEventArray = new (ELeave) CArrayPtrFlat<CLogEvent>(1);
+ iLogClient = CLogClient::NewL(iFsSession);
+ }
+
+EXPORT_C const CLogEvent* CMceLogEngine::Event( TInt aIndex )
+ {
+ return iEventArray->At(aIndex);
+ }
+
+EXPORT_C TInt CMceLogEngine::Count() const
+ {
+ return iEventArray->Count();
+ }
+
+void CMceLogEngine::ReadEventsCompletedL( TBool aStatus )
+ {
+ if ( ! aStatus )
+ {
+ ResetArray();
+ }
+
+ if( iContainerObserver )
+ {
+ iContainerObserver->MceLogEngineListBoxStateHasChangedL();
+ }
+ }
+
+void CMceLogEngine::ResetArray()
+ {
+ if( iEventArray )
+ {
+ iEventArray->ResetAndDestroy();
+ }
+ }
+
+void CMceLogEngine::UpdateEventsL()
+ {
+ if (iEngineReader)
+ {
+ iEngineReader->Cancel();
+ }
+ else
+ {
+ iEngineReader = CMceLogEngineReader::NewL(this);
+ }
+
+ iEngineReader->StartReadingL();
+ }
+
+void CMceLogEngine::AddEventToListL( CLogEvent* aEvent )
+ {
+ iEventArray->AppendL( aEvent );
+ }
+
+
+EXPORT_C void CMceLogEngine::SetContainerObserver( MMceLogEngObserver* aContainerObserver )
+ {
+ iContainerObserver = aContainerObserver;
+ }
+
+
+EXPORT_C void CMceLogEngine::RemoveContainerObserver()
+ {
+ iContainerObserver = NULL;
+ }
+
+
+EXPORT_C TInt CMceLogEngine::PurgeData( const CLogEvent* aEvent, CArrayFixFlat<TInt>* aData )
+ {
+ TPckgBuf<TLogSmsPduData> packedData;
+ TInt sMsTotal( 0 );
+ TInt sMsPending( 0 );
+
+ if( aEvent->EventType() == ( KLogsEngMmsEventTypeUid ))
+ {
+ return sMsTotal;
+ }
+
+ packedData.Copy( aEvent->Data().Ptr(), sizeof( TLogSmsPduData ) );
+ if( aEvent->Data().Length() > 0 )
+ {
+ sMsTotal = packedData().iTotal;
+ sMsPending = sMsTotal
+ - packedData().iDelivered
+ - packedData().iFailed;
+ aData->At( 0 ) = sMsPending;
+ aData->At( 1 ) = sMsTotal;
+ }
+
+ return sMsTotal;
+ }
+
+EXPORT_C void CMceLogEngine::GetStandardStrings( TDes& aFailed, TDes& aPending )
+ {
+ iLogClient->GetString( aPending, R_LOG_DEL_PENDING );
+ iLogClient->GetString( aFailed, R_LOG_DEL_FAILED );
+ }
+
+EXPORT_C TBool CMceLogEngine::IsNumberAvailable( TInt aIndex )
+ {
+ if( Count() == 0 )
+ {
+ return EFalse;
+ }
+
+ if( Event( aIndex )->Number().Size() == 0 )
+ {
+ return EFalse;
+ }
+
+ if( Event( aIndex )->RemoteParty() == KPrivateNumber )
+ {
+ return EFalse;
+ }
+
+ return ETrue;
+ }
+
+
+EXPORT_C void CMceLogEngine::ForegroundGainedL()
+ {
+ UpdateEventsL();
+ if( !iPbkMatcher )
+ {
+ iPbkMatcher = CMceLogPbkMatcher::NewL( iFsSession, this );
+ }
+ iPbkMatcher->StartL();
+ }
+
+
+EXPORT_C void CMceLogEngine::ForegroundLost()
+ {
+ }
+
+void CMceLogEngine::PbkMatchingDoneL()
+ {
+ }
+
+EXPORT_C void CMceLogEngine::ClearDrListL()
+ {
+ ResetArray();
+
+ if( !iEngineReader )
+ {
+ iEngineReader = CMceLogEngineReader::NewL(this);
+ }
+ iEngineReader->ClearDrListL();
+
+ if( iContainerObserver )
+ {
+ iContainerObserver->MceLogEngineListBoxStateHasChangedL();
+ }
+ }
+
+// End of file