diff -r 000000000000 -r ed9695c8bcbe vtengines/videoteleng/Inc/Base/CVtEngSettings.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vtengines/videoteleng/Inc/Base/CVtEngSettings.h Mon Nov 23 14:47:47 2009 +0200 @@ -0,0 +1,484 @@ +/* +* Copyright (c) 2004-2006 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: Video call setting data. +* +*/ + + + +#ifndef CVTENGSETTINGS_H +#define CVTENGSETTINGS_H + +// INCLUDES +#include +#include +#include "MVtEngCRSettingObserver.h" +#include "CVtEngCRObserverItem.h" +#include "CVtEngCRProxy.h" +#include "MVtEngAudio.h" +#include "MVtEngMedia.h" +#include "MVtEngSessionInfo.h" + +// CONSTANTS +// Default routing. +const MVtEngAudio::TVtEngRoutingSetting + KVtEngDefaultAudioRouting = MVtEngAudio::EActivateHandsfree; + +// FORWARD DECLARATIONS +class MVtEngSettingObserver; + +// CLASS DECLARATION + +/** +* Container for video call settings. +* +* @lib videoteleng.lib +* @since Series 60 2.6 +*/ +NONSHARABLE_CLASS( CVtEngSettings ) : public CBase +, public MVtEngCRSettingObserver + { + public: + + /** + * Settings ids + */ + enum TSettingId + { + EStillImage, + EStillImagePath, + ECallTimer, + EHandsetVolume, + EHandsfreeVolume, + EBTAudioAccessory, + EIhfMode, + ESelectVolume, // select Handset / Handsfree volume + EDataportInfo + }; + + /** + * Audio configuration + */ + struct TVtEngAudioConfig + { + // Current volume in use, EFalse: handset, + // ETrue: loudspeaker. + TBool iCurrentVolume; + // Speaker volume + MVtEngAudio::TVtEngOutputVolume iVolume; + // Audio routing + MVtEngAudio::TVtEngRoutingSetting iRouting; + }; + + /** + * Video configuration + */ + struct TVtEngVideoConfig + { + // Still image file name + TFileName iStillImageFile; + // Determines if still image is valid. + TBool iImageIsValid; + // Determines if video is enabled. + TBool iVideoEnabled; + }; + + /** + * Video quality framerates + */ + struct TVtEngVideoQualityFrameRateConfig + { + // Frame rate for videoquality settings detail + TInt iDetail; + + // Frame rate for videoquality settings normal + TInt iNormal; + + // Frame rate for videoquality settings motion + TInt iMotion; + }; + + /** + * Media configuration + */ + struct TVtEngVideoCallConfig + { + // @see TVtEngAudioConfig + TVtEngAudioConfig iAudio; + // @see TVtEngVideoConfig + TVtEngVideoConfig iVideo; + // defines if call timer is enabled + TBool iCallTimerOn; + // Engine has green light to make connect on Protocol. + TBool iReadyForConnect; + // Dataport loaning status + TBool iIsDataportLoaned; + }; + + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @return instance of CVtEngSettings + */ + static CVtEngSettings* NewL(); + + /** + * Destructor. + */ + virtual ~CVtEngSettings(); + + public: // New functions + + /** + * Creates stored data observers. + * @param aObserver callback interface + * @param aUid UID to monitor + * @param aKey ID to monitor + * @param aType which data type + */ + void CreateDataObserverL( + MVtEngCRSettingObserver* aObserver, TUid aUid, TUint32 aKey, + CCenRepNotifyHandler::TCenRepKeyType aType ); + + /** + * Returns configuration. + * @return settings data + */ + const CVtEngSettings::TVtEngVideoCallConfig& Config() const; + + /** + * Sets current volume. + * @param aVolume selected volume, + * EFalse: handset, ETrue: loudspeaker. + */ + void SetCurrentVolume( TBool aVolume ); + + /** + * Returns current volume. + * @return EFalse: handset, ETrue: loudspeaker. + */ + TBool CurrentVolume() const; + + /** + * Sets audio output volume levels. + * @param aHandsetVolume handset volume level. + * @param aHandsfreeVolume handsfree volume level. + * @param aInternal not stored to shared data but + * internal variable to be used when correct state + * is entered. + * @return Symbian error code + */ + TInt SetVolume( + const TInt aHandsetVolume, + const TInt aHandsfreeVolume, + const TBool aInternal ); + + /** + * Gets audio output volume levels from Shared Data. + * @param aVolume volume level. + * @param aHandsfree if true handsfree volume is read, + * otherwise handset. + * @param aInternal not read from shared data but + * from internal variable + * @return error code + */ + TInt GetVolume( + TInt& aVolume, + const TBool aHandsfree, + const TBool aInternal ) const; + + /** + * Gets maximum audio output volume level. + * @return max volume for device + */ + inline TInt MaxVolume( ) const; + + + /** + * Gets minimum audio output volume level. + * @return max volume for device + */ + inline TInt MinVolume( ) const; + + /** + * Checks the validity of the volume level. + * return either constant minimum, constant maximum + * or the passed value level. + * @param aVolume the volume level to check + * @return suitable volume level + */ + inline TInt ValidVolume( const TInt aVolume ) const; + + /** + * Sets audio routing setting. + * @param aState audio routing state. + */ + void SetRouting( const MVtEngAudio::TVtEngRoutingSetting& aState ); + + /** + * Sets output video state setting. + * @param aEnabled ETrue if sending is enabled + */ + void SetVideoEnabled( const TBool aEnabled ); + + /** + * Sets connected state. + */ + void SetConnectReady(); + + /** + * Reads local variations. + */ + void ReadVariationsL(); + + /** + * Gets camera orientations for primary and secondary camera. + * @see MVtEngMedia::TCameraOrientation + * @param aPrimaryCameraOrientation primary camera orientation. + * @param aSecondaryCameraOrientation secondary camera orientation. + */ + void GetCameraOrientations( + MVtEngMedia::TCameraOrientation& aPrimaryCameraOrientation, + MVtEngMedia::TCameraOrientation& aSecondaryCameraOrientation ) const; + + /** + * Checks if given bits is turned on in local variation. + * @param aBits bits to check + * @return ETrue if turned on + */ + TBool CheckBits( const TInt aBits ); + + /** + * Returns video quality frame rate configuration. + * @return Reference to video quality frame rate + * configuration. + */ + const TVtEngVideoQualityFrameRateConfig& + VideoQualityFrameRateConfig() const; + + /** + * Resets settings to default values. + */ + void ResetAll(); + + /** + * Registers interest on setting change. + * @param aId event to observe for + * @param aObserver setting observer + */ + void NotifyChangeL( + TSettingId aId, + MVtEngSettingObserver& aObserver ); + + /** + * Cancels observering setting changes. + * @param aId event to cancel + * @param aObserver setting observer + */ + void CancelNotifyChange( + TSettingId aId, + const MVtEngSettingObserver& aObserver ); + + /** + * Informs setting is dataport loaned or not yet. + * @param aLoaned TBool value is loaned (ETrue) or not (EFalse) + */ + void SetDataportLoaned( TBool aLoaned ); + + /** + * Checks if still image exists. + * @return ETrue if still image exists. + */ + TBool IsDefaultStillImageDefined(); + + + + /** + * Sets CLI. + * @since S60 5.0 + * @params aCLI call id and address (MSISDN) availability + */ + void SetCLI( const MVtEngSessionInfo::TCLI& aCLI ); + + /** + * Returns CLI + * @since S60 5.0 + * @param aCLI call id and address (MSISDN) availability + * @return ETrue if CLI is valid (stored in the first place) + */ + TBool GetCLI( MVtEngSessionInfo::TCLI& aCLI ) const; + + /** + * Sets dataport info + * @since S60 5.0 + * @param aPortInfo port name and number as string + */ + void SetDataportInfoL( const TDesC& aPortInfo ); + + /** + * Returns dataport info or NULL if not available yet + * @since S60 5.0 + * @return dataport info + */ + const TDesC* DataportInfo() const; + + public: // From MVtEngCRSettingObserver. + + /** + * Callback to notify changed setting. + * @param aUid changed Uid + * @param aId changed id + * @param aNewValue + */ + void HandleNotifyInt( const TUid aUid, const TUint32 aId, + TInt aNewValue ); + + /** + * Callback to notify changed setting. + * @param aUid changed Uid + * @param aId changed id + * @param aNewValue + */ + void HandleNotifyReal( const TUid aUid, const TUint32 aId, + TReal aNewValue ); + + /** + * Callback to notify changed setting. + * @param aUid changed Uid + * @param aId changed id + * @param aNewValue + */ + void HandleNotifyString( const TUid aUid, const TUint32 aId, + const TDesC16& aNewValue ); + + private: // New functions. + struct TObserverItem + { + // Callback interface. + MVtEngSettingObserver* iObserver; + // UID of item. + TUid iUid; + // Key of observer. + TPtrC iKey; + // Integer key, used with CR. + TInt iIntKey; + // Settings internal id. + TSettingId iId; + }; + + /** + * Finds observer item. + * @param aUid + * @param aKey + * @return observer item or NULL + */ + TObserverItem* FindItem( const TUid& aUid, const TDesC& aKey ) const; + + /** + * Finds observer item. + * @param aUid + * @param aKey + * @return observer item or NULL + */ + TObserverItem* FindItem( const TUid& aUid, const TInt& aKey ) const; + + /** + * Returns value as integer. + * @param aValue value to convert + * @return value as integer + */ + static TInt SettingAsTInt( const TDesC& aValue ); + + /** + * Derived class for internal book keeping. Engine knows whether + * CLI has been received from call handling + */ + struct TVtEngCLI : public MVtEngSessionInfo::TCLI + { + // Set to True when CLI received from call handling. + TBool iValid; + }; + + private: + + /** + * C++ default constructor. + */ + CVtEngSettings(); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + /** + * Callback function to inform the observer. + * @param aAny pointer to instance of this class. + * @return KErrNone always. + */ + static TInt DoInformSelectVolumeObserver( TAny* aAny ); + + + /** + * Parses VQ frame rates read from cenrep. + */ + void ParseFrameRates( TVtEngVideoQualityFrameRateConfig& aVQFR, + const TDesC& aBuffer ); + + private: // Data + // Central Repository proxy. + CVtEngCRProxy* iCRProxy; + + // Settings data. + TVtEngVideoCallConfig iConfig; + + // Setting data observers. + CArrayFixFlat* iObserverItems; + + // File system handle. + RFs iFs; + + // Owned idle callback instance. + CIdle* iSelectVolumeIdle; + + // Observer for ESelectVolume. + MVtEngSettingObserver* iSelectVolumeObserver; + + // Observer for EDataportInfo + MVtEngSettingObserver* iDataportObserver; + + // Locally variated bits are read to this. + TInt iVariantReadOnlyValues; + + // If local variations are read + TBool iVariationsRead; + + // Video quality frame rate configuration holder + TVtEngVideoQualityFrameRateConfig iVQFRConfig; + + // If default still image is defined + TBool iDefaultStillImageDefined; + + // CLI information of video call. + TVtEngCLI iCLI; + + HBufC* iDataportInfo; + }; + +#include "CVtEngSettings.inl" + +#endif // CVTENGSETTINGS_H + +// End of File