camerauis/cameraapp/generic/common/inc/CamStaticSettingsModel.h
branchRCL_3
changeset 54 bac7acad7cb3
parent 0 1ddebce53859
--- /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