--- /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