contacts_plat/cca_view_plugin_api/inc/ccappviewpluginaknview.h
changeset 0 e686773b3f54
child 32 2828b4d142c0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contacts_plat/cca_view_plugin_api/inc/ccappviewpluginaknview.h	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,217 @@
+/*
+* Copyright (c) 2008 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:  Plugin IF for Avkon based plugin views
+*
+*/
+
+#ifndef CCAPPVIEWPLUGINAKNVIEW_H
+#define CCAPPVIEWPLUGINAKNVIEW_H
+
+#ifndef __CCAPPUTILUNITTESTMODE
+#include <AknView.h>
+#include <coneresloader.h>
+#endif //__CCAPPUTILUNITTESTMODE
+
+class CCCAppViewPluginAknContainer;
+
+/**
+ *  CAknView tailored for the needs of CCApp plugins.
+ *
+ *  @code
+ *   Derive from CCCAppViewPluginBase, which is inherited from CCCAppViewPluginAknView.
+ *
+ *   class CCCAppMyPlugin : public CCCAppViewPluginBase
+ *       {
+ *   ...  
+ *
+ *  CCCAppViewPluginBase is inherited from CAknView. CAknView has pure
+ *  virtual method for view id. With plugin views, this method is used
+ *  to return the implementation Id. This helps to identify the views and
+ *  the plugins with each other.
+ * 
+ *   TUid CCCAppMyPlugin::Id()const
+ *       {
+ *       return TUid::Uid( KCCAMyPluginImplmentationUid );
+ *       }
+ *     
+ *   During the preparations CCCAppViewPluginBase's PreparePluginViewL() is called. It is called
+ *   only once in plugin's lifespan. Use it to load resource-file containing the resources your 
+ *   plugin needs. Actual loading of menus / soft keys can be left to base-class via calling 
+ *   BaseConstructL() and id of AVKON_VIEW -resource struct.
+ *
+ *   void CCCAppMyPlugin::PreparePluginViewL( MCCAppPluginParameter& aPluginParameter )
+ *       {
+ *       // preparing resources for use
+ *       TFileName fileName( KCCAppCommLauncherResourceFileName );
+ *       BaflUtils::NearestLanguageFile( iCoeEnv->FsSession(), fileName );
+ *       iResourceLoader.OpenL( fileName );
+ *       // calling base-class to let it do the rest of loading       
+ *       BaseConstructL( R_COMMLAUNCHER_VIEW );
+ *
+ *       // other plugin preparation work...
+ *       }
+ *
+ *   When plugin view is going to be activated to the display, DoActivateL()
+ *   is called. Base-class DoActivateL should be called.
+ * 
+ *   void CCCAppMyPlugin::DoActivateL( 
+ *       const TVwsViewId& aPrevViewId,
+ *       TUid aCustomMessageId,
+ *       const TDesC8& aCustomMessage )
+ *       {
+ *       // Forward the activation-call to base-class
+ *       CCCAppViewPluginAknView::DoActivateL(
+ *           aPrevViewId, aCustomMessageId, aCustomMessage );
+ *       // other plugin activation work ...
+ *
+ *  During the activation of plugin view NewContainerL() is called. Use it to
+ *  construct your container-class inherited from CCCAppViewPluginAknContainer.
+ *
+ *    void CCCAppMyPlugin::NewContainerL()
+ *       {
+ *       iContainer = new (ELeave) CCCAppMyContainer();
+ *       } 
+ *
+ *  When plugin view is going to be deactivated from the display, 
+ *  DoDeactivate() is called. Base-class DoDeactivate should be called.
+ *  Plugin view is deleted during the deactivation process, but container
+ *  is.
+ * 
+ *   void CCCAppMyPlugin::DoDeactivate()
+ *       {
+ *       // Forward the deactivation-call to base-class
+ *       CCCAppViewPluginAknView::DoDeactivate(); 
+ *       // other plugin deactivation work ...
+ *       }
+ *  
+ *  Each plugin view should show its own title in the titlePane.
+ *  To Facilitate this, the Plugin View base-Class provides SetTitleL(aTitle) API.
+ *  Base-class SetTitleL should be called.
+ *  The new title 'aTitle' gets updated in the TitlePane of the View
+ * 
+ *   void CCCAppMyPlugin::SetTitleL()
+ *       {
+ *       // Forward the SetTitleL-call to base-class
+ *       CCCAppViewPluginAknView::SetTitleL( _LIT("My Title") ); 
+         }
+ * 
+ *  @endcode
+ *
+ *  @lib ccapputil.dll
+ *  @since S60 v5.0
+ */
+class CCCAppViewPluginAknView : public CAknView
+    {
+
+    public: // Constructors & destructors
+
+        /**
+        * C++ constructor.
+        */
+        IMPORT_C CCCAppViewPluginAknView();
+
+        /**
+        * Destructor
+        */
+        IMPORT_C virtual ~CCCAppViewPluginAknView();
+
+    protected: // From CAknView
+
+        /**
+         * Creates needed container through NewContainerL() and adds it
+         * to stack. 
+         * 
+         * This should be called from the sub-class.
+         *
+         * See more details from CAknView.
+         *
+         * @since S60 v5.0
+         */
+        IMPORT_C virtual void DoActivateL( 
+            const TVwsViewId& aPrevViewId,
+            TUid aCustomMessageId,
+            const TDesC8& aCustomMessage );
+
+        /**
+         * Deletes used container. 
+         * 
+         * This should be called from the sub-class.
+         *
+         * See more details from CAknView.
+         *
+         * @since S60 v5.0
+         */
+        IMPORT_C virtual void DoDeactivate();
+
+        /**
+         * Calls CCApplication's HandleCommandL() which takes care of
+         * following events: EEikCmdExit, EAknSoftkeyBack, EAknSoftkeyExit
+         * and EAknCmdHelp (will call container classes GetHelpContext-callback). 
+         * 
+         * This should be called from the sub-class.
+         *
+         * See more details from CAknView.
+         *
+         * @since S60 v5.0
+         */
+        IMPORT_C virtual void HandleCommandL( TInt aCommand );
+        
+    protected: // New
+
+        /**
+        * Creates container,
+        *
+        * @since S60 v5.0
+        */    
+        void CreateContainerL();
+
+        /**
+        * This is meant for sub-class to create a container. Called during DoActivateL.
+        *
+        * @since S60 v5.0
+        */
+        virtual void NewContainerL() = 0;
+
+        /**
+        * Deletes container if exists.
+        *
+        * @since S60 v5.0
+        */
+        void DeleteContainerIfExists();   
+
+	public:
+	    /**
+         * Sets the title of the View Plugin
+         * @param aTitle - the title to be set for the Plugin View
+         * 
+         * @since S60 v5.0
+         * 
+         */
+	    IMPORT_C void SetTitleL( const TDesC& aTitle );
+    protected: // Data
+
+        /**
+        * Container.
+        * Owned.
+        */
+        CCCAppViewPluginAknContainer* iContainer;
+        /**
+        * Resourceloader.
+        * Owned.
+        */
+        RConeResourceLoader iResourceLoader;        
+    };
+
+#endif // CCAPPVIEWPLUGINAKNVIEW_H
+//End of file