--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/EngineSrc/CLogsCntLinkChecker.cpp Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,284 @@
+/*
+* 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:
+* Check if a Contact Link is valid
+*
+*/
+
+// INCLUDE FILES
+#include "CLogsCntLinkChecker.h"
+#include "MLogsObserver.h"
+#include "MLogsReaderConfig.h"
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// MODULE DATA STRUCTURES
+
+// LOCAL FUNCTION PROTOTYPES
+
+// ==================== LOCAL FUNCTIONS ====================
+
+// ================= MEMBER FUNCTIONS =======================
+
+
+// ----------------------------------------------------------------------------
+// CLogsCntLinkChecker::CLogsCntLinkChecker
+// ----------------------------------------------------------------------------
+//
+CLogsCntLinkChecker::CLogsCntLinkChecker(
+ RFs& aFsSession,
+ MLogsObserver* aObserver ) :
+ CLogsBaseUpdater( aFsSession, aObserver),
+ iContactLinkValid( EFalse )
+ {
+ }
+
+// ----------------------------------------------------------------------------
+// CLogsCntLinkChecker::NewL
+// ----------------------------------------------------------------------------
+//
+CLogsCntLinkChecker* CLogsCntLinkChecker::NewL(
+ RFs& aFsSession,
+ MLogsObserver* aObserver )
+ {
+ CLogsCntLinkChecker* self = new ( ELeave ) CLogsCntLinkChecker( aFsSession, aObserver );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+// ----------------------------------------------------------------------------
+// CLogsCntLinkChecker::ConstructL
+// ----------------------------------------------------------------------------
+//
+void CLogsCntLinkChecker::ConstructL()
+ {
+ BaseConstructL(CVPbkPhoneNumberMatchStrategy::EVPbkExactMatchFlag);
+ iWait = new( ELeave )CActiveSchedulerWait();
+ }
+
+// ----------------------------------------------------------------------------
+// CLogsCntLinkChecker::~CLogsEventUpdater
+// ----------------------------------------------------------------------------
+//
+CLogsCntLinkChecker::~CLogsCntLinkChecker()
+ {
+ delete iContactLink;
+
+ if ( iWait )
+ {
+ if( iWait->IsStarted() )
+ {
+ iWait->AsyncStop();
+ }
+ delete iWait;
+ iWait = NULL;
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CLogsCntLinkChecker::StartRunningL
+//
+// Called from base class
+// ----------------------------------------------------------------------------
+//
+void CLogsCntLinkChecker::StartRunningL()
+ {
+ //Important that ConfigureL is called before we start here
+ if( iContactLink )
+ {
+ //We first try to search corresponding contact for this phonenumber from Phonebook
+ SearchContactLinkL( *iContactLink );
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CLogsCntLinkChecker::ContinueRunningL
+// ----------------------------------------------------------------------------
+//
+void CLogsCntLinkChecker::ContinueRunningL( TInt aFieldId )
+ {
+ iContactLinkValid = EFalse;
+
+ if( aFieldId != KErrNotFound )
+ {
+ iContactLinkValid = ETrue;
+ }
+
+ iState = EStateCheckContactLinkFinished;
+ iPhase = EDone;
+
+ if( iWait->IsStarted() )
+ {
+ iWait->AsyncStop();
+ }
+
+ if ( iObserver )
+ {
+ iObserver->StateChangedL( this );
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CLogsCntLinkChecker::CntLinkDeletedL
+// ----------------------------------------------------------------------------
+//
+void CLogsCntLinkChecker::CntLinkDeletedL()
+ {
+ if( iContactLink )
+ {
+ delete iContactLink;
+ iContactLink = NULL;
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CLogsCntLinkChecker::ConfigureL
+//
+// Sets the contact link which is used to retrieve the contact.
+// ----------------------------------------------------------------------------
+//
+void CLogsCntLinkChecker::ConfigureL( const MLogsReaderConfig* aConfig ) //Implemented from MLogsReader
+ {
+ if( iContactLink )
+ {
+ delete iContactLink;
+ iContactLink = NULL;
+ }
+ iState = EStateUndefined;
+ iContactLink = aConfig->ContactLink().AllocL();
+ }
+
+// ----------------------------------------------------------------------------
+// CLogsCntLinkChecker::IsSameContactLink
+//
+// Check if contact link is the same one, if same, no need to reconfig it.
+// ----------------------------------------------------------------------------
+//
+EXPORT_C TBool CLogsCntLinkChecker::IsSameContactLink( const TDesC8& aContactLink ) const
+ {
+ TBool flag = EFalse;
+
+ if ( iContactLink
+ && 0 == iContactLink->Compare( aContactLink )
+ && ( iState == EStateCheckContactLinkFinished
+ || iState == EStateInitializing ) )
+ {
+ flag = ETrue;
+ }
+ return flag;
+ }
+
+// ----------------------------------------------------------------------------
+// CLogsCntLinkChecker::IsCntLinkValidSync
+//
+// Check if contact link is valid.
+// ----------------------------------------------------------------------------
+//
+EXPORT_C TBool CLogsCntLinkChecker::IsCntLinkValidSync ( const TDesC8& aContactLink )
+ {
+ TBool flag = EFalse;
+
+ if ( !iContactLink || 0 != iContactLink->Compare(aContactLink) )
+ {
+ return flag;
+ }
+
+ if ( iState == EStateInitializing )
+ {
+ if( !(iWait->IsStarted()) )
+ {
+ iWait->Start();
+ }
+ }
+ if ( iState == EStateCheckContactLinkFinished )
+ {
+ if( iContactLinkValid )
+ {
+ flag = ETrue;
+ }
+ else
+ {
+ flag = EFalse;
+ }
+ }
+
+ return flag;
+ }
+
+// ----------------------------------------------------------------------------
+// CLogsCntLinkChecker::RunL
+// ----------------------------------------------------------------------------
+//
+void CLogsCntLinkChecker::RunL()
+ {
+
+ }
+
+// ----------------------------------------------------------------------------
+// CLogsCntLinkChecker::Stop
+// ----------------------------------------------------------------------------
+//
+void CLogsCntLinkChecker::Stop()
+ {
+ if ( iOperation )
+ {
+ delete iOperation;
+ iOperation = NULL;
+ iPbkOperationsOngoing = EFalse;
+ iState = EStateInterrupted;
+ }
+
+ if ( iWait->IsStarted() )
+ {
+ iWait->AsyncStop();
+ }
+ return;
+ }
+
+// ----------------------------------------------------------------------------
+// CLogsCntLinkChecker::ProcessVPbkSingleContactOperationCompleteImplL
+// ----------------------------------------------------------------------------
+//
+void CLogsCntLinkChecker::ProcessVPbkSingleContactOperationCompleteImplL(
+ MVPbkContactOperationBase& /* aOperation */,
+ MVPbkStoreContact* /*aContact)*/ )
+ {
+
+ }
+
+// ----------------------------------------------------------------------------
+// CLogsCntLinkChecker::HandleStoreEventL
+// ----------------------------------------------------------------------------
+//
+void CLogsCntLinkChecker::HandleStoreEventL( MVPbkContactStore& /*aContactStore */,
+ TVPbkContactStoreEvent aStoreEvent )
+ {
+ if(aStoreEvent.iEventType == TVPbkContactStoreEvent::EContactDeleted)
+ {
+ CntLinkDeletedL();
+ }
+ }
+// End of File
+
+