diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/cameraapp/generic/common/inc/CamStaticSettingsModel.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camerauis/cameraapp/generic/common/inc/CamStaticSettingsModel.h Wed Sep 01 12:30:54 2010 +0100 @@ -0,0 +1,378 @@ +/* +* Copyright (c) 2007-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: Manages all static settings data. +* +*/ + + + +#ifndef CAMSTATICSETTINGSMODEL_H +#define CAMSTATICSETTINGSMODEL_H + +// INCLUDES + // Internal build flags, keep first. + +#include +#include +#include "Cam.hrh" +#include "mcamsettingsmodel.h" +#include "MCamStaticSettings.h" +#include "CamSettingsInternal.hrh" + +// FORWARD DECLARATIONS + +class CCamConfiguration; +class CCameraUiConfigManager; + +/** +* Manages all static settings data. +* @since 2.8 +*/ +class CCamStaticSettingsModel : public CBase, + public MCamStaticSettings + { + // ========================================================================= + public: // Constructors and destructor + + /** + * Symbian two-phased constructor. + * @since 2.8 + * @param aConfiguration + * engine changes. + */ + static CCamStaticSettingsModel* NewLC( CCamConfiguration& aConfiguration ); + + /** + * Symbian two-phased constructor. + * @since 2.8 + * @param aConfiguration + * engine changes. + */ + static CCamStaticSettingsModel* NewL( CCamConfiguration& aConfiguration ); + + /** + * Destructor. + */ + ~CCamStaticSettingsModel(); + + public: // New Fuctions + + /** + * 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 + */ + TInt IntegerSettingValue( TInt aSettingItem ) 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 + */ + 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 + */ + 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 + */ + TPtrC TextSettingValue( TInt aSettingItem ) const; + +#ifndef CAMERAAPP_PLUGIN_BUILD + /** + * 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. + */ + void LoadStaticSettingsL( TBool aIsEmbedded ); + +#endif //CAMERAAPP_PLUGIN_BUILD + + /** + * Reads the specified key from the Central Repository, returns the + * content in HBufC + * + * @since 5.0 + * @param aCenRepKeyId The Central Repository key id to read + */ + HBufC* ReadCenRepStringL( TInt aCenRepKeyId ); + /* + * Reset repository file + * @since3.0 + */ + void ResetRepository(); + + /** + * Loads the image/common static settings from shared data. Required to update + * the settings whenever get foreground event, in case of external + * changes to the settings. + */ + void LoadPhotoStaticSettingsL( const TBool aResetFromPlugin ); + + /** + * Loads the video/common static settings from shared data. Required to update + * the settings whenever get foreground event, in case of external + * changes to the settings. + */ + void LoadVideoStaticSettingsL( const TBool aResetFromPlugin ); + + // New methods + public: + + /** + * Reads the specified setting from the Central Repository, and + * stores the new setting object in the array. + * @since 3.0 + * @param TCamSettingItemIds the settings range for static settings from CamSettingsInternals.hrh + * @param TCamSettingItemIds the settings range for static settings from CamSettingsInternals.hrh + * @param aArray The array to add the setting to + */ + void ReadFromCenRepL( const TInt aMinRange, + const TInt aMaxRange, + RPointerArray & aArray ); + + /** + * Reads the specified setting from the Central Repository, and + * stores the new setting object in the array. + * @since 3.0 + * @param aUiId The Settings Model ID to be loaded to the array + * @param aCenRepID The Central Repository setting ID to read + * @param aArray The array to add the setting to + */ + void ReadCenRepIntL( TCamSettingItemIds aUiId, + TInt aCenRepID, + RPointerArray & aArray ); + + + /** + * Saves the setting item from the array to the Central Repository. + * May leave with KErrNotFound if the item id 'aItemId' is not found + * in the array 'aArray'. + * @since 3.0 + * @param aItemId The Settings Model ID to be saved + * @param aCenRepID The Central Repository setting ID to saved to + * @param aArray The array to read the setting from + */ + void SaveCenRepItemL( TCamSettingItemIds aItemId, + TInt aCenRepId, + const RPointerArray& aArray ); + + /** + * Saves one static setting to Central Repository. + * @param aSettingId Id of the setting to be saved. + * @since Camera 4.0 + */ + void SaveStaticSettingL( TCamSettingItemIds aSettingId ); + + /** + * Stores the primary camera settings when changing to secondary camera + * that they can be reapplied when changing back + * @since 2.8 + */ + void StorePrimaryCameraSettingsL(); + + /** + * Restores the primary camera settings + * @since 2.8 + */ + void RestorePrimaryCameraSettingsL(); + + /* + * Resets a particular setting item value + */ + void ResetSettingItem( const TInt aSettingItem ); + + /** + * Get the associated Central Repository Key for given setting item. + * @param aSettingId Id of the setting for which the key is requested. + * @param aEmbedded Is request made for embedded mode setting or not. + * @since Camera 4.0 + */ + static TUint32 MapSettingItem2CRKey( TCamSettingItemIds aSettingId, + TBool aEmbedded ); + + /** + * 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* + MapSettingItem2SettingsList( TCamSettingItemIds aSettingId ); + + /** + * Removes any previously loaded static settings. + * @since 2.8 + */ + void UnloadStaticSettings(); + + /** + * 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 LoadSettingsFromResourceL( TInt aResourceId, + RPointerArray& aSettingsList ); + + /** + * Returns reference to CCamConfiguration object describing + * the device's camera configuration. + * @return configuration + */ + CCamConfiguration& Configuration() const; + + /* + * Handle to Camera Ui Config Manager + */ + CCameraUiConfigManager* UiConfigManagerPtr(); + + private: + + // + // CCamStaticSettingsModel::LoadCommonStaticSettingsL + // + void LoadCommonStaticSettingsL( const TBool aResetFromPlugin ); + + /* + * Searches for a setting item in the list of available list of items + */ + TInt SearchInSettingsListFor( + const RPointerArray& aSettingsList, + TInt aSettingItem ) const; + + /** + * Saves the static settings to shared data. + * @since 2.8 + */ + void SaveSettingsL(); + + /* + * Load embedded camera specific settings + */ + void LoadEmbeddedSettingsL(); + + // Constructors + private: + + /** + * C++ constructor. + * @since 2.8 + * @param aConfiguration + */ + CCamStaticSettingsModel( CCamConfiguration& aConfiguration ); + + /** + * C++ 2nd phase constructor. + * @since 2.8 + */ + void ConstructL(); + + /** + * Loads photo base name + * @since 2.8 + */ + void LoadPhotoBaseNameL(); + + /** + * Loads video base name + * @since 2.8 + */ + void LoadVideoBaseNameL(); + + /** + * Saves photo base name + * @since 2.8 + */ + void SavePhotoBaseNameL(); + + /** + * Saves video base name + * @since 2.8 + */ + void SaveVideoBaseNameL(); + + /** + * Saves name of the DefaultAlbum + */ + void SaveDefaultAlbumNameL(); + + /** + * Loads name of the DefaultAlbum + */ + void LoadDefaultAlbumNameL(); + + private: // data + + /** + * Stores information for front/back camera settings + * @since 2.8 + */ + class TCamCameraSettings + { + public: + TInt iPhotoQuality; + TInt iVideoQuality; + }; + + // Commom static settings. + RPointerArray iStaticCommonIntSettings; + + // List of setting item id/value pairs for static photo settings. + RPointerArray iStaticPhotoIntSettings; + + // List of setting item id/value pairs for static video settings. + RPointerArray iStaticVideoIntSettings; + + // Video file base name. + TBuf iVideoBaseName; + + // Photo file base name. + TBuf iPhotoBaseName; + + TBuf iDefaultAlbumName; + + // Specifies whether this application is embedded or not. + TBool iEmbedded; + + // Handle to actual setting storage object + CRepository* iRepository; + + // The cached primary camera settings + TCamCameraSettings iPrimaryCameraSettings; + // The cached secondary camera settings + TCamCameraSettings iSecondaryCameraSettings; + CCamConfiguration& iConfiguration; + CCameraUiConfigManager* iConfigManager; + }; + +#endif // CAMSETTINGSMODEL_H + +// End of File