uiservicetab/vimpstui/inc/cvimpstuitabbedview.h
changeset 0 5e5d6b214f4f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiservicetab/vimpstui/inc/cvimpstuitabbedview.h	Tue Feb 02 10:12:18 2010 +0200
@@ -0,0 +1,709 @@
+/*
+* 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:  Tabbed view declaration
+*
+*/
+
+
+#ifndef __CVIMPSTUITABBEDVIEW_H__
+#define __CVIMPSTUITABBEDVIEW_H__
+
+//  INCLUDES
+#include <e32base.h>            // CBase
+#include <badesca.h> 
+
+#include <AknIconArray.h>
+#include <akntoolbarobserver.h> // Toolbar
+
+#include <downloadedcontenthandler.h>
+#include <AknServerApp.h>
+#include <apparc.h>
+// CBase
+#include <CxSPBaseView.h>
+#include <mpbk2uiextensionview2.h>
+#include "tvimpstenums.h"
+
+//command observer
+#include "mvimpstcmdobserver.h"
+//auth event observer.
+#include "mvimpstenginesearchextentioneventobserver.h"
+
+#include <AiwCommon.h>
+//  FORWARD DECLARATIONS
+class CEikMenuPane;
+class MVIMPSTUiTabbedViewControl;
+class CPbk2UIExtensionView;
+class MVIMPSTCmdHandler;
+class CVIMPSTUIExtensionService;
+class MVIMPSTEngine;
+class MCCAParameter;
+class MCCAConnection;
+class MVIMPSTCmd;
+class CVIMPSTUiBrandData;
+class CVIMPSTUtilsWaitNote;
+class CAiwServiceHandler;
+class CAknToolbar; 
+class MVPbkStoreContact;
+class CBrowserLauncher;
+class MVPbkStoreContact;
+class MVIMPSTSettingsStore;
+class CCVIMPSTUiStatusPaneHandler;
+class CVIMPSTUIMenuExtension;
+class CVIMPSTUiContactSelection;
+class TAiwSingleEntrySelectionDataV2;
+class TAiwMultipleEntrySelectionDataV2;
+
+class CCoeAppUi;
+// CLASS DECLARATION
+/**
+ * Tabbed view implementation 
+ *  @lib vimpstui.lib
+ *  @since S60 v5.0 
+ */
+ // codescanner warnings can be ignored as  CxSPBaseView derived from CBsse
+ 
+class CVIMPSTUiTabbedView : public CxSPBaseView, // CSI: 51 #
+							public MVIMPSTCmdObserver,
+							public MAknToolbarObserver, // Toolbar    
+						    public MVIMPSTEngineSearchExtentionEventObserver,
+						    public MDownloadedContentHandler,
+						    public MAknServerAppExitObserver,
+						    public MAiwNotifyCallback,
+						    public MPbk2UIExtensionView2
+
+							
+							  
+							  
+    {
+    public: // Constructor
+        
+        enum TXmppMenuValues
+                {
+                EXmppMenuValuesUseExisting = 0,
+                EXmppMenuValuesCreateNew = 1
+                };        
+        
+        enum TMenuSelection
+            {
+            EInvitAcceptCreateNew = 0,
+            EInvitAcceptUpdateExisting = 1,
+            EContactCreateNew,
+            EContactAddFromContacts,
+            ECreateXSPCall
+            };   
+
+        /**
+         * Creates a new CVIMPSTUiTabbedView.
+         *
+         * @param aMapper Reference to view mapper object
+         * @param aContactManager Reference to contact manager object
+         * @param aTabbedViewId, view i.
+         * @param aServiceId, service id.
+         * @param aView, reference to the view.
+         * @param aId, uid
+         * @param aServiceData, service info.
+         * @param aEngine, reference to engine.
+         * @param aCommandHandler, reference to commandhandler.
+         * @return New instance of this class         
+         */
+        static CVIMPSTUiTabbedView* NewL( MxSPViewMapper& aMapper, 
+			    MxSPContactManager& aContactManager, 
+			    TUint aTabbedViewId,
+			    TUint aServiceId,
+			    CPbk2UIExtensionView& aView,
+			    TUid aId,
+			    CVIMPSTUIExtensionService& aServiceData,
+			    MVIMPSTEngine& aEngine,
+			    MVIMPSTCmdHandler& aCommandHandler,
+			    CVIMPSTUIMenuExtension& aMenuExtension);
+  
+   public: // From MDownloadedContentHandler
+
+            /**
+            * Handle downloaded content that has been saved to a file, 
+            * and return ETrue if it was handled successfully.
+            * @param aFileName File name with path.
+            * @param aParamList Generic parameter list.
+            * @param aContinue Output parameter: It must be ETrue if the caller wants 
+            *                  Browser not to terminate after the content is handled.
+            * @return ETrue if the implementer has processed the content. If it is 
+            *                  EFalse, BrowserLauncher opens that content in an 
+            *                  appropriate viewer application.
+            */
+            TBool HandleContentL( const TDesC& aFileName,
+                                                    const CAiwGenericParamList& aParamList,
+                                                    TBool& aContinue );
+
+            /**
+            * Reserved for future use.
+            */
+            TAny* DownloadedContentHandlerReserved1( TAny* aAnyParam );
+   public: // from MApaServerAppExitObserver
+       /**
+       * Handle the exit of a connected server app.
+       * This implementation provides Series 60 default behavior
+       * for handling of the EAknCmdExit exit code. Derived classes
+       * should base-call this implementation if they override this
+       * function.
+       * @param aReason The reason that the server application exited.
+       * This will either be an error code, or the command id that caused
+       * the server app to exit.
+       */
+       void HandleServerAppExit(TInt aReason);
+       
+     
+    public: // From MPbk2UIExtensionView through CxSPBaseView
+        
+        /**
+         * @see MPbk2UIExtensionView
+         */
+        TBool HandleCommandKeyL(
+                const TKeyEvent& aKeyEvent,
+                TEventCode aType );
+        
+        /**
+         * @see MPbk2UIExtensionView
+         */
+		void DoDeactivate();  
+		
+		/**
+         * @see MPbk2UIExtensionView
+         */
+        void HandleCommandL( TInt aCommand );
+        
+        /**
+         * @see MPbk2UIExtensionView
+         */
+        void DynInitMenuPaneL( TInt aResourceId,
+                               CEikMenuPane* aMenuPane );
+        
+        /**
+         * @see MPbk2UIExtensionView
+         */
+        void HandleStatusPaneSizeChange();
+        
+        /**
+         * @see MPbk2UIExtensionView
+         */
+        TAny* UIExtensionViewExtension( TUid aExtensionUid );
+        
+        /**
+         * @see MPbk2UIExtensionView2
+         */
+         void HandleForegroundEventL(TBool aForeground);
+        
+        
+    public: // new functions
+        
+         /**
+         * Changes current status message
+         * @param aStatus Status which message is needed.
+         * @param aUpdateToNetwork ETrue update, EFalse do not update.
+         * @return KErrCancel if canceled.
+         */
+        TInt AskStatusMessageL( TVIMPSTEnums::TOnlineStatus aStatus, 
+                TBool aUpdateToNetwork );
+        
+        /**
+         * Get status old status messages from file.
+         * @param aArray. Array of messages. Don't clear before filling.
+         * @param aStatus Status which message is needed.
+         */
+        void ReadStatusMessagesL( CDesCArray& aArray, TVIMPSTEnums::TOnlineStatus aStatus  );
+
+        /**
+         * Write status messages to file.
+         * @param aArray. Array of messages to write. Newest in top. Do not write duplicates.
+         * @param aStatus Status which message is needed.               
+         */
+        void WriteStatusMessagesL( MDesCArray& aArray, TVIMPSTEnums::TOnlineStatus aStatus );
+        
+        /** 
+         * Loads status icons for own status.
+         * @returns iconarray,ownership is transfered.
+         **/
+        CAknIconArray* LoadOwnStatusIconsL();
+        
+        /** 
+         * Changes ownstatus
+         **/
+        void ChangeStatusProcessL();
+
+        /** 
+         * Adds a contact.
+         * @param aUserId id of contact to be added.
+         * @param aResourceId   resource for query.
+         **/
+    	void AddContactL( const TInt aResouceId, const TDesC& aUserId = KNullDesC );
+    	
+     	 /** 
+	     * Deletes a contact.
+	     **/	
+    	void DeleteContactL();
+    	
+    	/** 
+         * @retunrs currentitemindex.
+         **/
+        TInt CurrentItemIndex();
+        
+       	/** 
+         * @retunrs current state.
+         **/
+        TVIMPSTEnums::TVIMPSTRegistrationState GetServiceState();
+        
+        
+        
+        /** 
+         * Makes a internet call form send key and toolbar butotn
+         * if applicable.
+         **/
+        void MakeVoipCallL();
+        
+        
+        /**
+         * close conversation from service tab. 
+         **/
+         void CloseConversationL();
+
+          /*
+         *handles the completion of create new/update existing selection dialog
+         */
+         void HandleContactSelectionCompleteL();
+         
+
+         
+              
+    public: //Toolbar
+    	/**
+         * From MAknToolbarObserver
+         */
+        void DynInitToolbarL( TInt aResourceId, CAknToolbar* aToolbar );
+        
+        /**
+         * From MAknToolbarObserver
+         */
+        void OfferToolbarEventL( TInt aCommand );
+        
+        /**
+        * Create Fixed Toolbar
+        * Since 5.0
+        */
+        void CreateToolBarL();
+        
+        /**
+        * Handle Fixed Toolbar command updating
+        * Since 5.0
+        */
+        void UpdateToolbarL();
+               
+       
+           
+        /**
+         * Show or hide the toolbar
+         * Since 5.0
+         * @aShow if ETrue, show toolbar, otherwise, Don't show the toolbar.
+         */
+        void ShowHideFixedToolbarL(TBool aShow);
+        
+        /**
+         * Function to launch help
+         */
+        void LaunchHelpL( const TDesC& aContext);
+
+       	/** 
+         * returns the MVIMPSTSettingsStore pointer.
+         * Its created at the ConstructL of the view, so it stays till view is destructed
+         * 
+         * @return  MVIMPSTSettingsStore pointer : no ownership is transferred
+         **/
+        MVIMPSTSettingsStore* SettingsStore();
+        
+        /**
+         * returns whether the cancel login is supported or not
+         *
+         * @return TBool,  ETrue if cancel login is supported else EFasle
+         */
+        TBool CancelLoginSupportedL();
+
+       
+	private: // Functions from MVIMPSTEngineSearchExtentionEventObserver
+
+	   /**
+        * @see MVIMPSTEngineSearchExtentionEventObserver
+        */
+		void HandleSearchResultL(RArray<TVIMPSTSearchData> aSerachData) ;
+		
+	   /**
+        * @see MVIMPSTEngineSearchExtentionEventObserver
+        */
+		void HandleSearchFinishedL(TInt aError);
+		
+		
+		/**
+        * @see MVIMPSTEngineSearchExtentionEventObserver
+        */
+		void HandleSearchKeysEventL( RArray<TInt>& aEnumKeysArray, RPointerArray<HBufC>& aLebelKeysArray )  ;
+		
+
+   	private: // From CxSPBaseView
+   	    
+   	    /** 
+         * @see CxSPBaseView
+         **/ 
+   		void DoActivateViewL( const TVwsViewId& aPrevViewId,
+                          TUid aCustomMessageId,
+                          const TDesC8& aCustomMessage );
+        
+                
+
+    private : //From MImCommandObserver
+    	
+        /** 
+         * @see MImCommandObserver
+         **/
+    	void CommandFinishedL(
+                const MVIMPSTCmd& aCommand );
+        
+    	/** 
+         * @see MImCommandObserver
+         **/
+    	void HandleCommandEventL(TVIMPSTEnums::TVIMPSTRegistrationState aState, TInt aServiceError) ;   
+    	
+        
+        /**
+         * BlockContactL
+         * @param Block if ETrue then call block else call unblock
+         */
+        void  BlockContactL(TBool aBlock = EFalse );
+        
+        /**
+        * Show error note 
+        * @param aError, error type
+        */
+        void ShowErrorNoteL(TInt aError );	
+
+    private: // Implementation
+        /**
+         * Standard C++ constructor
+         * @param aMapper Reference to view mapper object
+         * @param aContactManager Reference to contact manager object
+         * @param aTabbedViewId, view i.
+         * @param aServiceId, service id.
+         * @param aView, reference to the view.
+         * @param aId, uid
+         * @param aServiceData, service info.
+         * @param aEngine, reference to engine.
+         * @param aCommandHandler, reference to commandhandler.
+         */
+        CVIMPSTUiTabbedView( MxSPViewMapper& aMapper, 
+			    MxSPContactManager& aContactManager, 
+			    TUint aTabbedViewId,
+			    TUint aServiceId,
+			    CPbk2UIExtensionView& aView,
+			    TUid aId,
+			    CVIMPSTUIExtensionService& aServiceData,
+			    MVIMPSTEngine& aEngine,
+			    MVIMPSTCmdHandler& aCommandHandler,
+			    CVIMPSTUIMenuExtension& aMenuExtension);
+
+        /**
+         * Performs the 2nd phase of construction.
+         */
+        void ConstructL();
+
+        /**
+         * Standard C++ destructor.
+         */
+        ~CVIMPSTUiTabbedView();
+        
+        
+        /**
+         * Gets the reference to commandhandler.
+         * @returns MVIMPSTCmdHandler&, reference to CommandHandlerL.
+         */
+        MVIMPSTCmdHandler& CommandHandlerL();  
+        
+        /**
+	    * change own status message
+	     */ 
+        void ChangeOwnStatusMessageL(); 
+        
+		/**
+		* change own avatar 
+		* @param aFileName - a file name
+		* @param aMimeType - a mime type
+		*/ 
+        void ChangeOwnAvatarL(const TDesC& aFileName, const TDesC8& aMimeType );
+        
+        /**
+	     * search a given string
+	     */ 
+        void SearchContactsL() ;
+          
+        /**
+	     * Used to launch search view
+	     * @param aViewId - id of view to be launched
+	     */ 
+        void LaunchViewL( TInt aViewId ) ;    
+   	           
+        /**
+         * processes friend request,when user opens friend request item
+         */
+        void ProcessFriendRequestL();
+        /**
+         * do login realted operations, tou, url 
+         */
+        void LoginL();
+        /**
+         * shows URL to register for the First time users.
+         */
+        void ShowURLQueryL();
+        
+        /**
+         * opens broswer
+         * @param TDesC& aUrl - url to be opened
+         */
+        void OpenWebBrowserL( const TDesC& aUrl );
+        
+        /**
+         * shows poplist with Create New account, login with the existing userid.
+         *
+         * @since S60 5.0
+         * @param aMenuChoise, will return the selected poplist item
+         */
+        void ShowUseExistingOrCreateNewMenuL( TInt& aMenuChoise );
+        
+        /**
+                * shows poplist with Create New account, login with the existing userid.
+                *
+                * @since S60 5.0
+                * @return, will return the selected poplist item
+                */
+        TInt ShowNewUpdateQueryL();
+        
+        /**
+         * shows user name and password query dialog
+         *
+         * @since S60 5.0
+         * @param aUserName, user name
+         * @param aPassword, password
+         */
+         void ShowLoginDialogL( TDes& aUserName, TDes& aPassword );
+
+        /** 
+         * Adds a phonebook contact.
+         **/
+        void LaunchPhoneBookAddContactL();
+        
+        /** 
+         * launches selection dialog.
+         **/
+        void LaunchPbkSelectionDlgL();
+        
+        /** 
+         * Adds all selected contact in aContacts.
+         **/
+        void AddContactL(RPointerArray<HBufC> aContacts);
+        
+        
+        /** 
+         * copies selected contact to  phone book.
+         **/
+        void CopyToPhoneBookL(); 
+
+         /**
+          * shows terms of use and logs in  if userid and password is provided.
+          *
+          * @since S60 5.0
+          * @return TInt, error if any.
+          */
+         TInt ShowTermsofuseL();
+         
+                 
+         
+         /**
+          * returns whether the Change Connection is supported or not
+          *
+          * @return TBool,  ETrue if Change Connection is supported else EFasle
+          */
+         TBool ChangeConnectionSupportedL();
+         
+         /*
+         *Shows the list of blocked contacts.
+         */
+         void ShowBlockedContactListL();
+         
+         /*
+          *Launches the setting view
+         */
+         void LaunchSettingsViewL();
+         
+          /*
+          *helper method for add or link to contacts
+         */
+         void CreateOrLinkToPhoneBookL(TInt aCommand );
+         
+          /*
+          *Launches the setting view
+         */
+         void EditContactL();
+         /*
+          *return true if URL query to be shown at login time,
+          * other wise false.
+          */
+         TBool IsURLQueryToBeShownL();
+         
+         
+          /*
+        * helper method for executing the call
+        */
+        void ExecuteAiwCallL( const TDesC& aSelectedAddress );
+        
+         /*
+        * helper method for checking and setting if user id is changed 
+        */
+        void ReadAndSetOwnUserIdL();
+        /*
+        * launch the phonebook dialog for add from contacts depending on 
+        * whether it is localstore or not 
+        */
+       void LaunchFetchDialogL();
+       
+				/*
+				* Launch single contact selection dialog in case of local contacts for 
+				* add from phonebook
+				*/       
+        void ExecuteSingleItemFetchL( TAiwSingleEntrySelectionDataV2 aData );
+        
+       /*
+				* Launch multiple contact selection dialog in case of server contacts for 
+				* add from phonebook
+				*/ 
+        void ExecuteMultipleItemFetchL( TAiwMultipleEntrySelectionDataV2 aData );
+        
+        /*
+        * Check and Create the servicehandler if it is NULL
+        */      
+         void ReInitializeServiceHandlerL();
+         
+    public://from MAiwNotifyCallback.
+        TInt HandleNotifyL(
+                    TInt aCmdId,
+                    TInt aEventId,
+                    CAiwGenericParamList& aEventParamList,
+                    const CAiwGenericParamList& aInParamList);
+         
+    private:
+        enum TAssignmentState
+            {
+            EInvalid = 0,
+            EXSPAssign,
+            EDefaultAssign
+            };
+
+	private: // Data   
+                     
+        // Stores view id
+        TUint iViewId;  
+        
+        //service id
+        TInt iServiceId;     
+        
+        //Doesnt own - reference to engine for this service
+        MVIMPSTEngine& iEngine;
+        
+        //doesnt own
+		CVIMPSTUiBrandData* iBrandHandler;
+       
+        // Own: This view's control container
+        MVIMPSTUiTabbedViewControl* iContainer;             
+
+        // previous state.
+        TVIMPSTEnums::TVIMPSTRegistrationState iPreviousState;
+                        
+        //CCA Param - Owns
+        MCCAParameter* iParameter;
+       
+		// Own: to connect CCA 
+        //it is member variable because it is needed during the HideInBackground event
+		MCCAConnection* iConnection;
+		 
+        //Owns. status message.
+        HBufC* iStatusMessage;
+        
+		//owns. object of aiwservicehandler.
+		CAiwServiceHandler *iServiceHandler;
+		
+       	// not owned, reference to extension service
+       	CVIMPSTUIExtensionService& iExtensionService;
+       	
+       	//Owns command Handler for this view
+        MVIMPSTCmdHandler& iCommandHandler;    
+        
+        //doew not own, reference to menu extension
+        CVIMPSTUIMenuExtension& iMenuExtension;
+              
+       	// owned, wait note.
+        CVIMPSTUtilsWaitNote* iWaitNote;
+        
+        //owned. Pointer to toolbar object.
+        CAknToolbar*       	 		iFixedToolbar;
+            
+        
+        //owns. object of MVPbkStoreContact
+        MVPbkStoreContact* iContact;
+        //Owns: Stores the focused contact ID from iContainer before it gets destroyed
+        HBufC* iFocussedIDHistory;
+        //handle to customize status pane
+        CCVIMPSTUiStatusPaneHandler* iStatusPaneHandler;
+
+        //Owns Browser launcher
+        CBrowserLauncher* iBrLauncher;
+        
+        //Owns, username
+        HBufC* iUserId;
+     
+		// owns, retrive settings from cenrep store
+        MVIMPSTSettingsStore* iSettingsStore;
+        //in param list for aiw generic options, owns
+        CAiwGenericParamList* iAiwParamList;
+        // selected data
+        TVPbkSelectedData iSelectedData;
+        // Friend request accept,method index
+        TInt iSelectedAction;
+       // Owns : selected friendrequest id 
+        HBufC* iFriendRequestId;
+        // owns : contact selection 
+        CVIMPSTUiContactSelection* iContactSelection;
+        //to know whether to hide the add contact button on the toolbar
+        TBool iAddContact;
+        // owns : selected result from aiw call query
+        HBufC* iQueryResult;
+        
+        //iIsToolBarHidden, if ETrue: tool bar is already hidded 
+        // no need to call again hidetoolbar.
+        TBool iIsToolBarHidden;
+        // NOT OWNS
+        CCoeAppUi* iAppUi;
+        
+        //Keep track, if iServiceHandler has been reset or not.
+        TBool iIsServiceHandleReSet;
+        
+        TBool iContainerCreationStarted;
+        
+    };
+
+#endif // __CVIMPSTUITABBEDVIEW_H__
+
+// End of File