diff -r 000000000000 -r ff3b6d0fd310 phoneclientserver/CallUI/Inc/CaUiEngine/CaUiEngine.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneclientserver/CallUI/Inc/CaUiEngine/CaUiEngine.h Tue Feb 02 01:11:09 2010 +0200 @@ -0,0 +1,511 @@ +/* +* Copyright (c) 2004-2005 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: Provides engine implementation for CallUI. +* +*/ + + +#ifndef CAUIENGINE_H +#define CAUIENGINE_H + +// INCLUDES +#include +#include // RConeResourceLoader. +#include // MPhCltExtPhoneObserver. +#include "CaUiEng.h" +#include "CaUiDialResultObserver.h" +#include "CaUiQueryObserver.h" +#include +#include +#include // MPhCntSelectionObserver +#include // CPhCltEmergencyCall +#include +#include +#include +#include + +// FORWARD DECLARATIONS +class CPhCltExtPhoneBase; +class CAknGlobalListQuery; +class CAknGlobalConfirmationQuery; +class CAknGlobalNote; +class CCaUiReConQueryInformation; +class CAiwInternalDialData; +class CPhCltExtPhoneDialData; +class CPhCntSingleItemFetch; +class CPhCntFactory; +class CCaUiVoIPExtension; +class MPhCntStoreLoader; +class MVPbkContactStore; + +class CCaUiDialogs; + +// CONSTANTS + +// Owned and used resource file. +_LIT( KCallUIResFile, "z:\\resource\\CallUI.rsc" ); + + + /** + * Indicates state of long press key + * Default value: 0 + * Default value for iMode variant: 1 + */ +enum TCaUiLongPressKey + { + ECaUiLongPressKeyNotSet = 0, // Long press key is not set + ECaUiLongPressKeyNotInUse = 1, // Long press key is not in use + ECaUiLongPressKeyInUse = 2, // Long press key is in use + }; + +// CLASS DECLARATION + +/** +* CaUIEngine implementation. +* +* @lib CaUiEngine.lib +* @since 2.6 +*/ +NONSHARABLE_CLASS( CCaUiEngine ) +: public CCaUiEngApi, + public MPhCltExtPhoneObserver, + public MCaUiReconnectQueryObserver, + public MPhCntSelectionObserver, + public MPhCltEmergencyCallObserver, + public MPhCntStoreLoaderObserver + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @return an instance of CallUI. + */ + static CCaUiEngine* NewL(); + + /** + * Destructor. + */ + virtual ~CCaUiEngine(); + + + public: // New functions + + /** + * Make the dial operation. + * + * @see CCaUiEngApi::DialL(). + */ + void DialL( + MCaUiDialResultObserver& aObserver, + const TDesC8& aDialData, + const TCaUiCallType aCallType ); + + /** + * Launch the qtn.tel.no.video.network information note. + * + * @see CCaUiEngApi::LaunchNoNetSupNoteL(). + */ + void LaunchNoNetSupNoteL(); + + + /** + * Launch reconnect confirmation query. + * + * @see CCaUiEngApi::LaunchReconConfQueryL(). + */ + void LaunchReconConfQueryL( + MCaUiReconnectQueryObserver& aObserver, + CPhCntMatcher* aPhCntMatcher, + const TPtrC aPhoneNumber, + const TBool aIncludeVideoCallOption ); + + /** + * Cancel reconnect query. + * + * @see CCaUiEngApi::CancelReconConfQuery(). + */ + void CancelReconConfQuery(); + + + /** + * Launch note and reconnect confirmation query. + * + * @see CCaUiEngApi::LaunchNoteAndReconConfQueryL(). + */ + void LaunchNoteAndReconConfQueryL( + MCaUiReconnectQueryObserver& aObserver, + CPhCntMatcher* aPhCntMatcher, + const TPtrC aPhoneNumber, + const TBool aIncludeVideoCallOption, + const TPtrC aNoteText ); + + /** + * Cancel note and reconnect query. + * + * @see CCaUiEngApi::CancelNoteAndReconConfQuery(). + */ + void CancelNoteAndReconConfQuery(); + + /** + * Launch address selection. + * @since 3.0 + * + * @see CCaUiEngApi::LaunchAddressSelectL(). + */ + TBool LaunchAddressSelectL( + TDes& aTelNum, + const TInt aContactId, + const TBool aVoIPAddressSelect ); + + /** + * Cancel address select launched with LaunchAddressSelectL. + * @since 3.0 + * + * @see CCaUiEngApi::CancelAddressSelect(). + */ + void CancelAddressSelect(); + + public: // from MPhCntStoreLoaderObserver + + /** + * From MPhCntStoreLoaderObserver; + * @since S60 v9.1 + * @see MPhCntStoreLoaderObserver. + */ + void ContactStoreLoadingCompleted( + MVPbkContactStore* aStore, TInt aErrorCode ); + + private: // Functions from base classes + + /** + * Handle dial request completion. + * + * @see MPhCltExtPhoneObserver::HandleDialL(). + */ + void HandleDialL( const TInt aStatus ); + + /** + * Called when CCaUiReconnectQuery has got a key press. + * + * @see MCaUiReconnectQueryObserver::OptionSelectedL(). + */ + void OptionSelected( MCaUiReconnectQueryObserver::TCaUiReconType aReconType ); + + + private: + + /** + * C++ default constructor. + */ + CCaUiEngine(); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + /** + * Convert the AIW dialdata to PhoneClient format. + * + * @param aAiwDialData AIW DialData format. + */ + void ConvertDialDataL( + const CAiwInternalDialData& aAiwDialData ); + + + /** + * Clear the Dial related contents if they exist. + */ + void ClearDialContents(); + + + + public: + + /** + * Check is there VoIP profiles in phone. + * + * @since 3.0 + * @return ETrue if found, EFalse otherwise. + */ + TBool IsVoIPProfiles(); + + /** + * @see CCaUiEngApi::GetVoIPServiceIdsL + */ + void GetVoIPServiceIdsL( RIdArray& aVoipServiceIds ) const; + + /** + * @see CCaUiEngApi::GetVoipServiceNameL + */ + void GetVoipServiceNameL( TServiceId aServiceId, TDes& aServiceName ) const; + + private: + + /** + * Launch address selection. If contact contains default number or + * only one number, number will be returned directly. + * Otherwise address selection list displayed. + * @since 3.0 + * + * @param aTelNum Contains selected number after execution. + * @param aContactId The contact id from PhoneBook. + * @param aCallType If calltype is ECaUiCallTypeInternet VoIP address + * select is used. + * @param aRemoveInvalidChars Removes invalid chars from selected number + * if set ETrue. + * @param aFocusedField Focused field from PhoneBook + * @return TBool, ETrue if number selected, EFalse otherwice + * (E.g. list canceled) + */ + void LaunchAddressSelectL( + const TDesC8& aContactLink, + const TCaUiCallType aCallType + ); + + + /** + * Looks for tel URI parameters from a specified phone number. + * @param aNumber The phone number that might contain URI parameters + * @return HBufC containing URI parameters, if parameters couldn't + * be found the HBufC with zero length is returned + * NOTE: The parameters will be ripped off from the given phone + * number (aNumber) if found. + */ + HBufC* FindAndRipURIParametersL( TDes& aNumber ) const; + + /** + * Looks call-type parameter from, URI params and converts the + * possible found hint as a return value. + * @param aUriParams The descriptor containing URI part of the tel URI. + * Parameters can be extracted from URI by using + * FindAndRipURIParametersL method. + * @return The hinted call type defined in URI parameters. + * If call-type parameter couldn't be found the EPhCltVoice is returned. + */ + TPhCltCallType CallTypeFromUriParams( const TDesC& aUriParams ) const; + + /** + * Utility method to search value of named parameter from tel URI. + * @param aName The name of parameter what is searched + * @param aUri The URI from from which parameter is searched + * @return The descriptor containing the valud of named parameter. + * If named parameter couldn't be found, KNullDesC is returned + */ + TPtrC ParamValue( const TDesC& aName, const TDesC& aUri ) const; + + /** + * Utility method to loop through all parameters in Tel URI. + * @param aUri Tel URI from which the parameters are searched. + * @param aStartIndex Offset from which searching is started. + * NOTE: method modifies aStartIndex parameter, always when + * it returns. So + * @return The descriptor containing the next parameter name=value pair. + */ + TPtrC FindNextParamValuePair( const TDesC& aUri, + TInt& aStartIndex ) const; + + /** + * Handle first long press of send key + * @since 3.2 + * Leaves if cenrep data can't be read. + * @return User decision about the VT setting + */ + TBool HandleFirstLongPressOfSendKeyL(); + + /** + * General handling of long press of send key + * @since 3.2 + * Leaves if cenrep data can't be read. + */ + void HandleLongPressOfSendKeyL(); + + /** + * from MPhCntSelectionObserver class + * @since 3.2 + * Leaves if aContactData data can't be read. + */ + void SelectionDone( CPhCntSelectedData* aContactData, TInt aErrorCode ); + + /** + * Makes phoneclient dial request + * @since 3.2 + * @param fieldLink link to phonenumber in contacts. If NULL call is + * not created from Phonebook. + */ + void PhoneClientDialL( const TDesC8* fieldLink ); + + /** + * Sets call type to phoneclient dial data struct. + * @since 3.2 + * @param aCallType Call type to set in dialdata struct. + */ + void SetDialDataCallType( const TCaUiCallType aCallType ); + + /** + * Checks if number is emergency number using + * Emergency call API + * @since 3.2 + * returns ETrue if number is emergency number. Default EFalse. + */ + TBool IsEmergencyNumber(); + + /** + * Handling of emergency dial result. + * @since 3.2 + * @see MPhCltEmergencyCallObserver::HandleEmergencyDialL(). + */ + void HandleEmergencyDialL( const TInt aStatus ); + + /** + * Checks if Video Call can be made + * @since 3.2 + * Leaves if cenrep data can't be read. + * returns ETrue if call can be made. + */ + TBool IsVideoCallAllowedL(); + + /** + * Gets Central repository value + * @since 3.2 + * @param aUid Central repository uid. + * @param aId, Central repository key Id. + * @param aValue Cen Rep key value. + * Leaves if cenrep data can't be read. + */ + void GetCenRepValueL( const TUid& aUid, + const TUint aId, + TInt& aValue ) const; + + /** + * Converts given TCaUiCallType to CPhCntContactDataSelection::TCallType + * @since 3.2 + * @param aCallType CallType to convert + * @param aResultCallType converted type + * + */ + void ConvertCaUiCallType( const TCaUiCallType aCallType, + CPhCntContactDataSelection::TCallType& aResultCallType ); + + /** + * Converts CPhCltExtPhoneDialData callType + * to CPhCntContactDataSelection::TCallType + * @since 3.2 + * @param aResultCallType converted type + * + */ + void ConvertDialDataCallType( + CPhCntContactDataSelection::TCallType& aResultCallType ); + + /** + * Converts TPhCltCallType callType to TCaUiCallType. + * @since S60 v9.1 + * @param aCallType Source type + * @param aResultCallType Converted type + */ + void ConvertPhCltCallType( const TPhCltCallType aCallType, + TCaUiCallType& aResultCallType ) const; + + /** + * Returns Service Selectors calltype by dial data calltype. + * @since 5.0 + * @param Selector calltype. + */ + CConvergedServiceSelector::TSsCallType ServiceSelectorCallType() const; + + /** + * Converts CCConvergedServiceSelector results + * to CPhCltExtPhoneDialData (calltype and service id) + * @since 5.0 + * @param aResults Service selectors results. + */ + void SetSelectorResults( + CConvergedServiceSelector::TSsResult& aResults ); + + /** + * Starts to load specified contact store if not yet loaded. + * If loading is needed, MPhCntStoreLoaderObserver::ContactStoreLoaded + * is called when store is ready for use. + * + * @since S60 v9.1 + * @param aContactLink Contact link specifying store to load. + * @return ETrue if store is already loaded. + */ + TBool LaunchContactStoreLoadingL( const TDesC8& aContactLink ); + + /** + * Resolves with a help of call type values whether call is initiated + * with a send command or through the explicit menu option. + * + * @since S60 v9.1 + * @param aCallType Call UI call type. + * @param aAiwCallType AIW call type. + * @return ETrue if send key pressed, EFalse otherwise. + */ + TBool IsSendKeyPressed( TCaUiCallType aCallType, + CAiwDialData::TCallType aAiwCallType ) const; + + private: // Data + + // Owned resource loader. + RConeResourceLoader iResourceLoader; + + // Buffer for returned localized texts. + HBufC* iBuf; + + // PhoneClient for call creation. + CPhCltExtPhoneBase* iPhCltDialer; + + // Handler class for PhoneClient Dial data. + CPhCltExtPhoneDialData* iDialData; + // Emergency call API + CPhCltEmergencyCall* iEmergencyCall; + + // The observer to handle CallUI dial results. + MCaUiDialResultObserver* iObserver; + + // VoIP extension. + CCaUiVoIPExtension* iVoIPProfileHandler; + + // Long press of Send key setting state, NOT SET/ON/OFF + TInt iLongPressSet; + + // The qtn.tel.xxx note shown to the user. + CAknGlobalConfirmationQuery* iVTSettingQuery; + + // Long key press note buffer + HBufC* iVTString; + // Contact factory for PhoneCntFinder connection + CPhCntFactory* iFactory; + + // Contact selector for fetching contact information from phonebook + CPhCntContactDataSelection* iContactSelector; + + // Service selector for calling service (service id and type) + CConvergedServiceSelector* iServiceSelector; + + /** + * Contact store loader. + * Own. + */ + MPhCntStoreLoader* iContactStoreLoader; + + // Dialogs class. Own + CCaUiDialogs* iDialogs; + + }; + +#endif // CAUIENGINE_H + +// End of file