diff -r 000000000000 -r 5f000ab63145 phoneengine/PhoneCntFinder/src/CPhoneCntFactoryImpl.cpp --- /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 +#include + +#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 // CONE +#include // For TSecUi +#include // Feature Manager +#include + +// ============================ 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