phonebookui/Phonebook2/ServerApplication/src/CPbk2ServerApplicationServices.cpp
changeset 0 e686773b3f54
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/ServerApplication/src/CPbk2ServerApplicationServices.cpp	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,385 @@
+/*
+* Copyright (c) 2005-2007 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:  Phonebook 2 application services.
+*
+*/
+
+
+// INCLUDE FILES
+#include "cpbk2serverapplicationservices.h"
+
+// Phonebook 2
+#include <cpbk2storemanager.h>
+#include <cpbk2sortordermanager.h>
+#include <mpbk2contactnameformatter.h>
+#include <mpbk2viewexplorer.h>
+#include <pbk2contactnameformatterfactory.h>
+#include <pbk2commonui.rsg>
+#include <cpbk2storepropertyarray.h>
+#include <cpbk2fieldpropertyarray.h>
+#include <pbk2menufilteringflags.hrh>
+#include <phonebook2privatecrkeys.h>
+#include <cpbk2contactviewsupplier.h>
+#include <cpbk2storeconfiguration.h>
+#include <cpbk2servicemanager.h>
+
+// Virtual Phonebook
+#include <cvpbkcontactmanager.h>
+#include <cvpbkcontactstoreuriarray.h>
+
+// System includes
+#include <stringloader.h>
+#include <centralrepository.h>
+
+// Debugging headers
+#include <pbk2debug.h>
+#include <pbk2profile.h>
+
+// --------------------------------------------------------------------------
+// CPbk2ServerApplicationServices::CPbk2ServerApplicationServices
+// --------------------------------------------------------------------------
+//
+CPbk2ServerApplicationServices::CPbk2ServerApplicationServices()
+    {
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ServerApplicationServices::~CPbk2ServerApplicationServices
+// --------------------------------------------------------------------------
+//
+CPbk2ServerApplicationServices::~CPbk2ServerApplicationServices()
+    {
+    delete iServiceManager;
+    // sort order manager can use the views from iViewSupplier,
+    // so delete iSortOrderManager before iViewSupplier 
+    delete iSortOrderManager;
+    delete iViewSupplier;
+    delete iNameFormatter;
+    delete iFieldProperties;
+    delete iStoreManager;
+    delete iStoreProperties;
+    delete iContactManager;
+    delete iStoreConfiguration;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ServerApplicationServices::ConstructL
+// --------------------------------------------------------------------------
+//
+inline void CPbk2ServerApplicationServices::ConstructL()
+    {
+    PBK2_DEBUG_PRINT(PBK2_DEBUG_STRING
+        ( "CPbk2ServerApplicationServices::ConstructL(0x%x)"), this );
+
+    // Create Virtual Phonebook contact manager for Phonebook 2
+    CreateManagerL();
+
+    CreateSortOrderManagerL();
+    CreateStorePropertyArrayL();
+    CreateStoreConfigurationL();
+    CreateViewSupplierL();
+
+    PBK2_PROFILE_START(Pbk2Profile::EAppServicesCreateStoreManager);
+    iStoreManager = CPbk2StoreManager::NewL
+        ( *iContactManager, *iStoreConfiguration, ETrue );
+    PBK2_PROFILE_END(Pbk2Profile::EAppServicesCreateStoreManager);
+
+    PBK2_DEBUG_PRINT(PBK2_DEBUG_STRING
+        ( "CPbk2ServerApplicationServices::ConstructL(0x%x) Store manager created"),
+          this );
+
+ 
+    iServiceManager = CPbk2ServiceManager::NewL(iContactManager->FsSession());
+    CreateFieldPropertyArrayL();
+    CreateNameFormatterL();
+
+    PBK2_DEBUG_PRINT(PBK2_DEBUG_STRING
+        ("CPbk2ServerApplicationServices::ConstructL(0x%x) end"), this);
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ServerApplicationServices::NewL
+// --------------------------------------------------------------------------
+//
+CPbk2ServerApplicationServices* CPbk2ServerApplicationServices::NewL()
+    {
+    CPbk2ServerApplicationServices* self =
+        new ( ELeave ) CPbk2ServerApplicationServices();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ServerApplicationServices::ContactManager
+// --------------------------------------------------------------------------
+//
+CVPbkContactManager& CPbk2ServerApplicationServices::ContactManager() const
+    {
+    return *iContactManager;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ServerApplicationServices::CommandHandlerL
+// --------------------------------------------------------------------------
+//
+MPbk2CommandHandler* CPbk2ServerApplicationServices::CommandHandlerL()
+    {
+    // Not supported in Server App
+    return NULL;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ServerApplicationServices::NameFormatter
+// --------------------------------------------------------------------------
+//
+MPbk2ContactNameFormatter&
+        CPbk2ServerApplicationServices::NameFormatter() const
+    {
+    return *iNameFormatter;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ServerApplicationServices::SortOrderManager
+// --------------------------------------------------------------------------
+//
+CPbk2SortOrderManager&
+        CPbk2ServerApplicationServices::SortOrderManager() const
+    {
+    return *iSortOrderManager;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ServerApplicationServices::SendUiL
+// --------------------------------------------------------------------------
+//
+CSendUi* CPbk2ServerApplicationServices::SendUiL()
+    {
+    // Not supported in Server App
+    return NULL;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ServerApplicationServices::StoreProperties
+// --------------------------------------------------------------------------
+//
+CPbk2StorePropertyArray&
+        CPbk2ServerApplicationServices::StoreProperties() const
+    {
+    return *iStoreProperties;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ServerApplicationServices::FieldProperties
+// --------------------------------------------------------------------------
+//
+CPbk2FieldPropertyArray&
+        CPbk2ServerApplicationServices::FieldProperties() const
+    {
+    return *iFieldProperties;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ServerApplicationServices::StoreConfiguration
+// --------------------------------------------------------------------------
+//
+CPbk2StoreConfiguration&
+        CPbk2ServerApplicationServices::StoreConfiguration() const
+    {
+    return *iStoreConfiguration;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ServerApplicationServices::StoreObservationRegister
+// --------------------------------------------------------------------------
+//
+MPbk2StoreObservationRegister&
+        CPbk2ServerApplicationServices::StoreObservationRegister() const
+    {
+    return *iStoreManager;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ServerApplicationServices::StoreValidityInformer
+// --------------------------------------------------------------------------
+//
+MPbk2StoreValidityInformer&
+        CPbk2ServerApplicationServices::StoreValidityInformer() const
+    {
+    return *iStoreManager;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ServerApplicationServices::ViewSupplier
+// --------------------------------------------------------------------------
+//
+MPbk2ContactViewSupplier&
+        CPbk2ServerApplicationServices::ViewSupplier() const
+    {
+    return *iViewSupplier;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ServerApplicationServices::GlobalMenuFilteringFlagsL
+// --------------------------------------------------------------------------
+//
+TInt CPbk2ServerApplicationServices::GlobalMenuFilteringFlagsL() const
+    {
+    return KPbk2MenuFilteringFlagsNone;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ServerApplicationServices::MPbk2ApplicationServicesExtension
+// --------------------------------------------------------------------------
+//
+TAny* CPbk2ServerApplicationServices::MPbk2ApplicationServicesExtension(
+    TUid aExtensionUid )
+    {
+    if ( aExtensionUid == KMPbk2ApplicationServicesExtension2Uid )
+        {
+        return static_cast<MPbk2ApplicationServices2*>( this );
+        }
+    return NULL;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ServerApplicationServices::StoreManager
+// --------------------------------------------------------------------------
+//
+CPbk2StoreManager& CPbk2ServerApplicationServices::StoreManager() const
+    {
+    return *iStoreManager;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ApplicationServices::ServicesManager
+// --------------------------------------------------------------------------
+//
+CPbk2ServiceManager& CPbk2ServerApplicationServices::ServiceManager() const
+    {
+    return *iServiceManager;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ServerApplicationServices::CreateManagerL
+// --------------------------------------------------------------------------
+//
+inline void CPbk2ServerApplicationServices::CreateManagerL()
+    {
+    PBK2_DEBUG_PRINT( PBK2_DEBUG_STRING
+        ( "CPbk2ServerApplicationServices:CreateManagerL(0x%x)" ), this );
+
+    // Initialize contact manager with empty URI array
+    CVPbkContactStoreUriArray* uriArray = CVPbkContactStoreUriArray::NewL();
+    CleanupStack::PushL( uriArray );
+
+    TSecurityInfo secInfo;
+    secInfo.SetToCreatorInfo();
+    iContactManager = CVPbkContactManager::NewL( secInfo, *uriArray );
+
+    CleanupStack::PopAndDestroy(); // uriArray
+
+    PBK2_DEBUG_PRINT(PBK2_DEBUG_STRING
+        ("CPbk2ServerApplicationServices::CreateManagerL(0x%x) end"), this);
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ServerApplicationServices::CreateSortOrderManagerL
+// --------------------------------------------------------------------------
+//
+inline void CPbk2ServerApplicationServices::CreateSortOrderManagerL()
+    {
+    PBK2_PROFILE_START( Pbk2Profile::EAppServicesCreateSortOrderManager );
+
+    iSortOrderManager = CPbk2SortOrderManager::NewL
+        ( iContactManager->FieldTypes() );
+
+    PBK2_PROFILE_END( Pbk2Profile::EAppServicesCreateSortOrderManager );
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ServerApplicationServices::CreateStorePropertyArrayL
+// --------------------------------------------------------------------------
+//
+inline void CPbk2ServerApplicationServices::CreateStorePropertyArrayL()
+    {
+    PBK2_PROFILE_START( Pbk2Profile::EAppServicesCreateStorePropertyArray );
+    iStoreProperties = CPbk2StorePropertyArray::NewL();
+    PBK2_PROFILE_END( Pbk2Profile::EAppServicesCreateStorePropertyArray );
+
+    PBK2_DEBUG_PRINT( PBK2_DEBUG_STRING
+        ( "CPbk2ServerApplicationServices::CreateStorePropertyArrayL() done ") );
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ServerApplicationServices::CreateFieldPropertyArrayL
+// --------------------------------------------------------------------------
+//
+inline void CPbk2ServerApplicationServices::CreateFieldPropertyArrayL()
+    {
+    PBK2_PROFILE_START( Pbk2Profile::EAppServicesCreateFieldPropertyArray );
+    iFieldProperties = CPbk2FieldPropertyArray::NewL
+        ( iContactManager->FieldTypes(), iContactManager->FsSession(),
+          iServiceManager );
+    PBK2_PROFILE_END( Pbk2Profile::EAppServicesCreateFieldPropertyArray );
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ServerApplicationServices::CreateNameFormatterL
+// --------------------------------------------------------------------------
+//
+inline void CPbk2ServerApplicationServices::CreateNameFormatterL()
+    {
+    PBK2_DEBUG_PRINT( PBK2_DEBUG_STRING
+        ( "CPbk2ServerApplicationServices::CreateNameFormatterL(0x%x)" ),
+          this );
+
+    HBufC* unnamedBuf = StringLoader::LoadLC( R_QTN_PHOB_UNNAMED );
+    TPtr unnamed = unnamedBuf->Des();
+    MPbk2ContactNameFormatter* nameFormatter =
+        Pbk2ContactNameFormatterFactory::CreateL
+            ( unnamed, iContactManager->FieldTypes(), *iSortOrderManager,
+              &CCoeEnv::Static()->FsSession() );
+    CleanupStack::PopAndDestroy( unnamedBuf );
+
+    delete iNameFormatter;
+    iNameFormatter = nameFormatter;
+
+    PBK2_DEBUG_PRINT( PBK2_DEBUG_STRING
+        ( "CPbk2ServerApplicationServices::CreateNameFormatterL(0x%x) end" ),
+          this );
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ServerApplicationServices::CreateViewSupplierL
+// --------------------------------------------------------------------------
+//
+inline void CPbk2ServerApplicationServices::CreateViewSupplierL()
+    {
+    iViewSupplier = CPbk2ContactViewSupplier::NewL
+        ( *iContactManager, *iSortOrderManager, *iStoreConfiguration,
+          *iStoreProperties, EFalse );
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ServerApplicationServices::CreateStoreConfigurationL
+// --------------------------------------------------------------------------
+//
+inline void CPbk2ServerApplicationServices::CreateStoreConfigurationL()
+    {
+    iStoreConfiguration = CPbk2StoreConfiguration::NewL();
+    }
+
+// End of File