phonebookui/Phonebook2/UIExtensionManager/inc/CPbk2ThinUIExtensionLoader.h
changeset 0 e686773b3f54
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/UIExtensionManager/inc/CPbk2ThinUIExtensionLoader.h	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,100 @@
+/*
+* Copyright (c) 2002-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:  Loads thin UI extensions
+*
+*/
+
+
+
+#ifndef CPBK2THINUIEXTENSIONLOADER_H
+#define CPBK2THINUIEXTENSIONLOADER_H
+
+//  INCLUDES
+#include <e32base.h>
+
+// FORWARD DECLARATIONS
+class CPbk2UIExtensionThinPlugin;
+class CImplementationInformation;
+
+// CLASS DECLARATION
+
+/**
+*  Loads thin UI extensions
+*
+*/
+NONSHARABLE_CLASS(CPbk2ThinUIExtensionLoader) : 
+        public CBase
+    {
+    public:  // Constructors and destructor
+        /**
+        * Two-phased constructor.
+        * Loads all menu plugins
+        * @return a new instance of this class
+        */
+        static CPbk2ThinUIExtensionLoader* NewL();
+        
+        /**
+        * Destructor.
+        */
+        ~CPbk2ThinUIExtensionLoader();
+
+    public: // New functions
+        /**
+        * Returns the number of loaded plugins
+        * @return the number of loaded plugins
+        */
+        inline TInt PluginCount() const;
+        
+        /**
+        * Returns the plugin in give position
+        * @param aIndex the index of the plugin
+        */
+        inline CPbk2UIExtensionThinPlugin& PluginAt(TInt aIndex) const;
+    
+    private:    // Construction
+        CPbk2ThinUIExtensionLoader();
+        void ConstructL();
+
+    private:    // New functions
+        void LoadImplementationsL(CImplementationInformation& aImplInfo);
+        CPbk2UIExtensionThinPlugin* FindImplementation(TUid& aUid);
+        
+    private:    // Data
+        /// An array of menu plugin implementions
+        RPointerArray<CPbk2UIExtensionThinPlugin> iPlugins;
+    };
+
+// INLINE FUNCTIONS
+// -----------------------------------------------------------------------------
+// CPbk2ThinUIExtensionLoader::PluginCount
+// -----------------------------------------------------------------------------
+//
+inline TInt CPbk2ThinUIExtensionLoader::PluginCount() const
+    {
+    return iPlugins.Count();
+    }
+
+// -----------------------------------------------------------------------------
+// CPbk2ThinUIExtensionLoader::PluginAt
+// -----------------------------------------------------------------------------
+//
+inline CPbk2UIExtensionThinPlugin& CPbk2ThinUIExtensionLoader::PluginAt(
+        TInt aIndex) const
+    {
+    return *iPlugins[aIndex];
+    }
+
+#endif      // CPBK2THINUIEXTENSIONLOADER_H
+            
+// End of File