camerauis/cameraapp/generic/src/CamCaptureSetupControlHandler.cpp
branchRCL_3
changeset 24 bac7acad7cb3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraapp/generic/src/CamCaptureSetupControlHandler.cpp	Wed Sep 01 12:30:54 2010 +0100
@@ -0,0 +1,445 @@
+/*
+* Copyright (c) 2007-2010 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:  Class for creating, initializing and observing*
+*/
+
+
+
+// INCLUDE FILES
+ 
+#include "CamCaptureSetupControlHandler.h"
+#include "CamAppController.h"
+#include "CamLogger.h"
+
+#include "CamCaptureSetupListBox.h"
+#include <cameraapp.rsg>
+#include <vgacamsettings.rsg>
+#include "CamCaptureSetupSlider.h"
+
+#include "CamUtility.h"
+#include "CameraUiConfigManager.h"
+
+#include <AknUtils.h>
+
+// CONSTANTS
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CCamCaptureSetupControlHandler::CCamCaptureSetupControlHandler
+// Constructor
+// -----------------------------------------------------------------------------
+//
+CCamCaptureSetupControlHandler::CCamCaptureSetupControlHandler( 
+                                             CCamAppController& aController,
+                                             TCamSettingItemIds aSettingType )
+: iController( aController ), iSettingType( aSettingType)
+    {   
+    }
+    
+// -----------------------------------------------------------------------------
+// CCamCaptureSetupControlHandler Destructor
+// 
+// -----------------------------------------------------------------------------
+//
+CCamCaptureSetupControlHandler::~CCamCaptureSetupControlHandler()
+  {
+  PRINT( _L("Camera => ~CCamCaptureSetupControlHandler") );
+  PRINT( _L("Camera <= ~CCamCaptureSetupControlHandler") );
+  }
+
+
+// -----------------------------------------------------------------------------
+// CCamCaptureSetupControlHandler::CreateCaptureSetupControlL
+// Create a new capture setup control with self as observer.
+// Ownership is transferred to the calling class.
+// -----------------------------------------------------------------------------
+//
+CCoeControl* CCamCaptureSetupControlHandler::CreateCaptureSetupControlL( const CCoeControl* aParent,
+        TBool aSkinnedBackGround )
+    {
+    // create a new control determined by iSettingType.
+    // set self as observer
+	switch( iSettingType )
+		{
+		case ECamSettingItemDynamicPhotoExposure:
+		case ECamSettingItemUserSceneExposure:
+		case ECamSettingItemDynamicPhotoBrightness:
+		case ECamSettingItemDynamicPhotoContrast:
+		case ECamSettingItemDynamicVideoBrightness:
+		case ECamSettingItemDynamicVideoContrast:
+        case ECamSettingItemUserSceneBrightness:
+        case ECamSettingItemUserSceneContrast:
+			{
+			// create and return a slider control
+            CCamCaptureSetupSlider* captureSetupControl = 
+					CCamCaptureSetupSlider::NewL( aParent, this, iSettingType, 0, aSkinnedBackGround );
+            CleanupStack::PushL( captureSetupControl );                    
+            captureSetupControl->InitializeL
+                ( iController.IntegerSettingValue( iSettingType ) );
+            CleanupStack::Pop( captureSetupControl );
+
+            // pass ownership of the control to the calling class
+            return captureSetupControl;  
+			}
+		default:
+			{
+			TInt resourceId = ResourceForControl();
+			if ( resourceId != 0 )
+				{
+				// create and return a radio-button listbox    
+				CCamCaptureSetupListBox* captureSetupControl = 
+						new( ELeave ) CCamCaptureSetupListBox( this,
+										iController, aSkinnedBackGround ); 
+
+				CleanupStack::PushL( captureSetupControl );
+				captureSetupControl->ConstructL( aParent, resourceId, iSettingType );
+				captureSetupControl->InitializeL
+					( iController.IntegerSettingValue( iSettingType ) ); 
+				CleanupStack::Pop( captureSetupControl );
+                if( iSettingType == ECamSettingItemDynamicPhotoColourFilter ||
+                    iSettingType == ECamSettingItemDynamicPhotoWhiteBalance ||
+                    iSettingType == ECamSettingItemDynamicPhotoImageSharpness || 
+
+                    iSettingType == ECamSettingItemDynamicVideoColourFilter ||
+                    iSettingType == ECamSettingItemDynamicVideoWhiteBalance || 
+                    iSettingType == ECamSettingItemDynamicVideoBrightness ||
+
+                    iSettingType == ECamSettingItemUserSceneImageSharpness ||
+                    iSettingType == ECamSettingItemUserSceneWhitebalance ||
+                    iSettingType == ECamSettingItemUserSceneColourFilter )
+                    {
+                    captureSetupControl->DisableSingleClick( ETrue );
+                    }
+				// pass ownership of the control to the calling class
+				return captureSetupControl;
+				}
+			}
+			break;
+		}
+    return NULL;
+    }
+
+// -----------------------------------------------------------------------------
+// CCamCaptureSetupControlHandler::HandleSettingValueUpdateL
+// Update the camera setting to the new value
+// -----------------------------------------------------------------------------
+//
+void CCamCaptureSetupControlHandler::HandleSettingValueUpdateL( TInt aNewValue )
+    {
+    PRINT( _L("Camera => CCamCaptureSetupControlHandler::HandleSettingValueUpdateL" ))
+    iController.PreviewSettingChangeL( iSettingType, aNewValue );
+    }
+
+// -----------------------------------------------------------------------------
+// CCamCaptureSetupControlHandler::ControlTitleResourceId
+// Return the resource id of the text to display in the title pane
+// -----------------------------------------------------------------------------
+//
+TInt CCamCaptureSetupControlHandler::ControlTitleResourceId() const
+    {
+    TInt resourceId = 0;
+    switch ( iSettingType )
+        {
+        case ECamSettingItemDynamicPhotoWhiteBalance: // fallthrough
+        case ECamSettingItemDynamicVideoWhiteBalance:
+        case ECamSettingItemUserSceneWhitebalance:
+            {
+            resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_WHITEBALANCE;
+            }
+            break;
+        case ECamSettingItemDynamicVideoColourFilter: // fallthrough
+        case ECamSettingItemDynamicPhotoColourFilter:
+        case ECamSettingItemUserSceneColourFilter:
+            {
+            resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_COLOUREFFECT;
+            }
+            break;
+
+        case ECamSettingItemDynamicPhotoExposure:
+        case ECamSettingItemUserSceneExposure:
+            {
+            resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_EV;
+            }
+            break;
+
+        case ECamSettingItemDynamicPhotoFlash:
+        case ECamSettingItemUserSceneFlash:
+            {
+            resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_FLASH;
+            }
+            break;
+		case ECamSettingItemDynamicPhotoBrightness:
+		case ECamSettingItemDynamicVideoBrightness:
+        case ECamSettingItemUserSceneBrightness:
+			{
+            resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_BRIGHTNESS;
+            }
+			break;
+		case ECamSettingItemDynamicPhotoContrast:
+		case ECamSettingItemDynamicVideoContrast:
+        case ECamSettingItemUserSceneContrast:
+			{
+            resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_CONTRAST;
+            }
+			break;
+        case ECamSettingItemDynamicPhotoImageSharpness:
+        case ECamSettingItemUserSceneImageSharpness:
+            {
+            resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_IMAGESHARPNESS;
+            }
+            break;
+        case ECamSettingItemDynamicSelfTimer:
+            {
+            resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_SELF_TIMER;
+            break;
+            }
+        case ECamSettingItemUserSceneLightSensitivity:
+        case ECamSettingItemDynamicPhotoLightSensitivity:
+        case ECamSettingItemDynamicVideoLightSensitivity:
+            {
+            resourceId = R_CAM_CAPTURE_SETUP_TITLE_NAME_LIGHT_SENSITIVITY;
+            }
+            break;
+        default:
+            break;
+        }
+    return resourceId;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CCamCaptureSetupControlHandler::ControlPositionResourceId
+// Return the resource id for the control's position.
+// -----------------------------------------------------------------------------
+//
+TInt CCamCaptureSetupControlHandler::ControlPositionResourceId() const
+    {
+    TInt resourceId = 0;
+    switch ( iSettingType )
+        {
+        case ECamSettingItemDynamicPhotoWhiteBalance: // fallthrough
+        case ECamSettingItemDynamicVideoWhiteBalance:
+        case ECamSettingItemDynamicVideoColourFilter: 
+        case ECamSettingItemDynamicPhotoColourFilter:
+        case ECamSettingItemDynamicPhotoFlash:
+        case ECamSettingItemDynamicSelfTimer:
+        case ECamSettingItemUserSceneWhitebalance:    
+        case ECamSettingItemUserSceneColourFilter:
+        case ECamSettingItemUserSceneFlash:
+        case ECamSettingItemDynamicPhotoImageSharpness:
+        case ECamSettingItemUserSceneImageSharpness:
+        case ECamSettingItemUserSceneLightSensitivity:
+        case ECamSettingItemDynamicPhotoLightSensitivity:
+        case ECamSettingItemDynamicVideoLightSensitivity:
+            {
+            if ( !AknLayoutUtils::LayoutMirrored() )
+                {
+                resourceId = ROID(R_CAM_CAPTURE_SETUP_CONTROL_POSITION_ID);
+                }
+            else
+                {
+                resourceId = ROID(R_CAM_CAPTURE_SETUP_CONTROL_POSITION_AH_ID);
+                }
+            }
+            break;
+
+        case ECamSettingItemDynamicPhotoExposure:     // fallthrough
+        case ECamSettingItemUserSceneExposure:
+
+		case ECamSettingItemDynamicPhotoBrightness:
+		case ECamSettingItemDynamicVideoBrightness:
+		case ECamSettingItemDynamicPhotoContrast:
+		case ECamSettingItemDynamicVideoContrast:
+        case ECamSettingItemUserSceneBrightness:
+        case ECamSettingItemUserSceneContrast:
+
+            {
+            if ( !AknLayoutUtils::LayoutMirrored() )
+                {
+                resourceId = ROID(R_CAM_CAPTURE_SETUP_SLIDER_CONTROL_POSITION_ID);
+                }
+            else
+                {
+                resourceId = ROID(R_CAM_CAPTURE_SETUP_SLIDER_CONTROL_POSITION_AH_ID);
+                }
+            break;
+            }
+        default:
+            break;
+        }
+    return resourceId;
+    }
+
+// -----------------------------------------------------------------------------
+// CCamCaptureSetupControlHandler::ControlUsesViewFinder
+// Whether or not the control requires a viewfinder preview pane
+// -----------------------------------------------------------------------------
+//
+TBool CCamCaptureSetupControlHandler::ControlUsesViewFinder() const
+    {
+    return ETrue;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CCamCaptureSetupControlHandler::ControlIsListBox
+// Whether or not the control is of listbox type
+// -----------------------------------------------------------------------------
+//
+TBool CCamCaptureSetupControlHandler::ControlIsListBox() const
+    {
+    return ( ( iSettingType != ECamSettingItemDynamicPhotoExposure ) 
+        && ( iSettingType != ECamSettingItemUserSceneExposure )    
+        && ( iSettingType != ECamSettingItemDynamicPhotoBrightness )    
+        && ( iSettingType != ECamSettingItemDynamicPhotoContrast )    
+        && ( iSettingType != ECamSettingItemDynamicVideoBrightness )    
+        && ( iSettingType != ECamSettingItemDynamicVideoContrast )    
+        && ( iSettingType != ECamSettingItemUserSceneBrightness )    
+        && ( iSettingType != ECamSettingItemUserSceneContrast )    
+           );
+    }
+
+
+// -----------------------------------------------------------------------------
+// CCamCaptureSetupControlHandler::ControlIsSlider
+// Whether or not the control is of slider type
+// -----------------------------------------------------------------------------
+//
+TBool CCamCaptureSetupControlHandler::ControlIsSlider() const
+    {
+    return ( ( iSettingType == ECamSettingItemDynamicPhotoExposure ) 
+        || ( iSettingType == ECamSettingItemUserSceneExposure )    
+        || ( iSettingType == ECamSettingItemDynamicPhotoBrightness )    
+        || ( iSettingType == ECamSettingItemDynamicPhotoContrast )    
+        || ( iSettingType == ECamSettingItemDynamicVideoBrightness )    
+        || ( iSettingType == ECamSettingItemDynamicVideoContrast )    
+        || ( iSettingType == ECamSettingItemUserSceneBrightness )    
+        || ( iSettingType == ECamSettingItemUserSceneContrast )    
+           );
+    }
+
+
+// -----------------------------------------------------------------------------
+// CCamCaptureSetupControlHandler::ResourceForControl
+// Return the resource for list population
+// -----------------------------------------------------------------------------
+//
+TInt CCamCaptureSetupControlHandler::ResourceForControl() const
+    {
+    TInt resourceId = 0;
+    switch ( iSettingType )
+        {
+        case ECamSettingItemDynamicPhotoWhiteBalance:// fallthrough
+        case ECamSettingItemUserSceneWhitebalance:
+            resourceId = ROID(R_CAM_CAPTURE_SETUP_LIST_STILL_WHITEBALANCE_ID);
+            break;
+        case ECamSettingItemDynamicPhotoColourFilter:// fallthrough
+        case ECamSettingItemUserSceneColourFilter:
+            resourceId = ROID(R_CAM_CAPTURE_SETUP_LIST_STILL_COLOUREFFECT_ID);
+            break;
+        case ECamSettingItemDynamicPhotoFlash:// fallthrough
+        case ECamSettingItemUserSceneFlash:
+            resourceId = ROID(R_CAM_CAPTURE_SETUP_LIST_STILL_FLASH_ID);
+            break;
+        case ECamSettingItemDynamicVideoWhiteBalance:
+            resourceId = ROID(R_CAM_CAPTURE_SETUP_LIST_VIDEO_WHITEBALANCE_ID);
+            break;
+        case ECamSettingItemDynamicVideoColourFilter:
+            resourceId = ROID(R_CAM_CAPTURE_SETUP_LIST_VIDEO_COLOUREFFECT_ID);
+            break;
+        case ECamSettingItemDynamicPhotoImageSharpness:
+        case ECamSettingItemUserSceneImageSharpness:
+        	resourceId = ROID(R_CAM_CAPTURE_SETUP_LIST_PHOTO_IMAGESHARPNESS_ID);
+            break;
+        case ECamSettingItemDynamicSelfTimer:
+            resourceId = ROID(R_CAM_CAPTURE_SETUP_SELF_TIMER_ID); 
+            break;
+        case ECamSettingItemUserSceneLightSensitivity:
+        case ECamSettingItemDynamicPhotoLightSensitivity:
+        case ECamSettingItemDynamicVideoLightSensitivity:
+            if ( iController.UiConfigManagerPtr()->IsExtendedLightSensitivitySupported()) 
+                {
+    			resourceId = R_CAM_CAPTURE_SETUP_STILL_EXTENDED_LIGHT_SENSITIVITY; 
+                }
+            else
+                {
+    			resourceId = R_CAM_CAPTURE_SETUP_STILL_LIGHT_SENSITIVITY; 
+                }
+			break;
+        default:
+            break;
+        }
+    return resourceId;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CCamCaptureSetupControlHandler::ViewfinderResourceId
+// Return the viewfinder resource to use for the appropriate control
+// -----------------------------------------------------------------------------
+//
+TInt CCamCaptureSetupControlHandler::ViewfinderResourceId() const
+    {
+	TInt resourceId = 0;
+    switch ( iSettingType )
+        {
+		case ECamSettingItemDynamicPhotoBrightness:
+		case ECamSettingItemDynamicVideoBrightness:
+		case ECamSettingItemDynamicPhotoContrast:
+		case ECamSettingItemDynamicVideoContrast:
+        case ECamSettingItemUserSceneBrightness:
+        case ECamSettingItemUserSceneContrast:
+        case ECamSettingItemDynamicPhotoExposure:
+        case ECamSettingItemDynamicVideoExposure:
+			{
+			if ( !AknLayoutUtils::LayoutMirrored() )
+                {
+				resourceId = ROID(R_CAM_CAPTURE_SETUP_SLIDER_CONTVF_RECT_ID);
+				}
+			else
+				{
+				resourceId = ROID(R_CAM_CAPTURE_SETUP_SLIDER_CONTVF_RECT_AH_ID);
+				}
+			}
+			break;
+		default:
+			{
+			if ( !AknLayoutUtils::LayoutMirrored() )
+                {
+				resourceId = ROID(R_CAM_CAPTURE_SETUP_CONTVF_RECT_ID);
+				}
+			else
+				{
+				resourceId = ROID(R_CAM_CAPTURE_SETUP_CONTVF_RECT_AH_ID);
+				}
+			}
+			break;
+		}
+	return resourceId;
+	}
+
+// -----------------------------------------------------------------------------
+// CCamCaptureSetupControlHandler::SettingType
+// Identifies which setting is being edited
+// -----------------------------------------------------------------------------
+//
+TCamSettingItemIds CCamCaptureSetupControlHandler::SettingType() const
+    {
+    return iSettingType;
+    }
+
+
+// End of file