camerauis/cameraapp/generic/src/CamZoomModel.cpp
changeset 19 d9aefe59d544
parent 3 8b2d6d0384b0
child 21 fa6d9f75d6a6
child 28 3075d9b614e6
--- a/camerauis/cameraapp/generic/src/CamZoomModel.cpp	Tue Feb 02 00:01:39 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1493 +0,0 @@
-/*
-* Copyright (c) 2007 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:  Controls the state of the zoom*
-*/
-
-
-// Defining this will reduce the wait period between repeated
-// zoom in/out events being sent.  This is just a development
-// test feature.
-
-// INCLUDE FILES
-#include    "CamZoomModel.h"
-#include    "CamZoomPane.h"
-#include    "CamPSI.h"
-#include    "CamUtility.h"
-#include    "CamAppUi.h"
-
-// CONSTANTS
-
-// MACROS
-
-// LOCAL CONSTANTS AND MACROS
-
-// MODULE DATA STRUCTURES
-
-// LOCAL FUNCTION PROTOTYPES
-
-// FORWARD DECLARATIONS
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CCamZoomModel::CCamZoomModel
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CCamZoomModel::CCamZoomModel( CCamAppController& aController, 
-                              CCamZoomPane*      aPane ) 
-  : iCurrentResolution( KErrNotReady ),
-    iController( aController ),
-    iPane( aPane )
-  {
-  }
-
-// -----------------------------------------------------------------------------
-// CCamZoomModel::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CCamZoomModel::ConstructL()
-    {    
-    PRINT( _L( "Camera => CCamZoomModel::ConstructL " ) );
-    
-    // Retrieve the max digital zoom levels
-    TPckgBuf <TCamMaxZoomSteps> pckg;
-    CamUtility::GetPsiAnyL( ECamPsiMaxZoomSteps, &pckg );
-    iDigZoomSteps = pckg();
-
-    // Retrieve the max EXTENDED zoom levels
-    TPckgBuf <TCamMaxZoomSteps> pckg2;
-    CamUtility::GetPsiAnyL( ECamPsiMaxExtendedZoomSteps, &pckg2 );
-    iExtZoomSteps = pckg2();
-        
-    // Retrieve the max OPTICAL zoom levels
-    TPckgBuf <TCamMaxZoomSteps> pckg3;
-    CamUtility::GetPsiAnyL( ECamPsiMaxOpticalZoomSteps, &pckg3 );
-    iOptZoomSteps = pckg3();
-
-    // Retrieve the timing and step values for each of the zoom bar 
-    // modes for Optical/Digital/Extended    
-    TPckgBuf <TCamZoomLAF> pckg4;
-    CamUtility::GetPsiAnyL( ECamPsiZoomBarLAF, &pckg4);
-    iZoomLAF = pckg4();
-    
-    // Setting up initial internal values for zoom levels
-    iCurZoomStepOptical = 0;
-    iCurZoomStepDigital = 0;        
-
-    // Timer used to give smooth zooming    
-    iZoomTimer = CPeriodic::NewL( CActive::EPriorityHigh );          
-    
-    // Register for controller events
-    iController.AddControllerObserverL( this );
-    
-    // Create Zoom Update manager, which is used to 
-    // minimize the amount of times we send updates to
-    // the camera driver.
-    iCamZoomUpdateManager = CCamZoomUpdateManager::NewL( iController );
-    
-    // This class and zoom pane are created on application start.
-    // On app start, we should be setting the zoom to 1x, to 
-    // tidy up incase a previous app has not reset to defaults.
-    ResetZoomTo1x();
-    
-    PRINT( _L( "Camera <= CCamZoomModel::ConstructL " ) );
-    }
-
-// -----------------------------------------------------------------------------
-// CCamZoomModel::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CCamZoomModel* CCamZoomModel::NewL( CCamAppController& aController, CCamZoomPane* aPane )
-    {
-    CCamZoomModel* self = new( ELeave ) CCamZoomModel( aController, aPane );
-    
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop();
-
-    return self;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCamZoomModel::~CCamZoomModel
-// Destructor.
-// -----------------------------------------------------------------------------
-//
-CCamZoomModel::~CCamZoomModel()
-  {
-  PRINT( _L("Camera => ~CCamZoomModel" ))  
-  
-  iController.RemoveControllerObserver( this );
-  if ( iZoomTimer && iZoomTimer->IsActive() )
-    {    
-    iZoomTimer->Cancel();
-    }
-  delete iZoomTimer;    
-  
-  if ( iCamZoomUpdateManager && iCamZoomUpdateManager->IsActive() )
-    {    
-    iCamZoomUpdateManager->Cancel();
-    }
-  delete iCamZoomUpdateManager;    
-    
-  iPane = NULL;   // Not owned
-  PRINT( _L("Camera <= ~CCamZoomModel" ))  
-  }
-
-// -----------------------------------------------------------------------------
-// CCamZoomModel::ZoomTo
-// Attempts to zoom to a specified value.
-// -----------------------------------------------------------------------------
-//
-void CCamZoomModel::ZoomTo( TInt aValue )
-    {    
-    PRINT( _L( "Camera => CCamZoomModel::ZoomTo " ) );
-    // Note: The following code only supports digital or 
-    // digital+extended zoom combinations.  
-    // Optical zoom is not taken into consideration.
-    
-    // avoid mixups between button and touch presses
-    if ( ZoomingState() != ECamZoomModelStateZoomNone )
-        {
-        PRINT( _L( "Camera <> CCamZoomModel::ZoomTo stopping keypress zoom" ) );
-        StopZoom();
-        }
-    
-    // Start the zoom state
-    iState = ECamZoomModelStateZoomTo;
-    
-    // We don't support pausing between boundaries.  If the 
-    // user experience so requires, it should be implemented here.
-     
-    // Update the zoom values
-    // Note: Both digital and extended zoom are represented by iCurZoomStepDigital.
-    // We assume the maximum value is already checked 
-    // in CCamZoomPane::StartTouchZoomL
-    PRINT1( _L( "Camera <> CCamZoomModel::ZoomTo iMaxZoomStepDig=%d" ), iMaxZoomStepDig ); 
-    PRINT1( _L( "Camera <> CCamZoomModel::ZoomTo iMaxZoomStepExt=%d" ), iMaxZoomStepExt ); 
-    PRINT1( _L( "Camera <> CCamZoomModel::ZoomTo iCurZoomStepDigital=%d" ), iCurZoomStepDigital ); 
-    iCurZoomStepDigital = aValue;
-    if ( iCurZoomStepDigital < iMaxZoomStepDig )
-        {
-        CheckZoomMode( ECamZoomModeExtended );
-        }
-    else
-        {
-        CheckZoomMode( ECamZoomModeDigital );
-        }
-            
-    // Notify the camera driver
-    PRINT1( _L( "Camera <> CCamZoomModel::ZoomTo to (aValue) %d" ), aValue );
-    iCamZoomUpdateManager->SetZoomValue( iCurZoomStepDigital );
-    
-    // Tell the zoom pane the value to show.
-    PRINT1( _L( "CCamZoomModel::ZoomTo set zoom pane %d" ), CurrentZoom() );
-    iPane->SetZoomValue( CurrentZoom() );
-        
-    // Clear the zoom state
-    iState = ECamZoomModelStateZoomNone; 
-                    
-    PRINT( _L( "Camera <= CCamZoomModel::ZoomTo " ) );
-    }
-    
-// -----------------------------------------------------------------------------
-// CCamZoomModel::ZoomIn
-// Attempts to zoom in one step (if one more step available).
-// -----------------------------------------------------------------------------
-//
-void CCamZoomModel::ZoomIn( TBool aOneClick )
-    {    
-    PRINT( _L( "Camera => CCamZoomModel::ZoomIn " ) );
-    iState = ECamZoomModelStateZoomIn;
-    TInt optZoomJump = 0;
-    TInt digZoomJump = 0;    
-    TInt extZoomJump = 0;
-    
-    ZoomStepsToJump( optZoomJump, digZoomJump, extZoomJump );
-    PRINT3( _L( "CCamZoomModel::ZoomIn steps opt(%d) dig(%d) ext(%d) " ), optZoomJump, digZoomJump, extZoomJump );
-    
-    // First of all, check what the current boundary condition is
-    // then check if we need to pause at that boundary.
-    PRINT( _L( "ZoomIn boundary check start" ) );
-    
-    TCamZoomBoundary boundary = CheckBoundary();
-    if ( PauseAtBoundary( boundary ) )
-        {        
-        if ( iPauseState == EPauseStateNone )
-            {
-            PRINT( _L( "ZoomIn at boundary EPauseStateNone return" ) );
-            // If this is a new pause, update the state and return
-            // (no zoom allowed until release)
-            iPauseState = EPauseStatePaused;
-            return;
-            }
-        else if ( iPauseState == EPauseStatePaused )
-            {
-            PRINT( _L( "ZoomIn at boundary EPauseStatePaused return" ) );
-            // If still paused, return (no zoom allowed until release)
-            return;
-            }
-        else // EPauseStateReleased
-            {
-            PRINT( _L( "ZoomIn at boundary EPauseStateReleased allow" ) );
-            // If released, allow the zoom, but set the state
-            // back to none.  
-            iPauseState = EPauseStateNone;
-            }
-        }
-        
-    PRINT( _L( "ZoomIn at boundary EPauseStateNone boundary check end" ) );
-        
-    if ( optZoomJump )        
-        {
-        CheckZoomMode( ECamZoomModeOptical );
-        iCurZoomStepOptical += optZoomJump;
-        PRINT1( _L( "Camera => CCamZoomModel::ZoomIn opt to %d" ), iCurZoomStepOptical );
-        //iController.SetZoomValue( iCurZoomStepOptical );            
-        iCamZoomUpdateManager->SetZoomValue( iCurZoomStepOptical );
-        }
-        
-    if ( digZoomJump )        
-        {
-        CheckZoomMode( ECamZoomModeDigital );
-        iCurZoomStepDigital += digZoomJump;
-        PRINT1( _L( "Camera => CCamZoomModel::ZoomIn dig to %d" ), iCurZoomStepDigital );
-        //iController.SetZoomValue( iCurZoomStepDigital );              
-        iCamZoomUpdateManager->SetZoomValue( iCurZoomStepDigital );
-        }
-        
-    if ( extZoomJump )
-        {
-        CheckZoomMode( ECamZoomModeExtended );
-        iCurZoomStepDigital += extZoomJump;
-        PRINT1( _L( "Camera => CCamZoomModel::ZoomIn ext to %d" ), iCurZoomStepDigital );
-        //iController.SetZoomValue( iCurZoomStepDigital );              
-        iCamZoomUpdateManager->SetZoomValue( iCurZoomStepDigital );
-        }
-
-    // Tell the zoom pane the value to show.
-    PRINT1( _L( "CCamZoomModel::ZoomIn set zoom pane %d" ), CurrentZoom() );
-    iPane->SetZoomValue( CurrentZoom() );
-                    
-    if ( aOneClick )
-        {
-        // Do not start zoom timer
-        PRINT( _L( "CCamZoomModel::ZoomIn one click" ) );
-        iState = ECamZoomModelStateZoomNone;
-        }
-    else
-        {
-        // Start the timer to zoom-in again when timer expires
-        PRINT( _L( "CCamZoomModel::ZoomIn start zoom timer" ) );
-        StartZoomTimer();
-        }
-    
-    PRINT( _L( "Camera <= CCamZoomModel::ZoomIn " ) );
-    }
-
-// ---------------------------------------------------------------------------
-// CCamZoomModel::CheckBoundary
-// Checks whether the next zoom operation will cross a zoom mode boundary.
-// For example from Optical to Digital or from Digital to Extended
-// ---------------------------------------------------------------------------
-//    
-CCamZoomModel::TCamZoomBoundary CCamZoomModel::CheckBoundary() const
-    {
-    PRINT( _L( "Camera => CCamZoomModel::CheckBoundary " ) );
-    
-    TCamZoomBoundary retVal = ECamZoomBoundaryNone;        
-    
-    TCamZoomMode modeBefore = CurrentZoomType();
-    TCamZoomMode modeAfter  = CurrentZoomType( ZoomStepsToJump() );
-    
-    if ( modeBefore != modeAfter )
-        {
-        if ( modeBefore == ECamZoomModeOptical && modeAfter  == ECamZoomModeDigital ||
-             modeBefore == ECamZoomModeDigital && modeAfter  == ECamZoomModeOptical )
-            {
-            PRINT( _L( "Camera <> CCamZoomModel::CheckBoundary ECamZoomBoundaryOptDig" ) );
-            retVal = ECamZoomBoundaryOptDig;
-            }
-        else if ( modeBefore == ECamZoomModeExtended && modeAfter  == ECamZoomModeDigital ||
-                  modeBefore == ECamZoomModeDigital && modeAfter  == ECamZoomModeExtended )
-            {
-            PRINT( _L( "Camera <> CCamZoomModel::CheckBoundary ECamZoomBoundaryDigExt" ) );
-            retVal = ECamZoomBoundaryDigExt;
-            }        
-        else
-            {
-            // Undefined boundary, should not allow further zooming
-            PRINT( _L( "Camera <> CCamZoomModel::CheckBoundary ECamZoomBoundaryUndefined" ) );
-            retVal = ECamZoomBoundaryUndefined;
-            }
-        }
-     else
-        {
-        PRINT( _L( "Camera <> CCamZoomModel::CheckBoundary ECamZoomBoundaryNone" ) );
-        retVal = ECamZoomBoundaryNone;
-        }
-    
-    PRINT( _L( "Camera <= CCamZoomModel::CheckBoundary " ) );
-    return retVal;   
-    }
-    
-    
-// ---------------------------------------------------------------------------
-// CCamZoomModel::ZoomStepsToJump
-// Returns the total number of zoom steps to jump based on the current 
-// zoom mode (opt/dig/ext). Does not break these steps into optical/digital
-// steps to jump, as may be the case on a boundary.
-// ---------------------------------------------------------------------------
-//      
-TInt CCamZoomModel::ZoomStepsToJump() const
-    {      
-    PRINT( _L( "Camera => CCamZoomModel::ZoomStepsToJump " ) );
-    
-    TInt steps = 0;
-    
-    if ( iController.ActiveCamera() == ECamActiveCameraPrimary )    
-        {            
-        // Works out the current zoom mode (opt/dig/ext)
-        TCamZoomMode mode = CurrentZoomType();    
-        PRINT1( _L( "Camera <> CCamZoomModel::ZoomStepsToJump mode = %d" ), mode );
-        
-        if ( mode == ECamZoomModeOptical )
-            {        
-            steps = iZoomLAF.iZoomStepsOpt;
-            PRINT1( _L( "Camera <> CCamZoomModel::ZoomStepsToJump ECamZoomModeOptical steps = %d" ), steps );
-            }
-        else if ( mode == ECamZoomModeDigital )
-            {
-            steps = iZoomLAF.iZoomStepsDig;
-            PRINT1( _L( "Camera <> CCamZoomModel::ZoomStepsToJump ECamZoomModeDigital steps = %d" ), steps );
-            }
-        else if ( mode == ECamZoomModeExtended )    
-            {
-            steps = iZoomLAF.iZoomStepsExt;
-            PRINT1( _L( "Camera <> CCamZoomModel::ZoomStepsToJump ECamZoomModeExtended steps = %d" ), steps );
-            }    
-        else
-            {
-            steps = 0;            
-            }   
-        }
-    else if ( iController.ActiveCamera() == ECamActiveCameraSecondary )
-        {
-        //steps = K2ndCamZoomStepSize;
-        steps = iZoomLAF.iSecondCameraZoomSteps;
-        PRINT1( _L( "Camera <> CCamZoomModel::ZoomStepsToJump K2ndCamZoomStepSize steps = %d" ), steps );
-        }
-    else
-        {            
-        }
-        
-        
-    if ( iState == ECamZoomModelStateZoomOut )        
-        {
-        steps = -steps;    
-        PRINT1( _L( "Camera <> CCamZoomModel::ZoomStepsToJump Inverse, since ZoomOut: steps = %d" ), steps );
-        }
-        
-    PRINT( _L( "Camera <= CCamZoomModel::ZoomStepsToJump " ) );
-    return steps;                           
-    }
-
-// ---------------------------------------------------------------------------
-// CCamZoomModel::ZoomStepsToJump
-// Returns the number of Optical, Digital and Extended zoom steps to jump
-// ---------------------------------------------------------------------------
-//  
-void CCamZoomModel::ZoomStepsToJump( TInt& aOpt, TInt& aDig, TInt& aExt ) const
-    {  
-    PRINT( _L( "Camera => CCamZoomModel::ZoomStepsToJump (by reference)" ) );
-    
-    TInt steps = ZoomStepsToJump();
-
-    TCamZoomBoundary boundary = CheckBoundary();
-    
-    // If jumping this number of steps will make us cross the boundary, 
-    // we need to split the steps up into the composite opt/dig steps.
-    // Depending on if we are pausing or not, we may not want to cross
-    // the boundary yet
-    if ( boundary == ECamZoomBoundaryOptDig )
-        {
-        if ( iState == ECamZoomModelStateZoomIn )
-            {
-            // Zooming in, then assign what we can to Optical, to get to max step
-            // any remainder then goes to digital
-            TInt optJumpMax = iMaxZoomStepOpt - iCurZoomStepOptical;
-            aOpt = optJumpMax;
-            aDig = steps - optJumpMax;
-            
-            // If the zoom in was going to take the digital zoom beyond the max
-            // allowed, clip it
-            if ( aDig > iMaxZoomStepDig )
-                aDig = iMaxZoomStepDig;
-            }
-        else if ( iState == ECamZoomModelStateZoomOut )        
-            {
-            // Zooming out, then assign what we can to Digital, to get to min step
-            // any remainder then goes to optical            
-            aDig = -iCurZoomStepDigital;                
-            aOpt = steps + iCurZoomStepDigital; // zooming out, steps is -ve
-            }
-		else
-			{
-			// Lint
-			}
-        }
-    else if ( boundary == ECamZoomBoundaryDigExt )
-        {
-        if ( iState == ECamZoomModelStateZoomIn )
-            {
-            // Zooming in, then assign what we can to Optical, to get to max step
-            // any remainder then goes to digital
-            TInt digJumpMax = iMaxZoomStepDig - iCurZoomStepDigital;
-            aDig = digJumpMax;
-            aExt = steps - digJumpMax;
-            
-            // If the zoom in was going to take the digital zoom beyond the max
-            // allowed, clip it
-            if ( aExt > iMaxZoomStepExt )
-                aExt = iMaxZoomStepExt;            
-            }
-        else if ( iState == ECamZoomModelStateZoomOut )        
-            {
-            // Zooming out, then assign what we can to Digital, to get to min step
-            // any remainder then goes to optical            
-            //aDig = iCurZoomStepDigital;
-            aDig = steps;
-            //aExt = steps - iCurZoomStepDigital;                            
-            }
-        else
-        	{
-        	// Lint
-        	}
-        }        
-    else if ( boundary == ECamZoomBoundaryNone )
-        {
-        // No boundary crossed.  Can assign the steps to the current
-        // mode        
-        TCamZoomMode mode = CurrentZoomType();
-        
-        if ( iState == ECamZoomModelStateZoomIn )
-            {           
-            if ( mode == ECamZoomModeOptical && AllowOptZoom() )
-                {
-                aOpt = steps;
-                if ( iCurZoomStepOptical + aOpt > iMaxZoomStepOpt )
-                    {
-                    aOpt = iMaxZoomStepOpt - iCurZoomStepOptical;                            
-                    }                    
-                }
-            else if ( mode == ECamZoomModeDigital && AllowDigZoom() )
-                {
-                aDig = steps;    
-                if ( iCurZoomStepDigital + aDig > iMaxZoomStepDig )
-                    {
-                    aDig = iMaxZoomStepDig - iCurZoomStepDigital;                
-                    }                    
-                }
-            else if ( mode == ECamZoomModeExtended && AllowExtZoom() )
-                {
-                aExt = steps;                        
-                if ( iCurZoomStepDigital + aExt > iMaxZoomStepExt )
-                    {
-                    aExt = iMaxZoomStepExt - iCurZoomStepDigital;    
-                    }                    
-                }               
-            else
-                {
-                // Do nothing (as invalid state)
-                }                                             
-            }
-        else if ( iState == ECamZoomModelStateZoomOut ) 
-            {                
-            if ( mode == ECamZoomModeOptical && AllowOptZoom() )
-                {
-                aOpt = steps;
-                if ( iCurZoomStepOptical + aOpt < 0 )
-                    {
-                    aOpt = -iCurZoomStepOptical;                            
-                    }                    
-                }
-            else if ( mode == ECamZoomModeDigital && AllowDigZoom() )
-                {
-                aDig = steps;    
-                if ( iCurZoomStepDigital + aDig < 0 )
-                    {
-                    aDig = -iCurZoomStepDigital;                
-                    }                    
-                }
-            else if ( mode == ECamZoomModeExtended && AllowExtZoom() )
-                {
-                aExt = steps;                        
-                if ( iCurZoomStepDigital + aExt < iMaxZoomStepDig )
-					{
-                    aExt = iMaxZoomStepDig - iCurZoomStepDigital;
-					}
-                }        
-            else
-                {
-                // Do nothing (as invalid state)
-                }                        
-            }
-		else
-			{
-			// Lint
-			}            
-        }       
-    else // ECamZoomBoundaryUndefined
-        {
-        // If undefined boundary, this would result in an invalid
-        // zoom valid if we zoom, so set all steps to zero.        
-        // This will stop any zoom operation from changing state.
-        aOpt = 0;
-        aDig = 0;
-        aExt = 0;
-        }
-        
-    PRINT( _L( "Camera <= CCamZoomModel::ZoomStepsToJump " ) );
-    }
-    
-    
-// ---------------------------------------------------------------------------
-// CCamZoomModel::CurrentZoomType
-// Returns the zoom type (opt/dig/ext) based on current zoom levels modified
-// by the specified optical/digital valies
-// ---------------------------------------------------------------------------
-//   
-TCamZoomMode CCamZoomModel::CurrentZoomType( TInt aStepModifier ) const
-    {
-    PRINT( _L( "Camera => CCamZoomModel::CurrentZoomType " ) );
-    
-    TInt maxOptZoomStep = ( iMaxZoomStepOpt == KErrNotSupported || !AllowOptZoom() )? 0 : iMaxZoomStepOpt;
-    TInt maxStdZoomStep = ( iMaxZoomStepDig == KErrNotSupported || !AllowDigZoom() )? maxOptZoomStep : maxOptZoomStep + iMaxZoomStepDig;
-    TInt maxExtZoomStep = ( iMaxZoomStepExt == KErrNotSupported || !AllowExtZoom() )? maxStdZoomStep : maxStdZoomStep + iMaxZoomStepExt;   
-    
-    // 
-    TInt step = CurrentZoom() + aStepModifier;    
-        
-    // Optical runs from step 0 to maxOptZoomStep
-    if ( step <= maxOptZoomStep && // Not at max opt zoom level        
-         AllowOptZoom() )          // ... and optical zoom is allowed        
-        {
-        PRINT( _L( "Camera <= CCamZoomModel::CurrentZoomType ECamZoomModeOptical" ) );
-        return ECamZoomModeOptical;
-        }
-    // Digital runs from maxOptZoomStep to maxOptZoomStep+maxStdZoomStep
-    else if ( step >= maxOptZoomStep &&
-              step <= maxStdZoomStep && // Inside std zoom step limits
-              AllowDigZoom() )          // ...and is allowed by user setting
-        {
-        PRINT( _L( "Camera <= CCamZoomModel::CurrentZoomType ECamZoomModeDigital" ) );
-        return ECamZoomModeDigital;
-        }
-    // Extended runs from maxOptZoomStep+maxStdZoomStep to maxOptZoomStep+maxStdZoomStep        
-    else if ( step >= maxStdZoomStep &&
-              step <= maxExtZoomStep &&   // Inside ext zoom step limits
-              AllowExtZoom() )            // ...and ext zoom is allowed by user
-        {
-        PRINT( _L( "Camera <= CCamZoomModel::CurrentZoomType ECamZoomModeExtended" ) );
-        return ECamZoomModeExtended;
-        }
-    else
-        {
-        PRINT( _L( "Camera <= CCamZoomModel::CurrentZoomType ECamZoomModeUndefined" ) );
-        return ECamZoomModeUndefined;
-        }                   
-    }
-
-// -----------------------------------------------------------------------------
-// CCamZoomModel::ZoomOut
-// Attempts to zoom out one step (if one more step available).
-// -----------------------------------------------------------------------------
-//
-void CCamZoomModel::ZoomOut( TBool aOneClick )
-    {        
-    PRINT( _L( "Camera => CCamZoomModel::ZoomOut " ) );
-    iState = ECamZoomModelStateZoomOut;
-    TInt optZoomJump = 0;
-    TInt digZoomJump = 0;    
-    TInt extZoomJump = 0; 
-    
-    ZoomStepsToJump( optZoomJump, digZoomJump, extZoomJump );
-    PRINT3( _L( "CCamZoomModel::ZoomOut steps opt(%d) dig(%d) ext(%d) " ), optZoomJump, digZoomJump, extZoomJump );
-    
-    if ( optZoomJump )        
-        {
-        CheckZoomMode( ECamZoomModeOptical );
-        iCurZoomStepOptical += optZoomJump;
-        PRINT1( _L( "Camera => CCamZoomModel::ZoomOut opt to %d" ), iCurZoomStepOptical );
-        //iController.SetZoomValue( iCurZoomStepOptical );            
-        iCamZoomUpdateManager->SetZoomValue( iCurZoomStepOptical );
-        }
-        
-    if ( digZoomJump )        
-        {
-        CheckZoomMode( ECamZoomModeDigital );
-        iCurZoomStepDigital += digZoomJump;
-        PRINT1( _L( "Camera => CCamZoomModel::ZoomOut dig to %d" ), iCurZoomStepDigital );
-        //iController.SetZoomValue( iCurZoomStepDigital );              
-        iCamZoomUpdateManager->SetZoomValue( iCurZoomStepDigital );
-        }
-        
-    if ( extZoomJump )
-        {
-        CheckZoomMode( ECamZoomModeExtended );
-        iCurZoomStepDigital += extZoomJump;
-        PRINT1( _L( "Camera => CCamZoomModel::ZoomOut ext to %d" ), iCurZoomStepDigital );
-        //iController.SetZoomValue( iCurZoomStepDigital );           
-        iCamZoomUpdateManager->SetZoomValue( iCurZoomStepDigital );   
-        }    
-
-    // Tell the zoom pane the value to show.
-    PRINT1( _L( "ZoomOut set zoom pane %d" ), CurrentZoom() );
-    iPane->SetZoomValue( CurrentZoom() );    
-
-    if ( aOneClick )
-        {
-        // Do not start zoom timer
-        PRINT( _L( "CCamZoomModel::ZoomIn one click" ) );
-        iState = ECamZoomModelStateZoomNone;
-        }
-    else
-        {
-        // Start the timer to zoom-in again when timer expires
-        PRINT( _L( "CCamZoomModel::ZoomIn start zoom timer" ) );
-        StartZoomTimer();
-        }
-    
-    PRINT( _L( "Camera <= CCamZoomModel::ZoomOut " ) );
-    }
-
-// -----------------------------------------------------------------------------
-// CCamZoomModel::CheckZoomMode
-// Checks to see if the zoom mode needs to be changed.
-// The purpose is to avoid unneccessary calls to SetZoomMode where possible
-// -----------------------------------------------------------------------------
-//
-void CCamZoomModel::CheckZoomMode( TCamZoomMode aMode )
-  {
-  PRINT( _L( "Camera => CCamZoomModel::CheckZoomMode " ) );
-  if ( iZoomMode             != aMode 
-    && ECamZoomModeUndefined != aMode )
-    {
-    //iController.SetZoomMode( aMode );
-    PRINT2( _L( "Camera <> CCamZoomModel::CheckZoomMode iZoomMode changed (%d) -> (%d) " ), aMode, iZoomMode );
-    iZoomMode = aMode;
-    }
-  PRINT( _L( "Camera <= CCamZoomModel::CheckZoomMode " ) );  
-  }
-
-// -----------------------------------------------------------------------------
-// CCamZoomModel::RefreshSettings
-// Checks the current state of the Camera application, and adjusts the min/max
-// range of the zoom pane accordingly.
-// -----------------------------------------------------------------------------
-//
-void CCamZoomModel::RefreshSettings()
-  {
-  PRINT( _L("Camera => CCamZoomModel::RefreshSettings") );
-  // If there is no active camera yet, or engine is not 
-  // in a prepared state yet, do not try to refresh settings
-  // as we can't work out what to base it on.
-
-  // <CAMERAAPP_CAPI_V2_MIGRATION/>
-  if( iController.ActiveCamera() == ECamActiveCameraNone 
-   || !( iCameraState & (ECamImageOn|ECamVideoOn) ) 
-    ) 
-    {
-    return;
-    }        
-
-  // Cache the current resolution to be used when 
-  // determining zoom limits and steps.
-  ReadCurrentResolution();      
-
-  // Read settings to update internal state        
-  ReadOpticalZoomSetting();
-  ReadDigitalZoomSetting();
-
-  iMaxZoomStepOpt = MaxZoomStep( iOptZoomSteps );
-  iMaxZoomStepDig = MaxZoomStep( iDigZoomSteps );
-  iMaxZoomStepExt = MaxZoomStep( iExtZoomSteps );
-      
-  iMaxZoomStep = 0;
-
-  PRINT3( _L("Camera <> CCamZoomModel: max steps opt:%d dig:%d ext:%d"), iMaxZoomStepOpt, iMaxZoomStepDig, iMaxZoomStepExt );
-
-  if ( AllowOptZoom() )
-    {        
-    iMaxZoomStep += iMaxZoomStepOpt;        
-    }
-    
-  // Check if Digital zoom is allowed
-  if ( AllowDigZoom() )
-    {                
-    // Check if EXTENDED zoom is allowed by user setting
-    // and the value is valid.  For secondary camera, it may
-    // be that it is not supported.
-    if ( AllowExtZoom() ) // done in AllowExtZoom: && iMaxZoomStepExt != KErrNotSupported)
-      {                                        
-      iMaxZoomStep += iMaxZoomStepExt;        
-      }
-    else
-      {            
-      iMaxZoomStep += iMaxZoomStepDig;        
-      }
-    }
-
-  TInt optSteps = ( AllowOptZoom() ) ? iMaxZoomStepOpt : 0; 
-  TInt stdSteps = ( AllowDigZoom() ) ? iMaxZoomStepDig : 0;
-  TInt extSteps = ( AllowExtZoom() ) ? Max( (iMaxZoomStepExt - iMaxZoomStepDig), 0 ) : 0;
-          
-  // Check that the max zoom is within (possibly new) limits
-  CheckZoomLimit();
-  
-  if ( iPane )
-    {
-    // Inform the zoom pane of the new range of zoom steps
-    iPane->SetZoomRange( 0, iMaxZoomStep ); 
-    iPane->SetZoomSteps( optSteps, stdSteps, extSteps );        
-    iPane->SetZoomValue( CurrentZoom() );
-    }
-
-  PRINT( _L("Camera <= CCamZoomModel::RefreshSettings") );
-  }
-    
-    
-// -----------------------------------------------------------------------------
-// CCamZoomModel::ReadDigitalZoomSetting
-// Updates the setting for digital/extended zoom or not depending if user 
-// setting for it is on AND we have a valid setting for it.
-// -----------------------------------------------------------------------------
-//    
-void CCamZoomModel::ReadDigitalZoomSetting()
-    {        
-    iZoomSetting = static_cast<TCamSettingsDigitalZoom>(
-        iController.IntegerSettingValue( ECamSettingItemPhotoDigitalZoom ) );    
-    }
-
-
-
-// -----------------------------------------------------------------------------
-// CCamZoomModel::ReadOpticalZoomSetting
-// Reads whether optical zoom is allowed
-// -----------------------------------------------------------------------------
-//    
-void CCamZoomModel::ReadOpticalZoomSetting()
-    {     
-    }    
-    
-    
-// -----------------------------------------------------------------------------
-// CCamZoomModel::CheckZoomLimit
-// Checks whether the current zoom level is too great for the limits.
-// This can happen if the resolution is changed, as this may result in new limits
-// The zoom level should be cropped to where appropriate
-// -----------------------------------------------------------------------------
-//      
-void CCamZoomModel::CheckZoomLimit()
-    {    
-    TInt maxOptZoomStep = MaxZoomStep( iOptZoomSteps );
-    TInt maxStdZoomStep = MaxZoomStep( iDigZoomSteps );
-    TInt maxExtZoomStep = MaxZoomStep( iExtZoomSteps );
-
-    if ( AllowOptZoom() &&                      // If settings allow optical zoom, 
-         iCurZoomStepOptical > maxOptZoomStep ) // ...and value now too high
-        {
-        iCurZoomStepOptical = maxOptZoomStep;
-        // iController.SetZoomMode ( ECamZoomModeOptical );
-        iController.SetZoomValue( iCurZoomStepOptical );                                         
-        }
-
-    if ( AllowDigZoom()                        // If digital zoom is allowed
-      && iCurZoomStepDigital > maxStdZoomStep  // and value now too high
-      && !AllowExtZoom() )                     // and extended not allowed
-        {
-        // If we get here, digital zoom IS allowed, but extended isn't
-        // and the digital zoom is too high.
-        iCurZoomStepDigital = maxStdZoomStep;
-        //iController.SetZoomMode ( ECamZoomModeDigital );
-        iController.SetZoomValue( iCurZoomStepDigital );                                                        
-        }
-    else if ( AllowExtZoom()                         // If extended digitial zoom is allowed
-           && iCurZoomStepDigital > maxExtZoomStep ) // but over the max extended range
-        {        
-        iCurZoomStepDigital = maxExtZoomStep;
-        // iController.SetZoomMode ( ECamZoomModeDigital );
-        iController.SetZoomValue( iCurZoomStepDigital );                                                                    
-        }
-    // otherwise, do nothing
-    else
-        {
-        // empty statement to remove Lint error.
-        }
-        
-    // If we have had to manually set the mode and value of zoom, 
-    // make sure that the zoom mode is still set to what internal state
-    // dictates it should be.    
-
-    /*
-    if ( iZoomMode == ECamZoomModeOptical )
-        {
-        iController.SetZoomMode( ECamZoomModeOptical );
-        }
-    else if ( iZoomMode == ECamZoomModeDigital ||
-              iZoomMode == ECamZoomModeExtended )
-        {
-        iController.SetZoomMode( ECamZoomModeDigital );
-        }            
-    // otherwise, do nothing
-    else
-        {
-        // empty statement to remove Lint error.
-    */
-    }
- 
-// -----------------------------------------------------------------------------
-// CCamZoomModel::ResetZoomTo1x
-// Resets the zoom level to 1x.
-// -----------------------------------------------------------------------------
-//    
-void CCamZoomModel::ResetZoomTo1x()
-  {
-  PRINT( _L( "Camera => CCamZoomModel::ResetZoomTo1x " ) );
-  // Recalculates the min/max values for the zoom pane and
-  // forwards them to the control.
-  RefreshSettings();        
-  
-  // Reset the actual values used by the engine
-  iCurZoomStepOptical = 0;
-  iCurZoomStepDigital = 0;
-  
-  iZoomMode = ECamZoomModeUndefined;
-  
-  // Only digital mode supported for now.        
-  //iController.SetZoomMode( ECamZoomModeDigital );
-  iController.SetZoomValue( iCurZoomStepDigital );                                
-  if ( iPane )
-    {
-    iPane->SetZoomValue( 0 );
-    iPane->MakeVisible( EFalse, EFalse );
-    }
-    
-  PRINT( _L( "Camera <= CCamZoomModel::ResetZoomTo1x " ) );
-  }        
-        
-
-// -----------------------------------------------------------------------------
-// CCamZoomModel::MaxZoomStep
-// Returns the maximum zoom step for the supplied step array 
-// (optical/digital/extended), based on current camera state.
-// -----------------------------------------------------------------------------
-//
-TInt CCamZoomModel::MaxZoomStep( const TCamMaxZoomSteps& aStepArray ) const
-    {        
-    PRINT( _L( "Camera => CCamZoomModel::MaxZoomStep " ) );
-    
-    TInt maxStep = KErrNotSupported;
-    if ( iCameraState & ECamImageOn )
-        {                
-        // TCamPhotoSizeId  sizeId = iController.GetCurrentImageResolution();
-        TCamActiveCamera camera = iController.ActiveCamera();
-        if ( ECamActiveCameraPrimary == camera )
-            {
-            // switch ( sizeId )
-            switch ( iCurrentResolution )
-                {
-                case ECamPhotoSizeVGA:       // 640 x 480
-                    maxStep = aStepArray.iMaxPhotoStepVGA;
-                    break;
-                case ECamPhotoSizeXGA: 	// 0.8MegaPixel (1024 x 768 )
-                    maxStep = aStepArray.iMaxPhotoStep0_8MP;
-                    break;
-                case ECamPhotoSize1MP:
-                    maxStep = aStepArray.iMaxPhotoStep1MP;
-                    break;
-                case ECamPhotoSize1_3MP:     // 1280x960
-                    maxStep = aStepArray.iMaxPhotoStep1_3MP;
-                    break;
-                case ECamPhotoSize2MP:       // 1600x1200
-                    maxStep = aStepArray.iMaxPhotoStep2MP;
-                    break;
-                case ECamPhotoSize3MP:       // 
-                    maxStep = aStepArray.iMaxPhotoStep3MP;
-                    break;  
-                case ECamPhotoSize5MP:
-                    maxStep = aStepArray.iMaxPhotoStep5MP;
-                    break;
-                case ECamPhotoSize8MP:
-                    maxStep = aStepArray.iMaxPhotoStep8MP;
-                    break;                    
-                case ECamPhotoSize12MP:
-                    maxStep = aStepArray.iMaxPhotoStep12MP;
-                    break;
-                case ECamPhotoSizeW6MP: // 3264x1832
-                    maxStep = aStepArray.iMaxPhotoStepW6MP;
-                    break;                    
-                case ECamPhotoSizeW9MP: // 4000x2248
-                    maxStep = aStepArray.iMaxPhotoStepW9MP;
-                    break;                    
-                default: 
-                    break;
-                }                
-            }
-        else if ( ECamActiveCameraSecondary == camera  )
-            {
-            maxStep = aStepArray.iMax2ndCamPhotoStep;
-            }  
-        // otherwise, do nothing
-        else
-            {
-            // empty statement to remove Lint error.
-            }      
-        }
-    else if ( iCameraState & ECamVideoOn )
-        {
-        // TCamVideoResolution resId = iController.GetCurrentVideoResolution();        
-
-        if ( iController.ActiveCamera() == ECamActiveCameraPrimary )
-            {        
-            // switch ( resId )
-            switch ( iCurrentResolution )            
-                {
-                case ECamVideoResolutionSubQCIF:     // Small (128 x 96)
-                    maxStep = aStepArray.iMaxVideoStepSQCIF;
-                    break;
-                case ECamVideoResolutionQCIF:        // Medium (176 x 144)
-                    maxStep = aStepArray.iMaxVideoStepQCIF;
-                    break;
-                case ECamVideoResolutionCIF:         // Large (352 x 288) (Default)
-                    maxStep = aStepArray.iMaxVideoStepCIF;
-                    break;            
-                case ECamVideoResolutionVGA:         // VGA (640 x 480)
-                    maxStep = aStepArray.iMaxVideoStepVGA;            
-                    break;            
-                case ECamVideoResolutionQVGA:         // QVGA ( 320 x 240 )
-                    maxStep = aStepArray.iMaxVideoStepQVGA;
-                    break;                                        
-                case ECamVideoResolutionNHD:         // NHD ( 640 x 352 )
-                    maxStep = aStepArray.iMaxVideoStepNHD;
-                    break;                                            
-                case ECamVideoResolutionWVGA:         // WVGA ( 864 x 480 )
-                    maxStep = aStepArray.iMaxVideoStepWVGA;
-                    break;                                                
-                case ECamVideoResolutionHD:           // HD ( 1280 x 720 )
-                    maxStep = aStepArray.iMaxVideoStepHD;
-                    break;                                                
-                default: 
-                    break;
-                }
-            }
-        else if ( iController.ActiveCamera() == ECamActiveCameraSecondary )
-            {
-            switch ( iCurrentResolution )
-                {
-                case ECamVideoResolutionCIF:         // Large (352 x 288) (Default)
-                    maxStep = aStepArray.iMax2ndCamVideoStepCIF;
-                    break;
-                case ECamVideoResolutionQCIF:        // Medium (176 x 144)
-                    maxStep = aStepArray.iMax2ndCamVideoStepQCIF;
-                    break;
-                case ECamVideoResolutionSubQCIF:     // Small (128 x 96)
-                    maxStep = aStepArray.iMax2ndCamVideoStepSQCIF;
-                    break;
-                default:
-                    break;
-                }                        
-            }  
-        // otherwise, do nothing
-        else
-            {
-            // empty statement to remove Lint error.
-            }      
-        }                
-    // otherwise, do nothing
-    else
-        {
-        // empty statement to remove Lint error.
-        }
-
-    PRINT1( _L( "Camera <= CCamZoomModel::MaxZoomStep maxStep=%d" ), maxStep );
-    return maxStep;
-    }
-
-
-    
-
-// -----------------------------------------------------------------------------
-// CCamZoomModel::StopZoom
-// Called when the user releases the zoom key to stop an ongoing zoom operation.
-// -----------------------------------------------------------------------------
-//
-void CCamZoomModel::StopZoom()
-    {    
-    PRINT( _L( "Camera => CCamZoomModel::StopZoom " ) );
-    
-    if ( iZoomTimer->IsActive() )
-        {
-        iZoomTimer->Cancel();
-        }
-        
-    // Clear the zoom state
-    iState = ECamZoomModelStateZoomNone;     
-    
-    if ( iPauseState == EPauseStatePaused )
-        {
-        iPauseState = EPauseStateReleased;
-        }
-    else
-        {
-        iPauseState = EPauseStateNone;
-        }
-        
-    PRINT( _L( "Camera <= CCamZoomModel::StopZoom " ) );
-    }
-
-// -----------------------------------------------------------------------------
-// CCamZoomModel::HandleControllerEventL
-// Called when a controller event occurs
-// -----------------------------------------------------------------------------
-//
-void CCamZoomModel::HandleControllerEventL( TCamControllerEvent aEvent, 
-                                            TInt /*aError*/ )
-  {
-  PRINT( _L( "Camera => CCamZoomModel::HandleControllerEventL " ) );
-  switch( aEvent )
-    {
-    // -----------------------------------------
-    case ECamEventEngineStateChanged:
-      {
-      iCameraState = iController.CameraControllerState();  
-      
-      // If a reset is waiting. This happens if the application 'pretends to exit' 
-      // but this occurred when the engine was not prepared e.g. in standby.
-      // The zoom needs to be set back to default when prepared, and the engine has
-      // now entered a prepared state
-      if ( iResetPending 
-        && ( iCameraState & (ECamImageOn|ECamVideoOn) ) )
-          {
-          // The zoom pane will not be redrawn while the iResetPending flag is on.
-          // This calls RefreshSettings()
-          ResetZoomTo1x();
-          // In this situation the zoom pane should not be shown.
-          /*if ( iPane->IsVisible() )
-              {
-              iPane->MakeVisible( EFalse, ETrue );
-              }*/
-          iResetPending = EFalse;                
-          }     
-      else
-          {
-          // If state changes (video <-> photo) refresh settings
-          RefreshSettings();
-          }
-      }
-      break;
-    // -----------------------------------------
-    case ECamEventCameraChanged:
-      {        
-      // If state changes (camera change) refresh settings
-      RefreshSettings();
-      
-      ResetZoomTo1x();
-      }       
-      break;
-    // -----------------------------------------
-    // Zoom settings now involve basic digital zoom too.
-    // Event name changed ECamEventExtZoomStateChanged => ECamEventZoomSetupChanged
-    case ECamEventImageQualityChanged:
-    case ECamEventZoomSetupChanged:    // Digital/Extended zoom turned on/off/paused/continuous
-      {
-      // If image quality has changed, this may update zoom levels.
-      RefreshSettings();
-      }
-      break;
-    // -----------------------------------------
-    case ECamEventOperationStateChanged:
-      {
-      // As the iRecordingVideo state has changed, need to update
-      // the settings, as this may disable the optical zoom 
-      RefreshSettings();                                            
-      }
-      break;
-    // -----------------------------------------
-    // otherwise, do nothing
-    default:
-      break;
-    } // switch
-    
-  PRINT( _L( "Camera <= CCamZoomModel::HandleControllerEventL " ) );
-  }
-
-// ---------------------------------------------------------------------------
-// CCamZoomModel::ZoomTimerCallback
-// Callback for Zoom Pane timer, used to give smooth zooming
-// ---------------------------------------------------------------------------
-//
-TInt CCamZoomModel::ZoomTimerCallback( TAny* aObject )
-    {    
-    CCamZoomModel* model = static_cast< CCamZoomModel* >( aObject );
-    model->ZoomTimerTick();
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// CCamZoomModel::ZoomTimerTick
-// Called each timer period while the zoom in/out key is held down.
-// ---------------------------------------------------------------------------
-//
-void CCamZoomModel::ZoomTimerTick()
-    {        
-    PRINT( _L("Camera => CCamZoomModel::ZoomTimerTick") );
-    TCamZoomMode modeBefore = iZoomMode;
-                   
-    // Continue the ongoing zoom operation
-    if ( iState == ECamZoomModelStateZoomIn )
-        {
-        ZoomIn();
-        }
-    else if ( iState == ECamZoomModelStateZoomOut )
-        {
-        ZoomOut();
-        }    
-    else
-        {
-        // Do nothing
-        }               
-    
-    // Check if we're currently on a boundary, in which case we need 
-    // to stop and re-initialise the timer for the (potentially) new
-    // interval.                            
-    TCamZoomMode modeAfter = iZoomMode;
-    
-    if ( modeBefore != modeAfter )
-        {
-        // Restart zoom;
-        if ( iZoomTimer->IsActive() )
-            {
-            iZoomTimer->Cancel();
-            }
-        StartZoomTimer();
-        }   
-    PRINT( _L("Camera <= CCamZoomModel::ZoomTimerTick") );
-    }        
-
-
-
-// ---------------------------------------------------------------------------
-// CCamZoomModel::StartZoomTimer
-// Called each timer period while the zoom in/out key is held down.
-// ---------------------------------------------------------------------------
-//
-void CCamZoomModel::StartZoomTimer()
-    {
-    PRINT( _L( "Camera => CCamZoomModel::StartZoomTimer " ) );
-    
-    if ( iZoomTimer->IsActive() )
-        {
-        return; // If only one speed, we're already running so just return.        
-        }
-          
-    TCamZoomMode mode = CurrentZoomType();                
-    
-    TInt stepPeriod = 0;
-    
-    switch ( mode )
-        {            
-        case ECamZoomModeOptical:
-            {
-            stepPeriod = iZoomLAF.iZoomSpeedOpt * 1000;
-            break;        
-            }
-        
-        case ECamZoomModeDigital:
-            {
-            stepPeriod = iZoomLAF.iZoomSpeedDig * 1000;
-            break;        
-            }
-        
-        case ECamZoomModeExtended:
-            {
-            stepPeriod = iZoomLAF.iZoomSpeedExt * 1000;
-            break;        
-            }
-                    
-        case ECamZoomModeUndefined:
-        default:
-            {
-            stepPeriod = 1000000;
-            break;        
-            }        
-        }
-    
-    
-    iZoomTimer->Start( stepPeriod, stepPeriod, TCallBack( ZoomTimerCallback , this) );
-    iZoomMode = mode;
-    
-    PRINT( _L( "Camera <= CCamZoomModel::StartZoomTimer " ) );
-    }
-
-// ---------------------------------------------------------------------------
-// CCamZoomModel::AllowExtZoom
-// Returns whether extended zoom is allowed or not, based on current settings
-// ---------------------------------------------------------------------------
-//
-TBool CCamZoomModel::AllowExtZoom() const
-    {
-    PRINT( _L( "Camera => CCamZoomModel::AllowExtZoom " ) );
-    
-    TInt extendedStep = MaxZoomStep( iExtZoomSteps );    
-    
-    // Check there is a valid extended zoom step to allow to first, and that
-    // we are not in embedded mode (extended zoom not allowed in embedded)
-    if (  KErrNotSupported != extendedStep )
-        {
-        if ( iZoomSetting == ECamSettDigZoomExtendPause
-          || iZoomSetting == ECamSettDigZoomExtendCont )
-            {
-            // If setting allows extended zoom, return true
-            PRINT( _L( "Camera <= CCamZoomModel::AllowExtZoom ETrue" ) );
-            return ETrue;
-            }
-        else
-            {
-            // else user setting disallows it, so return false
-            PRINT( _L( "Camera <= CCamZoomModel::AllowExtZoom EFalse" ) );
-            return EFalse;
-            }
-        }
-    else
-        {
-        // No valid extended zoom, so not allowed even if user said so.
-        PRINT( _L( "Camera <= CCamZoomModel::AllowExtZoom EFalse" ) );
-        return EFalse;
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// CCamZoomModel::AllowOptZoom
-// Returns whether optical zoom is allowed
-// ---------------------------------------------------------------------------
-// 
-TBool CCamZoomModel::AllowOptZoom() const
-    {        
-    PRINT( _L( "Camera => CCamZoomModel::AllowOptZoom " ) ); 
-    TInt maxOptZoomStep = MaxZoomStep( iOptZoomSteps );
-    if ( KErrNotSupported == maxOptZoomStep // Zoom is NOT supported or
-      || ( !iAllowOptZoom                   // Settings dont allow zoom during recording 
-        && iRecordingVideo ) )              // ...and we're recording now
-        {
-        PRINT( _L( "Camera <= CCamZoomModel::AllowOptZoom EFalse" ) );
-        return EFalse;   
-        }
-    else
-        {
-        PRINT( _L( "Camera <= CCamZoomModel::AllowOptZoom ETrue" ) );
-        return ETrue;                 
-        }      
-    }
-
-// ---------------------------------------------------------------------------
-// CCamZoomModel::AllowDigZoom
-// Returns whether digital zoom is allowed
-// ---------------------------------------------------------------------------
-//
-TBool CCamZoomModel::AllowDigZoom() const
-    {         
-    PRINT( _L( "Camera => CCamZoomModel::AllowDigZoom " ) );
-    TInt maxStdZoomStep = MaxZoomStep( iDigZoomSteps );
-
-    if ( KErrNotSupported    != maxStdZoomStep   // Zoom is supported in current state         
-      && ECamSettDigZoomNone != iZoomSetting   ) // ...and is allowed by user setting
-        {
-        PRINT( _L( "Camera <= CCamZoomModel::AllowDigZoom ETrue" ) );
-        return ETrue;         
-        }
-    else
-        {
-        PRINT( _L( "Camera <= CCamZoomModel::AllowDigZoom ETrue" ) );
-        return EFalse;   
-        }      
-    }
-
-
-// ---------------------------------------------------------------------------
-// CCamZoomModel::CurrentZoom
-// Returns the current zoom level, taking into account optical (if allowed)
-// *and* digital zooms.
-// ---------------------------------------------------------------------------
-//
-TInt CCamZoomModel::CurrentZoom() const
-    {
-    PRINT( _L( "Camera => CCamZoomModel::CurrentZoom" ) );
-    // If we are recording video, and optical isn't allowed while recording
-    // then we only need to represent the Digital zoom in the zoom pane.    
-    if ( iRecordingVideo && !iAllowOptZoom )
-        {
-        // Only use digital value if optical not allowed
-        PRINT( _L( "Camera <= CCamZoomModel::CurrentZoom digital" ) );
-        return iCurZoomStepDigital;
-        }
-    else
-        {
-        // Return the combined zoom value
-        PRINT( _L( "Camera <= CCamZoomModel::CurrentZoom optical+digital" ) );
-        return (iCurZoomStepOptical + iCurZoomStepDigital);
-        }        
-    }
-
-
-// ---------------------------------------------------------------------------
-// CCamZoomModel::PauseAtBoundary
-// Returns whether to pause at the specified boundary
-// ---------------------------------------------------------------------------
-//
-TBool CCamZoomModel::PauseAtBoundary( TCamZoomBoundary aBoundary ) const
-  {
-  PRINT( _L( "Camera => CCamZoomModel::PauseAtBoundary" ) );
-  if ( iCameraState & ECamVideoOn )
-  	{
-    // Always return false for video, as we do not want to 
-    // force the zoom operation to pause at any boundary
-    // in video mode. 
-    PRINT( _L( "Camera <= CCamZoomModel::PauseAtBoundary EFalse" ) );  
-    return EFalse;
-    }
-  else
-  	{
-  	if ( ECamZoomBoundaryOptDig == aBoundary )
-      {
-      // Reason to *not* pause at the optical/digital boundary is if
-      // user set the "On (continuous)" or "Extended on (continuous) setting
-      if ( ECamSettDigZoomNormalCont == iZoomSetting
-        || ECamSettDigZoomExtendCont == iZoomSetting )
-        {
-        PRINT( _L( "Camera <= CCamZoomModel::PauseAtBoundary EFalse" ) );  
-        return EFalse;            
-        }
-      else 
-        {
-        PRINT( _L( "Camera <= CCamZoomModel::PauseAtBoundary ETrue" ) );  
-        return ETrue;
-        }
-      }
-    else if ( ECamZoomBoundaryDigExt == aBoundary ) 
-      {
-      // Only reason *not* to pause in digital/extended boundary is if
-      // user zoom setting states "extended on without pauses".
-      if ( ECamSettDigZoomExtendCont == iZoomSetting )
-        {
-        PRINT( _L( "Camera <= CCamZoomModel::PauseAtBoundary EFalse" ) );  
-        return EFalse;
-        }
-      else
-        {
-        PRINT( _L( "Camera <= CCamZoomModel::PauseAtBoundary ETrue" ) );  
-        return ETrue;    
-        }
-      }
-    else // No other boundaries known, return "no pause".
-      {
-      PRINT( _L( "Camera <= CCamZoomModel::PauseAtBoundary EFalse" ) );  
-      return EFalse;
-      }     
-    }	
-  }
-  
-    
-// -----------------------------------------------------------------------------
-// CCamZoomPane::IsCurrentlyZooming
-// Returns ETrue if the zoom model is currently zooming in/out,
-// else returns EFalse
-// -----------------------------------------------------------------------------
-//
-TBool CCamZoomModel::IsCurrentlyZooming() const
-    {    
-    PRINT( _L( "Camera => CCamZoomModel::IsCurrentlyZooming" ) );
-    if ( ECamZoomModelStateZoomIn  == iState 
-      || ECamZoomModelStateZoomOut == iState )
-        {
-        PRINT( _L( "Camera <= CCamZoomModel::IsCurrentlyZooming ETrue" ) );
-        return ETrue;
-        }
-    else
-        {
-        PRINT( _L( "Camera <= CCamZoomModel::IsCurrentlyZooming EFalse" ) );
-        return EFalse;
-        }
-    }
-    
-// -----------------------------------------------------------------------------
-// CCamZoomModel::ZoomingState
-// -----------------------------------------------------------------------------
-//
-CCamZoomModel::TCamZoomModelState CCamZoomModel::ZoomingState()
-    {    
-    return iState;  
-    }
- 
-
-// -----------------------------------------------------------------------------
-// CCamZoomPane::ResetToDefaultAfterPrepare
-// Sets the zoompane to reset the zoom level to default values
-// next time the engine is prepared
-// -----------------------------------------------------------------------------
-//
-void CCamZoomModel::ResetToDefaultAfterPrepare( TBool aReset )
-    {
-    iResetPending = aReset;
-    }     
-
-// -----------------------------------------------------------------------------
-// CCamZoomPane::IsResetPending
-// Whether or not the zoom level is waiting to be reset to default
-// -----------------------------------------------------------------------------
-//
-TBool CCamZoomModel::IsResetPending() const
-    {
-    return iResetPending;
-    }
-
-// -----------------------------------------------------------------------------
-// ReadCurrentResolution
-// -----------------------------------------------------------------------------
-//
-void 
-CCamZoomModel::ReadCurrentResolution()
-  {
-  PRINT1( _L("Camera => CCamZoomModel::ReadCurrentResolution, now:%d"), iCurrentResolution );
-  if ( iCameraState & ECamImageOn )
-    {                
-    iCurrentResolution = iController.GetCurrentImageResolution();
-    }
-  else if( iCameraState & ECamVideoOn )
-    {
-    iCurrentResolution = iController.GetCurrentVideoResolution();
-    }
-  else
-    {
-    iCurrentResolution = KErrNotReady;
-    }
-  PRINT1( _L("Camera <= CCamZoomModel::ReadCurrentResolution, got:%d"), iCurrentResolution );
-  }
-
-//  End of File