phoneengine/PhoneCntFinder/src/CPhoneCntFactoryImpl.cpp
changeset 0 5f000ab63145
child 9 8871b09be73b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/PhoneCntFinder/src/CPhoneCntFactoryImpl.cpp	Mon Jan 18 20:18:27 2010 +0200
@@ -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