camerauis/cameraapp/generic/src/CamLocationIconController.cpp
changeset 19 d9aefe59d544
parent 3 8b2d6d0384b0
child 21 fa6d9f75d6a6
child 28 3075d9b614e6
--- a/camerauis/cameraapp/generic/src/CamLocationIconController.cpp	Tue Feb 02 00:01:39 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,519 +0,0 @@
-/*
-* 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:  Implemantation for CCamLocationIconController class.
-*
-*  Copyright © 2007 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-
-*
-*
-*/
-
-
-#include "CamLocationIconController.h"
-
-#include <e32base.h>
-#include <e32property.h>                // RProperty
-#ifndef __WINSCW__
-  #include <locationtrailpskeys.h>      // P&S keys
-#endif
-#include <AknsConstants.h>              // KAknsMessageSkinChange 
-#include <aknlayoutscalable_apps.cdl.h>
-#include <layoutmetadata.cdl.h>
-#include <cameraapp.mbg>
-
-#include "CamAppController.h"
-#include "CamIndicator.h"
-#include "CamIndicatorResourceReader.h"
-#include "CamIndicatorData.h"
-
-#include "CamPropertyWatcher.h"
-#include "CamUtility.h"
-#include "CamSettingsInternal.hrh"
-
-#include "CamControllerObservers.h"
-
-// ---------------------------------------------------------------------------
-// CCamLocationIconController::CCamLocationIconController
-// ---------------------------------------------------------------------------
-//
-CCamLocationIconController::CCamLocationIconController( CCamAppController& aController,
-                                                        MCamLocationIconObserver& aObserver, 
-                                                        TBool aCallbackActive ) :
-    iController( aController ), iObserver( aObserver ), iCallbackActive( aCallbackActive )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CCamLocationIconController::~CCamLocationIconController
-// ---------------------------------------------------------------------------
-//
-CCamLocationIconController::~CCamLocationIconController()
-  {
-    PRINT ( _L("Camera => CCamLocationIconController::~CCamLocationIconController") );
-     	
-    iLocationIndicators.ResetAndDestroy();
-    iLocationIndicators.Close();
-    delete iLocationStateWatcher;
-
-    iController.RemoveControllerObserver( this );
-    
-    PRINT ( _L("Camera <= CCamLocationIconController::~CCamLocationIconController") ); 	   
-    }
-
-// ---------------------------------------------------------------------------
-// CCamLocationIconController::NewL
-// ---------------------------------------------------------------------------
-//
-CCamLocationIconController* CCamLocationIconController::NewL(  CCamAppController& aController, 
-                                                               MCamLocationIconObserver& aObserver, 
-                                                               TBool aCallbackActive, TRect& aRect )
-    {
-    PRINT ( _L("Camera => CCamLocationIconController::NewL") );		
-    
-    CCamLocationIconController* self = 
-        new (ELeave) CCamLocationIconController( aController, aObserver, aCallbackActive );
-    CleanupStack::PushL( self );
-    self->ConstructL(aRect);
-    CleanupStack::Pop(); // self
-    PRINT ( _L("Camera <= CCamLocationIconController::NewL") );
-    return self;    
-    }
-
-// ---------------------------------------------------------------------------
-// CCamLocationIconController::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CCamLocationIconController::ConstructL(TRect& aRect)
-    {
-    PRINT ( _L("Camera => CCamLocationIconController::ConstructL") );	
-    iEnv = CEikonEnv::Static();
-    iRect.SetRect(aRect.iTl, aRect.Size());
-    //Change this later when the location active object has been finished!!
-    iLocationState = KLocationSettingStateOff;
-    CreateLocationIndicatorL();
-    
-#ifndef __WINSCW__
-    // Construct property watchers for location indicator status
-    iLocationStateWatcher = CCamPropertyWatcher::NewL( *this, KPSUidLocationTrail, KLocationTrailState );
-
-    // Subscribe to the properties 
-    iLocationStateWatcher->Subscribe();
-#endif
-
-    // Read initial values for location status
-    ReadCurrentState();
-    
-    iController.AddControllerObserverL( this );
-    
-    PRINT ( _L( "Camera <= CCamLocationIconController::ConstructL" ) );	
-    }
-    
-    
-//----------------------------------------------------------
-// CCamLocationIconController::CreateLocationIndicatorL
-//----------------------------------------------------------
-void CCamLocationIconController::CreateLocationIndicatorL()
-    {
-	RArray<TInt> icons;
-	CleanupClosePushL( icons );
-	User::LeaveIfError( icons.Append( EMbmCameraappQgn_indi_cam4_geotag_off ) );
-	User::LeaveIfError( icons.Append( EMbmCameraappQgn_indi_cam4_geotag_off_mask ) );
-	User::LeaveIfError( icons.Append( EMbmCameraappQgn_indi_cam4_geotag_on ) );
-	User::LeaveIfError( icons.Append( EMbmCameraappQgn_indi_cam4_geotag_on_mask ) );
-	TInt count = icons.Count();
-    // Get the icon rect
-    TRect iconRect = Rect();
-		
-    CCamIndicator* indicator;
-	for( TInt i = 0; i < count; i+=2 )
-		{
-        indicator = CCamIndicator::NewL( iconRect );
-        CleanupStack::PushL( indicator );
-        indicator->AddIconL( icons[i], icons[i+1] ); // Bitmap & mask.
-        indicator->SetRect( iconRect );
-       
-        User::LeaveIfError( iLocationIndicators.Append( indicator ) );
-        CleanupStack::Pop( indicator );
-		}
-
-	CleanupStack::PopAndDestroy( &icons );
-
-    }
-
-
-// ---------------------------------------------------------------------------
-// CCamLocationIconController::SetCallbackActive
-// ---------------------------------------------------------------------------
-//    
-void CCamLocationIconController::SetCallbackActive( TBool aActive )
-    {
-    iCallbackActive = aActive;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CCamLocationIconController::UpdateRect
-// ---------------------------------------------------------------------------
-//    
-void CCamLocationIconController::UpdateRect()
-    {
-    TInt i;
-    TRect newRect = Rect();
-    TInt count = iLocationIndicators.Count();
-    
-	const TCamCameraMode mode = iController.CurrentMode();
-	const TCamCameraMode targetmode = iController.TargetMode();
-	TBool ShowIcon = ETrue;
-	if ( (targetmode != mode)
-          || (( ECamControllerImage != targetmode )
-           && ( ECamControllerVideo != targetmode )) ) 
-	    {
-	    ShowIcon = EFalse;
-		}
-		
-    for ( i = 0; i < count; i++ )
-        {
-      	
-        if ( ShowIcon ) 
-            {
-            iLocationIndicators[i]->DisplayIcon();
-            } 
-        else 
-            {
-            iLocationIndicators[i]->ClearIcon();
-            }
-        iLocationIndicators[i]->SetRect( newRect );
-        }
-    NotifyObserver();
-    }
-
-// ---------------------------------------------------------------------------
-// CCamLocationIconController::SetLocationState
-// ---------------------------------------------------------------------------
-//
-void CCamLocationIconController::SetLocationState( TInt aState )
-    {    	
-    PRINT( _L("Camera => CCamLocationIconController::SetLocationState") );	    	
-
-    // Possible location trail states are 0,1,2 and 3
-    // but the GPS data is available only with the state 3
-    // so that is when the icon is changed to on state.
-    // Possible values
-    // - TrailStopped (value 0 - off-icon)
-    // - TrailStarted - No valid GPS data (value 1 - off-icon)
-    // - TrailStarted - Searching GPS device (value 2 - off-icon)
-    // - TrailStarted - GPS data available (value 3 - on-icon)
-    if ( KCamLocationTrailGPSDataAvail == aState ) 
-        {
-    	iLocationState = KLocationSettingStateOn;
-        }
-    else
-        {
-    	iLocationState = KLocationSettingStateOff;
-        }
-
-    NotifyObserver();
-        
-    PRINT( _L("Camera <= CCamLocationIconController::SetLocationState") );	        
-    }    
- 
-// ---------------------------------------------------------------------------
-// CCamLocationIconController::Rect
-// Returns the rectangle defining the position and size
-// of the location icon
-// ----------------------------------------------------
-//
-TRect CCamLocationIconController::Rect() const
-	{
-    TAknLayoutRect camIndicatorPane;
-	TAknLayoutRect layoutRect;
-	
-    TSize screenSize;
-    AknLayoutUtils::LayoutMetricsSize( AknLayoutUtils::EScreen, screenSize );
-    TRect extent = TRect( TPoint(), screenSize );
-	
-	const TCamCameraMode targetmode = iController.TargetMode();
-	const TCamCaptureOperation operation =  iController.CurrentVideoOperation();
-	if ( ECamControllerVideo == targetmode )
-		{
-		if ( ( ECamCapturing == operation )||
-		     ( ECamPausing == operation )  ||
-			 ( ECamPaused == operation )   ||
-			 ( ECamResuming == operation ))
-			{
-	        if ( CamUtility::IsNhdDevice() ) 
-	            {
-                if ( Layout_Meta_Data::IsLandscapeOrientation() )
-                    {
-                    camIndicatorPane.LayoutRect(
-                        extent,
-                        AknLayoutScalable_Apps::vid4_progress_pane( 1 ) );
-                    layoutRect.LayoutRect(
-                        camIndicatorPane.Rect(),
-                        AknLayoutScalable_Apps::vid4_progress_pane_g5( 0 ) );
-                    }
-                else  // portrait
-                    {
-                    camIndicatorPane.LayoutRect(
-                        extent,
-                        AknLayoutScalable_Apps::vid4_progress_pane( 0 ) );
-                    layoutRect.LayoutRect(
-                        camIndicatorPane.Rect(),
-                        AknLayoutScalable_Apps::vid4_progress_pane_g5( 1 ) );
-                    }
-	            }
-	        else
-	            {
-	            if ( Layout_Meta_Data::IsLandscapeOrientation() )
-	                {
-	                camIndicatorPane.LayoutRect(
-	                    extent,
-	                    AknLayoutScalable_Apps::vid6_indi_pane( 0 ) );
-	                layoutRect.LayoutRect(
-	                    camIndicatorPane.Rect(),
-	                    AknLayoutScalable_Apps::vid6_indi_pane_g4( 1 ) );
-	                }
-	            else  // portrait
-	                {
-	                camIndicatorPane.LayoutRect(
-	                    extent,
-	                    AknLayoutScalable_Apps::vid6_indi_pane( 3 ) );
-	                layoutRect.LayoutRect(
-	                    camIndicatorPane.Rect(),
-	                    AknLayoutScalable_Apps::vid6_indi_pane_g4( 3 ) );
-	                }
-	            }
-			}
-		else
-			{
-            if ( CamUtility::IsNhdDevice() ) 
-                {
-                if ( Layout_Meta_Data::IsLandscapeOrientation() )
-                    {
-                    camIndicatorPane.LayoutRect( extent,
-                             AknLayoutScalable_Apps::vid4_progress_pane( 1 ) ); // vid4_indicators_pane should be used
-                    layoutRect.LayoutRect( camIndicatorPane.Rect(),
-                        AknLayoutScalable_Apps::vid4_indicators_pane_g5( 0 ) );       
-                    }
-                else  // portrait
-                    {
-                    camIndicatorPane.LayoutRect(
-                        extent,
-                        AknLayoutScalable_Apps::vid4_indicators_pane( 0 ) );
-                    layoutRect.LayoutRect(
-                        camIndicatorPane.Rect(),
-                        AknLayoutScalable_Apps::vid4_indicators_pane_g5( 1 ) );
-                    }
-                }
-            else
-                {
-                if ( Layout_Meta_Data::IsLandscapeOrientation() )
-                    {
-                    camIndicatorPane.LayoutRect(
-                        extent,
-                        AknLayoutScalable_Apps::vid6_indi_pane( 0 ) );
-                    layoutRect.LayoutRect(
-                        camIndicatorPane.Rect(),
-                        AknLayoutScalable_Apps::vid6_indi_pane_g4( 0 ) );
-                    }
-                else  // portrait
-                    {
-                    camIndicatorPane.LayoutRect(
-                        extent,
-                        AknLayoutScalable_Apps::vid6_indi_pane( 3 ) );
-                    layoutRect.LayoutRect(
-                        camIndicatorPane.Rect(),
-                        AknLayoutScalable_Apps::vid6_indi_pane_g4( 2 ) );
-                    }
-                }
-			}
-		}
-	else
-		{
-        if ( CamUtility::IsNhdDevice() ) 
-            {
-    	    if ( Layout_Meta_Data::IsLandscapeOrientation() )
-    	        {
-    	        camIndicatorPane.LayoutRect(
-    	            extent,
-    	            AknLayoutScalable_Apps::cam4_indicators_pane( 1 ) );
-    	        layoutRect.LayoutRect(
-    	            camIndicatorPane.Rect(),
-    	            AknLayoutScalable_Apps::cam4_indicators_pane_g3( 0 ) );
-    	        }
-    	    else  // portrait
-    	        {
-    	        camIndicatorPane.LayoutRect(
-    	            extent,
-    	            AknLayoutScalable_Apps::cam4_indicators_pane( 0 ) );
-    	        layoutRect.LayoutRect(
-    	            camIndicatorPane.Rect(),
-    	            AknLayoutScalable_Apps::cam4_indicators_pane_g3( 1 ) );
-    	        }
-            }
-        else
-            {
-            if ( Layout_Meta_Data::IsLandscapeOrientation() )
-                {
-                camIndicatorPane.LayoutRect(
-                    extent,
-                    AknLayoutScalable_Apps::cam6_indi_pane( 0 ) );
-                layoutRect.LayoutRect(
-                    camIndicatorPane.Rect(),
-                    AknLayoutScalable_Apps::cam6_indi_pane_g3( 0 ) );
-                }
-            else  // portrait
-                {
-                camIndicatorPane.LayoutRect(
-                    extent,
-                    AknLayoutScalable_Apps::cam6_indi_pane( 3 ) );
-                layoutRect.LayoutRect(
-                    camIndicatorPane.Rect(),
-                    AknLayoutScalable_Apps::cam6_indi_pane_g3( 2 ) );
-                }
-            }
-		}
-    return layoutRect.Rect();
-	}
-
-// ---------------------------------------------------------------------------
-// CCamLocationIconController::Draw
-// ---------------------------------------------------------------------------
-//
-void CCamLocationIconController::Draw( CBitmapContext& aGc ) const
-    {
-    PRINT( _L("Camera => CCamLocationIconController::Draw") );
-
-    // draw location indicator icon only for main camera
-    if ( iController.ActiveCamera() == ECamActiveCameraPrimary )
-          {
-          // Make sure no brush is being used
-          aGc.SetBrushStyle( CGraphicsContext::ENullBrush );    
-          iLocationIndicators[iLocationState]->Draw( aGc );
-          }
-
-    PRINT( _L("Camera <= CCamLocationIconController::Draw") );
-    }    
-
-
-// ---------------------------------------------------------------------------
-// CCamLocationIconController::NotifyObserver
-// ---------------------------------------------------------------------------    
-//
-void CCamLocationIconController::NotifyObserver()
-    {
-    if( iCallbackActive )
-        {
-        iObserver.LocationIconUpdated();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCamLocationIconController::ReadCurrentState
-// ---------------------------------------------------------------------------
-//
-void CCamLocationIconController::ReadCurrentState()
-    {
-    PRINT( _L("Camera => CCamLocationIconController::ReadCurrentState") ); 	
-    
-    TInt locationState = KLocationSettingStateOff;
-#ifndef __WINSCW__
-    TInt err = KErrNone;
-
-    // Get the location state
-    err = iLocationStateWatcher->Get( locationState );
-    if( KErrNone == err && -1 != locationState && KCamLocationTrailStopped <= locationState && KCamLocationTrailGPSDataAvail >= locationState )
-        {
-        // We got an acceptable value
-        SetLocationState( locationState );
-        }
-    else
-        {
-        // Default to off value
-        SetLocationState( KLocationSettingStateOff );
-        }
-#endif // __WINSCW__
-
-    NotifyObserver();
-    
-    PRINT( _L("Camera <= CCamLocationIconController::ReadCurrentState") ); 	
-    }
-    
-// ---------------------------------------------------------------------------
-// CCamLocationIconController::HandlePropertyChangedL
-// ---------------------------------------------------------------------------    
-//
-#ifndef __WINSCW__    
-void CCamLocationIconController::HandlePropertyChangedL( const TUid& aCategory, const TUint aKey )
-    {
-    PRINT( _L("Camera => CCamLocationIconController::HandlePropertyChangedL") ); 	    	
-
-    TInt value = KLocationSettingStateOff;
-    if( KPSUidLocationTrail == aCategory && KLocationTrailState == aKey )
-        {
-        TInt err = iLocationStateWatcher->Get( value );
-        if( KErrNone == err && -1 != value && KCamLocationTrailStopped <= value && KCamLocationTrailGPSDataAvail >= value )
-            {
-            SetLocationState( value );
-            }
-        }
-    else
-        {
-        // Do nothing. For Lint.
-        }
-
-    PRINT( _L("Camera <= CCamLocationIconController::HandlePropertyChangedL") );
-    }
-#else
-void CCamLocationIconController::HandlePropertyChangedL( const TUid& /*aCategory*/, const TUint /*aKey*/ )
-  {
-  // Empty
-  }
-#endif // __WINSCW__
-
-
-// ---------------------------------------------------------------------------    
-// HandleControllerEventL
-//
-// Update the rect for any controller event
-// ---------------------------------------------------------------------------    
-//
-void 
-CCamLocationIconController::HandleControllerEventL( TCamControllerEvent aEvent,
-                                                    TInt                /*aError*/ )
-	{
-	PRINT( _L("Camera => CCamLocationIconController::HandleControllerEventL") );
-	if ( ECamEventExitRequested != aEvent )
-        {
-        TBool locIconVisible( EFalse );
-        locIconVisible = 
-            iController.IntegerSettingValue( ECamSettingItemRecLocation ) == ECamLocationOn;
-
-        if ( locIconVisible ) 
-    	    {
-    	    PRINT( _L("Camera => UpdateRect()") );
-	        UpdateRect();
-	        PRINT( _L("Camera <= UpdateRect()") );
-    	    }
-    	}
-    PRINT( _L("Camera <= CCamLocationIconController::HandleControllerEventL") );
-	}
-