phonebookui/Phonebook2/inc/CPbk2ApplicationServices.h
changeset 0 e686773b3f54
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/inc/CPbk2ApplicationServices.h	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,172 @@
+/*
+* 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.
+*
+*/
+
+
+#ifndef CPBK2APPLICATIONSERVICES_H
+#define CPBK2APPLICATIONSERVICES_H
+
+// INCLUDES
+#include <e32base.h>
+#include <MPbk2ApplicationServices.h>
+#include <MPbk2ApplicationServices2.h>
+
+// FORWARD DECLARATIONS
+class CPbk2StoreManager;
+class CPbk2ContactViewSupplier;
+class CPbk2ServiceManager;
+
+// CLASS DECLARATION
+
+/**
+ * Phonebook 2 application services.
+ * Responsible for owning and delivering commonly used shared objects
+ * and providing some common application level services.
+ */
+NONSHARABLE_CLASS(CPbk2ApplicationServices) : public CBase,
+                                 public MPbk2ApplicationServices,
+                                 public MPbk2ApplicationServices2
+
+    {
+    public: // Constructor and destructor
+
+        /**
+         * Creates a new instance of this class.
+         *
+         * @return  A new instance of this class.
+         */
+        IMPORT_C static CPbk2ApplicationServices* InstanceL();
+        
+        /**
+         * Creates a new instance of this class.
+         *
+         * @return  A new instance of this class.
+         */
+        IMPORT_C static CPbk2ApplicationServices* InstanceLC();
+
+        /**
+         * Destructor.
+         */
+        ~CPbk2ApplicationServices();
+
+    public: // From MPbk2ApplicationServices
+        CVPbkContactManager& ContactManager() const;
+        MPbk2CommandHandler* CommandHandlerL();
+        MPbk2ContactNameFormatter& NameFormatter() const;
+        CPbk2SortOrderManager& SortOrderManager() const;
+        CSendUi* SendUiL();
+        CPbk2StorePropertyArray& StoreProperties() const;
+        CPbk2FieldPropertyArray& FieldProperties() const;
+        CPbk2StoreConfiguration& StoreConfiguration() const;
+        MPbk2StoreObservationRegister& StoreObservationRegister() const;
+        MPbk2StoreValidityInformer& StoreValidityInformer() const;
+        MPbk2ContactViewSupplier& ViewSupplier() const;
+        TInt GlobalMenuFilteringFlagsL() const;
+        TBool LocallyVariatedFeatureEnabled(
+            TVPbkLocalVariantFlags aFeatureFlag);
+        TAny* MPbk2ApplicationServicesExtension( TUid aExtensionUid );
+
+    public: // From MPbk2ApplicationServices2
+        CPbk2StoreManager& StoreManager() const;
+        CPbk2ServiceManager& ServiceManager() const;
+
+    public:
+        /**
+         * Pushes this object to the cleanup stack for releasing.
+         */
+        inline void PushL();
+
+    private: // Release interface
+        friend void Release( CPbk2ApplicationServices* aObj );
+        virtual void DoRelease();
+        static void CleanupRelease( TAny* aObj );
+
+    private: // Implementation
+        CPbk2ApplicationServices();
+        void ConstructL();
+        void CreateManagerL();
+        void CreateSortOrderManagerL();
+        void CreateStorePropertyArrayL();
+        void CreateFieldPropertyArrayL();
+        void CreateNameFormatterL();
+        void CreateViewSupplierL();
+        void CreateStoreConfigurationL();
+        void GetLocalVariationFlags();
+
+        void IncRef();
+        TInt DecRef();
+
+    private: // Data
+        /// Own: Reference count
+        TInt iRefCount;
+        /// Own: Virtual Phonebook contact manager
+        CVPbkContactManager* iContactManager;
+        /// Own: Store manager
+        CPbk2StoreManager* iStoreManager;
+        /// Own: Sort order manager
+        CPbk2SortOrderManager* iSortOrderManager;
+        /// Own: Contact name formatter
+        MPbk2ContactNameFormatter* iNameFormatter;
+        /// Own: Store properties
+        CPbk2StorePropertyArray* iStoreProperties;
+        /// Own: Field properties
+        CPbk2FieldPropertyArray* iFieldProperties;
+        /// Own: View supplier
+        CPbk2ContactViewSupplier* iViewSupplier;
+        /// Own: Contact store configuration
+        CPbk2StoreConfiguration* iStoreConfiguration;
+        /// Own: Service manager
+        CPbk2ServiceManager* iServiceManager;
+        /// Own: local variation flags
+        TInt iLocalVariationFlags;
+
+    };
+
+// INLINE IMPLEMENTATION
+
+// --------------------------------------------------------------------------
+// Release
+// --------------------------------------------------------------------------
+//
+inline void Release( CPbk2ApplicationServices* aObj )
+    {
+    if ( aObj )
+        {
+        aObj->DoRelease();
+        }
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ApplicationServices::PushL
+// --------------------------------------------------------------------------
+//
+inline void CPbk2ApplicationServices::PushL()
+    {
+    CleanupStack::PushL( TCleanupItem( CleanupRelease, this ) );
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2ApplicationServices::CleanupRelease
+// --------------------------------------------------------------------------
+//
+inline void CPbk2ApplicationServices::CleanupRelease( TAny* aObj )
+    {
+    Release( static_cast<CPbk2ApplicationServices*>( aObj ) );
+    }
+
+#endif // CPBK2APPLICATIONSERVICES_H
+
+// End of File