--- a/camerauis/cameraapp/generic/src/CamNaviCounterModel.cpp Thu Aug 19 09:36:57 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2117 +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: Control for displaying remaining images/videos in Navi Pane
-*
-* Copyright © 2007-2008 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 FILES
-#include <eiklabel.h>
-#include <eikapp.h> // For CEikApplication
-#include <eikenv.h>
-#include <AknsUtils.h>
-#include <AknsDrawUtils.h>
-#include <aknconsts.h>
-#include <StringLoader.h> // StringLoader
-#include <e32base.h>
-#include <barsread.h> // TResourceReader
-#include <AknBidiTextUtils.h>
-#include <cameraapp.mbg>
-#include <AknLayoutFont.h>
-#include <AknsFrameBackgroundControlContext.h>
-#include <aknlayoutscalable_apps.cdl.h>
-#include <aknnavide.h>
-#include <layoutmetadata.cdl.h>
-
-#include "CamNaviCounterModel.h"
-#include "CamAppUi.h"
-#include "CamUtility.h"
-#include "CamSelfTimer.h"
-
-#include <cameraapp.rsg>
-#include <vgacamsettings.rsg>
-
-#include "CamLogger.h"
-#include "CamDecorator.h"
-#include "camtextitem.h"
-#include "CameraUiConfigManager.h"
-#include "OstTraceDefinitions.h"
-#ifdef OST_TRACE_COMPILER_IN_USE
-#include "CamNaviCounterModelTraces.h"
-#endif
-
-
-// CONSTANTS
-const TInt KMaxRemainingImagesShown = 9999;
-const TInt KCamDefaultCapturedImagesTextLen = 30;
-_LIT( KNumberFormat, "%04d" );
-_LIT( KTimeLapseImageFormat, "%04d/%04d" );
-
-const TAknsItemID KNaviPaneMajorColour = KAknsIIDQsnComponentColors;
-const TInt KNaviPaneMinorColour = EAknsCIQsnComponentColorsCG2;
-
-// Sequence mode related constants that define the amount of pictures taken
-// with sequence mode.
-const TInt KShortBurstCount = 18; // number of images captured during burst
-
-// ========================= MEMBER FUNCTIONS ================================
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::NewL
-// Factory construction function
-// ---------------------------------------------------------
-//
-CCamNaviCounterModel*
-CCamNaviCounterModel::NewL( CCamAppController& aController )
- {
- CCamNaviCounterModel* self =
- new( ELeave ) CCamNaviCounterModel( aController );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-// Destructor
-CCamNaviCounterModel::~CCamNaviCounterModel()
- {
- iController.RemoveControllerObserver( this );
-
- delete iVideoTextItem;
- delete iPhotoTextItem;
-
- delete iSequenceImageTextItem;
- delete iSequenceCapturedTextItem;
- delete iTimeLapseCountdownTextItem;
-
- CCamNaviCounterModel::UnloadResourceData();
-
- delete iMpeg4Icon;
- delete iMpeg4IconMask;
- delete i3GPIcon;
- delete i3GPIconMask;
-
- CCamAppUi* appUi = static_cast<CCamAppUi*>( CEikonEnv::Static()->AppUi());
- if ( appUi )
- {
- if ( !iController.IsInShutdownMode() )
- {
- appUi->RemoveBurstModeObserver( this );
- }
- delete iSequenceIcon;
- delete iSequenceMask;
- }
-
- delete iSelfTimerIcon;
- delete iSelfTimerMask;
-
- // If not shutting down, deregister from SelfTimer observers.
- // If we try to deregister when shutting down, the object has already been
- // deleted
- if ( !iController.IsInShutdownMode() && appUi )
- {
- // ...Remove self as an observer of the self timer.
- CCamSelfTimer* selftimer = appUi->SelfTimer();
- if ( selftimer )
- {
- selftimer->RemoveObserver( this );
- }
- }
-
-#ifdef PRODUCT_SUPPORTS_NAVIPANE_GENERIC_SETUP_INDICATOR
- delete iGenericIcon;
- delete iGenericMask;
-#endif // PRODUCT_SUPPORTS_NAVIPANE_GENERIC_SETUP_INDICATOR
-
- delete iAudioMuteIcon;
- delete iAudioMuteMask;
-
-
-#ifdef PRODUCT_SUPPORTS_NAVIPANE_MODE_SUBTITLE
- delete iSubtitlePhotoIcon;
- delete iSubtitlePhotoMask;
- delete iSubtitleVideoIcon;
- delete iSubtitleVideoMask;
-#endif // PRODUCT_SUPPORTS_NAVIPANE_MODE_SUBTITLE
-
- delete iTimeFormat;
- delete iCountDownText;
- delete iObserverHandler;
- }
-
-// -----------------------------------------------------------------------------
-// CCamNaviCounterModel::LoadResourceDataL()
-// Reads in all information needed from resources
-// -----------------------------------------------------------------------------
-//
-void CCamNaviCounterModel::LoadResourceDataL()
- {
-OstTrace0( CAMERAAPP_PERFORMANCE_DETAIL, CCAMNAVICOUNTERMODEL_LOADRESOURCEDATAL, "e_CCamNaviCounterModel_LoadResourceDataL 1" );
-
- PRINT( _L("Camera => CCamNaviCounterModel::LoadResourceDataL") );
-
- // Read the time format resource
- PRINT( _L("Camera <> construct timeformat..") );
- delete iTimeFormat;
- iTimeFormat = NULL;
- if ( !Layout_Meta_Data::IsLandscapeOrientation() )
- {
- iTimeFormat = CEikonEnv::Static()->AllocReadResourceL( R_QTN_TIME_DURAT_MIN_SEC_WITH_ZERO );
- }
- else
- {
- iTimeFormat = CEikonEnv::Static()->AllocReadResourceL( R_QTN_TIME_DURAT_LONG );
- }
-
- CCamAppUi* appUi = static_cast<CCamAppUi*>( CEikonEnv::Static()->AppUi() );
-
- delete iPhotoTextItem;
- iPhotoTextItem = NULL;
- iPhotoTextItem = CCamTextItem::NewL();
-
- delete iVideoTextItem;
- iVideoTextItem = NULL;
- iVideoTextItem = CCamTextItem::NewL();
-
- delete iSequenceImageTextItem;
- iSequenceImageTextItem = NULL;
- iSequenceImageTextItem = CCamTextItem::NewL();
-
- delete iTimeLapseCountdownTextItem;
- iTimeLapseCountdownTextItem = NULL;
- iTimeLapseCountdownTextItem = CCamTextItem::NewL();
-
- delete iSequenceCapturedTextItem;
- iSequenceCapturedTextItem = NULL;
- iSequenceCapturedTextItem = CCamTextItem::NewL();
-
- iCamOrientation = appUi->CamOrientation();
-
- if ( Layout_Meta_Data::IsLandscapeOrientation() || CamUtility::IsNhdDevice() )
- {
- TSize screenSize;
- AknLayoutUtils::LayoutMetricsSize( AknLayoutUtils::EScreen, screenSize );
- iExtent = TRect( TPoint(), screenSize );
- }
- else
- {
- TRect screenRect;
- AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, screenRect );
- iExtent = screenRect;
- }
-
- if ( CamUtility::IsNhdDevice() )
- {
- TouchLayoutL();
- }
- else
- {
- if ( !Layout_Meta_Data::IsLandscapeOrientation() )
- {
- NonTouchLayoutSecondaryL();
- }
- else
- {
- NonTouchLayoutL();
- }
- }
-
- iVidPostStorageIconRect = iVidPreStorageIconRect;
-
-
- if ( iController.UiConfigManagerPtr() &&
- iController.UiConfigManagerPtr()->IsLocationSupported() )
- {
- iLocationIconVisible = (/*TCamLocationId::ECamLocationOn*/1 == iController.IntegerSettingValue( ECamSettingItemRecLocation ));
- // If location setting is on, then the decoration should be wider to fit the location icon
- if ( iLocationIconVisible )
- {
- iPhotoPrecapDecorator = CCamDecorator::NewL( iController, R_CAM_STILL_PRECAP_NAVICOUNTER_DECORATIONS_CAMCORDER_LOCATION );
- }
- else
- {
- iPhotoPrecapDecorator = CCamDecorator::NewL( iController, R_CAM_STILL_PRECAP_NAVICOUNTER_DECORATIONS_CAMCORDER );
- }
- }
- else
- {
- iPhotoPrecapDecorator = CCamDecorator::NewL( iController, R_CAM_STILL_PRECAP_NAVICOUNTER_DECORATIONS_CAMCORDER );
- }
-
- iVideoPrecapDecorator = CCamDecorator::NewL( iController, R_CAM_VIDEO_PRECAP_NAVICOUNTER_DECORATIONS_CAMCORDER );
-
- iPhotoPostcapDecorator = CCamDecorator::NewL( iController, R_CAM_STILL_POSTCAP_NAVICOUNTER_DECORATIONS_CAMCORDER );
- iVideoPostcapDecorator = CCamDecorator::NewL( iController, R_CAM_VIDEO_POSTCAP_NAVICOUNTER_DECORATIONS_CAMCORDER );
-
- iSequenceInCaptureDecorator = CCamDecorator::NewL( iController, R_CAM_TIMELAPSE_IN_CAPTURE_NAVICOUNTER_DECORATIONS );
- iTimeLapsePostCaptureDecorator = CCamDecorator::NewL( iController, R_CAM_TIMELAPSE_POST_CAPTURE_NAVICOUNTER_DECORATIONS );
-
- TFileName resFileName;
- CamUtility::ResourceFileName( resFileName );
- TPtrC resname = resFileName;
-
- // Create component bitmaps
- TSize size = iVidPostStorageIconRect.Rect().Size();
- TCamOrientation orientation = appUi->CamOrientation();
-
- AknIconUtils::CreateIconL( iPhoneIcon,
- iPhoneIconMask,
- resname,
- EMbmCameraappQgn_indi_cam4_memory_phone,
- EMbmCameraappQgn_indi_cam4_memory_phone_mask );
-
- AknIconUtils::SetSize( iPhoneIcon, size );
-
- AknIconUtils::CreateIconL( iMMCIcon,
- iMMCIconMask,
- resname,
- EMbmCameraappQgn_indi_cam4_memory_mmc,
- EMbmCameraappQgn_indi_cam4_memory_mmc_mask );
-
- AknIconUtils::SetSize( iMMCIcon, size );
-
- if ( orientation != ECamOrientationCamcorder && orientation != ECamOrientationCamcorderLeft )
- {
- AknIconUtils::CreateIconL( iMassStorageIcon,
- iMassStorageIconMask,
- resname,
- EMbmCameraappQgn_indi_cam4_memory_mass,
- EMbmCameraappQgn_indi_cam4_memory_mass_mask );
- }
- else
- {
- AknIconUtils::CreateIconL( iMassStorageIcon,
- iMassStorageIconMask,
- resname,
- EMbmCameraappQgn_indi_cam4_memory_mass,
- EMbmCameraappQgn_indi_cam4_memory_mass_mask );
- }
-
- AknIconUtils::SetSize( iMassStorageIcon, size );
- PRINT( _L("Camera <= CCamNaviCounterModel::LoadResourceDataL") );
-OstTrace0( CAMERAAPP_PERFORMANCE_DETAIL, DUP1_CCAMNAVICOUNTERMODEL_LOADRESOURCEDATAL, "e_CCamNaviCounterModel_LoadResourceDataL 0" );
-
- }
-
-// -----------------------------------------------------------------------------
-// CCamNaviCounterModel::UnloadResourceData()
-// Frees all dynamic resources allocated in LoadResourceDataL
-// -----------------------------------------------------------------------------
-//
-void CCamNaviCounterModel::UnloadResourceData()
- {
-#ifdef PRODUCT_SUPPORTS_NAVIPANE_MODE_SUBTITLE
- delete iSubtitleVideoText;
- iSubtitleVideoText = NULL;
- delete iSubtitlePhotoText;
- iSubtitlePhotoText = NULL;
-#endif // PRODUCT_SUPPORTS_NAVIPANE_MODE_SUBTITLE
-
- delete iPhotoPrecapDecorator;
- iPhotoPrecapDecorator = NULL;
- delete iVideoPrecapDecorator;
- iVideoPrecapDecorator = NULL;
- delete iPhotoPostcapDecorator;
- iPhotoPostcapDecorator = NULL;
- delete iVideoPostcapDecorator;
- iVideoPostcapDecorator = NULL;
- delete iSequenceInCaptureDecorator;
- iSequenceInCaptureDecorator = NULL;
- delete iTimeLapsePostCaptureDecorator;
- iTimeLapsePostCaptureDecorator = NULL;
-
- delete iPhoneIcon;
- iPhoneIcon = NULL;
- delete iPhoneIconMask;
- iPhoneIconMask = NULL;
- delete iMMCIcon;
- iMMCIcon = NULL;
- delete iMMCIconMask;
- iMMCIconMask = NULL;
- delete iMassStorageIcon;
- iMassStorageIcon = NULL;
- delete iMassStorageIconMask;
- iMassStorageIconMask = NULL;
- }
-
-// -----------------------------------------------------------------------------
-// CCamNaviCounterModel::ReloadResourceDataL()
-// Refreshes all resource-based information stored in the class
-// -----------------------------------------------------------------------------
-//
-void CCamNaviCounterModel::ReloadResourceDataL()
- {
- OstTrace0( CAMERAAPP_PERFORMANCE_DETAIL, CCAMNAVICOUNTERMODEL_RELOADRESOURCEDATAL, "e_CCamNaviCounterModel_ReloadResourceDataL 1" );
- UnloadResourceData();
- LoadResourceDataL();
- OstTrace0( CAMERAAPP_PERFORMANCE_DETAIL, DUP1_CCAMNAVICOUNTERMODEL_RELOADRESOURCEDATAL, "e_CCamNaviCounterModel_ReloadResourceDataL 0" );
- }
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::UpdateCounter
-// Update counter
-// ---------------------------------------------------------
-//
-void CCamNaviCounterModel::UpdateCounter()
- {
- PRINT( _L("Camera => CCamNaviCounterModel::UpdateCounter") );
-
- const TInt imagesLeft = Min(
- iController.ImagesRemaining( ECamMediaStorageCurrent, iBurstActive ),
- KMaxRemainingImagesShown );
- iCounterText.Format( KNumberFormat, imagesLeft );
-
- if ( iPhotoTextItem )
- {
- TRAP_IGNORE( iPhotoTextItem->SetTextL( iCounterText ) );
- }
-
- PRINT( _L("Camera <= CCamNaviCounterModel::UpdateCounter") );
- }
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::UpdateTimeLapseCountdownL
-// Update the counter for remaining time until the next capture
-// ---------------------------------------------------------
-//
-void CCamNaviCounterModel::UpdateTimeLapseCountdownL()
- {
- // Get the actual remaining time till next capture
- TTime time ( iController.TimeLapseCountdown().Int64() );
- // The format function always rounds down to the next whole number of seconds
- // so add on 0.5 secs to force round up if closer to the next higher whole number of seconds
- // This gives a countdown from max to 1, to get a countdown from max-1 to 0 remove this
- const TTimeIntervalMicroSeconds KHalfSecInMicroSecs = TInt64( 500000 );
- time += KHalfSecInMicroSecs;
-
- TBuf<15> timebuf;
- // use 00:00 format as normal in secondary cam
- // but long format for primary cam. 2nd cam uses sharing quality. With primary cam sharing
- // we just use the same layout for sharing and other qualities.
- HBufC* timeFormat;
- if ( ECamActiveCameraSecondary == iController.ActiveCamera() )
- {
- timeFormat = CEikonEnv::Static()->AllocReadResourceLC( R_QTN_TIME_DURAT_MIN_SEC_WITH_ZERO );
- }
- else
- {
- timeFormat = CEikonEnv::Static()->AllocReadResourceLC( R_QTN_TIME_DURAT_LONG );
- }
- time.FormatL( timebuf, *timeFormat );
- CleanupStack::PopAndDestroy( timeFormat );
-
- delete iCountDownText;
- iCountDownText = NULL;
- iCountDownText = StringLoader::LoadL( R_CAM_TIMELAPSE_COUNTDOWN_TIME, timebuf );
- }
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::UpdateSequenceImageCount
-// Update the counter of captured and remaining images for
-// timelapse and burst during capture
-// ---------------------------------------------------------
-//
-void CCamNaviCounterModel::UpdateSequenceImageCount()
- {
- PRINT( _L("Camera => CCamNaviCounterModel::UpdateSequenceImageCount" ) )
- TInt imagesLeft = iController.ImagesRemaining( ECamMediaStorageCurrent, iBurstActive );
- TInt showLeft = Min( imagesLeft, KMaxRemainingImagesShown );
- TInt showCaptured = 0;
-
- if ( ECamImageCaptureTimeLapse == iImageMode )
- {
- // Use the count of captured images
- showCaptured = iController.TimeLapseImageCount();
- }
- else if ( ECamImageCaptureBurst == iImageMode )
- {
- // Use the count of burst capture moments
- showCaptured = iController.CurrentCapturedCount();
- // The images have not been saved yet so the remaining count does not account
- // for the ones already captured. Reduce the remaining count by the captured count.
- // Commented out - The burst images are saved immediately after capturing.
- // However, we cannot know if all the previous images have already been saved
- // so this number is not 100% accurate.
- // showLeft -= showCaptured;
- if( ( iOriginalValueForEachBurst > 0 ) && ( iCounterNeedUpdate ) )
- {
- iOriginalValueForEachBurst--;
- }
- if( ( iController.SequenceCaptureInProgress() ) )
- {
- if( !iController.IsRemainingImageStored() )
- {
- iOriginalValueForEachBurst = showLeft;
- iController.SetRemainingImageStored();
- }
- iCounterText.Format( KNumberFormat, iOriginalValueForEachBurst );
- }
- else
- iCounterText.Format( KNumberFormat, iController.ImagesRemaining( ECamMediaStorageCurrent, iBurstActive ) );
- showLeft = iOriginalValueForEachBurst;
- }
- else
- {
- // no action
- }
-
- // show only the KShortBurstCount value if there is enough space to take all
- // pictures, otherwise display the number of images that can be shown
- TInt showSequenceMax = Min( showLeft, KShortBurstCount );
- iSequenceImageText.Format( KTimeLapseImageFormat, showCaptured, showSequenceMax );
- }
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::UpdateRecordTimeAvailableL
-// Update record time remaining
-// ---------------------------------------------------------
-//
-void CCamNaviCounterModel::UpdateRecordTimeAvailableL()
- {
- PRINT( _L("Camera => CCamNaviCounterModel::UpdateRecordTimeAvailableL" ) )
- // Get the total remaining record time from the controller
- TTime time ( iController.RecordTimeRemaining().Int64() );
- HBufC* timeFormat;
-
- // Use 00:00 format in secondary cam
- if ( ECamActiveCameraSecondary == iController.ActiveCamera() )
- {
- timeFormat = CEikonEnv::Static()->AllocReadResourceLC( R_QTN_TIME_DURAT_MIN_SEC_WITH_ZERO );
- }
- // Use 0:00:00 format in primary cam
- else
- {
- timeFormat = CEikonEnv::Static()->AllocReadResourceLC( R_QTN_TIME_DURAT_LONG );
- }
-
- time.FormatL( iRemainingTimeText, *timeFormat );
- if ( iVideoTextItem )
- {
- iVideoTextItem->SetTextL( iRemainingTimeText );
- }
- CleanupStack::PopAndDestroy( timeFormat );
- PRINT( _L("Camera <= CCamNaviCounterModel::UpdateRecordTimeAvailableL" ) )
- }
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::SetCaptureModeL
-// Set capture mode (defines which counter to use)
-// ---------------------------------------------------------
-//
-void
-CCamNaviCounterModel::SetCaptureModeL( TCamCameraMode aMode,
- TCamImageCaptureMode aImageMode )
- {
- iMode = aMode;
- iImageMode = aImageMode;
-
- TInt key = ( ECamControllerVideo == iMode )
- ? ECamSettingItemVideoMediaStorage
- : ECamSettingItemPhotoMediaStorage;
-
- // Get the total remaining record time from the controller
- iStorageLocation =
- static_cast<TCamMediaStorage>( iController.IntegerSettingValue( key ) );
-
- if (ECamMediaStorageMassStorage ==iStorageLocation)
- {
- iStorageLocation = iController.ExistMassStorage()?
- ECamMediaStorageMassStorage:
- iController.IntegerSettingValue( ECamSettingItemRemovePhoneMemoryUsage )?
- ECamMediaStorageNone:
- ECamMediaStoragePhone;
- }
- }
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::HandleSelfTimerEvent
-// Handle an event from CCamSelfTimer.
-// ---------------------------------------------------------
-//
-void CCamNaviCounterModel::HandleSelfTimerEvent( TCamSelfTimerEvent aEvent, TInt aCountDown )
- {
- switch ( aEvent )
- {
- case ECamSelfTimerEventTimerOn:
- {
- iSelfTimerText.Num( TInt64( aCountDown ) );
- iDrawSelfTimer = ETrue;
- }
- break;
- case ECamSelfTimerEventTimerOff:
- {
- iDrawSelfTimer = EFalse;
- }
- break;
- default:
- break;
- }
- }
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::CCamNaviCounterModel
-// C++ constructor
-// ---------------------------------------------------------
-//
-CCamNaviCounterModel::CCamNaviCounterModel( CCamAppController& aController )
- : iController( aController )
- {
- }
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::ConstructL
-// Symbian OS 2nd phase constructor
-// ---------------------------------------------------------
-//
-void CCamNaviCounterModel::ConstructL()
- {
- OstTrace0( CAMERAAPP_PERFORMANCE_DETAIL, CCAMNAVICOUNTERMODEL_CONSTRUCTL, "e_CCamNaviCounterModel_ConstructL 1" );
- PRINT( _L("Camera => CCamNaviCounterModel::ConstructL") );
- iExtent = TRect(0, 0, 0, 0);
-
- UpdateCounter();
- iController.AddControllerObserverL( this );
-
- PRINT( _L("Camera <> Load resource data..") );
-
- LoadResourceDataL();
-
- TFileName resFileName;
- CamUtility::ResourceFileName( resFileName );
- TPtrC resname = resFileName;
-
-#ifdef PRODUCT_SUPPORTS_POST_CAPTURE_INDICATORS
- AknIconUtils::CreateIconL( iMpeg4Icon,
- iMpeg4IconMask,
- resname,
- EMbmCameraappQgn_prop_cam4_codec_mp4,
- EMbmCameraappQgn_prop_cam4_codec_mp4_mask );
-
- AknIconUtils::CreateIconL( i3GPIcon,
- i3GPIconMask,
- resname,
- EMbmCameraappQgn_prop_cam4_codec_3gp,
- EMbmCameraappQgn_prop_cam4_codec_3gp_mask );
-#endif
-
- // wait for engine to initialise video recorder
- iVideoInitialised = EFalse;
-
- PRINT( _L("Camera <> construct navi self timer..") );
- ConstructNaviSelfTimerL( resname );
-
-
- PRINT( _L("Camera <> construct navi sequence..") );
- ConstructNaviSequenceL( resname );
-
-#ifdef PRODUCT_SUPPORTS_NAVIPANE_GENERIC_SETUP_INDICATOR
- PRINT( _L("Camera <> construct generic setup..") );
- ConstructNaviGenericSetupL( resname );
-#endif
-
- PRINT( _L("Camera <> construct navi audio mute..") );
- ConstructNaviAudioMuteL( resname );
-
-#ifdef PRODUCT_SUPPORTS_NAVIPANE_MODE_SUBTITLE
- PRINT( _L("Camera <> construct navi subtitle..") );
- ConstructNaviModeSubtitleL( resname );
-#endif // PRODUCT_SUPPORTS_NAVIPANE_MODE_SUBTITLE
-
- CCamAppUi* appUi = static_cast<CCamAppUi*>( CEikonEnv::Static()->AppUi() );
- iBurstActive = appUi->IsBurstEnabled();
-#if defined( PRODUCT_SUPPORTS_NAVIPANE_SEQUENCE )
- iDrawSequence = iBurstActive;
-#endif // PRODUCT_SUPPORTS_NAVIPANE_SEQUENCE
-
- PRINT( _L("Camera <> construct observer handler..") );
- iObserverHandler = CCamObserverHandler::NewL();
-
- if ( iController.UiConfigManagerPtr() &&
- iController.UiConfigManagerPtr()->IsLocationSupported() )
- {
- iLocationIconVisible = (/*TCamLocationId::ECamLocationOn*/1 == iController.IntegerSettingValue( ECamSettingItemRecLocation ));
- }
- PRINT( _L("Camera <= CCamNaviCounterModel::ConstructL") );
- OstTrace0( CAMERAAPP_PERFORMANCE_DETAIL, DUP1_CCAMNAVICOUNTERMODEL_CONSTRUCTL, "e_CCamNaviCounterModel_ConstructL 0" );
- }
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::Draw
-// Draw the control
-// ---------------------------------------------------------
-//
-void
-CCamNaviCounterModel::DrawNaviCtr( CBitmapContext& aGc,
- const CCoeControl* aControl ) const
- {
- DrawCounter( aGc, aControl );
- }
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::DrawCounter
-// Draw the control
-// ---------------------------------------------------------
-//
-void
-CCamNaviCounterModel::DrawCounter( CBitmapContext& aGc,
- const CCoeControl* /*aControl*/ ) const
- {
- PRINT_FRQ( _L("Camera => CCamNaviCounterModel::DrawCounter" ))
- MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-
- CCamAppUi* appUi = static_cast<CCamAppUi*>( CEikonEnv::Static()->AppUi() );
- const TCamViewState& viewState( appUi->CurrentViewState() );
-
-
- // -------------------------------------------------------
- // Precapture state
- if ( ECamViewStatePreCapture == viewState )
- {
- TBool inSequence = iController.SequenceCaptureInProgress();
- TBool inTimeLapse = inSequence && (ECamImageCaptureTimeLapse == iImageMode);
- TBool inBurst = inSequence && (ECamImageCaptureBurst == iImageMode);
-
- TBool stillCapturing = ECamImageCaptureSingle == iImageMode
- && iController.IsProcessingCapture();
-
-
- // Audio mute icon should be drawn even though courtesy UI applies.
- if ( iMode == ECamControllerVideo )
- {
- DrawNaviAudioMute( aGc );
- }
- // these are drawn when sequence capture is in progress and
- // should be drawn even when courtesy stuff is off
- if ( inTimeLapse || inBurst )
- {
- iSequenceInCaptureDecorator->Draw( aGc, iExtent );
- }
- else
- {
- // To prevent Lint warning
- }
- // Draw the navipane sequence icon if current performing a timelapse or burst capture
- if ( inTimeLapse || inBurst )
- {
- DrawNaviSequence( aGc );
- }
- if ( inTimeLapse && iController.TimeLapseSupported() )
- {
- // Draw the captured images and captured remaining text
- DrawSequenceImageText( skin, aGc );
- // Draw the timelapse countdown counter
- DrawTimeLapseCountdown( skin, aGc );
- }
- else if ( inBurst )
- {
- // Draw the captured images and captured remaining text
- DrawSequenceImageText( skin, aGc );
- }
-
- if ( appUi && ( appUi->DrawPreCaptureCourtesyUI() ||
- ( !appUi->DrawPreCaptureCourtesyUI() && appUi->IsSecondCameraEnabled() ) ) )
- {
-
- if ( !inTimeLapse && !inBurst && !iController.IsProcessingCapture() )
- {
- // Draw the icon for storage location (Phone/MediaCard)
- DrawStorageIcon( aGc );
- }
-
-#ifdef PRODUCT_SUPPORTS_NAVIPANE_SEQUENCE
- if ( iDrawSequence )
- {
- DrawNaviSequence( aGc );
- }
-#endif // PRODUCT_SUPPORTS_NAVIPANE_SEQUENCE
-
-
-#ifdef PRODUCT_SUPPORTS_NAVIPANE_GENERIC_SETUP_INDICATOR
- DrawNaviGenericSetup( aGc );
-#endif // PRODUCT_SUPPORTS_NAVIPANE_GENERIC_SETUP_INDICATOR
-
- if ( iMode == ECamControllerVideo )
- {
- // only draw remaining time when engine has initialised video
- if ( iVideoInitialised && iVideoTextItem && !iController.IsProcessingCapture() )
- {
- iVideoTextItem->Draw( aGc );
- }
- }
- else if ( !stillCapturing && iPhotoTextItem && !inBurst)
- {
- iPhotoTextItem->Draw( aGc );
- }
- else
- {
- // To prevent Lint warning
- }
- }
- }
-
- // -------------------------------------------------------
- // Post capture state
- else if ( ECamViewStatePostCapture == viewState
- || ECamViewStateBurstThumbnail == viewState )
- {
- if ( appUi->DrawPostCaptureCourtesyUI() )
- {
-
- TRAP_IGNORE( DrawCurrentFileSizeL( skin, aGc ) );
-
-#ifdef PRODUCT_SUPPORTS_POST_CAPTURE_INDICATORS
- // Draw the icon for storage location (Phone/MediaCard)
- DrawStorageIcon( aGc );
-
- if ( iMode == ECamControllerVideo )
- {
- // Draw the video file type indicator
- DrawVideoFileTypeIndicator( aGc );
- }
-#endif // PRODUCT_SUPPORTS_POST_CAPTURE_INDICATORS
-
- if ( appUi->CurrentBurstMode() == ECamImageCaptureTimeLapse )
- {
- // Draw images captured text background
- PRINT( _L("Camera <> Drawing timelapse postcapture decorator.. #######################") );
- iTimeLapsePostCaptureDecorator->Draw( aGc, iExtent );
- // Draw images capture text
- TRAP_IGNORE( DrawImagesCapturedTextL( skin, aGc ) );
- }
-
- }
- }
- // -------------------------------------------------------
- // otherwise, do nothing
- else
- {
- // empty statement to remove Lint error, MISRA required rule 60
- }
- // -------------------------------------------------------
-
- DrawNaviSelfTimer( aGc, skin );
-
-#ifdef PRODUCT_SUPPORTS_NAVIPANE_MODE_SUBTITLE
- DrawNaviModeSubtitle( aGc, skin );
-#endif // PRODUCT_SUPPORTS_NAVIPANE_MODE_SUBTITLE
-
- PRINT_FRQ( _L("Camera <= CCamNaviCounterModel::DrawCounter" ))
- }
-
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::DrawCounter
-// Draw the control
-// ---------------------------------------------------------
-//
-void
-CCamNaviCounterModel::DrawCounterToBitmaps( CFbsBitGc& aBmpGc,
- CFbsBitGc& aBmpMaskGc ) const
- {
- PRINT( _L("Camera => CCamNaviCounterModel::DrawCounterToBitmaps" ))
-
- CCamAppUi* appUi = static_cast<CCamAppUi*>( CEikonEnv::Static()->AppUi() );
- // Draw bitmaps to use in the real navi pane in the settings views
- if ( appUi->CurrentViewState() == ECamViewStateSettings )
- {
- DrawStorageIconToBitmap( aBmpGc, aBmpMaskGc );
- const CFont* font = AknLayoutUtils::FontFromId(EAknLogicalFontSecondaryFont);
- // TRgb color = layoutText.Color();
- TRgb color = KRgbWhite;
- // Color is not updated if it not found from the skin
- MAknsSkinInstance* skin = AknsUtils::SkinInstance();
- AknsUtils::GetCachedColor( skin, color, KNaviPaneMajorColour, KNaviPaneMinorColour );
- aBmpGc.SetPenColor(color);
- aBmpGc.UseFont(font);
- if ( iMode == ECamControllerVideo )
- {
-
- TBufC<KMaxTextLength> buf( iRemainingTimeText );
- TPtr pointer = buf.Des();
- AknTextUtils::LanguageSpecificNumberConversion( pointer );
- aBmpGc.DrawText( buf, TPoint( 35, font->HeightInPixels()) );
- }
- else
- {
- TBufC<KMaxTextLength> buf( iCounterText );
- TPtr pointer = buf.Des();
- AknTextUtils::LanguageSpecificNumberConversion( pointer );
- aBmpGc.DrawText( buf, TPoint( 35, font->HeightInPixels()) );
- }
- aBmpGc.DiscardFont();
-
- aBmpMaskGc.SetPenColor(KRgbBlack);
- aBmpMaskGc.UseFont(font);
- if ( iMode == ECamControllerVideo )
- {
- TBufC<KMaxTextLength> buf( iRemainingTimeText );
- TPtr pointer = buf.Des();
- AknTextUtils::LanguageSpecificNumberConversion( pointer );
- aBmpMaskGc.DrawText( buf, TPoint( 35,font->HeightInPixels()) );
-
- }
- else
- {
-
- TBufC<KMaxTextLength> buf( iCounterText );
- TPtr pointer = buf.Des();
- AknTextUtils::LanguageSpecificNumberConversion( pointer );
- aBmpMaskGc.DrawText( buf, TPoint( 35,font->HeightInPixels()) );
-
- }
- aBmpMaskGc.DiscardFont();
- }
- PRINT( _L("Camera <= CCamNaviCounterModel::DrawCounterToBitmaps" ))
- }
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::DrawStorageIconToBitmap
-// Draw the icon for the media storage location
-// ---------------------------------------------------------
-//
-void
-CCamNaviCounterModel::DrawStorageIconToBitmap( CFbsBitGc& aBmpGc,
- CFbsBitGc& aBmpMaskGc ) const
- {
- CFbsBitmap* icon = NULL;
- CFbsBitmap* mask = NULL;
- switch( iStorageLocation )
- {
- case ECamMediaStoragePhone:
- {
- icon = iPhoneIcon;
- mask = iPhoneIconMask;
- }
- break;
- case ECamMediaStorageMassStorage:
- {
- icon = iMassStorageIcon;
- mask = iMassStorageIconMask;
- }
- break;
- case ECamMediaStorageCard:
- {
- icon = iMMCIcon;
- mask = iMMCIconMask;
- }
- break;
- case ECamMediaStorageNone:
- default:
- {
- //TODO: Get icons when none is available
- }
- break;
- }
- // Should use layout
- aBmpGc.BitBlt(TPoint(0,0), icon);
- aBmpMaskGc.BitBlt(TPoint(0,0), mask);
- }
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::DrawStorageIcon
-// Draw the icon for the media storage location
-// ---------------------------------------------------------
-//
-void
-CCamNaviCounterModel::DrawStorageIcon( CBitmapContext& aGc ) const
- {
- CFbsBitmap* icon = NULL;
- CFbsBitmap* mask = NULL;
- switch( iStorageLocation )
- {
- case ECamMediaStoragePhone:
- {
- icon = iPhoneIcon;
- mask = iPhoneIconMask;
- }
- break;
- case ECamMediaStorageMassStorage:
- {
- icon = iMassStorageIcon;
- mask = iMassStorageIconMask;
- }
- break;
- case ECamMediaStorageCard:
- {
- icon = iMMCIcon;
- mask = iMMCIconMask;
- }
- break;
- case ECamMediaStorageNone:
- default:
- {
- //TODO: Get icons when none is available
- }
- break;
- }
-
- if( icon == NULL || mask == NULL)
- {
- return;
- }
-
- if ( iMode == ECamControllerVideo )
- {
- CCamAppUi* appUi = static_cast<CCamAppUi*>( CEikonEnv::Static()->AppUi() );
-
- // Postcapture state
- if ( appUi->CurrentViewState() == ECamViewStatePostCapture )
- {
- aGc.BitBltMasked( iVidPostStorageIconRect.Rect().iTl, icon, icon->SizeInPixels(), mask, ETrue );
- }
- else
- {
- aGc.BitBltMasked( iVidPreStorageIconRect.Rect().iTl, icon, icon->SizeInPixels(), mask, ETrue );
- }
- }
- else
- {
- aGc.BitBltMasked( iImgStorageIconRect.Rect().iTl, icon, icon->SizeInPixels(), mask, ETrue );
- }
- }
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::DrawVideoFileTypeIndicator
-// Draw the icon for the video file type indicator
-// ---------------------------------------------------------
-//
-void CCamNaviCounterModel::DrawVideoFileTypeIndicator( CBitmapContext& aGc ) const
- {
- CFbsBitmap* icon = NULL;
- CFbsBitmap* mask = NULL;
-
- CCamAppUi* appUi = static_cast<CCamAppUi*>( CEikonEnv::Static()->AppUi() );
- if ( appUi && appUi->DrawPreCaptureCourtesyUI() )
- {
- TCamVideoFileType fileType = static_cast< TCamVideoFileType >
- ( iController.IntegerSettingValue( ECamSettingItemVideoFileType ) );
-
- if ( fileType == ECamVideoMpeg4 )
- {
- icon = iMpeg4Icon;
- mask = iMpeg4IconMask;
- }
-
- // Otherwise display the H263 icon.
- else
- {
- icon = i3GPIcon;
- mask = i3GPIconMask;
- }
-
- aGc.BitBltMasked( iVideoFileTypeIconRect.Rect().iTl, icon, icon->SizeInPixels(), mask, ETrue );
- }
- }
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::DrawText
-// Draw the counter text (photo mode)
-// ---------------------------------------------------------
-//
-void
-CCamNaviCounterModel::DrawText( MAknsSkinInstance* /* aSkin */,
- const TDesC& /* aText */,
- CBitmapContext& /* aGc */ ) const
- {
- PRINT( _L("camera <> CCamNaviCounterModel::DrawText() not implemented" ) );
- }
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::DrawTimeLapseCountdown
-// Draw the timelapse image counter text (captured and remaining images)
-// ---------------------------------------------------------
-//
-void CCamNaviCounterModel::DrawTimeLapseCountdown( MAknsSkinInstance* /*aSkin*/,
- CBitmapContext& aGc ) const
- {
- PRINT( _L("Camera => CCamNaviCounterModel::DrawTimeLapseCountdown") );
- if( iCountDownText )
- {
- TBufC<32> buf( *iCountDownText ); // 00:00:00 as Unicode, 32 should be enough
- TPtr pointer = buf.Des();
- AknTextUtils::LanguageSpecificNumberConversion( pointer );
- if ( iTimeLapseCountdownTextItem )
- {
- TRAP_IGNORE( iTimeLapseCountdownTextItem->SetTextL( buf ) );
- iTimeLapseCountdownTextItem->Draw( aGc );
- }
- }
- else
- {
- PRINT( _L("Camera <> CCamNaviCounterModel::DrawTimeLapseCountdown .. [WARNING] no countdown text!") );
- }
- PRINT( _L("Camera <= CCamNaviCounterModel::DrawTimeLapseCountdown") );
- }
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::DrawSequenceImageText
-// Draw the captured and remaining image count during timelapse capture
-// ---------------------------------------------------------
-//
-void CCamNaviCounterModel::DrawSequenceImageText( MAknsSkinInstance* /*aSkin*/,
- CBitmapContext& aGc ) const
- {
- PRINT1( _L("CCamNaviCounterModel::DrawSequenceImageText %S" ), &iSequenceImageText )
-
- if ( iSequenceImageTextItem )
- {
- TRAP_IGNORE( iSequenceImageTextItem->SetTextL( iSequenceImageText ) );
- iSequenceImageTextItem->Draw( aGc );
- }
- }
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::DrawImagesCapturedTextL
-// Draw the count of images captured in timelapse postcapture view
-// ---------------------------------------------------------
-//
-void CCamNaviCounterModel::DrawImagesCapturedTextL(
- MAknsSkinInstance* /*aSkin*/,
- CBitmapContext& aGc ) const
- {
- // Draw count of captured images
- const TInt imagesCaptured = iController.TimeLapseImageCount();
- HBufC* capturedImagesText = StringLoader::LoadLC( R_CAM_TIMELAPSE_IMAGES_CAPTURED, imagesCaptured );
-
- HBufC* buf = HBufC::NewLC( KCamDefaultCapturedImagesTextLen );
- if ( capturedImagesText->Length() > buf->Length() )
- {
- buf->ReAlloc( capturedImagesText->Length() );
- }
-
- buf = capturedImagesText;
- TPtr pointer = buf->Des();
- AknTextUtils::LanguageSpecificNumberConversion( pointer );
-
- if ( iSequenceCapturedTextItem )
- {
- iSequenceCapturedTextItem->SetTextL( *buf );
- iSequenceCapturedTextItem->Draw( aGc );
- }
-
- CleanupStack::PopAndDestroy( buf );
- CleanupStack::PopAndDestroy( capturedImagesText );
- }
-
-#ifdef PRODUCT_SUPPORTS_NAVIPANE_FILENAME
-// ---------------------------------------------------------
-// CCamNaviCounterModel::DrawCurrentFileName
-// Draw the file name
-// ---------------------------------------------------------
-//
-void
-CCamNaviCounterModel::DrawCurrentFileName( MAknsSkinInstance* aSkin,
- CBitmapContext& aGc ) const
- {
- TAknLayoutText layoutText;
- if ( iMode == ECamControllerVideo )
- {
- layoutText = iVideoNameLayout;
- }
- else
- {
- layoutText = iPhotoNameLayout;
- }
- // Draw counter text
- TRgb color = layoutText.Color();
-
- // Color is not updated if it not found from the skin
- AknsUtils::GetCachedColor( aSkin, color,
- KNaviPaneMajorColour, KNaviPaneMinorColour );
-
-
- layoutText.DrawText( aGc, iController.CurrentImageName() , ETrue, KRgbWhite );
- }
-#endif // PRODUCT_SUPPORTS_NAVIPANE_FILENAME
-
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::DrawCurrentFileSizeL
-// Draw the file size
-// ---------------------------------------------------------
-//
-
-void
-CCamNaviCounterModel::DrawCurrentFileSizeL( MAknsSkinInstance* aSkin,
- CBitmapContext& aGc ) const
- {
- TAknLayoutText layoutText;
- if ( iMode == ECamControllerVideo )
- {
- layoutText = iVideoSizeLayout;
- }
- else
- {
- layoutText = iPhotoSizeLayout;
- }
- // Draw counter text
- TRgb color = layoutText.Color();
-
- // Color is not updated if it not found from the skin
- AknsUtils::GetCachedColor( aSkin, color,
- KNaviPaneMajorColour, KNaviPaneMinorColour );
-
- // Show the filename or burst name (if burst mode)
-
- //START: NOT DISPLAYING FILESIZE
- /*
- CCamAppUi* appUi = static_cast<CCamAppUi*>( CEikonEnv::Static()->AppUi() );
- TInt size = 0;
-
- // Get the filesize
- if ( appUi->CurrentViewState() == ECamViewStatePostCapture )
- {
- TPtrC filename = iController.CurrentFullFileName();
- size = iController.FileSize( filename );
- }
- else if ( appUi->CurrentViewState() == ECamViewStateBurstThumbnail )
- {
- }
- // otherwise, do nothing
- else
- {
- // empty statement to remove Lint error, MISRA required rule 60
- }
- */
- //END: NOT DISPLAYING FILESIZE
-
- if ( iMode == ECamControllerVideo )
- {
- // Draw the file size string
- TBuf <15> timebuf;
- TBuf <30> fullbuf;
-
- // Generate the string for video length (time)
- TTimeIntervalMicroSeconds interval = iController.RecordTimeElapsed();
- TTime time( interval.Int64() );
- time.FormatL( timebuf, *iTimeFormat );
- aGc.SetBrushColor( KRgbWhite );
- TBufC<KMaxTextLength> buf( timebuf );
- TPtr pointer = buf.Des();
- AknTextUtils::LanguageSpecificNumberConversion( pointer );
- layoutText.DrawText( aGc, pointer, EFalse, KRgbBlack );
- }
-
- // START: NOT DISPLAYING FILESIZE
- /*
- else
- {
- if ( size > 0 )
- {
- // Draw the file size string
- HBufC* fileSizeStr = StringLoader::LoadLC( R_QTN_SIZE_KB, size / KKilo );
- layoutText.DrawText( aGc, fileSizeStr->Des() , ETrue, KRgbWhite );
- CleanupStack::PopAndDestroy( fileSizeStr );
- }
- }
- */
- // END: NOT DISPLAYING FILESIZE
-
- }
-
-
-// ----------------------------------------------------
-// CCamNaviCounterModel::BurstModeActiveL
-// Notification that the burst mode has been activated/deactivated
-// ----------------------------------------------------
-//
-// burst mode icon is displayed in either the navipane or sidepane
-void CCamNaviCounterModel::BurstModeActiveL( TBool aActive, TBool /*aStillModeActive*/ )
- {
-#ifdef PRODUCT_SUPPORTS_NAVIPANE_SEQUENCE
- // Update internal state, and trigger a redraw
- iDrawSequence = aActive;
- DrawDeferred();
-#endif // PRODUCT_SUPPORTS_NAVIPANE_SEQUENCE
-
- // update remaining images
- iBurstActive = aActive;
- UpdateCounter();
- }
-
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::ForceNaviPaneUpdate
-// Force update of navi-pane (i.e after dismissal of MMC removed error note)
-// ---------------------------------------------------------
-//
-void CCamNaviCounterModel::ForceNaviPaneUpdate()
- {
- PRINT( _L("Camera => CCamNaviCounterModel::ForceNaviPaneUpdate" ))
- // update counters
- // get current storage location
- TInt key = ( ECamControllerVideo == iMode )
- ? ECamSettingItemVideoMediaStorage
- : ECamSettingItemPhotoMediaStorage;
-
- if ( static_cast<CCamAppUi*>( CEikonEnv::Static()->AppUi() )->IsMMCRemovedNotePending() )
- {
- PRINT( _L("Camera <> CCamNaviCounterModel::ForceNaviPaneUpdate pend") )
- iStorageLocation =
- static_cast<TCamMediaStorage>(
- iController.IntegerSettingValueUnfiltered( key ) );
- }
- else
- {
- PRINT( _L("Camera <> CCamNaviCounterModel::ForceNaviPaneUpdate yyy") )
- iStorageLocation =
- static_cast<TCamMediaStorage>(
- iController.IntegerSettingValue( key ) );
- }
-
- if (ECamMediaStorageMassStorage ==iStorageLocation)
- {
- TCamMediaStorage storage = iController.IntegerSettingValue( ECamSettingItemRemovePhoneMemoryUsage )?
- ECamMediaStorageNone:
- ECamMediaStoragePhone;
- iStorageLocation = iController.ExistMassStorage()?ECamMediaStorageMassStorage:storage;
- }
- UpdateCounter();
-
- TRAP_IGNORE( UpdateRecordTimeAvailableL() );
- PRINT( _L("Camera <= CCamNaviCounterModel::ForceNaviPaneUpdate" ))
- }
-
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::HandleControllerEventL
-// Handle an event from CCamAppController.
-// ---------------------------------------------------------
-//
-void
-CCamNaviCounterModel::HandleControllerEventL( TCamControllerEvent aEvent,
- TInt /* aError */ )
- {
- PRINT1( _L("Camera => CCamNaviCounterModel::HandleControllerEventL %d" ), aEvent )
- CCamAppUi* appUi = static_cast<CCamAppUi*>( CEikonEnv::Static()->AppUi() );
- iCounterNeedUpdate = EFalse;
-
- switch( aEvent )
- {
- // -----------------------------------------------------
- // If this is a capture complete event, or the image quality or save
- // location has changed...
-// case ECamEventCaptureComplete:
- case ECamEventVideoQualityChanged:
- case ECamEventImageQualityChanged:
- case ECamEventSaveLocationChanged:
- {
- if( iMode == ECamControllerVideo )
- {
- UpdateRecordTimeAvailableL();
- }
- else
- {
- UpdateCounter();
- }
-
- if ( ECamEventSaveLocationChanged == aEvent )
- {
- TCamSettingItemIds storageId = (ECamControllerVideo == iMode)
- ? ECamSettingItemVideoMediaStorage
- : ECamSettingItemPhotoMediaStorage;
-
- // update location
- if ( appUi->IsMMCRemovedNotePending() )
- {
- iStorageLocation = static_cast< TCamMediaStorage >
- ( iController.IntegerSettingValueUnfiltered( storageId ) );
- }
- else
- {
- iStorageLocation = static_cast< TCamMediaStorage >
- ( iController.IntegerSettingValue( storageId ) );
- }
- //CreateNaviBitmapsL( ETrue );
-
- if (ECamMediaStorageMassStorage ==iStorageLocation)
- {
- TCamMediaStorage storage = iController.IntegerSettingValue( ECamSettingItemRemovePhoneMemoryUsage )?
- ECamMediaStorageNone:
- ECamMediaStoragePhone;
- iStorageLocation = iController.ExistMassStorage()?ECamMediaStorageMassStorage:storage;
- }
- }
- BroadcastEvent( ECamObserverEventNaviModelUpdated );
- break;
- }
- // -----------------------------------------------------
- case ECamEventLocationSettingChanged:
- {
- iLocationIconVisible = (/*TCamLocationId::ECamLocationOn*/1 == iController.IntegerSettingValue( ECamSettingItemRecLocation ));
- // We reload the resource data so that the control is drawn correctly
- ReloadResourceDataL();
- //BroadcastEvent( ECamObserverEventNaviModelUpdated );
- break;
- }
- // -----------------------------------------------------
- case ECamEventEngineStateChanged:
- {
- if( ECamControllerVideo == iMode )
- {
- // wait until engine has initialised video before updating time remaining
- if ( !iVideoInitialised )
- {
- // <CAMERAAPP_CAPI_V2_MIGRATION/>
- // if ( iController.EngineState() == ECamEngineVideoCapturePrepared )
- if ( iController.CameraState() == ECamCameraPreparedVideo )
- {
- iVideoInitialised = ETrue;
- }
- }
- if ( iVideoInitialised )
- {
- UpdateRecordTimeAvailableL();
- if ( iController.IsViewFinding() )
- {
- BroadcastEvent( ECamObserverEventNaviModelUpdated );
- }
- }
- }
- else
- {
- // exited from video mode
- iVideoInitialised = EFalse;
- }
- break;
- }
-
- // -----------------------------------------------------
- case ECamEventSaveComplete:
- case ECamEventRecordComplete:
- {
- if( ECamControllerVideo == iMode )
- {
- UpdateRecordTimeAvailableL();
- }
- else
- {
- switch( iImageMode )
- {
- case ECamImageCaptureBurst:
- case ECamImageCaptureTimeLapse:
- // Sequence: captured / remaining
- UpdateSequenceImageCount();
- break;
- default:
- // Remaining images
- UpdateCounter();
- break;
- }
- }
- // no broadcast if in burst and all snapshots have not been received
- if( !( iMode == ECamControllerImage &&
- iImageMode == ECamImageCaptureBurst &&
- !iController.AllSnapshotsReceived()) )
- {
- BroadcastEvent( ECamObserverEventNaviModelUpdated );
- }
- break;
- }
- case ECamEventAudioMuteStateChanged:
- {
- if ( appUi->IsDirectViewfinderActive() )
- {
- appUi->HandleCommandL( ECamCmdRedrawScreen );
- }
- //Remaining Recording time is updated before drawing
- //CreateNaviBitmapsL( ETrue );
- break;
- }
- // -----------------------------------------------------
- case ECamEventCounterUpdated:
- {
- if( iController.SequenceCaptureInProgress()
- && ( ECamImageCaptureTimeLapse == iImageMode
- || ECamImageCaptureBurst == iImageMode ) )
- {
- // UpdateCounter;
- iCounterNeedUpdate = ETrue;
- UpdateSequenceImageCount();
- if ( ECamImageCaptureTimeLapse == iImageMode )
- {
- // Update remaining time till next capture
- UpdateTimeLapseCountdownL();
- }
- if( iController.AllSnapshotsReceived() )
- {
- PRINT( _L("CCamNaviCounterModel BroadcastEvent( ECamObserverEventNaviModelUpdated )" ) )
- BroadcastEvent( ECamObserverEventNaviModelUpdated );
- }
- }
- break;
- }
- // -----------------------------------------------------
- default:
- {
- break;
- }
- // -----------------------------------------------------
- }
- }
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::ConstructNaviSelfTimerL
-// Creating the member variables required for showing the
-// self timer state in the navipane
-// ---------------------------------------------------------
-//
-void CCamNaviCounterModel::ConstructNaviSelfTimerL( TPtrC& aResname )
- {
- CCamAppUi* appUi = static_cast<CCamAppUi*>( CEikonEnv::Static()->AppUi() );
-
- // Setup self timer icon.
- // ...Create the icon
- TSize size = iSelfTimerIconRect.Rect().Size();
- AknIconUtils::CreateIconL( iSelfTimerIcon,
- iSelfTimerMask,
- aResname,
- EMbmCameraappQgn_indi_cam4_selftimer,
- EMbmCameraappQgn_indi_cam4_selftimer_mask );
- AknIconUtils::SetSize( iSelfTimerIcon, size );
-
- // ...Add self as an observer of the self timer.
- CCamSelfTimer* selftimer = appUi->SelfTimer();
- if ( selftimer )
- {
- selftimer->AddObserverL( this );
- }
- }
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::DrawNaviSelfTimer
-// Draw the self timer icon
-// ---------------------------------------------------------
-//
-void
-CCamNaviCounterModel::DrawNaviSelfTimer( CBitmapContext& aGc,
- MAknsSkinInstance* /*aSkin*/ ) const
- {
- // Draw self timer icons, if set to on.
- if ( iDrawSelfTimer )
- {
- if ( CamUtility::IsNhdDevice() )
- {
- aGc.SetBrushColor( KRgbWhite );
- aGc.SetBrushStyle( CGraphicsContext::ENullBrush );
- iSelfTimerTextLayout.DrawText( aGc, iSelfTimerText, EFalse, KRgbBlack );
-
- aGc.BitBltMasked( iSelfTimerIconRect.Rect().iTl, iSelfTimerIcon,
- iSelfTimerIcon->SizeInPixels(), iSelfTimerMask, ETrue );
- }
- else
- {
- aGc.SetBrushColor( KRgbBlack );
- aGc.SetBrushStyle( CGraphicsContext::ENullBrush );
- iSelfTimerTextLayout.DrawText( aGc, iSelfTimerText, EFalse, KRgbWhite );
-
- aGc.BitBltMasked( iSelfTimerIconRect.Rect().iTl, iSelfTimerIcon,
- iSelfTimerIcon->SizeInPixels(), iSelfTimerMask, ETrue );
- }
- }
- }
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::ConstructNaviSequenceL
-// Creating the member variables required for showing the
-// sequence capture state in the navipane
-// ---------------------------------------------------------
-//
-void CCamNaviCounterModel::ConstructNaviSequenceL( TPtrC& aResname )
- {
- // Setup sequence icon.
- // ...Create the icon
- TSize size = iSequenceIconRect.Rect().Size();
- AknIconUtils::CreateIconL( iSequenceIcon,
- iSequenceMask,
- aResname,
- EMbmCameraappQgn_indi_cam4_sequence_burst,
- EMbmCameraappQgn_indi_cam4_sequence_burst_mask );
- AknIconUtils::SetSize( iSequenceIcon, size );
-
- CCamAppUi* appUi = static_cast<CCamAppUi*>( CEikonEnv::Static()->AppUi() );
-
- // ...Add self as an observer of burst mode
- appUi->AddBurstModeObserverL( this );
- }
-
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::DrawNaviSequence
-// Draw the sequence capture icon
-// ---------------------------------------------------------
-//
-void CCamNaviCounterModel::DrawNaviSequence( CBitmapContext& aGc ) const
- {
- aGc.BitBltMasked( iSequenceIconRect.Rect().iTl, iSequenceIcon,
- iSequenceIcon->SizeInPixels(), iSequenceMask, ETrue);
- }
-
-#ifdef PRODUCT_SUPPORTS_NAVIPANE_GENERIC_SETUP_INDICATOR
-// ---------------------------------------------------------
-// CCamNaviCounterModel::ConstructNaviGenericSetupL
-// Creating the member variables required for showing the
-// generic setup state in the navipane
-// ---------------------------------------------------------
-//
-void CCamNaviCounterModel::ConstructNaviGenericSetupL( TPtrC& aResname )
- {
- // Setup generic setup icon.
- // ...Create the icon
- TSize size = iGenericIconRect.Rect().Size();
- AknIconUtils::CreateIconL( iGenericIcon,
- iGenericMask,
- aResname,
- EMbmCameraappQgn_indi_lcam_generic,
- EMbmCameraappQgn_indi_lcam_generic_mask );
- AknIconUtils::SetSize( iGenericIcon, size );
- }
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::DrawNaviGenericSetup
-// Draw the generic setup icon
-// ---------------------------------------------------------
-//
-void CCamNaviCounterModel::DrawNaviGenericSetup( CBitmapContext& aGc ) const
- {
- if ( ( iMode == ECamControllerVideo && !iController.VideoSceneDefaultsAreSet() ) ||
- ( iMode != ECamControllerVideo && !iController.PhotoSceneDefaultsAreSet() ) )
- {
- aGc.BitBltMasked( iGenericIconRect.Rect().iTl, iGenericIcon,
- iGenericIcon->SizeInPixels(), iGenericMask, ETrue);
- }
- }
-#endif // PRODUCT_SUPPORTS_NAVIPANE_GENERIC_SETUP_INDICATOR
-
-
-
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::ConstructNaviAudioMuteL
-// Creating the member variables required for showing the
-// audio mute state in the navipane
-// ---------------------------------------------------------
-//
-void CCamNaviCounterModel::ConstructNaviAudioMuteL( TPtrC& aResname )
- {
- // Setup generic setup icon.
-
- // ...Create the icon
- TSize size = iAudioMuteIconRect.Rect().Size();
- AknIconUtils::CreateIconL( iAudioMuteIcon,
- iAudioMuteMask,
- aResname,
- EMbmCameraappQgn_indi_vid4_audio_mute,
- EMbmCameraappQgn_indi_vid4_audio_mute_mask );
- AknIconUtils::SetSize( iAudioMuteIcon, size );
- }
-
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::DrawNaviAudioMute
-// Draw the audio mute icon
-// ---------------------------------------------------------
-//
-void CCamNaviCounterModel::DrawNaviAudioMute( CBitmapContext& aGc ) const
- {
- TCamSettingsOnOff audio = static_cast< TCamSettingsOnOff >
- ( iController.IntegerSettingValue( ECamSettingItemVideoAudioRec ) );
-
- // If the current mode is in video and the audio has been
- // muted, display the audio mute indicator.
- if ( ( ECamSettOff == audio ) && ( iMode == ECamControllerVideo ) )
- {
- // Draw icon
- aGc.BitBltMasked( iAudioMuteIconRect.Rect().iTl, iAudioMuteIcon,
- iAudioMuteIcon->SizeInPixels(), iAudioMuteMask, ETrue);
- }
- }
-
-
-
-
-#ifdef PRODUCT_SUPPORTS_NAVIPANE_MODE_SUBTITLE
-// ---------------------------------------------------------
-// CCamNaviCounterModel::ConstructNaviModeSubtitleL
-// Creating the member variables required for showing the
-// current mode in the navipane
-// ---------------------------------------------------------
-//
-void CCamNaviCounterModel::ConstructNaviModeSubtitleL( TPtrC& aResname )
- {
- // Setup generic setup icon.
-
- // ...Create the icon (photo icon)
- TSize size = iSubtitlePhotoRect.Rect().Size();
- AknIconUtils::CreateIconL( iSubtitlePhotoIcon,
- iSubtitlePhotoMask,
- aResname,
- EMbmCameraappQgn_indi_cam_photomode,
- EMbmCameraappQgn_indi_cam_photomode_mask );
- AknIconUtils::SetSize( iSubtitlePhotoIcon, size );
-
- // ...Create the icon (video icon)
- size = iSubtitlePhotoRect.Rect().Size();
- AknIconUtils::CreateIconL( iSubtitleVideoIcon,
- iSubtitleVideoMask,
- aResname,
- EMbmCameraappQgn_indi_cam_videomode,
- EMbmCameraappQgn_indi_cam_videomode_mask );
- AknIconUtils::SetSize( iSubtitleVideoIcon, size );
- }
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::DrawNaviModeSubtitle
-// Draw the subtitle text and icon
-// ---------------------------------------------------------
-//
-void CCamNaviCounterModel::DrawNaviModeSubtitle( CBitmapContext& aGc, MAknsSkinInstance* aSkin ) const
- {
- CWindowGc& gc = SystemGc();
- // Set drawing colour
- TRgb color = iSelfTimerTextLayout.Color();
- // ...Color is not updated if it not found from the skin
- AknsUtils::GetCachedColor( aSkin, color,
- KNaviPaneMajorColour, KNaviPaneMinorColour );
-
- if ( iMode == ECamControllerVideo )
- {
-
- iSubtitleVideoTextLayout.DrawText( gc, iSubtitleVideoText->Des(), ETrue, KRgbWhite );
- aGc.BitBltMasked( iSubtitleVideoRect.Rect().iTl, iSubtitleVideoIcon,
- iSubtitleVideoIcon->SizeInPixels(), iSubtitleVideoMask, ETrue);
- }
- else
- {
-
- iSubtitlePhotoTextLayout.DrawText( gc, iSubtitlePhotoText->Des(), ETrue, KRgbWhite );
- aGc.BitBltMasked( iSubtitlePhotoRect.Rect().iTl, iSubtitlePhotoIcon,
- iSubtitlePhotoIcon->SizeInPixels(), iSubtitlePhotoMask, ETrue);
- }
- }
-#endif // PRODUCT_SUPPORTS_NAVIPANE_MODE_SUBTITLE
-
-
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::SetExtentL
-// Sets where the navicounter should be rendered
-// ---------------------------------------------------------
-//
-void CCamNaviCounterModel::SetExtentL( TRect aExtent )
- {
- if ( aExtent != iExtent )
- {
- iExtent = aExtent;
- }
- }
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::RegisterObserverL
-// Registers an observer
-// ---------------------------------------------------------
-//
-void CCamNaviCounterModel::RegisterObserverL(MCamObserver* aObserver)
- {
- iObserverHandler->RegisterObserverL(aObserver);
- }
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::DeregisterObserver
-// Deregisters an observer
-// ---------------------------------------------------------
-//
-void CCamNaviCounterModel::DeregisterObserver(MCamObserver* aObserver)
- {
- iObserverHandler->DeregisterObserver(aObserver);
- }
-
-// ---------------------------------------------------------
-// CCamNaviCounterModel::BroadcastEvent
-// Broadcasts an event code to all observers
-// ---------------------------------------------------------
-//
-void CCamNaviCounterModel::BroadcastEvent(TCamObserverEvent aEvent)
- {
- iObserverHandler->BroadcastEvent(aEvent);
- }
-
-// ---------------------------------------------------------------------------
-// CCamNaviCounterModel::CreateNaviBitmapsL
-// Set up the memory icon and counter in the navipane
-// ---------------------------------------------------------------------------
-//
-void CCamNaviCounterModel::CreateNaviBitmapsL( const TBool aDrawIcons )
- {
- PRINT( _L("Camera => CCamNaviCounterModel::CreateNaviBitmapsL") );
- CCamAppUi* camAppUi = ( CCamAppUi* )iAvkonAppUiBase;
- if ( camAppUi && camAppUi->SettingsLaunchedFromCamera() )
- {
- CEikStatusPane* sp = camAppUi->StatusPane();
-
- TUid npUid ;
- npUid.iUid = EEikStatusPaneUidNavi;
- CAknNavigationControlContainer* naviPane =
- ( CAknNavigationControlContainer* )sp->ControlL( npUid );
-
- // dispose of old decorator and bitmaps
- if( iNaviDec )
- {
- // do we need to pop it off the navi pane stack first?
- delete iNaviDec;
- iNaviDec = NULL;
- iNaviBitmap = NULL;
- iNaviBitmapMask = NULL;
- }
-
- if( iNaviBitmap )
- {
- delete iNaviBitmap;
- iNaviBitmap = NULL;
- }
-
- iNaviBitmap = new ( ELeave ) CFbsBitmap();
- User::LeaveIfError( iNaviBitmap->Create( TSize(250,20), EColor64K ) );
- CFbsBitmapDevice* bmpDevice = NULL;
- bmpDevice = CFbsBitmapDevice::NewL( iNaviBitmap );
- CleanupStack::PushL( bmpDevice );
- CFbsBitGc* bmpGc = NULL;
- User::LeaveIfError( bmpDevice->CreateContext( bmpGc ) );
- CleanupStack::PushL( bmpGc );
-
- if( iNaviBitmapMask )
- {
- delete iNaviBitmapMask;
- iNaviBitmapMask = NULL;
- }
- iNaviBitmapMask = new ( ELeave ) CFbsBitmap();
- User::LeaveIfError( iNaviBitmapMask->Create( TSize(250,20), EColor64K ) );
- CFbsBitmapDevice* bmpMaskDevice = NULL;
- bmpMaskDevice = CFbsBitmapDevice::NewL( iNaviBitmapMask );
- CleanupStack::PushL( bmpMaskDevice );
- CFbsBitGc* bmpMaskGc = NULL;
- User::LeaveIfError( bmpMaskDevice->CreateContext( bmpMaskGc ) );
- CleanupStack::PushL( bmpMaskGc );
-
- if ( aDrawIcons )
- {
- if ( iMode == ECamControllerVideo )
- {
- UpdateRecordTimeAvailableL();
- }
- DrawCounterToBitmaps( *bmpGc, *bmpMaskGc );
- }
- // Create the new decorator and push on to navi stack
- iNaviDec = naviPane->CreateNavigationImageL( iNaviBitmap,
- iNaviBitmapMask );
- CleanupStack::PopAndDestroy( bmpMaskGc );
- CleanupStack::PopAndDestroy( bmpMaskDevice );
- CleanupStack::PopAndDestroy( bmpGc );
- CleanupStack::PopAndDestroy( bmpDevice );
- naviPane->PushL( *iNaviDec );
- }
- PRINT( _L("Camera <= CCamNaviCounterModel::CreateNaviBitmapsL") );
- }
-
-// ---------------------------------------------------------------------------
-// CCamNaviCounterModel::NonTouchLayoutL
-// ---------------------------------------------------------------------------
-void CCamNaviCounterModel::NonTouchLayoutL()
- {
- TInt variant = 0;
-
- TInt cba = AknLayoutUtils::CbaLocation() ==
- AknLayoutUtils::EAknCbaLocationLeft?
- AknLayoutUtils::EAknCbaLocationLeft : 0;
-
- TAknLayoutRect camIndicatorPane;
- camIndicatorPane.LayoutRect( iExtent,
- AknLayoutScalable_Apps::cam6_indi_pane( variant ));
-
- iImgStorageIconRect.LayoutRect( camIndicatorPane.Rect(),
- AknLayoutScalable_Apps::cam6_indi_pane_g2( cba ) );
-
- iPhotoTextItem->SetLayoutL( camIndicatorPane.Rect(),
- AknLayoutScalable_Apps::cam6_indi_pane_t1( cba ) );
-
- TAknLayoutRect vidIndicatorPane;
- vidIndicatorPane.LayoutRect( iExtent,
- AknLayoutScalable_Apps::vid6_indi_pane( cba ) );
-
- iVidPreStorageIconRect.LayoutRect( vidIndicatorPane.Rect(),
- AknLayoutScalable_Apps::vid6_indi_pane_g3( cba ) );
-
- iVideoTextLayout.LayoutText( vidIndicatorPane.Rect(),
- AknLayoutScalable_Apps::vid6_indi_pane_t1( cba ) );
-
- iVideoTextItem->SetLayoutL( vidIndicatorPane.Rect(),
- AknLayoutScalable_Apps::vid6_indi_pane_t1( cba ) );
-
- TAknLayoutRect vidProgressPane;
- vidProgressPane.LayoutRect( iExtent,
- AknLayoutScalable_Apps::vid6_indi_pane( cba ) );
-
- iSequenceImageTextItem->SetLayoutL(
- vidProgressPane.Rect(),
- AknLayoutScalable_Apps::vid6_indi_pane_t4( 2 ) );
-
- iTimeLapseCountdownTextItem->SetLayoutL(
- vidProgressPane.Rect(),
- AknLayoutScalable_Apps::vid6_indi_pane_t4( 2 ) );
-
- iSequenceCapturedTextItem->SetLayoutL(
- vidProgressPane.Rect(),
- AknLayoutScalable_Apps::vid6_indi_pane_t4( 2 ) );
-
-
- // ...Load layout rect for self timer image.
- TAknLayoutRect timerParent;
- timerParent.LayoutRect( iExtent,
- AknLayoutScalable_Apps::cam6_timer_pane( cba ) );
- iSelfTimerIconRect.LayoutRect( timerParent.Rect(),
- AknLayoutScalable_Apps::cam6_timer_pane_g1( cba ) );
- iSelfTimerTextLayout.LayoutText( timerParent.Rect(),
- AknLayoutScalable_Apps::cam6_timer_pane_t1( cba ) );
-
- iVideoSizeLayout.LayoutText( vidProgressPane.Rect(),
- AknLayoutScalable_Apps::vid6_indi_pane_t4( 2 ) ); // Magic: layout Opt2
- iPhotoSizeLayout = iVideoSizeLayout;
-
- // ...Load layout rect for sequence image.
- iSequenceIconRect.LayoutRect( iExtent,
- AknLayoutScalable_Apps::cam6_mode_pane_g2( cba ) );
-
- iAudioMuteIconRect.LayoutRect( iExtent,
- AknLayoutScalable_Apps::cam6_mode_pane_g2( cba ) );
-
- }
-
-// ---------------------------------------------------------------------------
-// CCamNaviCounterModel::NonTouchLayoutSecondaryL
-// ---------------------------------------------------------------------------
-void CCamNaviCounterModel::NonTouchLayoutSecondaryL()
- {
- // Magic numbers used for layout variation
- TAknLayoutRect camIndicatorPane;
- camIndicatorPane.LayoutRect( iExtent,
- AknLayoutScalable_Apps::cam6_indi_pane( 3 ));
-
- iImgStorageIconRect.LayoutRect( camIndicatorPane.Rect(),
- AknLayoutScalable_Apps::cam6_indi_pane_g2( 2 ) );
-
- iPhotoTextItem->SetLayoutL( camIndicatorPane.Rect(),
- AknLayoutScalable_Apps::cam6_indi_pane_t1( 4 ) );
-
- TAknLayoutRect vidIndicatorPane;
- vidIndicatorPane.LayoutRect( iExtent,
- AknLayoutScalable_Apps::vid6_indi_pane( 3 ) );
-
- iVidPreStorageIconRect.LayoutRect( vidIndicatorPane.Rect(),
- AknLayoutScalable_Apps::vid6_indi_pane_g3( 2 ) );
-
- iVideoTextLayout.LayoutText( vidIndicatorPane.Rect(),
- AknLayoutScalable_Apps::vid6_indi_pane_t1( 1 ) );
-
- iVideoTextItem->SetLayoutL( vidIndicatorPane.Rect(),
- AknLayoutScalable_Apps::vid6_indi_pane_t1( 1 ) );
-
- iVideoSizeLayout.LayoutText( vidIndicatorPane.Rect(),
- AknLayoutScalable_Apps::vid6_indi_pane_t1( 1 ) );
- iPhotoSizeLayout = iVideoSizeLayout;
-
- iAudioMuteIconRect.LayoutRect( iExtent,
- AknLayoutScalable_Apps::cam6_mode_pane_g1( 0 ) );
-
- }
-
-// ---------------------------------------------------------------------------
-// CCamNaviCounterModel::TouchLayoutL
-// ---------------------------------------------------------------------------
-void CCamNaviCounterModel::TouchLayoutL()
- {
- TInt variant = 0; // portrait
- TInt indicatorVariant = 1;
- if ( Layout_Meta_Data::IsLandscapeOrientation() )
- {
- // Landscape layout variant
- variant = 1; // landscape
- indicatorVariant = 0;
- }
- TInt secCamera = ECamActiveCameraSecondary == iController.ActiveCamera();
-
- TAknLayoutRect camIndicatorPane;
- camIndicatorPane.LayoutRect( iExtent,
- AknLayoutScalable_Apps::cam4_indicators_pane( variant ) );
-
- iImgStorageIconRect.LayoutRect( camIndicatorPane.Rect(),
- AknLayoutScalable_Apps::cam4_indicators_pane_g2( indicatorVariant ) );
-
- iPhotoTextItem->SetLayoutL( camIndicatorPane.Rect(),
- AknLayoutScalable_Apps::cam4_indicators_pane_t1( secCamera ) );
-
- TAknLayoutRect vidIndicatorPane;
- vidIndicatorPane.LayoutRect( iExtent,
- AknLayoutScalable_Apps::vid4_progress_pane( variant ) );// vid4_indicators_pane should be used
-
- iVidPreStorageIconRect.LayoutRect( vidIndicatorPane.Rect(),
- AknLayoutScalable_Apps::vid4_indicators_pane_g3( indicatorVariant ) );
-
- #ifdef PRODUCT_SUPPORTS_POST_CAPTURE_INDICATORS
- iVideoFileTypeIconRect.LayoutRect( vidIndicatorPane.Rect(),
- AknLayoutScalable_Apps::vid4_indicators_pane_g2( indicatorVariant ) );
- #endif
-
- iVideoTextLayout.LayoutText( vidIndicatorPane.Rect(),
- AknLayoutScalable_Apps::vid4_indicators_pane_t1( indicatorVariant ) );
-
- iVideoTextItem->SetLayoutL( vidIndicatorPane.Rect(),
- AknLayoutScalable_Apps::vid4_indicators_pane_t1( indicatorVariant ) );
-
-
- TAknLayoutRect vidProgressPane;
- vidProgressPane.LayoutRect(
- iExtent,
- AknLayoutScalable_Apps::vid4_progress_pane( variant ) );
-
- iSequenceImageTextItem->SetLayoutL(
- vidProgressPane.Rect(),
- AknLayoutScalable_Apps::vid4_progress_pane_t3() );
-
- iTimeLapseCountdownTextItem->SetLayoutL(
- vidProgressPane.Rect(),
- AknLayoutScalable_Apps::vid4_progress_pane_t3() );
-
- iSequenceCapturedTextItem->SetLayoutL(
- vidProgressPane.Rect(),
- AknLayoutScalable_Apps::vid4_progress_pane_t3() );
-
-
- // ...Load layout rect for self timer image.
- iSelfTimerIconRect.LayoutRect( iExtent,
- AknLayoutScalable_Apps::main_camera4_pane_g5( variant ) );
- iSelfTimerTextLayout.LayoutText( iExtent,
- AknLayoutScalable_Apps::main_camera4_pane_t1( variant ) );
-
- #ifdef PRODUCT_SUPPORTS_NAVIPANE_MODE_SUBTITLE
- if ( !AknLayoutUtils::LayoutMirrored() )
- {
- iSubtitlePhotoTextLayout.LayoutText( iExtent,
- ROID(R_CAM_SUBTITLE_PHOTOMODE_TEXT_LAYOUT_ID));
- iSubtitleVideoTextLayout.LayoutText( iExtent,
- ROID(R_CAM_SUBTITLE_VIDEOMODE_TEXT_LAYOUT_ID));
- iSubtitlePhotoRect.LayoutRect( iExtent,
- ROID(R_CAM_SUBTITLE_PHOTOMODE_ICON_RECT_ID));
- iSubtitleVideoRect.LayoutRect( iExtent,
- ROID(R_CAM_SUBTITLE_VIDEOMODE_ICON_RECT_ID));
- }
- else
- {
- iSubtitlePhotoTextLayout.LayoutText( iExtent,
- ROID(R_CAM_SUBTITLE_PHOTOMODE_TEXT_LAYOUT_AH_ID));
- iSubtitleVideoTextLayout.LayoutText( iExtent,
- ROID(R_CAM_SUBTITLE_VIDEOMODE_TEXT_LAYOUT_AH_ID));
- iSubtitlePhotoRect.LayoutRect( iExtent,
- ROID(R_CAM_SUBTITLE_PHOTOMODE_ICON_RECT_AH_ID));
- iSubtitleVideoRect.LayoutRect( iExtent,
- ROID(R_CAM_SUBTITLE_VIDEOMODE_ICON_RECT_AH_ID));
- }
-
- // ...Read the strings from the resource
- iSubtitleVideoText = iCoeEnv->AllocReadResourceAsDes16L(
- ROID(R_CAM_STILL_PRE_CAPTURE_SUBTITLE_TEXT_VIDEO_ID));
- iSubtitlePhotoText = iCoeEnv->AllocReadResourceAsDes16L(
- ROID(R_CAM_STILL_PRE_CAPTURE_SUBTITLE_TEXT_PHOTO_ID));
- #endif // PRODUCT_SUPPORTS_NAVIPANE_MODE_SUBTITLE
-
- #ifdef PRODUCT_SUPPORTS_NAVIPANE_FILENAME
- if ( !AknLayoutUtils::LayoutMirrored() )
- {
- iPhotoNameLayout.LayoutText( iExtent,
- ROID(R_CAM_POST_CAPTURE_IMAGE_NAME_LAYOUT_ID));
- iVideoNameLayout.LayoutText( iExtent,
- ROID(R_CAM_POST_CAPTURE_VIDEO_NAME_LAYOUT_ID));
- }
- else
- {
- iPhotoNameLayout.LayoutText( iExtent,
- ROID(R_CAM_POST_CAPTURE_IMAGE_NAME_LAYOUT_AH_ID));
- iVideoNameLayout.LayoutText( iExtent,
- ROID(R_CAM_POST_CAPTURE_VIDEO_NAME_LAYOUT_AH_ID));
- }
-
- #endif // PRODUCT_SUPPORTS_NAVIPANE_FILENAME
-
-
- iVideoSizeLayout.LayoutText( vidProgressPane.Rect(),
- AknLayoutScalable_Apps::vid4_progress_pane_t3( indicatorVariant ));
-
- if ( !AknLayoutUtils::LayoutMirrored() )
- {
- iPhotoSizeLayout.LayoutText( iExtent,
- ROID(R_CAM_POST_CAPTURE_IMAGE_SIZE_LAYOUT_ID));
- }
- else
- {
- iPhotoSizeLayout.LayoutText( iExtent,
- ROID(R_CAM_POST_CAPTURE_IMAGE_SIZE_LAYOUT_AH_ID));
- }
-
- // ...Load layout rect for sequence image.
- iSequenceIconRect.LayoutRect( iExtent,
- AknLayoutScalable_Apps::main_camera4_pane_g2( variant ) );
-
- #ifdef PRODUCT_SUPPORTS_NAVIPANE_GENERIC_SETUP_INDICATOR
- if ( !AknLayoutUtils::LayoutMirrored() )
- {
- iGenericIconRect.LayoutRect( iExtent,
- ROID(R_CAM_GENERIC_SETUP_ICON_RECT_ID));
- }
- else
- {
- iGenericIconRect.LayoutRect( iExtent,
- ROID(R_CAM_GENERIC_SETUP_ICON_RECT_AH_ID));
- }
- #endif // PRODUCT_SUPPORTS_NAVIPANE_GENERIC_SETUP_INDICATOR
-
-
- CCamAppUi* appUi = static_cast<CCamAppUi*>( CEikonEnv::Static()->AppUi() );
- if ( appUi->IsSecondCameraEnabled() && !appUi->IsQwerty2ndCamera() )
- {
- TRect mainPaneRect;
- AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane,
- mainPaneRect );
- iAudioMuteIconRect.LayoutRect(
- mainPaneRect,
- AknLayoutScalable_Apps::main_video4_pane_g2( variant ) );
- }
- else
- {
- iAudioMuteIconRect.LayoutRect(
- iExtent,
- AknLayoutScalable_Apps::main_video4_pane_g2( variant ) );
- }
- }
-
-// End of File