--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/PhoneCntFinder/src/CPhoneCntFactoryImpl.cpp Wed Sep 01 12:30:10 2010 +0100
@@ -0,0 +1,350 @@
+/*
+* Copyright (c) 2002-2005 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: Factory class's implementation.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include "CPhoneCntFactoryImpl.h"
+#include "CPhCntThumbnailLoaderImpl.h"
+#include "CPhCntRfsHandlerImpl.h"
+#include "CPhCntMmiSecurityImpl.h"
+#include "CPhoneCntSaveAddToName.h"
+#include "CPhoneCntPbkOwner.h"
+#include "CPhCntMatcherImpl.h"
+#include "CPhCntProfileEngineImpl.h"
+
+#include <CProfileChangeNotifyHandler.h>
+#include <MProfileChangeObserver.h>
+
+#include "CPhCntSingleItemFetchService.h"
+#include "cphcntspeeddialimpl.h"
+#include "cphcntvpbkthumbnailloader.h"
+#include "CPhCntContactStores.h"
+#include "cphcntvpbkcontactid.h"
+#include "CPhCntContactManager.h"
+#include "cphcntphonebookservices.h"
+#include "cphcntmatchervoipimpl.h"
+#include "CPhCntMatcherImpl.h"
+#include "CPhCntAIWService.h"
+#include "tphcntservicerequestparamfactory.h"
+#include "cphcntcontactdataselectionimpl.h"
+#include "cphcntstoreloaderimpl.h"
+
+#include <coemain.h> // CONE
+#include <secui.h> // For TSecUi
+#include <featmgr.h> // Feature Manager
+#include <talogger.h>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CPhCntFactoryImpl::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CPhCntFactoryImpl* CPhCntFactoryImpl::NewL()
+ {
+ CPhCntFactoryImpl* self = new (ELeave) CPhCntFactoryImpl;
+
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CPhCntFactoryImpl::~CPhCntFactoryImpl
+// ---------------------------------------------------------------------------
+//
+CPhCntFactoryImpl::~CPhCntFactoryImpl()
+ {
+ delete iPhonebookServices;
+ delete iContactStores;
+
+ if ( iSecUiInit )
+ {
+ TSecUi::UnInitializeLib();
+ }
+
+ iPbkResource.Close();
+ delete iPbkOwner;
+ FeatureManager::UnInitializeLib();
+ }
+
+// ---------------------------------------------------------------------------
+// CPhCntFactoryImpl::CreateSpeedDialMonitorL
+// ---------------------------------------------------------------------------
+//
+CPhCntSpeedDialMonitor* CPhCntFactoryImpl::CreateSpeedDialMonitorL()
+ {
+ CreateContactStoreAndManagerL();
+ return CPhCntSpeedDialImpl::NewL( *iPbkOwner );
+ }
+
+// ---------------------------------------------------------------------------
+// CPhCntFactoryImpl::CreateThumbnailLoaderL
+// ---------------------------------------------------------------------------
+//
+CPhCntThumbnailLoader* CPhCntFactoryImpl::CreateThumbnailLoaderL(
+ MPhCntThumbnailLoaderObserver& aObserver )
+ {
+ CreateContactStoreAndManagerL();
+
+ CPhCntContactStores* contactStores =
+ CPhCntContactStores::NewL( *iPbkOwner->ContactManager() );
+ CleanupStack::PushL( contactStores );
+
+ CPhCntVPbkThumbnailLoader* loader =
+ CPhCntVPbkThumbnailLoader::NewL( *contactStores );
+ CleanupStack::Pop( contactStores );
+ CleanupStack::PushL( loader );
+
+ CPhCntThumbnailLoaderImpl* impl =
+ CPhCntThumbnailLoaderImpl::NewL( aObserver, *iPbkOwner, *loader );
+ CleanupStack::Pop( loader );
+
+ return impl;
+ }
+
+// ---------------------------------------------------------------------------
+// CPhCntFactoryImpl::CreateSingleItemFetchL
+// ---------------------------------------------------------------------------
+//
+CPhCntSingleItemFetch* CPhCntFactoryImpl::CreateSingleItemFetchL()
+ {
+ CreatePhonebookServicesL();
+ return CPhCntSingleItemFetchService::NewL(
+ *iContactStores, *iPbkOwner->ContactManager() );
+ }
+// ---------------------------------------------------------------------------
+// CPhCntFactoryImpl::CreateContactDataSelectionL
+// ---------------------------------------------------------------------------
+//
+CPhCntContactDataSelection* CPhCntFactoryImpl::CreateContactDataSelectionL()
+ {
+ CreatePhonebookServicesL();
+ CPhCntAiwService* service = CPhCntAiwService::NewL();
+ CleanupStack::PushL( service );
+ CPhCntServiceRequestParamFactory* factory =
+ CPhCntServiceRequestParamFactory::NewLC( *iPbkOwner->ContactManager() );
+ CPhCntContactStores* contactStores =
+ CPhCntContactStores::NewL( *iPbkOwner->ContactManager() );
+ CleanupStack::PushL( contactStores );
+
+
+ CPhCntContactDataSelectionImpl* impl =
+ CPhCntContactDataSelectionImpl::NewL(
+ service,
+ factory,
+ contactStores );
+ CleanupStack::Pop( 3, service );
+ return impl;
+ }
+
+// ---------------------------------------------------------------------------
+// CPhCntFactoryImpl::CreateSaveAddToNameL
+// ---------------------------------------------------------------------------
+//
+CPhoneCntSaveAddToName* CPhCntFactoryImpl::CreateSaveAddToNameL()
+ {
+ CreatePhonebookServicesL();
+
+ CPhoneCntSaveAddToName* phoneSaveAddToName =
+ CPhoneCntSaveAddToName::NewL( *iPhonebookServices );
+ return phoneSaveAddToName;
+ }
+
+// ---------------------------------------------------------------------------
+// CPhCntFactoryImpl::CreateRfsHandlerL
+// ---------------------------------------------------------------------------
+//
+CPhCntRfsHandler* CPhCntFactoryImpl::CreateRfsHandlerL()
+ {
+ return CPhCntRfsHandlerImpl::NewL();
+ }
+
+// ---------------------------------------------------------------------------
+// CPhCntFactoryImpl::CreateMmiSecurityL
+// ---------------------------------------------------------------------------
+//
+CPhCntMmiSecurity* CPhCntFactoryImpl::CreateMmiSecurityL()
+ {
+ if ( !iSecUiInit )
+ {
+ TSecUi::InitializeLibL();
+ iSecUiInit = ETrue;
+ }
+
+ return CPhCntMmiSecurityImpl::NewL();
+ }
+
+// ---------------------------------------------------------------------------
+// CPhCntFactoryImpl::CreateContactMatcherL
+//
+// Create contact matcher
+// ---------------------------------------------------------------------------
+//
+CPhCntMatcher* CPhCntFactoryImpl::CreateContactMatcherL()
+ {
+ CreateContactStoreAndManagerL();
+ CPhCntMatcherImpl* matcher = NULL;
+ if( FeatureManager::FeatureSupported( KFeatureIdCommonVoip ) )
+ {
+ matcher = CPhCntMatcherVoIPImpl::NewL( *iPbkOwner );
+ }
+ else
+ {
+ matcher = CPhCntMatcherImpl::NewL( *iPbkOwner );
+ }
+
+ return matcher;
+ }
+
+// ---------------------------------------------------------------------------
+// CPhCntFactoryImpl::CreateProfileEngineL
+// ---------------------------------------------------------------------------
+//
+CPhCntProfileEngine* CPhCntFactoryImpl::CreateProfileEngineL()
+ {
+ return CPhCntProfileEngineImpl::NewL();
+ }
+
+// ---------------------------------------------------------------------------
+// CPhCntFactoryImpl::CreateProfileEngineNotifyHandlerL
+// ---------------------------------------------------------------------------
+//
+CBase* CPhCntFactoryImpl::CreateProfileEngineNotifyHandlerL(
+ MProfileChangeObserver* aObserver )
+ {
+ return CProfileChangeNotifyHandler::NewL( aObserver );
+ }
+
+// ---------------------------------------------------------------------------
+// CPhCntFactoryImpl::CreateContactIdL
+// ---------------------------------------------------------------------------
+//
+CPhCntContactId* CPhCntFactoryImpl::CreateContactIdL()
+ {
+ CreateContactStoreAndManagerL();
+ MVPbkContactLink* nullLink = NULL;
+ return CPhCntVPbkContactId::NewL( nullLink, *iPbkOwner->ContactManager() );
+ }
+
+// ---------------------------------------------------------------------------
+// CPhCntFactoryImpl::CreateContactIdL
+// ---------------------------------------------------------------------------
+//
+CPhCntContactId* CPhCntFactoryImpl::CreateContactIdL(
+ TContactItemId aContactId )
+ {
+ CreateContactStoreAndManagerL();
+ return CPhCntVPbkContactId::NewL( aContactId, *iPbkOwner->ContactManager() );
+ }
+
+// ---------------------------------------------------------------------------
+// CPhCntFactoryImpl::CreateContactIdL
+// ---------------------------------------------------------------------------
+//
+CPhCntContactId* CPhCntFactoryImpl::CreateContactIdL(
+ const TDesC8& aContactId )
+ {
+ CreateContactStoreAndManagerL();
+ return CPhCntVPbkContactId::NewL( aContactId, *iPbkOwner->ContactManager() );
+ }
+
+// ---------------------------------------------------------------------------
+// CPhCntFactoryImpl::CreateContactStoreLoaderL
+// ---------------------------------------------------------------------------
+//
+MPhCntStoreLoader* CPhCntFactoryImpl::CreateContactStoreLoaderL()
+ {
+ CreateContactStoreAndManagerL();
+
+ return CPhCntStoreLoaderImpl::NewL( *(iPbkOwner->ContactManager() ) );
+ }
+
+// -----------------------------------------------------------------------------
+// CPhCntFactoryImpl::CPhCntFactoryImpl
+// C++ constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CPhCntFactoryImpl::CPhCntFactoryImpl()
+: iPbkResource( *CCoeEnv::Static() )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CPhCntFactoryImpl::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CPhCntFactoryImpl::ConstructL()
+ {
+ TEFLOGSTRING( KTAOBJECT, "CNT CPhCntFactoryImpl::ConstructL" );
+ FeatureManager::InitializeLibL();
+ }
+
+// -----------------------------------------------------------------------------
+// Creates phonebook services.
+// -----------------------------------------------------------------------------
+//
+void CPhCntFactoryImpl::CreatePhonebookServicesL()
+ {
+ TEFLOGSTRING( KTAOBJECT, "CNT CPhCntFactoryImpl::CreatePhonebookServicesL" );
+ CreateContactStoreAndManagerL();
+
+ if( !iPbkResource.IsOpen() )
+ {
+ iPbkResource.OpenL();
+ iPhonebookServices =
+ CPhCntPhonebookServices::NewL(
+ *iContactStores,
+ *iPbkOwner->ContactManager() );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// Creates phonebook services.
+// -----------------------------------------------------------------------------
+//
+void CPhCntFactoryImpl::CreateContactStoreAndManagerL()
+ {
+ if( !iPbkOwner )
+ {
+ iPbkOwner = CPhoneCntPbkOwner::NewL( );
+ CPhCntContactManager* contactManager = iPbkOwner->ContactManager();
+ iContactStores = CPhCntContactStores::NewL( *contactManager );
+ }
+ }
+
+// ================= OTHER EXPORTED FUNCTIONS ==============
+
+// ---------------------------------------------------------------------------
+// CreateCntFactoryL
+//
+// Creates instance of contact factory.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CPhCntFactory* CreateCntFactoryL()
+ {
+ TEFLOGSTRING( KTAOBJECT, "CNT CPhCntFactoryImpl::CreateCntFactoryL" );
+ return CPhCntFactoryImpl::NewL();
+ }
+
+// End of File