diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/cameraapp/generic/src/CamCaptureSetupControlHandler.cpp --- /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 +#include +#include "CamCaptureSetupSlider.h" + +#include "CamUtility.h" +#include "CameraUiConfigManager.h" + +#include + +// 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