--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/contacts_plat/phonebook_2_ui_extension_plugin_api/inc/CPbk2UIExtensionPlugin.h Wed Sep 01 12:29:52 2010 +0100
@@ -0,0 +1,209 @@
+/*
+* 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 UI extension ECom plug-in interface.
+*
+*/
+
+
+#ifndef CPBK2UIEXTENSIONPLUGIN_H
+#define CPBK2UIEXTENSIONPLUGIN_H
+
+// INCLUDE FILES
+#include <e32base.h>
+#include <ecom/ecom.h>
+#include <MPbk2UIExtensionFactory.h>
+
+// FORWARD DECLARATIONS
+class CPbk2UIExtensionView;
+class MPbk2UIExtensionView;
+class CEikMenuPane;
+class MPbk2ContactUiControl;
+class CPbk2StorePropertyArray;
+class TCoeHelpContext;
+class CPbk2AppViewBase;
+class CPbk2ViewGraph;
+class CPbk2UIExtensionInformation;
+
+// CLASS DECLARATION
+
+/**
+ * Phonebook 2 UI extension ECom plug-in interface.
+ *
+ * This class is responsible for defining the extension plug-in interface
+ * and creating extension plug-in implementations.
+ */
+class CPbk2UIExtensionPlugin : public CBase,
+ public MPbk2UIExtensionFactory
+ {
+ public: // Construction and destruction
+
+ /**
+ * Creates a new instance of this class.
+ *
+ * @param aUid Extension implementation UID.
+ * @return A new instance of this class.
+ */
+ static CPbk2UIExtensionPlugin* NewL(
+ TUid aUid );
+
+ /**
+ * Destructor.
+ */
+ ~CPbk2UIExtensionPlugin();
+
+ public: // Interface
+
+ /**
+ * Called for creating a view from the extension.
+ *
+ * @param aViewId The id of the view to be created. Check the
+ * id and return a view if the extension
+ * implements it.
+ * @param aView The view that owns the extension view.
+ * Derived from CAknView.
+ * @return Created extension view or NULL.
+ */
+ virtual MPbk2UIExtensionView* CreateExtensionViewL(
+ TUid aViewId,
+ CPbk2UIExtensionView& aView ) = 0;
+
+ /**
+ * Called before a menu is launched. If the
+ * extension is loaded on demand this won't be called
+ * until the first command has caused the loading of the
+ * extension.
+ *
+ * Use CEikMenuPane::MenuItemExists(TInt aCommandId,
+ * TInt& aPosition) before setting an item dimmed.
+ *
+ * @param aResourceId The id of the menu pane.
+ * @param aMenuPane A reference to the menu pane.
+ * @param aControl The current UI control.
+ */
+ virtual void DynInitMenuPaneL(
+ TInt aResourceId,
+ CEikMenuPane* aMenuPane,
+ MPbk2ContactUiControl& aControl ) = 0;
+
+ /**
+ * Called in an application start-up and when the store
+ * configuration changes. The extension can update the store
+ * property array by adding or removing properties.
+ *
+ * @param aPropertyArray Phonebook 2 store property array.
+ */
+ virtual void UpdateStorePropertiesL(
+ CPbk2StorePropertyArray& aPropertyArray ) = 0;
+
+ /**
+ * Gets the help context from the extension.
+ *
+ * @param aContext Help context, if found.
+ * @param aView Reference to the current view.
+ * @param aUiControl Reference to the current control.
+ * @return ETrue if help context was found.
+ */
+ virtual TBool GetHelpContextL(
+ TCoeHelpContext& aContext,
+ const CPbk2AppViewBase& aView,
+ MPbk2ContactUiControl& aUiControl ) = 0;
+
+ /**
+ * Allows extensions to modify the view graph dynamically during
+ * the application initialisation.
+ *
+ * The UI extension's start-up policy must be KPbk2LoadInStartup.
+ *
+ * @param aViewGraph Phonebook 2 view graph.
+ */
+ virtual void ApplyDynamicViewGraphChangesL(
+ CPbk2ViewGraph& aViewGraph ) = 0;
+
+ /**
+ * Allows extensions to add plugin information dynamically
+ * during the application initialisation.
+ *
+ * The UI extension's start-up policy must be KPbk2LoadInStartup.
+ */
+ virtual void ApplyDynamicPluginInformationDataL(
+ CPbk2UIExtensionInformation& aUiExtensionInformation ) = 0;
+
+ /**
+ * Returns an extension point for this interface or NULL.
+ *
+ * @param aExtensionUid Extension UID.
+ * @return Extension point.
+ */
+ virtual TAny* UIExtensionPluginExtension(
+ TUid /*aExtensionUid*/ )
+ {
+ return NULL;
+ }
+
+ public: // Internal interface for the extension manager
+
+ /**
+ * Returns the implementation UID.
+ *
+ * @return Implementation UID.
+ */
+ TUid ImplementationUid() const;
+
+ private: // Data
+ /// Own: Destructor key
+ TUid iDtorIDKey;
+ /// Own: Implementation UID
+ TUid iImplementationUid;
+ };
+
+// --------------------------------------------------------------------------
+// CPbk2UIExtensionPlugin::~CPbk2UIExtensionPlugin
+// --------------------------------------------------------------------------
+//
+inline CPbk2UIExtensionPlugin::~CPbk2UIExtensionPlugin()
+ {
+ REComSession::DestroyedImplementation( iDtorIDKey );
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2UIExtensionPlugin::NewL
+// --------------------------------------------------------------------------
+//
+inline CPbk2UIExtensionPlugin* CPbk2UIExtensionPlugin::NewL( TUid aUid )
+ {
+ TAny* ptr = NULL;
+ ptr = REComSession::CreateImplementationL( aUid,
+ _FOFF( CPbk2UIExtensionPlugin, iDtorIDKey ) );
+
+ CPbk2UIExtensionPlugin* self =
+ reinterpret_cast<CPbk2UIExtensionPlugin*>( ptr );
+ if ( self )
+ {
+ self->iImplementationUid = aUid;
+ }
+ return self;
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2UIExtensionPlugin::ImplementationUid
+// --------------------------------------------------------------------------
+//
+inline TUid CPbk2UIExtensionPlugin::ImplementationUid() const
+ {
+ return iImplementationUid;
+ }
+
+#endif // CPBK2UIEXTENSIONPLUGIN_H
+
+// End of File