--- a/camerauis/cameraapp/generic/inc/CamSettingsModel.h Thu Aug 19 09:36:57 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,770 +0,0 @@
-/*
-* Copyright (c) 2007 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: Manages all settings data.
-*
-*/
-
-
-
-#ifndef CAMSETTINGSMODEL_H
-#define CAMSETTINGSMODEL_H
-
-// INCLUDES
-
-
-#include <eikenv.h>
-
-#include "Cam.hrh"
-#include "mcamsettingsmodel.h"
-#include "CamBurstModeObserver.h"
-#include "mcamsettingpreviewhandler.h"
-
-#include "camconfigurationconstants.h"
-
-// CONSTANTS
-
-// FORWARD DECLARATIONS
-class MCamSettingsModelObserver;
-class CCamVideoQualityLevel;
-class CCamStaticSettingsModel;
-class MCamStaticSettings;
-class CCamConfiguration;
-class CCameraUiConfigManager;
-
-// STRUCTS
-
-// CLASS DECLARATIONS
-
-/**
-* Manages all static settings data.
-* @since 2.8
-*/
-class CCamSettingsModel : public CBase,
- public MCamSettingsModel,
- public MCamSettingPreviewHandler,
- /** to be removed*/public MCamBurstModeObserver
- {
- // =========================================================================
- public: // Constructors and destructor
-
- /**
- * Symbian two-phased constructor.
- * @param aConfiguration
- * @since 2.8
- * engine changes.
- */
- static CCamSettingsModel* NewLC( CCamConfiguration& aConfiguration );
-
- /**
- * Symbian two-phased constructor.
- * @param aConfiguration
- * @since 2.8
- * engine changes.
- */
- static CCamSettingsModel* NewL( CCamConfiguration& aConfiguration );
-
-
- /**
- * Destructor.
- */
- ~CCamSettingsModel();
-
- public:
- /**
- * Saves user defined FT setting
- * @since S60 5.0
- * @param None
- * @return None
- */
- void StoreFaceTrackingValue();
-
-
- /**
- * Returns the face tracking state as it was before the latest scene mode change
- */
- TCamSettingsOnOff GetPreviousFaceTrack();
-
- /**
- * Sets the face tracking state as it was before the latest scene mode change
- */
- void SetPreviousFaceTrack( TCamSettingsOnOff aPreviousFaceTrack );
-
- /**
- * Returns the scene mode that was in use before the current scene mode was selected
- */
- TCamSceneId GetPreviousSceneMode();
-
- /**
- * Sets the scene mode that was in use before the current scene mode was selected
- */
- void SetPreviousSceneMode( TCamSceneId aPreviousSceneMode );
-
-
- // -------------------------------------------------------------------------
- // From base class MCamSettingsModel
- public:
-
- /**
- * Add a settings model observer.
- * Observers will be notified of settings changes.
- */
- virtual void AttachObserverL( const MCamSettingsModelObserver* aObserver );
-
- /**
- * Remove a settings model observer.
- */
- virtual void DetachObserver( const MCamSettingsModelObserver* aObserver );
-
- /**
- * Resets all user scene settings to their defaults.
- * @since 2.8
- */
- virtual void ResetUserSceneL();
-
- /**
- * Returns the current integer value for the specified setting
- * @return the current integer setting value
- * @param aSettingItem specifies which setting item that want the value of.
- * @since 2.8
- */
- virtual TInt IntegerSettingValue( TInt aSettingItem ) const;
-
- /**
- * Returns the setting value for a specific field of a scene
- * @return the setting value
- * @param aSceneId specifies which scene.
- * @param aSceneId specifies which field of the scene.
- * @since 2.8
- */
- virtual TInt SceneSettingValue( TInt aSceneId, TInt aSceneField ) const;
-
- /**
- * Sets a new value for the specified integer setting
- * @param aSettingItem specifies which setting item that want to set the value of.
- * @param aSettingValue the new integer value for the specified setting item.
- * @since 2.8
- */
- virtual void SetIntegerSettingValueL( TInt aSettingItem, TInt aSettingValue );
-
- /**
- * Sets a new text value for the specified setting
- * @param aSettingItem specifies which setting item that want to set the text value of.
- * @param aSettingValue the new text value for the specified setting item.
- * @since 2.8
- */
- virtual void SetTextSettingValueL( TInt aSettingItem,
- const TDesC& aSettingValue );
-
- /**
- * Returns the current text value for the specified setting
- * @return the current text setting value
- * @param aSettingItem specifies which setting item that want the text value of.
- * @since 2.8
- */
- virtual TPtrC TextSettingValue( TInt aSettingItem ) const;
-
- /**
- * Returns whether a particular setting value can be set or not.
- * @return ETrue if can be set. Otherwise, EFalse.
- * @param aSettingValue the value in question.
- * @param aSettingItem the setting item in question.
- * @since 2.8
- */
- virtual TBool SettingValueEnabled( TInt aSettingItem,
- TInt aSettingValue ) const;
-
- /**
- * Get the default value for a setting item.
- * @param aSettingId The id of the setting.
- * @return The default value for setting item or KErrNotFound if not found.
- */
- virtual TInt DynamicSettingDefaultValue( TInt aSettingId ) const;
-
- /**
- * Sets all dynamic settings to their defaults.
- * @since 2.8
- */
- virtual void SetDynamicSettingsToDefaults();
-
- /**
- * Sets a single dynamic setting to its default.
- * @since 2.8
- */
- virtual void SetDynamicSettingToDefault(TInt aSettingItem);
-
- /**
- * Sets a single dynamic setting to scene default value.
- * @param aSceneId Scene which the default value is taken from.
- * @param aSceneField Id of the setting in scene data.
- * @param aSettingId Id of the setting in dynamic settings.
- * @param aVideoScene Is the scene a video scene.
- * @return KErrNotFound, if setting could not be set.
- */
- virtual TInt SetDynamicSettingToSceneDefaultL( TInt aSceneId,
- TInt aSceneField,
- TInt aSettingId,
- TBool aVideoScene );
-
-
- /**
- * Loads the static settings from shared data. Required to update
- * the settings whenever get foreground event, in case of external
- * changes to the settings.
- * @since 2.8
- * @param aIsEmbedded Specifies whether the application is embedded
- * or not.
- */
- virtual void LoadStaticSettingsL( TBool aIsEmbedded );
-
- /**
- * Return handle to video quality level array
- * @since 2.8
- * @return reference to array of video quality levels
- */
- virtual const RPointerArray<CCamVideoQualityLevel>& VideoQualityArray();
-
- /**
- * Return handle to video resolution array
- * @since 2.8
- * @param return reference to array of video resolutions
- */
- virtual const RArray<TSize>& VideoResolutions();
-
- /**
- * Returns the image resolution for a given resolution index.
- * @since 2.8
- * @param aIndex The index to get the resolution for
- * @returns The X and Y dimensions in pixels of the resolution.
- */
- virtual TSize ImageResolutionFromIndex( TCamPhotoSizeId aIndex );
-
- /**
- * Returns the current photo quality.
- * @return the quality.
- * @since 2.8
- */
- virtual TInt CurrentPhotoCompression() const;
-
- /**
- * Returns the current photo resolution from Settings
- * @return the resolution.
- * @since 2.8
- */
- virtual TCamPhotoSizeId CurrentPhotoResolution() const;
-
- /**
- * Returns the photo resolution for a particular quality
- * @return the resolution.
- * @param aQualityIndex The index of the quality
- * @since 3.0
- */
- virtual TCamPhotoSizeId PhotoResolution( TInt aQualityIndex ) const;
-
- /**
- * Stores the primary camera settings when changing to secondary camera
- * that they can be reapplied when changing back
- * @since 2.8
- */
- virtual void StorePrimaryCameraSettingsL();
-
- /**
- * Restores the primary camera settings
- * @since 2.8
- */
- virtual void RestorePrimaryCameraSettingsL();
-
- /**
- * Return variant info.
- */
- virtual const TCamVariantInfo& VariantInfo();
-
- /*
- * Reset repository file
- * @since3.0
- */
- virtual void ResetRepository();
-
- // -------------------------------------------------------------------------
- // From base class MCamSettingPreviewHandler
- public:
-
- /**
- * Activates preview for one setting.
- * Returns the preview value as setting value in ProvideCameraSettingL
- * until Commit or Cancel is called.
- * @param aSettingId The setting for which preview is set
- * @param aSettingValue The setting value used for preview
- * @leave Any system error code.
- */
- virtual void ActivatePreviewL( const TCamSettingItemIds& aSettingId,
- TInt aSettingValue );
-
- /**
- * Cancels the preview for one setting.
- * After this call ProvideCameraSettingL returns the actual setting value.
- * If the setting does not have active preview, such error is ignored.
- * @param aSettingId Id of the setting for which the preview is cancelled.
- */
- virtual void CancelPreview( const TCamSettingItemIds& aSettingId );
-
-
- /**
- * Cancels the preview for a set of settings.
- * If some of the settings do not have active preview, such error is ignored.
- */
- virtual void CancelPreviews( const RArray<TCamSettingItemIds> aSettingIds );
-
- /**
- * Cancels all previews.
- * No error reported, if no previews active.
- */
- virtual void CancelAllPreviews();
-
- /**
- * Commits the preview value for the given set of settings.
- * After this call completes, the preview is no more active for the setting.
- * If the call completes successfully, the preview is stored as the
- * actual setting value. If leave occurs, the preview is not stored.
- * @param aSettingId Id of the setting for which the preview is committed.
- * @leave KErrArgument There was no preview value for the given setting.
- * @leave Any system error code.
- */
- virtual void CommitPreviewL( const TCamSettingItemIds& aSettingId );
-
- /**
- * Commits the preview for a set of settings.
- * If some of the settings do not have active preview, such error is ignored.
- */
- virtual void CommitPreviewsL( const RArray<TCamSettingItemIds>& aSettingIds );
-
- /**
- * Commit previews for all settings with active preview.
- * @leave Any system error code.
- */
- virtual void CommitAllPreviewsL();
-
- /**
- * Get the set of settings with active preview.
- * Preview is active if it has been set with ActivatePreviewL
- * but not cancelled or committed after that.
- * @param aSettingIds Return the ids of the active settings in this array.
- */
- virtual void ActivePreviewsL( RArray<TCamSettingItemIds>& aSettingIds ) const;
-
-
- // -------------------------------------------------------------------------
- // New methods
- public:
-
- /*
- * Sets user scene setting to default
- */
- void SetUserSceneDefault();
-
- /*
- * Gets the handle to the settings model, which is used inturn by the
- * plugin to call the interfaces for performing needed actions.
- */
- MCamStaticSettings& StaticSettingsModel() const;
-
- /**
- * Loads the static settings from shared data, or if unable to from the resource file.
- * @since 2.8
- */
- void LoadSettingsL();
-
- /**
- * Saves the static settings to shared data.
- * @since 2.8
- */
- void SaveSettingsL() ;
-
- /*
- * Is Scene supported
- */
- TBool IsImageSceneSupported( const TInt aSceneId ) const;
-
- /*
- * Is Scene supported
- */
- TBool IsVideoSceneSupported( const TInt aSceneId ) const;
-
- /*
- * Returns UiConfigManager Ptr from StaticSettingsModel
- */
- CCameraUiConfigManager* UiConfigManagerPtr();
- private:
-
- /**
- * Saves one static setting to Central Repository.
- * @param aSettingId Id of the setting to be saved.
- * @since Camera 4.0
- */
- void SaveStaticSettingL( TCamSettingItemIds aSettingId );
-
- /**
- * Get the associated settings list for given setting item.
- * @param aSettingId Id of the setting for which the list is requested.
- * @since Camera 4.0
- */
- RPointerArray<TIntSetting>*
- MapSettingItem2SettingsList( TCamSettingItemIds aSettingId );
-
- // -------------------------------------------------------------------------
- // Constructors
- private:
-
- /**
- * C++ constructor.
- * @since 2.8
- */
- CCamSettingsModel( CCamConfiguration& aConfiguration );
-
- /**
- * C++ 2nd phase constructor.
- * @since 2.8
- */
- void ConstructL();
-
- // -------------------------------------------------------------------------
- // new functions
- private:
-
- // Notify setting model observers, that a setting item value has changed.
- void NotifyObservers( TCamSettingItemIds aSettingId,
- TInt aSettingValue );
-
- void NotifyObservers( TCamSettingItemIds aSettingId,
- const TDesC& aSettingValue );
-
- /**
- * Read variant flags from Central Repository.
- */
- void ReadVariantFlagsL();
-
- /**
- * Resets all user scene settings to their defaults without
- * activating them.
- * @since 2.8
- */
- void ResetUserSceneWithoutActivatingChangesL();
-
- /**
- * Copies a user scene setting across to the capture setup settings.
- * @since 2.8
- * @param aSettingItem the user scene setting to copy.
- */
- void CopyUserSceneSettingToCaptureSettingL( TInt aSettingItem );
-
- /**
- * Activates the current user scene settings.
- * @since 2.8
- */
- void ActivateUserSceneSettingsL();
-
- /**
- * Returns whether a particular setting is an engine setting, or not.
- * @since 2.8
- * @param aSettingItem The id of the setting item.
- * @return ETrue if an engine setting. Otherwise EFalse.
- */
- TBool SettingIsForEngine( TInt aSettingItem );
-
- /**
- * Searches in a settings list for a particular setting item..
- * @param aSettingsList the setting list to search in.
- * @param aSettingItem the id of the setting item to look for.
- * @return the index of the setting item if found. Otherwise returns KErrNotFound .
- * @since 2.8
- */
- TInt SearchInSettingsListFor(
- const RPointerArray<TIntSetting>& aSettingsList,
- TInt aSettingItem ) const;
-
-
- /**
- * Finds a scene in a particular scene list.
- * @param aSceneItemId the id of the scene to search for.
- * @param aSceneList the scene list to search in.
- * @return the index to the scene in the list.
- * @since 2.8
- */
- TInt FindSceneInSceneList(
- TInt aSceneItemId,
- const RPointerArray<TSceneData>& aSceneList ) const;
-
- /**
- * Handles a change in the value for the user scene setting.
- * @param aSettingValue The new scene value.
- * @param aActivate Whether to activate the user scene changes
- * @since 2.8
- */
- void UserSceneHasChangedL( TInt aSettingValue, TBool aActivate );
-
- /**
- * Handles a change in the value for the photo scene setting.
- * That is, it updates the rest of the photo dynamic setings.
- * @param the new scene value.
- * @since 2.8
- */
- void PhotoSceneHasChangedL( TInt aSettingValue );
- /**
- * Handles a change in the value for the video scene setting.
- * That is, it updates the rest of the video dynamic setings.
- * @since 2.8
- * @param aSettingValue The new scene value.
- */
- void VideoSceneHasChangedL( TInt aSettingValue );
-
- /**
- * Returns the default value of a setting for a video scene item.
- * @param aSceneId the id of the scene item.
- * @param aSetting the id of the setting item.
- * @return the default value
- * @since 2.8
- */
- TInt DefaultSettingValueForVideoScene( TInt aSceneId, TInt aSetting ) const;
-
-
- /**
- * Returns the maximum allowed quality for a photo scene.
- * @param the scene id.
- * @return the highest allowed quality.
- * @since 2.8
- */
- TInt PhotoSceneMaximumQuality( TInt aSceneId ) const;
-
- /**
- * Returns the current photo quality value.
- * @return the quality.
- * @since 2.8
- */
- TInt CurrentPhotoQualityValue() const;
-
- /**
- * Returns the photo quality array index.
- * @Param the photo quality id for the desired quality
- * @return the array index for the specified quality.
- * @since 2.8
- */
- TInt PhotoQualityArrayIndex(TInt aPhotoQualityId ) const;
-
- /**
- * Returns the default value of a setting for a particular scene item.
- * @param aSceneId the id of the scene item.
- * @param aSetting the id of the setting item.
- * @return the default value
- * @since 2.8
- */
- TInt DefaultSettingValueForScene( TInt aSceneId, TInt aSetting ) const;
-
- /**
- * Loads a list of dynamic settings from the resource file and
- * their default values.
- * @param aResourceId the id of the resource that contains the
- * settings items id's and their default values.
- * @param aSettingsList the list to populate with dynamic settings
- * from the resource file.
- * @param aDefaultsList the list to populate with default values
- * for the dynamic settings from the resource file.
- * @since 2.8
- */
- void LoadDynamicSettingsL( TInt aResourceId,
- RPointerArray<TIntSetting>& aSettingsList,
- RArray<TInt>& aDefaultsList );
-
- /**
- * Loads a list of dynamic settings from the resource file
- * @param aResourceId the id of the resource that contains the
- * settings items id's and their default values.
- * @param aSettingsList the list to populate with dynamic settings
- * from the resource file.
- * @since 2.8
- */
- void LoadDynamicSettingsL( TInt aResourceId,
- RPointerArray<TIntSetting>& aSettingsList );
-
- /**
- * Loads a list of scene settings from the resource file.
- * @param aResourceId the id of the resource in the resource file.
- * @param aSceneDataArray the array to populate with the resource.
- * @since 2.8
- */
- void LoadScenesDataL( TInt aResourceId,
- RPointerArray<TSceneData>& aSceneDataArray );
-
- /**
- * Loads a list of scene settings from product specific header file.
- * @since 3.0
- */
- void LoadSceneDataL( TBool aPhotoSceneSettings = ETrue );
-
-
- /**
- * Removes any previously loaded settings.
- * @since 2.8
- */
- void UnloadSettings();
-
- /**
- * Removes any previously loaded static settings.
- * @since 2.8
- */
- void UnloadStaticSettings();
-
- /**
- * Loads component resources
- */
- void LoadResourcesL();
-
- /**
- * Frees component resources
- */
- void UnLoadResources();
-
- /**
- * Backup and Restore Settings array
- * @param aSrc The source settings array
- * @param aDest The destination settings array
- * @param aRestore ETrue to restore
- * @since 5.1
- */
- void CopySettingsL(RPointerArray<TIntSetting>& aSrc,
- RPointerArray<TIntSetting>& aDest,
- TBool aRestore = EFalse);
-
- /**
- * Store UserScene Settings
- * @since 5.1
- */
- void StoreUserSceneSettingsL();
-
- private: // Functions from base classes
-
- /**
- * From MCamBurstModeObserver
- * @since 2.8
- * @param aActive whether or not burst mode is active
- * @param aStillModeActive whether or not still capture is active
- */
- void BurstModeActiveL( TBool aActive, TBool aStillModeActive );
-
- // =========================================================================
- private: // data
- TCamSettingsOnOff iPreviousFaceTrack; // previous user defined FT setting
- TCamSceneId iPreviousSceneMode; // previous camera scene mode
-
-
- /**
- * Stores information for front/back camera settings
- * @since 2.8
- */
- class TCamCameraSettings
- {
- public:
- TInt iPhotoQuality;
- TInt iVideoQuality;
- };
-
- // Reference to observer of this settings model.
- // MCamSettingsModelObserver& iObserver;
- RPointerArray<MCamSettingsModelObserver> iObservers;
-
- // Setting previews
- RPointerArray<TIntSetting> iSettingPreviews;
-
- // List of setting item id/value pairs for static photo settings.
- RPointerArray<TIntSetting> iDynamicPhotoIntSettings;
-
- //Backup of iDynamicPhotoIntSettings
- RPointerArray<TIntSetting> iDynamicPhotoIntSettingsBackup;
-
-
- // Parallel array to "iDynamicPhotoIntSettings" containing
- // default values.
- RArray<TInt> iDynamicPhotoIntDefaults;
-
- // List of setting item id/value pairs for dynamic photo settings.
- RPointerArray<TIntSetting> iDynamicVideoIntSettings;
-
- //Backup of iDynamicVideoIntSettings
- RPointerArray<TIntSetting> iDynamicVideoIntSettingsBackup;
-
- // Parallel array to "iDynamicVideoIntSettings" containing
- // default values.
- RArray<TInt> iDynamicVideoIntDefaults;
-
- // List of setting item id/value pairs for user scene settings.
- RPointerArray<TIntSetting> iUserSceneSettings;
-
- //Backup of iUserSceneSettings
- RPointerArray<TIntSetting> iUserSceneSettingsBackup;
-
- // Lists of scene data.
- RPointerArray<TSceneData> iPhotoScenes;
- RPointerArray<TSceneData> iVideoScenes;
-
- // Specifies whether the engine should be updated with settings such as
- // White Balance after being prepared. This is device dependent and so
- // will be read from the resource file.
- TBool iUpdateAfterPrepare;
-
- // Specifies whether this application is embedded or not.
- TBool iEmbedded;
-
- // Specifies whether burst mode is enabled or not
- TBool iBurstEnabled;
-
- // Reference to the CEikonEnv object, since it is used a lot.
- CEikonEnv* iEnv;
-
- // array of video quality level items read in from resource file
- RPointerArray < CCamVideoQualityLevel > iQualityLevels;
-
- // array of video resolutions read from resource
- RArray< TSize > iVideoResolutions;
-
- // array of photo quality levels read from resource
- RArray< TCamPhotoQualitySetting > iPhotoQualityLevels;
-
- // array of photo resolutions read from resource
- RArray< TSize > iPhotoResolutions;
-
- // Specifies whether the engine is ready for receiving
- // a video prepare event.
- TBool iEngineReadyForVideoPrepare;
-
- // Specifies whether the settings model is waiting to
- // prepare the engine with video.
- TBool iWaitingToPrepareVideo;
-
- // The cached primary camera settings
- TCamCameraSettings iPrimaryCameraSettings;
- // The cached secondary camera settings
- TCamCameraSettings iSecondaryCameraSettings;
-
- // Variant info
- TCamVariantInfo iVariantInfo;
- TInt iResourceFileOffset;
-
- // Number of image scene settings
-
- CCamConfiguration& iConfiguration;
- CCamStaticSettingsModel* iStaticModel;
- CCameraUiConfigManager* iUiConfigManager; // we dont own
- };
-
-#endif // CAMSETTINGSMODEL_H
-
-// End of File