--- /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 <eikenv.h>
+#include <centralrepository.h>
+#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 <TIntSetting>& 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 <TIntSetting>& 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<TIntSetting>& 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<TIntSetting>*
+ 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<TIntSetting>& 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<TIntSetting>& 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<TIntSetting> iStaticCommonIntSettings;
+
+ // List of setting item id/value pairs for static photo settings.
+ RPointerArray<TIntSetting> iStaticPhotoIntSettings;
+
+ // List of setting item id/value pairs for static video settings.
+ RPointerArray<TIntSetting> iStaticVideoIntSettings;
+
+ // Video file base name.
+ TBuf<KMaxNameBaseLength> iVideoBaseName;
+
+ // Photo file base name.
+ TBuf<KMaxNameBaseLength> iPhotoBaseName;
+
+ TBuf<KMaxAlbumNameLength> 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