diff -r 000000000000 -r 5e5d6b214f4f uiservicetab/vimpstui/inc/cvimpstuitabbedview.h --- /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 // CBase +#include + +#include +#include // Toolbar + +#include +#include +#include +// CBase +#include +#include +#include "tvimpstenums.h" + +//command observer +#include "mvimpstcmdobserver.h" +//auth event observer. +#include "mvimpstenginesearchextentioneventobserver.h" + +#include +// 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 aSerachData) ; + + /** + * @see MVIMPSTEngineSearchExtentionEventObserver + */ + void HandleSearchFinishedL(TInt aError); + + + /** + * @see MVIMPSTEngineSearchExtentionEventObserver + */ + void HandleSearchKeysEventL( RArray& aEnumKeysArray, RPointerArray& 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 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