diff -r f54ad444594d -r 61bc0f252b2b camerauis/cameraapp/generic/src/CamCaptureSetupSlider.cpp --- a/camerauis/cameraapp/generic/src/CamCaptureSetupSlider.cpp Thu Aug 19 09:36:57 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1055 +0,0 @@ -/* -* Copyright (c) 2007-2009 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 showing the EV slider* -*/ - - - -// INCLUDE FILES -#include "CamCaptureSetupSlider.h" -#include "CamPanic.h" // Panic codes -#include "CamUtility.h" -#include "CamAppUi.h" -#include "CamPSI.h" -#include "camconfiguration.h" -#include "CameraUiConfigManager.h" - -#include -#include -#include -#include -#include -#include // For CCoeAppUiBase -#include // For CEikApplication -#include // resource reader -#include -#include -#include - -#include -#include -#include - -// EXTERNAL DATA STRUCTURES - -// EXTERNAL FUNCTION PROTOTYPES - -// CONSTANTS -const TInt KDivisorFactor = 1024; // Avoids using TReal maths, use factor of 2 - -// Contrast slider value indexes -const TInt KContrastPlusInd = 0; -const TInt KContrastMinusInd = 1; -const TInt KContrastIconInd = 2; - -// EV slider value indexes -const TInt KEVPlus20Ind = 0; -const TInt KEVPlus15Ind = 1; -const TInt KEVPlus10Ind = 2; -const TInt KEVPlus05Ind = 3; -const TInt KEV0Ind = 4; -const TInt KEVMinus05Ind = 5; -const TInt KEVMinus10Ind = 6; -const TInt KEVMinus15Ind = 7; -const TInt KEVMinus20Ind = 8; -const TUint32 KToolbarExtensionBgColor = 0x00000000; -const TInt KToolBarExtensionBgAlpha = 0x7F; - - - - -// ============================ MEMBER FUNCTIONS =============================== - -// --------------------------------------------------------- -// CCamSliderLegend::~CCamSliderLegend -// destructor -// --------------------------------------------------------- -// -CCamSliderLegend::~CCamSliderLegend() - { - PRINT( _L("Camera => ~CCamSliderLegend") ); - delete iText; - delete iBitmap; - delete iMask; - PRINT( _L("Camera <= ~CCamSliderLegend") ); - } - -CCamSliderLegend::CCamSliderLegend( TBool aFullySkinned ) -: iFullySkinned( aFullySkinned ) - { - } - -// --------------------------------------------------------- -// CCamSliderLegend::Draw -// Draws the legend -// --------------------------------------------------------- -// -void CCamSliderLegend::Draw( CWindowGc& aGc ) const - { - if ( iItem == ECamSliderLegendItemText ) - { - TRgb color; - if( iFullySkinned ) - { - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - AknsUtils::GetCachedColor( skin, color, KAknsIIDQsnTextColors, - EAknsCIQsnTextColorsCG6 ); - } - else - { - color=KRgbWhite; - } - iPosition.DrawText( aGc, iText->Des(), ETrue, color ); - } - else - { - iIconRect.DrawImage( aGc, iBitmap, iMask ); - } - } - -// --------------------------------------------------------- -// CCamSliderLegend::Rect -// Returns the legend rect -// --------------------------------------------------------- -// -TRect CCamSliderLegend::Rect() const - { - if ( iItem == ECamSliderLegendItemText ) - { - return iPosition.TextRect(); - } - else - { - return iIconRect.Rect(); - } - } - - -// --------------------------------------------------------- -// CCamSliderLegend::ConstructTextL -// Constructs a text element from resources with given layout -// --------------------------------------------------------- -// -void CCamSliderLegend::ConstructTextL( - TResourceReader& aReader, - const TRect& aRect, - const TAknTextComponentLayout& aLayout ) - { - iItem = static_cast( aReader.ReadInt16() ); - if ( iItem == ECamSliderLegendItemText ) - { // must be a text - iPosition.LayoutText( aRect, aLayout ); - iText = aReader.ReadHBufC16L(); - aReader.ReadInt32(); // bitmap - aReader.ReadInt32(); // mask - } - } - -// --------------------------------------------------------- -// CCamSliderLegend::ConstructIconL -// Constructs an icon from resources with given layout -// --------------------------------------------------------- -// -void CCamSliderLegend::ConstructIconL( - TResourceReader& aReader, - const TRect& aRect, - const TAknWindowComponentLayout& aLayout ) - { - iItem = static_cast( aReader.ReadInt16() ); - if ( iItem == ECamSliderLegendItemIcon ) - { // must be an icon - iIconRect.LayoutRect( aRect, aLayout ); - iText = aReader.ReadHBufC16L(); - TInt bitmap = aReader.ReadInt32(); - TInt mask = aReader.ReadInt32(); - - // Create component bitmaps - TFileName resFileName; - CamUtility::ResourceFileName( resFileName ); - TPtrC resname = resFileName; - AknIconUtils::CreateIconL( iBitmap, iMask, resname, bitmap, mask ); - AknIconUtils::SetSize( iBitmap, iIconRect.Rect().Size() ); - } - } - - -// ----------------------------------------------------------------------------- -// CCamCaptureSetupSlider::CCamCaptureSetupSlider -// C++ default constructor can NOT contain any code, that -// might leave. -// ----------------------------------------------------------------------------- -// -CCamCaptureSetupSlider::CCamCaptureSetupSlider( MCamSettingValueObserver* aObserver, - TCamSettingItemIds aSettingType, - TInt aSteps, - TBool aFullySkinned ) -: iSettingObserver( aObserver ), iSettingType( aSettingType ), iSteps( aSteps ), iFullySkinned( aFullySkinned ) - { - } - - -/* - * CCamCaptureSetupSlider::InitializeSliderValuesL - */ - -void CCamCaptureSetupSlider::InitializeSliderValuesL() - { - CCameraUiConfigManager* configManager = static_cast - ( iCoeEnv->AppUi() )->AppController().UiConfigManagerPtr(); - TBool configureRunTime = EFalse; - RArray range; - CleanupClosePushL( range ); - - switch ( iSettingType ) - { - case ECamSettingItemDynamicPhotoBrightness: - case ECamSettingItemDynamicVideoBrightness: - case ECamSettingItemUserSceneBrightness: - { - if ( configManager && configManager->IsBrightnessSupported() ) - { - configManager->SupportedBrightnessRangeL( range ); - configureRunTime = ETrue; - } - break; - } - case ECamSettingItemDynamicPhotoContrast: - case ECamSettingItemDynamicVideoContrast: - case ECamSettingItemUserSceneContrast: - { - if ( configManager && configManager->IsContrastSupported() ) - { - configManager->SupportedContrastRangeL( range ); - configureRunTime = ETrue; - } - } - break; - - case ECamSettingItemDynamicPhotoExposure: - case ECamSettingItemDynamicVideoExposure: - case ECamSettingItemUserSceneExposure: - { - // get range of EV values from product specific utility - TCamEvCompRange evRange = - static_cast( - iCoeEnv->AppUi() )->AppController().EvRange(); - - iMaxSliderValue = evRange.iMaxValue * evRange.iStepsPerUnit; - iMinSliderValue = evRange.iMinValue * evRange.iStepsPerUnit; - iNumSliderValues = iMaxSliderValue - iMinSliderValue; - } - break; - - default: - { - } - break; - } - - if ( configureRunTime ) - { - if ( range.Count() > 0 ) - { - iMinSliderValue = range[0]; //min value - iMaxSliderValue = range[1]; // max value - iNumSliderValues = range[range.Count()-1]; // steps - } - } - - CleanupStack::PopAndDestroy( &range ); - - } - -// ----------------------------------------------------------------------------- -// CCamCaptureSetupSlider::ConstructL -// Symbian 2nd phase constructor can leave. -// ----------------------------------------------------------------------------- -// -void CCamCaptureSetupSlider::ConstructL( const CCoeControl* aParent ) - { - __ASSERT_DEBUG( aParent!=NULL, CamPanic( ECamPanicNullPointer ) ); - - InitializeSliderValuesL(); - - iParentControl = aParent; - SetContainerWindowL( *iParentControl ); - - TFileName resFileName; - CamUtility::ResourceFileName( resFileName ); - TPtrC resname = resFileName; - - // Create component bitmaps - AknIconUtils::CreateIconL( iBitmapShaft, - iBitmapShaftMask, - resname, - EMbmCameraappQgn_graf_nslider_cam4_empty, - EMbmCameraappQgn_graf_nslider_cam4_empty_mask ); - - AknIconUtils::CreateIconL( iBitmapThumb, - iBitmapThumbMask, - resname, - EMbmCameraappQgn_graf_nslider_cam4_marker, - EMbmCameraappQgn_graf_nslider_cam4_marker_mask ); - - AknIconUtils::CreateIconL( iBitmapThumbSelected, - iBitmapThumbSelectedMask, - resname, - EMbmCameraappQgn_graf_nslider_cam4_marker_selected, - EMbmCameraappQgn_graf_nslider_cam4_marker_selected_mask ); - iBitmapThumbCurrent = iBitmapThumb; - iBitmapThumbCurrentMask = iBitmapThumbMask; - } - -// ----------------------------------------------------------------------------- -// CCamCaptureSetupSlider::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -CCamCaptureSetupSlider* CCamCaptureSetupSlider::NewL( const CCoeControl* aParent, - MCamSettingValueObserver* aObserver, - TCamSettingItemIds aSettingItem, - TInt aSteps, - TBool aFullySkinned ) - { - CCamCaptureSetupSlider* self = - new( ELeave ) CCamCaptureSetupSlider( aObserver, aSettingItem, aSteps, - aFullySkinned ); - CleanupStack::PushL( self ); - self->ConstructL( aParent ); - CleanupStack::Pop( self ); - return self; - } - -// ----------------------------------------------------------------------------- -// CCamCaptureSetupSlider::~CCamCaptureSetupSlider -// Destructor -// ----------------------------------------------------------------------------- -// -CCamCaptureSetupSlider::~CCamCaptureSetupSlider() - { - PRINT( _L("Camera => ~CCamCaptureSetupSlider") ); - - // Destroy legend strings - iLegendArray.ResetAndDestroy(); - - delete iBitmapShaft; - delete iBitmapShaftMask; - delete iBitmapThumb; - delete iBitmapThumbMask; - delete iBitmapThumbSelected; - delete iBitmapThumbSelectedMask; - PRINT( _L("Camera <= ~CCamCaptureSetupSlider") ); - } - -// ----------------------------------------------------------------------------- -// CCamCaptureSetupSlider::InitializeL -// Sets up the slider with the initial value -// ----------------------------------------------------------------------------- -// -void CCamCaptureSetupSlider::InitializeL( TInt aValue ) - { - // Check the initial value is valid. If no, leave. - if ( aValue < iMinSliderValue || - aValue > iMaxSliderValue ) - { - User::Leave( KErrArgument ); - } - - iValue = aValue; - } - -// ----------------------------------------------------------------------------- -// CCamCaptureSetupSlider::MinValue -// Returns the minimum slider value -// ----------------------------------------------------------------------------- -// -TInt CCamCaptureSetupSlider::MinValue() const - { - return iMinSliderValue; - } - -// ----------------------------------------------------------------------------- -// CCamCaptureSetupSlider::MaxValue -// Returns the maximum slider value -// ----------------------------------------------------------------------------- -// -TInt CCamCaptureSetupSlider::MaxValue() const - { - return iMaxSliderValue; - } - - -// ----------------------------------------------------------------------------- -// CCamCaptureSetupSlider::SetRange -// Sets the minimum and maximum values of the slider control -// ----------------------------------------------------------------------------- -// -void CCamCaptureSetupSlider::SetRange( TInt aMin, TInt aMax ) - { - ASSERT( aMin < aMax ); - iMinSliderValue = aMin; - iMaxSliderValue = aMax; - iNumSliderValues = iMaxSliderValue; - } - - -// ----------------------------------------------------------------------------- -// CCamCaptureSetupSlider::Draw -// Draws the slider -// ----------------------------------------------------------------------------- -// -void CCamCaptureSetupSlider::Draw( const TRect& /*aRect*/ ) const - { - CWindowGc& gc = SystemGc(); - - if( iFullySkinned ) - { - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - MAknsControlContext *cc = AknsDrawUtils::ControlContext( iParentControl ); - AknsDrawUtils::Background( skin, cc, iParentControl, gc, Rect() ); - } - else - { - gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha ); - gc.SetPenSize( TSize (1,1) ); - gc.SetPenStyle( CGraphicsContext::ENullPen ); - gc.SetPenColor( TRgb( 0x00ffffff, KToolBarExtensionBgAlpha ) ); - gc.SetBrushColor( TRgb( KToolbarExtensionBgColor, KToolBarExtensionBgAlpha ) ); - gc.SetBrushStyle( CGraphicsContext::ESolidBrush ); - gc.DrawRect( Rect() ); - } - - // STEP 1: Draw the legend text - TInt count = iLegendArray.Count(); - TInt i = 0; - for ( i = 0; i < count; i++ ) - { - iLegendArray[i]->Draw( gc ); - } - - CFbsBitmap* shaft = iBitmapShaft; - CFbsBitmap* shaftMask = iBitmapShaftMask; - - // Step 2: Draw the shaft bitmap - if ( shaft ) - { - iShaftLayout.DrawImage( gc, shaft, shaftMask ); - } - - // Step 3: Work out the position of the thumb - TPoint thumbPoint = iThumbPoint; - - // This is the max bitmap offset from the top of the shaft that the thumb can be - TInt maxVOffset = iShaftLayout.Rect().Size().iHeight - iBitmapThumb->SizeInPixels().iHeight; - - // This is the no. of pixels for a "step" - TInt stepInPixels = ( maxVOffset * KDivisorFactor ) / iNumSliderValues; - - // Thumb position = top of shaft + delta - TInt nbrSteps = iMaxSliderValue - iValue; - thumbPoint.iY = iShaftLayout.Rect().iTl.iY + stepInPixels * nbrSteps / KDivisorFactor; - - // Step 4: Blit the thumb bitmap - gc.BitBltMasked( thumbPoint, iBitmapThumbCurrent, iBitmapThumb->SizeInPixels(), iBitmapThumbCurrentMask, ETrue ); - } - - -// --------------------------------------------------------- -// CCamCaptureSetupSlider::SizeChanged -// Calculates the new minimum size -// --------------------------------------------------------- -// -void CCamCaptureSetupSlider::SizeChanged() - { - TRAPD( ignore, ReadLayoutL() ); - if ( ignore ) - { - // Do nothing ( removes build warning ) - } - - // Work out the minimum size - TInt count = iLegendArray.Count(); - - TRect minimumRect; - - // Start min rect as first legend text - if ( count > 0 ) - { - minimumRect = iLegendArray[0]->Rect(); - } - - // Take into account the other legend texts - TInt i; - for ( i = 1; i < count; i++ ) - { - minimumRect.BoundingRect( iLegendArray[i]->Rect() ); - } - - // Take into account the shaft bitmap - minimumRect.BoundingRect( iShaftLayout.Rect() ); - - iMinimumSize = minimumRect.Size(); - } - - -// ----------------------------------------------------------------------------- -// CCamCaptureSetupSlider::OfferKeyEventL -// Allows the user to change the current EV value via key presses. -// ----------------------------------------------------------------------------- -// -TKeyResponse CCamCaptureSetupSlider::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ) - { - PRINT( _L("CCamCaptureSetupSlider::OfferKeyEventL") ); - if ( aType == EEventKey ) - { - if ( aKeyEvent.iScanCode == EStdKeyUpArrow ) - { - if ( iValue < iMaxSliderValue ) - { - iValue ++; - iSettingObserver->HandleSettingValueUpdateL( iValue ); // Tell observer about change - DrawNow(); - } - - return EKeyWasConsumed; - } - else if ( aKeyEvent.iScanCode == EStdKeyDownArrow ) - { - if ( iValue > iMinSliderValue ) - { - iValue --; - iSettingObserver->HandleSettingValueUpdateL( iValue ); // Tell observer about change - DrawNow(); - } - - return EKeyWasConsumed; - } - else if ( aKeyEvent.iCode == EKeyOK && aKeyEvent.iRepeats == 0 ) - { - return EKeyWasConsumed; - } - // otherwise, do nothing - else - { - // empty statement to remove Lint error - } - } - return EKeyWasNotConsumed; - } - -// --------------------------------------------------------- -// CCamCaptureSetupSlider::MinimumSize -// --------------------------------------------------------- -// -TSize CCamCaptureSetupSlider::MinimumSize() - { - TSize zerosize = TSize( 0, 0 ); - if ( iMinimumSize == zerosize ) - { - SizeChanged(); - } - return iMinimumSize; - } - - -// --------------------------------------------------------- -// CCamCaptureSetupSlider::ReadLayoutL -// --------------------------------------------------------- -// -void CCamCaptureSetupSlider::ReadLayoutL() - { - TRect shaftRect; - TSize shaftSize; - - AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, - iLayoutAreaRect ); - - // layout area rectangle contains the area, where components need to be - // drawn to. the container size is the whole screen, but the layouts are - // for the client area. aRect is the container size that might include or - // might not include statuspane area. calculating area self will - // go around the problem - - // We're starting again from scratch, so delete the old legend layouts - iLegendArray.ResetAndDestroy(); - if ( CamUtility::IsNhdDevice() ) - { - TouchLayoutL(); - } - else - { - NonTouchLayoutL(); - } - - AknIconUtils::SetSize( iBitmapThumb, - iThumbLayout.Rect().Size(), EAspectRatioPreserved ); - AknIconUtils::SetSize( iBitmapThumbSelected, - iThumbLayout.Rect().Size(), EAspectRatioPreserved ); - - // set the shaft icon size - shaftRect = iShaftLayout.Rect(); - shaftSize = shaftRect.Size(); - AknIconUtils::SetSize( iBitmapShaft, shaftSize, EAspectRatioNotPreserved ); - - // calculate initial thumb position - iThumbPoint = TPoint( shaftRect.iTl.iX + shaftSize.iWidth/2 - - iBitmapThumb->SizeInPixels().iWidth/2, - shaftRect.iTl.iY + shaftSize.iHeight/2 - - iBitmapThumb->SizeInPixels().iHeight/2 ); - } - -// --------------------------------------------------------- -// CCamCaptureSetupSlider::TouchLayoutL -// --------------------------------------------------------- -// -void CCamCaptureSetupSlider::TouchLayoutL() - { - TRect statusPaneRect; - AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EStatusPane, - statusPaneRect ); - iLayoutAreaRect.BoundingRect( statusPaneRect ); - - // Get the slider layout - TAknLayoutRect sliderLayout; - sliderLayout.LayoutRect( iLayoutAreaRect, - AknLayoutScalable_Apps::main_cset_slider_pane( 1 ) ); - TRect sliderRect( sliderLayout.Rect() ); - - // Set the thumb layout and icon size - iThumbLayout.LayoutRect( sliderRect, - AknLayoutScalable_Apps::main_cset_slider_pane_g18( 0 ) ); - - if ( iSettingType == ECamSettingItemDynamicPhotoContrast || - iSettingType == ECamSettingItemDynamicVideoContrast || - iSettingType == ECamSettingItemUserSceneContrast ) - { - // Set the shaft layout and icon size for Contrast slider - iShaftLayout.LayoutRect( sliderRect, - AknLayoutScalable_Apps::cset_slider_pane( 5 ) ); - // set Contrast slider legend layouts - TouchContrastLayoutL( sliderRect ); - } - else - { - // Set the shaft layout and icon size for EV slider - iShaftLayout.LayoutRect( sliderRect, - AknLayoutScalable_Apps::cset_slider_pane( 7 ) ); - // set EV slider legend layouts - TouchEVLayoutL( sliderRect ); - } - } - -// ----------------------------------------------------------------------------- -// CCamCaptureSetupSlider::NonTouchLayout -// ----------------------------------------------------------------------------- -// -void CCamCaptureSetupSlider::NonTouchLayoutL() - { - // Non-touch has a visible title & status panes - TRect titlePaneRect; - AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::ETitlePane, - titlePaneRect ); - iLayoutAreaRect.Move( 0, -titlePaneRect.Height() ); - - iThumbLayout.LayoutRect( Rect(), - AknLayoutScalable_Apps::main_cset6_slider_pane_g1( 2 ) ); - - if ( iSettingType == ECamSettingItemDynamicPhotoContrast || - iSettingType == ECamSettingItemDynamicVideoContrast || - iSettingType == ECamSettingItemUserSceneContrast ) - { - // Set the shaft layout for Contrast slider - iShaftLayout.LayoutRect( Rect(), - AknLayoutScalable_Apps::cset6_slider_pane( 5 ) ); - // set Contrast slider legend layouts - NonTouchContrastLayoutL( Rect() ); - } - else - { - // Set the shaft layout for EV slider - iShaftLayout.LayoutRect( Rect(), - AknLayoutScalable_Apps::cset6_slider_pane( 6 ) ); - // set EV slider legend layouts - NonTouchEVLayoutL( Rect() ); - } - } - -// ----------------------------------------------------------------------------- -// CCamCaptureSetupSlider::TouchContrastLayoutL -// ----------------------------------------------------------------------------- -// -void CCamCaptureSetupSlider::TouchContrastLayoutL( const TRect& aParentRect ) - { - TInt resourceId = ROID(R_CAM_CAPTURE_SETUP_SLIDER_CONTRAST_ARRAY_ID); - TResourceReader reader; - iEikonEnv->CreateResourceReaderLC( reader, resourceId ); - - const TInt count = reader.ReadInt16(); - - // Read all EV entries from the resource file and construct them with layout - for ( TInt i = 0; i < count; i++ ) - { - CCamSliderLegend* legend = new ( ELeave ) CCamSliderLegend( iFullySkinned ); - CleanupStack::PushL( legend ); - switch ( i ) - { - case KContrastPlusInd : - { - legend->ConstructTextL( - reader, - aParentRect, - AknLayoutScalable_Apps::main_cset_slider_pane_t14( 5 ) ); - } - break; - case KContrastMinusInd : - { - legend->ConstructTextL( - reader, - aParentRect, - AknLayoutScalable_Apps::main_cset_slider_pane_t15( 5 ) ); - } - break; - case KContrastIconInd : - { - legend->ConstructIconL( - reader, - aParentRect, - AknLayoutScalable_Apps::main_cset_slider_pane_g15( 2 ) ); - } - break; - default: - { - } - break; - } - User::LeaveIfError( iLegendArray.Append( legend ) ); - CleanupStack::Pop( legend ); - } - - CleanupStack::PopAndDestroy(); // reader - } - -// ----------------------------------------------------------------------------- -// CCamCaptureSetupSlider::NonTouchContrastLayoutL -// ----------------------------------------------------------------------------- -// -void CCamCaptureSetupSlider::NonTouchContrastLayoutL( - const TRect& aParentRect ) - { - TInt resourceId = ROID(R_CAM_CAPTURE_SETUP_SLIDER_CONTRAST_ARRAY_ID); - TResourceReader reader; - iEikonEnv->CreateResourceReaderLC( reader, resourceId ); - - const TInt count = reader.ReadInt16(); - - // Read all EV entries from the resource file - // and construct them with layout - for ( TInt i = 0; i < count; i++ ) - { - CCamSliderLegend* legend = new ( ELeave ) CCamSliderLegend; - CleanupStack::PushL( legend ); - switch ( i ) - { - case KContrastPlusInd : - { - legend->ConstructTextL( - reader, - aParentRect, - AknLayoutScalable_Apps::main_cset6_slider_pane_t14( 5 ) ); - } - break; - case KContrastMinusInd : - { - legend->ConstructTextL( - reader, - aParentRect, - AknLayoutScalable_Apps::main_cset6_slider_pane_t15( 5 ) ); - } - break; - case KContrastIconInd : - { - legend->ConstructIconL( - reader, - aParentRect, - AknLayoutScalable_Apps::main_cset6_slider_pane_g15( 2 ) ); - } - break; - default: - { - } - break; - } - User::LeaveIfError( iLegendArray.Append( legend ) ); - CleanupStack::Pop( legend ); - } - - CleanupStack::PopAndDestroy(); // reader - } - -// ----------------------------------------------------------------------------- -// CCamCaptureSetupSlider::TouchEVLayoutL -// ----------------------------------------------------------------------------- -// -void CCamCaptureSetupSlider::TouchEVLayoutL( const TRect& aParentRect ) - { - TInt resourceId = ROID(R_CAM_CAPTURE_SETUP_SLIDER_EV_ARRAY_ID); - TResourceReader reader; - iEikonEnv->CreateResourceReaderLC( reader, resourceId ); - - const TInt count = reader.ReadInt16(); - - // Read all Contrast entries from the resource file - // and construct them with layout - for ( TInt i = 0; i < count; i++ ) - { - CCamSliderLegend* legend = new ( ELeave ) CCamSliderLegend( iFullySkinned ); - CleanupStack::PushL( legend ); - switch ( i ) - { - case KEVPlus20Ind : - { - legend->ConstructTextL( - reader, - aParentRect, - AknLayoutScalable_Apps::main_cset_slider_pane_t1( 6 ) ); - } - break; - case KEVPlus15Ind : - { - legend->ConstructTextL( - reader, - aParentRect, - AknLayoutScalable_Apps::main_cset_slider_pane_t8( 2 ) ); - } - break; - case KEVPlus10Ind : - { - legend->ConstructTextL( - reader, - aParentRect, - AknLayoutScalable_Apps::main_cset_slider_pane_t2( 3 ) ); - } - break; - case KEVPlus05Ind : - { - legend->ConstructTextL( - reader, - aParentRect, - AknLayoutScalable_Apps::main_cset_slider_pane_t9( 2 ) ); - } - break; - case KEV0Ind : - { - legend->ConstructTextL( - reader, - aParentRect, - AknLayoutScalable_Apps::main_cset_slider_pane_t3( 3 ) ); - } - break; - case KEVMinus05Ind : - { - legend->ConstructTextL( - reader, - aParentRect, - AknLayoutScalable_Apps::main_cset_slider_pane_t10( 2 ) ); - } - break; - case KEVMinus10Ind : - { - legend->ConstructTextL( - reader, - aParentRect, - AknLayoutScalable_Apps::main_cset_slider_pane_t4( 3 ) ); - } - break; - case KEVMinus15Ind : - { - legend->ConstructTextL( - reader, - aParentRect, - AknLayoutScalable_Apps::main_cset_slider_pane_t11( 2 ) ); - } - break; - case KEVMinus20Ind : - { - legend->ConstructTextL( - reader, - aParentRect, - AknLayoutScalable_Apps::main_cset_slider_pane_t5( 3 ) ); - } - break; - default: - { - } - break; - } - User::LeaveIfError( iLegendArray.Append( legend ) ); - CleanupStack::Pop( legend ); - } - - CleanupStack::PopAndDestroy(); // reader - } - - - -// ----------------------------------------------------------------------------- -// CCamCaptureSetupSlider::NonTouchEVLayoutL -// ----------------------------------------------------------------------------- -// -void CCamCaptureSetupSlider::NonTouchEVLayoutL( const TRect& aParentRect ) - { - TInt resourceId = ROID(R_CAM_CAPTURE_SETUP_SLIDER_EV_ARRAY_ID); - TResourceReader reader; - iEikonEnv->CreateResourceReaderLC( reader, resourceId ); - - const TInt count = reader.ReadInt16(); - - // Read all Contrast entries from the resource file - // and construct them with layout - for ( TInt i = 0; i < count; i++ ) - { - CCamSliderLegend* legend = new ( ELeave ) CCamSliderLegend; - CleanupStack::PushL( legend ); - switch ( i ) - { - case KEVPlus20Ind : - { - legend->ConstructTextL( reader, aParentRect, - AknLayoutScalable_Apps::main_cset6_slider_pane_t1( 5 ) ); - } - break; - case KEVPlus15Ind : - { - legend->ConstructTextL( reader, aParentRect, - AknLayoutScalable_Apps::main_cset6_slider_pane_t8( 2 ) ); - } - break; - case KEVPlus10Ind : - { - legend->ConstructTextL( reader, aParentRect, - AknLayoutScalable_Apps::main_cset6_slider_pane_t2( 3 ) ); - } - break; - case KEVPlus05Ind : - { - legend->ConstructTextL( reader, aParentRect, - AknLayoutScalable_Apps::main_cset6_slider_pane_t9( 2 ) ); - } - break; - case KEV0Ind : - { - legend->ConstructTextL( reader, aParentRect, - AknLayoutScalable_Apps::main_cset6_slider_pane_t3( 3 ) ); - } - break; - case KEVMinus05Ind : - { - legend->ConstructTextL( reader, aParentRect, - AknLayoutScalable_Apps::main_cset6_slider_pane_t10( 2 ) ); - } - break; - case KEVMinus10Ind : - { - legend->ConstructTextL( reader, aParentRect, - AknLayoutScalable_Apps::main_cset6_slider_pane_t4( 3 ) ); - } - break; - case KEVMinus15Ind : - { - legend->ConstructTextL( reader, aParentRect, - AknLayoutScalable_Apps::main_cset6_slider_pane_t11( 2 ) ); - } - break; - case KEVMinus20Ind : - { - legend->ConstructTextL( reader, aParentRect, - AknLayoutScalable_Apps::main_cset6_slider_pane_t5( 3 ) ); - } - break; - default: - break; - } - User::LeaveIfError( iLegendArray.Append( legend ) ); - CleanupStack::Pop( legend ); - } - - CleanupStack::PopAndDestroy(); // reader - } - -// ----------------------------------------------------------------------------- -// CCamCaptureSetupSlider::HandlePointerEventL -// Handles slider pointer events -// ----------------------------------------------------------------------------- -// -void CCamCaptureSetupSlider::HandlePointerEventL(const TPointerEvent& aPointerEvent) - { - if( !Rect().Contains(aPointerEvent.iPosition) && iBitmapThumbCurrent != iBitmapThumbSelected ) - { - return; - } - CCoeControl::HandlePointerEventL( aPointerEvent ); - - // This is the max bitmap offset from the top of the shaft that the thumb can be - TInt maxVOffset = iShaftLayout.Rect().Size().iHeight - iBitmapThumb->SizeInPixels().iHeight; - - // This is the no. of pixels for a "step" - TInt stepInPixels = ( maxVOffset * KDivisorFactor ) / iNumSliderValues; - - // Calculate new setting value - TInt oldValue = iValue; - TInt deltaY = aPointerEvent.iPosition.iY - iShaftLayout.Rect().iTl.iY; - TInt nbrSteps = deltaY / ( stepInPixels / KDivisorFactor ); - iValue = iMaxSliderValue - nbrSteps; - - if ( iValue < iMinSliderValue ) - { - iValue = iMinSliderValue; - } - - if (iValue > iMaxSliderValue) - { - iValue = iMaxSliderValue; - } - - if ( iValue != oldValue && aPointerEvent.iType == TPointerEvent::EDrag ) - { - MTouchFeedback* feedback = MTouchFeedback::Instance(); - if ( feedback ) - { - feedback->InstantFeedback( ETouchFeedbackSensitive ); - } - } - - if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) - { - // Change thumb marker to selected - iBitmapThumbCurrent = iBitmapThumbSelected; - iBitmapThumbCurrentMask = iBitmapThumbSelectedMask; - } - - if ( aPointerEvent.iType == TPointerEvent::EButton1Up ) - { - // Change thumb marker to normal - iBitmapThumbCurrent = iBitmapThumb; - iBitmapThumbCurrentMask = iBitmapThumbMask; - } - - iSettingObserver->HandleSettingValueUpdateL( iValue ); // Tell observer about change - DrawNow(); - static_cast( iCoeEnv->AppUi() )-> - AppController().StartIdleTimer(); - } - -// End of File -