# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1271248864 -10800 # Node ID 51dda465e618cf386248184a95f91ea3f0fa4bc5 # Parent d486e5e3cc9a6b744c852c49e919a50e406a87a8 Revision: 201013 Kit: 201015 diff -r d486e5e3cc9a -r 51dda465e618 camerauis/cameraapp/build/iconlist.txt --- a/camerauis/cameraapp/build/iconlist.txt Wed Mar 31 21:06:44 2010 +0300 +++ b/camerauis/cameraapp/build/iconlist.txt Wed Apr 14 15:41:04 2010 +0300 @@ -163,3 +163,5 @@ -c8,8 qgn_bg_lcam_vid_postcap_play_pressed.svg -c8,1 qgn_indi_mg_tb_edit.svg -c8,8 qgn_menu_cams.svg +-c8,1 qgn_indi_vid4_tb_still.svg +-c8,1 qgn_indi_vid4_tb_video.svg diff -r d486e5e3cc9a -r 51dda465e618 camerauis/cameraapp/generic/GsCamcorderPlugin/inc/GSCamQualitySettingContainer.h --- a/camerauis/cameraapp/generic/GsCamcorderPlugin/inc/GSCamQualitySettingContainer.h Wed Mar 31 21:06:44 2010 +0300 +++ b/camerauis/cameraapp/generic/GsCamcorderPlugin/inc/GSCamQualitySettingContainer.h Wed Apr 14 15:41:04 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -284,8 +284,6 @@ CGSCamQualitySettingSlider* iSlider; // The current capture mode (video/still) TCamCameraMode iMode; - // The current storage location - TCamMediaStorage iStorageLocation; // Array of supported qualities RArray iSupportedQualitiesArray; diff -r d486e5e3cc9a -r 51dda465e618 camerauis/cameraapp/generic/GsCamcorderPlugin/src/GSCamQualitySettingContainer.cpp --- a/camerauis/cameraapp/generic/GsCamcorderPlugin/src/GSCamQualitySettingContainer.cpp Wed Mar 31 21:06:44 2010 +0300 +++ b/camerauis/cameraapp/generic/GsCamcorderPlugin/src/GSCamQualitySettingContainer.cpp Wed Apr 14 15:41:04 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -66,12 +66,7 @@ iParent( aParent ), iMode ( aMode ) { - TInt key = (ECamControllerVideo == iMode) - ? ECamSettingItemVideoMediaStorage - : ECamSettingItemPhotoMediaStorage; - // Get the total remaining record time from the controller - iStorageLocation = - static_cast( iController.IntegerSettingValue( key ) ); + } // ----------------------------------------------------------------------------- @@ -565,10 +560,15 @@ // void CGSCamQualitySettingContainer::DrawStorageIcon( CWindowGc& aGc ) const { + TInt key = (ECamControllerVideo == iMode) + ? ECamSettingItemVideoMediaStorage + : ECamSettingItemPhotoMediaStorage; + TCamMediaStorage storageLocation = + static_cast( iController.IntegerSettingValue( key ) ); CFbsBitmap* icon = NULL; CFbsBitmap* mask = NULL; - switch( iStorageLocation ) + switch( storageLocation ) { case ECamMediaStoragePhone: { diff -r d486e5e3cc9a -r 51dda465e618 camerauis/cameraapp/generic/common/src/CamCaptureSetupListItemDrawer.cpp --- a/camerauis/cameraapp/generic/common/src/CamCaptureSetupListItemDrawer.cpp Wed Mar 31 21:06:44 2010 +0300 +++ b/camerauis/cameraapp/generic/common/src/CamCaptureSetupListItemDrawer.cpp Wed Apr 14 15:41:04 2010 +0300 @@ -283,9 +283,9 @@ layoutText.LayoutText( aActualItemRect, iTxtLayout ); // ...Pass the text to be drawn, into the text layout object // ...and draw it. - if( !iFullySkinned ) + if( !iFullySkinned && !aItemIsCurrent ) { - color=KRgbWhite; + color = KRgbWhite; } layoutText.DrawText( *iGc, iModel.ItemText( aItemIndex ), @@ -319,9 +319,9 @@ layoutText.LayoutText( aActualItemRect, iTxtWithRbLayout ); // ...Pass the text to be drawn, into the text layout object // ...and draw it. - if( !iFullySkinned ) + if( !iFullySkinned && !aItemIsCurrent ) { - color=KRgbWhite; + color = KRgbWhite; } layoutText.DrawText( *iGc, iModel.ItemText( aItemIndex ), ETrue, color ); @@ -478,11 +478,15 @@ if ( control ) { iGc->SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha ); - iGc->SetPenSize( TSize( 1, 1 ) ); - iGc->SetPenStyle( CGraphicsContext::EDottedPen ); + iGc->SetPenColor( TRgb( 0x00ffffff, KToolBarExtensionBgAlpha ) ); + iGc->SetPenStyle( CGraphicsContext::ENullPen ); iGc->SetBrushColor( TRgb( KToolbarExtensionBgColor, KToolBarExtensionBgAlpha ) ); iGc->SetBrushStyle( CGraphicsContext::ESolidBrush ); - iGc->DrawRect( aActualItemRect ); + iGc->DrawRect( aActualItemRect ); + iGc->SetPenSize( TSize( 1, 3 ) ); + iGc->SetPenStyle( CGraphicsContext::ESolidPen ); + iGc->DrawLine( TPoint( aActualItemRect.iTl.iX , + aActualItemRect.iBr.iY ), aActualItemRect.iBr ); } } // --------------------------------------------------------- diff -r d486e5e3cc9a -r 51dda465e618 camerauis/cameraapp/generic/data/nhdcamsettings.rss --- a/camerauis/cameraapp/generic/data/nhdcamsettings.rss Wed Mar 31 21:06:44 2010 +0300 +++ b/camerauis/cameraapp/generic/data/nhdcamsettings.rss Wed Apr 14 15:41:04 2010 +0300 @@ -1080,8 +1080,8 @@ AVKON_BUTTON_STATE { bmpfile = CAMERAAPP_BITMAP_FILE; - bmpid = EMbmCameraappQgn_indi_cam4_video; - bmpmask = EMbmCameraappQgn_indi_cam4_video_mask; + bmpid = EMbmCameraappQgn_indi_vid4_tb_video; + bmpmask = EMbmCameraappQgn_indi_vid4_tb_video_mask; helptxt = qtn_lcam_tt_video_mode; extension = r_cam_ext_qgn_indi_cam4_video; } @@ -1157,8 +1157,8 @@ AVKON_BUTTON_STATE { bmpfile = CAMERAAPP_BITMAP_FILE; - bmpid = EMbmCameraappQgn_indi_cam4_video; - bmpmask = EMbmCameraappQgn_indi_cam4_video_mask; + bmpid = EMbmCameraappQgn_indi_vid4_tb_video; + bmpmask = EMbmCameraappQgn_indi_vid4_tb_video_mask; helptxt = qtn_lcam_tt_video_mode; extension = r_cam_ext_qgn_indi_cam4_video; } @@ -1252,8 +1252,8 @@ AVKON_BUTTON_STATE { bmpfile = CAMERAAPP_BITMAP_FILE; - bmpid = EMbmCameraappQgn_indi_cam4_camera; - bmpmask = EMbmCameraappQgn_indi_cam4_camera_mask; + bmpid = EMbmCameraappQgn_indi_vid4_tb_still; + bmpmask = EMbmCameraappQgn_indi_vid4_tb_still_mask; helptxt = qtn_lcam_tt_still_mode; extension = r_cam_ext_qgn_indi_cam4_camera; } @@ -1330,8 +1330,8 @@ AVKON_BUTTON_STATE { bmpfile = CAMERAAPP_BITMAP_FILE; - bmpid = EMbmCameraappQgn_indi_cam4_camera; - bmpmask = EMbmCameraappQgn_indi_cam4_camera_mask; + bmpid = EMbmCameraappQgn_indi_vid4_tb_still; + bmpmask = EMbmCameraappQgn_indi_vid4_tb_still_mask; helptxt = qtn_lcam_tt_still_mode; extension = r_cam_ext_qgn_indi_cam4_camera; } @@ -1408,8 +1408,8 @@ AVKON_BUTTON_STATE { bmpfile = CAMERAAPP_BITMAP_FILE; - bmpid = EMbmCameraappQgn_indi_cam4_video; - bmpmask = EMbmCameraappQgn_indi_cam4_video_mask; + bmpid = EMbmCameraappQgn_indi_vid4_tb_video; + bmpmask = EMbmCameraappQgn_indi_vid4_tb_video_mask; helptxt = qtn_lcam_tt_video_mode; extension = r_cam_ext_qgn_indi_cam4_video; } @@ -2303,8 +2303,8 @@ AVKON_BUTTON_STATE { bmpfile = CAMERAAPP_BITMAP_FILE; - bmpid = EMbmCameraappQgn_indi_cam4_camera; - bmpmask = EMbmCameraappQgn_indi_cam4_camera_mask; + bmpid = EMbmCameraappQgn_indi_vid4_tb_still; + bmpmask = EMbmCameraappQgn_indi_vid4_tb_still_mask; helptxt = qtn_lcam_tt_still_mode; extension = r_cam_ext_qgn_indi_cam4_camera; } @@ -2499,9 +2499,9 @@ { AVKON_BUTTON_STATE { - bmpfile = CAMERAAPP_BITMAP_FILE; - bmpid = EMbmCameraappQgn_indi_cam4_camera; - bmpmask = EMbmCameraappQgn_indi_cam4_camera_mask; + bmpfile = CAMERAAPP_BITMAP_FILE; + bmpid = EMbmCameraappQgn_indi_vid4_tb_still; + bmpmask = EMbmCameraappQgn_indi_vid4_tb_still_mask; helptxt = qtn_lcam_tt_still_mode; extension = r_cam_ext_qgn_indi_cam4_camera; } diff -r d486e5e3cc9a -r 51dda465e618 camerauis/cameraapp/generic/data/vgacamsettings.rss --- a/camerauis/cameraapp/generic/data/vgacamsettings.rss Wed Mar 31 21:06:44 2010 +0300 +++ b/camerauis/cameraapp/generic/data/vgacamsettings.rss Wed Apr 14 15:41:04 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-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" @@ -1081,8 +1081,8 @@ AVKON_BUTTON_STATE { bmpfile = CAMERAAPP_BITMAP_FILE; - bmpid = EMbmCameraappQgn_indi_cam4_video; - bmpmask = EMbmCameraappQgn_indi_cam4_video_mask; + bmpid = EMbmCameraappQgn_indi_vid4_tb_video; + bmpmask = EMbmCameraappQgn_indi_vid4_tb_video_mask; helptxt = qtn_lcam_tt_video_mode; extension = r_cam_ext_qgn_indi_cam4_video; } @@ -1157,8 +1157,8 @@ AVKON_BUTTON_STATE { bmpfile = CAMERAAPP_BITMAP_FILE; - bmpid = EMbmCameraappQgn_indi_cam4_video; - bmpmask = EMbmCameraappQgn_indi_cam4_video_mask; + bmpid = EMbmCameraappQgn_indi_vid4_tb_video; + bmpmask = EMbmCameraappQgn_indi_vid4_tb_video_mask; helptxt = qtn_lcam_tt_video_mode; extension = r_cam_ext_qgn_indi_cam4_video; } @@ -1231,9 +1231,9 @@ { AVKON_BUTTON_STATE { - bmpfile = CAMERAAPP_BITMAP_FILE; - bmpid = EMbmCameraappQgn_indi_cam4_camera; - bmpmask = EMbmCameraappQgn_indi_cam4_camera_mask; + bmpfile = CAMERAAPP_BITMAP_FILE; + bmpid = EMbmCameraappQgn_indi_vid4_tb_still; + bmpmask = EMbmCameraappQgn_indi_vid4_tb_still_mask; helptxt = qtn_lcam_tt_still_mode; extension = r_cam_ext_qgn_indi_cam4_camera; } @@ -1309,8 +1309,8 @@ AVKON_BUTTON_STATE { bmpfile = CAMERAAPP_BITMAP_FILE; - bmpid = EMbmCameraappQgn_indi_cam4_camera; - bmpmask = EMbmCameraappQgn_indi_cam4_camera_mask; + bmpid = EMbmCameraappQgn_indi_vid4_tb_still; + bmpmask = EMbmCameraappQgn_indi_vid4_tb_still_mask; helptxt = qtn_lcam_tt_still_mode; extension = r_cam_ext_qgn_indi_cam4_camera; } @@ -1632,8 +1632,8 @@ AVKON_BUTTON_STATE { bmpfile = CAMERAAPP_BITMAP_FILE; - bmpid = EMbmCameraappQgn_indi_cam4_video; - bmpmask = EMbmCameraappQgn_indi_cam4_video_mask; + bmpid = EMbmCameraappQgn_indi_vid4_tb_video; + bmpmask = EMbmCameraappQgn_indi_vid4_tb_video_mask; txt = qtn_lcam_tb_switch_video_mode; extension = r_cam_ext_qgn_indi_cam4_video; } @@ -2378,8 +2378,8 @@ AVKON_BUTTON_STATE { bmpfile = CAMERAAPP_BITMAP_FILE; - bmpid = EMbmCameraappQgn_indi_cam4_camera; - bmpmask = EMbmCameraappQgn_indi_cam4_camera_mask; + bmpid = EMbmCameraappQgn_indi_vid4_tb_still; + bmpmask = EMbmCameraappQgn_indi_vid4_tb_still_mask; txt = qtn_lcam_tb_switch_mode; extension = r_cam_ext_qgn_indi_cam4_camera; } @@ -2536,8 +2536,8 @@ AVKON_BUTTON_STATE { bmpfile = CAMERAAPP_BITMAP_FILE; - bmpid = EMbmCameraappQgn_indi_cam4_camera; - bmpmask = EMbmCameraappQgn_indi_cam4_camera_mask; + bmpid = EMbmCameraappQgn_indi_vid4_tb_still; + bmpmask = EMbmCameraappQgn_indi_vid4_tb_still_mask; txt = qtn_lcam_tb_switch_mode; extension = r_cam_ext_qgn_indi_cam4_camera; } diff -r d486e5e3cc9a -r 51dda465e618 camerauis/cameraapp/generic/inc/CamZoomModel.h --- a/camerauis/cameraapp/generic/inc/CamZoomModel.h Wed Mar 31 21:06:44 2010 +0300 +++ b/camerauis/cameraapp/generic/inc/CamZoomModel.h Wed Apr 14 15:41:04 2010 +0300 @@ -202,6 +202,13 @@ * @since 3.0 */ void ResetZoomTo1x(); + + /*** + * Use an external zoom multiplier factor to zoom quickly + * with lesser number of transitions + * @since 5.1 + */ + void SetZoomMultiplier( TInt aZoomStepMultiplier ); private: @@ -387,6 +394,10 @@ // Max allowed zoom step (taking into account optical, digital and extended) TInt iMaxZoomStep; + + // Zoom step/jump multiplier for skipping some zoom levels + // (for quick zooming to max and min zoom levels) + TInt iZoomStepMultiplier; // Stores the current state of the model, and the last-notified // engine state. diff -r d486e5e3cc9a -r 51dda465e618 camerauis/cameraapp/generic/inc/CamZoomPane.h --- a/camerauis/cameraapp/generic/inc/CamZoomPane.h Wed Mar 31 21:06:44 2010 +0300 +++ b/camerauis/cameraapp/generic/inc/CamZoomPane.h Wed Apr 14 15:41:04 2010 +0300 @@ -242,6 +242,25 @@ TBool IsZoomAtMinimum() const; /** + * Returns whether the current zoom value is the maximum zoom + * @since 5.1 + * @return Whether the current zoom value is the maximum zoom + */ + TBool IsZoomAtMaximum() const; + + /** + * Zooms to max zoom value + * @since 5.1 + */ + void ZoomToMaximum(); + + /** + * Zooms to min zoom value + * @since 5.1 + */ + void ZoomToMinimum(); + + /** * Stops all zooming activity */ void StopZoom(); diff -r d486e5e3cc9a -r 51dda465e618 camerauis/cameraapp/generic/src/CamAppController.cpp --- a/camerauis/cameraapp/generic/src/CamAppController.cpp Wed Mar 31 21:06:44 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamAppController.cpp Wed Apr 14 15:41:04 2010 +0300 @@ -2816,8 +2816,14 @@ appUi->SetAssumePostCaptureView( EFalse ); } } - - if ( Busy() ) + + TBool cancelingAutoFocus = ( ECamControllerImage == CurrentMode() && + iInfo.iActiveCamera == ECamActiveCameraPrimary && + iConfigManager && + iConfigManager->IsAutoFocusSupported() && + iAFCancelInProgress ); + + if ( Busy() || cancelingAutoFocus ) { PRINT( _L("Camera <> CCamAppController::ReleaseCamera: set release pending") ); iPendingRelease = ETrue; @@ -2842,6 +2848,13 @@ TRAP_IGNORE ( IssueDirectRequestL( ECamRequestImageCancel ) ); NotifyControllerObservers( ECamEventCaptureComplete, KErrCancel ); } + //In SetOperation(), it notify observer with ECamEventOperationStateChanged, + //the clear work for flash indicator flag can be done with ECamEventOperationStateChanged in some abnormal cases. + if ( ECamControllerImage == CurrentMode() && iInfo.iActiveCamera == ECamActiveCameraPrimary ) + { + SetOperation( ECamNoOperation ); + } + //iInfo.iMode = ECamControllerShutdown; //iInfo.iTargetMode = ECamControllerIdle; diff -r d486e5e3cc9a -r 51dda465e618 camerauis/cameraapp/generic/src/CamAppui.cpp --- a/camerauis/cameraapp/generic/src/CamAppui.cpp Wed Mar 31 21:06:44 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamAppui.cpp Wed Apr 14 15:41:04 2010 +0300 @@ -2508,6 +2508,7 @@ case ECamEventSaveLocationChanged: { PRINT( _L( "Camera <> case ECamEventSaveLocationChanged" ) ) + DismissMemoryNoteL(); if ( IsMMCRemovedNotePending() && ( CamUtility::MemoryCardStatus() != ECamMemoryCardNotInserted ) ) { @@ -2518,6 +2519,10 @@ { TRAP_IGNORE( HandleCommandL( ECamCmdRedrawScreen ) ); } + if ( ECamViewStatePostCapture == iViewState ) + { + iTargetViewState = ECamViewStatePreCapture; + } break; } @@ -4356,11 +4361,12 @@ else if(IsMemoryFullOrUnavailable( storeToCheck )) { HBufC* text = StringLoader::LoadLC(R_NOTE_TEXT_MEMORY_FULL); - CAknStaticNoteDialog* note = new( ELeave ) CAknStaticNoteDialog; - note->PrepareLC( R_CAM_OOM_NOTE_OK_CANCEL); - note->SetTextL( *text ); + iMemoryNote = new( ELeave ) CAknStaticNoteDialog; + iMemoryNote->PrepareLC( R_CAM_OOM_NOTE_OK_CANCEL); + iMemoryNote->SetTextL( *text ); iController.StopIdleTimer(); - TInt ret = note->RunDlgLD(); + TInt ret = iMemoryNote->RunDlgLD(); + iMemoryNote = NULL; CleanupStack::PopAndDestroy( text ); if(EAknSoftkeyOk == ret) { @@ -4412,10 +4418,11 @@ R_CAM_MEMORY_SELECT_DIALOG, EFalse, supportedMemTypes ); + CleanupStack::PushL(memoryDialog); TDriveNumber driveNumber = static_cast(KErrNotFound); CAknCommonDialogsBase::TReturnKey result = memoryDialog->ExecuteL( driveNumber ); - + CleanupStack::PopAndDestroy(memoryDialog); if ( result != CAknCommonDialogsBase::TReturnKey( CAknCommonDialogsBase::ERightSoftkey) ) { diff -r d486e5e3cc9a -r 51dda465e618 camerauis/cameraapp/generic/src/CamCaptureSetupContainer.cpp --- a/camerauis/cameraapp/generic/src/CamCaptureSetupContainer.cpp Wed Mar 31 21:06:44 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamCaptureSetupContainer.cpp Wed Apr 14 15:41:04 2010 +0300 @@ -374,7 +374,8 @@ iController.CurrentMode() == ECamControllerShutdown ) { if( !iController.IsViewFinding() && iViewFinding - && IsCaptureKeyL( aKeyEvent, aType ) ) + && ( IsCaptureKeyL( aKeyEvent, aType ) + || IsShutterKeyL( aKeyEvent, aType ) ) ) { PRINT( _L("Camera <> CCamCaptureSetupContainer::OfferKeyEventL coming back from standby" )) ReserveAndStartVF(); @@ -391,9 +392,11 @@ // If VF was stopped by stand-by-timer, restart VF here ReserveAndStartVF(); } - - // If the Ok button is pressed, select the current item - if ( aKeyEvent.iCode == EKeyOK && aKeyEvent.iRepeats == 0 && aType == EEventKey ) + + // If the Ok button or shutter key is pressed, select the current item + if ( ( aKeyEvent.iCode == EKeyOK && aKeyEvent.iRepeats == 0 && aType == EEventKey ) || + ( aType == EEventKeyDown && + ( IsCaptureKeyL( aKeyEvent, aType ) || IsShutterKeyL( aKeyEvent, aType ) ) ) ) { TKeyResponse response = iCaptureSetupControl->OfferKeyEventL( aKeyEvent, aType ); iView.HandleCommandL( EAknSoftkeyOk ); diff -r d486e5e3cc9a -r 51dda465e618 camerauis/cameraapp/generic/src/CamCaptureSetupSlider.cpp --- a/camerauis/cameraapp/generic/src/CamCaptureSetupSlider.cpp Wed Mar 31 21:06:44 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamCaptureSetupSlider.cpp Wed Apr 14 15:41:04 2010 +0300 @@ -422,18 +422,12 @@ else { gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha ); + gc.SetPenSize( TSize (1,1) ); + gc.SetPenStyle( CGraphicsContext::ENullPen ); + gc.SetPenColor( TRgb( 0x00ffffff, KToolBarExtensionBgAlpha ) ); gc.SetBrushColor( TRgb( KToolbarExtensionBgColor, KToolBarExtensionBgAlpha ) ); gc.SetBrushStyle( CGraphicsContext::ESolidBrush ); gc.DrawRect( Rect() ); - // Reset the brush after use (otherwise anything drawn - // after the viewfinder will also show viewfinder frames) - gc.SetDrawMode( CGraphicsContext::EDrawModePEN ); - TSize penSize( 1, 1 ); - gc.SetPenSize( penSize ); - gc.SetPenStyle( CGraphicsContext::EDottedPen ); - gc.SetPenColor( KRgbWhite ); - gc.SetBrushStyle( CGraphicsContext::ENullBrush ); - gc.DrawRect( Rect() ); } // STEP 1: Draw the legend text diff -r d486e5e3cc9a -r 51dda465e618 camerauis/cameraapp/generic/src/CamCaptureSetupViewBase.cpp --- a/camerauis/cameraapp/generic/src/CamCaptureSetupViewBase.cpp Wed Mar 31 21:06:44 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamCaptureSetupViewBase.cpp Wed Apr 14 15:41:04 2010 +0300 @@ -610,6 +610,12 @@ SetCaptureSetupModeActive(EFalse); UpdateCbaL(); + + if ( Cba() ) + { + Cba()->DrawNow(); + } + SetTitlePaneTextL(); CleanupStack::Pop(); // CleanupExit @@ -879,6 +885,12 @@ } SetSceneSettingMode(EFalse); UpdateCbaL(); + + if ( Cba() ) + { + Cba()->DrawNow(); + } + SetTitlePaneTextL(); CleanupStack::Pop(); // CleanupExit @@ -936,6 +948,12 @@ } SetInfoListBoxMode(EFalse); UpdateCbaL(); + + if ( Cba() ) + { + Cba()->DrawNow(); + } + SetTitlePaneTextL(); CleanupStack::Pop(); // CleanupExit diff -r d486e5e3cc9a -r 51dda465e618 camerauis/cameraapp/generic/src/CamInfoListBoxContainer.cpp --- a/camerauis/cameraapp/generic/src/CamInfoListBoxContainer.cpp Wed Mar 31 21:06:44 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamInfoListBoxContainer.cpp Wed Apr 14 15:41:04 2010 +0300 @@ -394,10 +394,24 @@ const TKeyEvent& aKeyEvent, TEventCode aType ) { + if( iController.CurrentMode() == ECamControllerIdle || + iController.CurrentMode() == ECamControllerShutdown ) + { + if( !iController.IsViewFinding() && !iSkinnedBackGround + && ( IsCaptureKeyL( aKeyEvent, aType ) + || IsShutterKeyL( aKeyEvent, aType ) ) ) + { + PRINT( _L("Camera <> CCamInfoListBoxContainer::OfferKeyEventL coming back from standby" )) + ReserveAndStartVF(); + } + return EKeyWasNotConsumed; + } iController.StartIdleTimer(); - - // If the Ok button is pressed, select the current item - if ( aKeyEvent.iCode == EKeyOK && aKeyEvent.iRepeats == 0 && aType == EEventKey ) + + // If the Ok button or shutter key is pressed, select the current item + if ( ( aKeyEvent.iCode == EKeyOK && aKeyEvent.iRepeats == 0 && aType == EEventKey ) || + ( aType == EEventKeyDown && + ( IsCaptureKeyL( aKeyEvent, aType ) || IsShutterKeyL( aKeyEvent, aType ) ) ) ) { TKeyResponse response = iListBox->OfferKeyEventL( aKeyEvent, aType ); iView.HandleCommandL( EAknSoftkeySelect ); diff -r d486e5e3cc9a -r 51dda465e618 camerauis/cameraapp/generic/src/CamLocationIconController.cpp --- a/camerauis/cameraapp/generic/src/CamLocationIconController.cpp Wed Mar 31 21:06:44 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamLocationIconController.cpp Wed Apr 14 15:41:04 2010 +0300 @@ -402,13 +402,9 @@ { 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 ); - } + // Make sure no brush is being used + aGc.SetBrushStyle( CGraphicsContext::ENullBrush ); + iLocationIndicators[iLocationState]->Draw( aGc ); PRINT( _L("Camera <= CCamLocationIconController::Draw") ); } diff -r d486e5e3cc9a -r 51dda465e618 camerauis/cameraapp/generic/src/CamPostCaptureContainer.cpp --- a/camerauis/cameraapp/generic/src/CamPostCaptureContainer.cpp Wed Mar 31 21:06:44 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamPostCaptureContainer.cpp Wed Apr 14 15:41:04 2010 +0300 @@ -774,7 +774,7 @@ else if(aPointerEvent.iType == TPointerEvent::EButton1Up ) { iPlayIconPressed = EFalse; - iDraggedInAlready = ETrue; + iDraggedInAlready = EFalse; //feedback->InstantFeedback( ETouchFeedbackBasicButton ); iView.HandleCommandL(ECamCmdPlay); } diff -r d486e5e3cc9a -r 51dda465e618 camerauis/cameraapp/generic/src/CamPreCaptureViewBase.cpp --- a/camerauis/cameraapp/generic/src/CamPreCaptureViewBase.cpp Wed Mar 31 21:06:44 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamPreCaptureViewBase.cpp Wed Apr 14 15:41:04 2010 +0300 @@ -64,6 +64,10 @@ CCamPreCaptureViewBase::~CCamPreCaptureViewBase() { PRINT( _L("Camera => ~CCamPreCaptureViewBase") ); + if ( iGestureFw ) + { + delete iGestureFw; + } PRINT( _L("Camera <= ~CCamPreCaptureViewBase") ); } @@ -887,9 +891,9 @@ { PRINT( _L("Camera => CCamPreCaptureViewBase::ExitCaptureSetupModeL") ) - CCamCaptureSetupViewBase::ExitCaptureSetupModeL(); iController.SetViewfinderWindowHandle( &iContainer->Window() ); + CCamCaptureSetupViewBase::ExitCaptureSetupModeL(); if( !iController.IsViewFinding() && !iController.InVideocallOrRinging() ) { @@ -918,6 +922,7 @@ SwitchToCaptureSetupMenuModeL(); } + UpdateCbaL(); PRINT( _L("Camera <= CCamPreCaptureViewBase::ExitCaptureSetupModeL") ) } @@ -1763,8 +1768,13 @@ PRINT( _L("Camera => CCamPreCaptureViewBase::CreateContainerL") ); // Create gesture fw object, set observer and gesture interest + if ( iGestureFw ) + { + delete iGestureFw; + } + iGestureFw = CAknTouchGestureFw::NewL( *this, *iContainer ); - iGestureFw->SetGestureInterestL( EAknTouchGestureFwGroupPinch ); + iGestureFw->SetGestureInterestL( EAknTouchGestureFwGroupPinch | EAknTouchGestureFwGroupTap ); PRINT( _L("Camera <= CCamPreCaptureViewBase::CreateContainerL") ); } @@ -1779,15 +1789,14 @@ PRINT( _L("Camera => CCamPreCaptureViewBase::HandleTouchGestureL") ); // Skipped modes here - if ( ( iController.ActiveCamera() == ECamActiveCameraSecondary ) || - ( ECamNoOperation != iController.CurrentOperation() ) ) + if ( iController.ActiveCamera() == ECamActiveCameraSecondary ) { - PRINT( _L("Camera <= CCamPreCaptureViewBase::HandleTouchGestureL") ); + PRINT( _L("Camera <= CCamPreCaptureViewBase::HandleTouchGestureL - skipped") ); return; } MAknTouchGestureFwPinchEvent *pinch = AknTouchGestureFwEventPinch( aEvent ); - if ( pinch ) + if ( pinch && (ECamNoOperation == iController.CurrentOperation()) ) { // Determine the direction of pinch: +ve -> pinch outward / zoom / widen VF TInt currMove = pinch->Movement(); @@ -1817,6 +1826,31 @@ } } } + else if ( EAknTouchGestureFwDoubleTap == aEvent.Type() ) + { + PRINT( _L("Camera <> *** double tap event") ); + CCamAppUi* appUi = static_cast( iEikonEnv->AppUi() ); + CCamZoomPane *zoomPane = appUi->ZoomPane(); + + CCamPreCaptureContainerBase* container = static_cast( iContainer ); + container->ShowZoomPaneWithTimer(); + + // Zoom to max (if not already at max) zoom level, otherwise zoom out to min level + if ( !zoomPane->IsZoomAtMaximum() ) + { + PRINT( _L("Camera <> Zooming to max level") ); + zoomPane->ZoomToMaximum(); + } + else + { + PRINT( _L("Camera <> Zooming out to min level") ); + zoomPane->ZoomToMinimum(); + } + } + else + { + PRINT1( _L("Camera <> HandleTouchGestureL - gesture not used, type:%d"), aEvent.Type() ); + } PRINT( _L("Camera <= CCamPreCaptureViewBase::HandleTouchGestureL") ); } diff -r d486e5e3cc9a -r 51dda465e618 camerauis/cameraapp/generic/src/CamSettingsModel.cpp --- a/camerauis/cameraapp/generic/src/CamSettingsModel.cpp Wed Mar 31 21:06:44 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamSettingsModel.cpp Wed Apr 14 15:41:04 2010 +0300 @@ -456,52 +456,16 @@ TBool CCamSettingsModel::SettingValueEnabled( TInt aSettingItem, TInt aSettingValue ) const { - TCamImageQualitySetting maxPhoto = static_cast( iPhotoQualityLevels[iPhotoQualityLevels.Count() - 1].iPhotoResolution ); - // If the setting value is maximum photo size, and the current - // scene is sports, then this setting value is disabled - if ( ( aSettingItem == ECamSettingItemPhotoQuality ) && - ( aSettingValue == maxPhoto ) ) - { - // If the current scene is sports, disable the option - TCamSceneId scene = static_cast< TCamSceneId > - ( IntegerSettingValue( ECamSettingItemDynamicPhotoScene ) ); - if ( scene == ECamSceneSports ) - { - return EFalse; - } - // Otherwise, if the current scene is the user scene and - // it is based on the 'Sports' scene then disable the option. - else if ( scene == ECamSceneUser ) - { - // ...Get the based on scene. - TCamSceneId baseScene = static_cast< TCamSceneId > - ( IntegerSettingValue( ECamSettingItemUserSceneBasedOnScene ) ); - if ( baseScene == ECamSceneSports ) - { - return EFalse; - } - } - else - { - // Otherwise, the option is enabled - return ETrue; - } - } // The high quality video setting is not supported if // the second camera is enabled - else if ( aSettingItem == ECamSettingItemVideoQuality && - aSettingValue == ECamVideoQualityHigh && - static_cast( - iEnv->AppUi() )->IsSecondCameraEnabled() ) + if ( aSettingItem == ECamSettingItemVideoQuality && + aSettingValue == ECamVideoQualityHigh && + static_cast( + iEnv->AppUi() )->IsSecondCameraEnabled() ) { return EFalse; } // All other setting item values are allowed - else - { - return ETrue; - } - return ETrue; } diff -r d486e5e3cc9a -r 51dda465e618 camerauis/cameraapp/generic/src/CamVideoPreCaptureContainer.cpp --- a/camerauis/cameraapp/generic/src/CamVideoPreCaptureContainer.cpp Wed Mar 31 21:06:44 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamVideoPreCaptureContainer.cpp Wed Apr 14 15:41:04 2010 +0300 @@ -35,6 +35,7 @@ #include // For CEikApplication #include #include +#include #include #include #include @@ -477,10 +478,30 @@ // Change the current capture state following shutter // key events // ---------------------------------------------------- -// +// TKeyResponse CCamVideoPreCaptureContainer::HandleShutterKeyEventL( const TKeyEvent& /*aKeyEvent*/, - TEventCode /*aType*/ ) - { + TEventCode aType ) + { + CCamAppUi* appUi = static_cast( iEikonEnv->AppUi() ); + + if ( appUi && + appUi->CurrentViewState() == ECamViewStatePreCapture && + aType == EEventKeyDown && + iController.IsTouchScreenSupported() ) + { + CAknToolbar* toolbar = appUi->CurrentFixedToolbar(); + if ( toolbar ) + { + CAknToolbarExtension* toolbarExtension = + toolbar->ToolbarExtension(); + if ( toolbarExtension && toolbarExtension->IsShown() ) + { + toolbarExtension->SetShown( EFalse ); + return EKeyWasConsumed; + } + } + } + return EKeyWasNotConsumed; } diff -r d486e5e3cc9a -r 51dda465e618 camerauis/cameraapp/generic/src/CamZoomModel.cpp --- a/camerauis/cameraapp/generic/src/CamZoomModel.cpp Wed Mar 31 21:06:44 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamZoomModel.cpp Wed Apr 14 15:41:04 2010 +0300 @@ -88,6 +88,9 @@ iCurZoomStepOptical = 0; iCurZoomStepDigital = 0; + // Default zoom jump multiplier + iZoomStepMultiplier = 1; + // Timer used to give smooth zooming iZoomTimer = CPeriodic::NewL( CActive::EPriorityHigh ); @@ -293,9 +296,18 @@ } else { - // Start the timer to zoom-in again when timer expires - PRINT( _L( "CCamZoomModel::ZoomIn start zoom timer" ) ); - StartZoomTimer(); + // Don't restart timer (Auto-stop) timer when no zoom was done + if( optZoomJump || digZoomJump || extZoomJump ) + { + // Start the timer to zoom-in again when timer expires + PRINT( _L( "CCamZoomModel::ZoomIn start zoom timer" ) ); + StartZoomTimer(); + } + else + { + PRINT( _L("Camera <> CCamZoomModel::ZoomOut - stopping zoom at boundary") ); + StopZoom(); + } } PRINT( _L( "Camera <= CCamZoomModel::ZoomIn " ) ); @@ -417,7 +429,7 @@ { PRINT( _L( "Camera => CCamZoomModel::ZoomStepsToJump (by reference)" ) ); - TInt steps = ZoomStepsToJump(); + TInt steps = iZoomStepMultiplier * ZoomStepsToJump(); TCamZoomBoundary boundary = CheckBoundary(); @@ -669,9 +681,18 @@ } else { - // Start the timer to zoom-in again when timer expires - PRINT( _L( "CCamZoomModel::ZoomIn start zoom timer" ) ); - StartZoomTimer(); + // Don't restart timer (auto-stop) timer when no zoom was done + if( optZoomJump || digZoomJump || extZoomJump ) + { + // Start the timer to zoom-in again when timer expires + PRINT( _L( "CCamZoomModel::ZoomIn start zoom timer" ) ); + StartZoomTimer(); + } + else + { + PRINT( _L("Camera <> CCamZoomModel::ZoomOut - stopping zoom at boundary") ); + StopZoom(); + } } PRINT( _L( "Camera <= CCamZoomModel::ZoomOut " ) ); @@ -1046,10 +1067,13 @@ { iZoomTimer->Cancel(); } - + // Clear the zoom state - iState = ECamZoomModelStateZoomNone; - + iState = ECamZoomModelStateZoomNone; + + // Reset zoom multiplier + iZoomStepMultiplier = 1; + if ( iPauseState == EPauseStatePaused ) { iPauseState = EPauseStateReleased; @@ -1228,8 +1252,8 @@ else { // use slower speed for videomode - stepPeriod = iZoomLAF.iZoomSpeedDig * 2000; - } + stepPeriod = iZoomLAF.iZoomSpeedDig * 2500; + } break; } @@ -1360,7 +1384,7 @@ // Return the combined zoom value PRINT( _L( "Camera <= CCamZoomModel::CurrentZoom optical+digital" ) ); return (iCurZoomStepOptical + iCurZoomStepDigital); - } + } } @@ -1498,4 +1522,17 @@ PRINT1( _L("Camera <= CCamZoomModel::ReadCurrentResolution, got:%d"), iCurrentResolution ); } +// ----------------------------------------------------------------------------- +// SetZoomMultiplier +// ----------------------------------------------------------------------------- +// +void CCamZoomModel::SetZoomMultiplier( TInt aZoomStepMultiplier ) + { + iZoomStepMultiplier = aZoomStepMultiplier; + if ( iCameraState & ECamVideoOn ) + { + iZoomStepMultiplier *= 2; + } + } + // End of File diff -r d486e5e3cc9a -r 51dda465e618 camerauis/cameraapp/generic/src/CamZoomPane.cpp --- a/camerauis/cameraapp/generic/src/CamZoomPane.cpp Wed Mar 31 21:06:44 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamZoomPane.cpp Wed Apr 14 15:41:04 2010 +0300 @@ -47,6 +47,8 @@ const TInt KDivisorFactor = 10000; // integer scaling factor to avoid the // use of floating point arithmetic const TInt KTouchAreaExpansion = 35; // Pixels to grow touchable area +const TInt KFastZoomMultiplier = 4; // Multiplier to skip some zoom levels + // to make zooming faster. Used with double tap. // ============================ MEMBER FUNCTIONS =============================== @@ -526,7 +528,18 @@ PRINT2(_L("Camera =><= CCamZoomPane::IsZoomAtMinimum iCurZoom = %d, iMinZoom = %d"), iCurZoom, iMinZoom); return iCurZoom == iMinZoom; } - + +// ----------------------------------------------------------------------------- +// CCamZoomPane::IsZoomAtMaximum +// Returns whether the current zoom value is the maximum zoom +// ----------------------------------------------------------------------------- +// +TBool CCamZoomPane::IsZoomAtMaximum() const + { + PRINT2(_L("Camera =><= CCamZoomPane::IsZoomAtMaximum iCurZoom = %d, iMaxZoom = %d"), iCurZoom, iMaxZoom); + return iCurZoom == iMaxZoom; + } + // ----------------------------------------------------------------------------- // CCamZoomPane::OkToShowPane // Returns whether or not the Zoom Pane can currently be shown. @@ -1211,4 +1224,26 @@ PRINT( _L( "Camera <= CCamZoomPane::Touchfeedback" ) ); } +// ----------------------------------------------------------------------------- +// CCamZoomPane::ZoomToMinimum +// Zooms out to min zoom level. Should be stopped by StopZoom(), if needed +// ----------------------------------------------------------------------------- +// +void CCamZoomPane::ZoomToMinimum() + { + iModel->SetZoomMultiplier( KFastZoomMultiplier ); + iModel->ZoomOut(); + } + +// ----------------------------------------------------------------------------- +// CCamZoomPane::ZoomToMaximum +// Zooms in to max zoom level. Should be stopped by StopZoom(), if needed +// ----------------------------------------------------------------------------- +// +void CCamZoomPane::ZoomToMaximum() + { + iModel->SetZoomMultiplier( KFastZoomMultiplier ); + iModel->ZoomIn(); + } + // End of File diff -r d486e5e3cc9a -r 51dda465e618 camerauis/cameraapp/generic/src/cameracontroller/camcameracontroller.cpp --- a/camerauis/cameraapp/generic/src/cameracontroller/camcameracontroller.cpp Wed Mar 31 21:06:44 2010 +0300 +++ b/camerauis/cameraapp/generic/src/cameracontroller/camcameracontroller.cpp Wed Apr 14 15:41:04 2010 +0300 @@ -6428,12 +6428,34 @@ iInfo.iVfMode == ECamViewfinderDirect ) { PRINT( _L("Camera <> viewfinder active and window handle changed, restarting viewfinder...") ); - iCamera->StopViewFinder(); - iInfo.iVfState = ECamTriInactive; - - // restart viewfinder - //TRAP_IGNORE( ProcessVfStartRequestL() ); - iAppController.EnterViewfinderMode(iAppController.CurrentMode()); + iCamera->StopViewFinder(); + + if ( iViewfinderWindow != NULL ) + { + iViewfinderWindow = aWindow; + // Use the same viewfinder position and size as for bitmap viewfinder + TPckgBuf params; + iSettingProvider.ProvideCameraParamL( ECameraParamVfBitmap, ¶ms ); + + CEikonEnv* env = CEikonEnv::Static(); + + TInt orgPos = SetVfWindowOrdinal(); // Set visible + iCamera->StartViewFinderDirectL( + env->WsSession(), + *env->ScreenDevice(), + *iViewfinderWindow, + params().iRect ); + (void) SetVfWindowOrdinal( orgPos ); // back to original + } + else + { + iCamera->StopViewFinder(); + iInfo.iVfState = ECamTriInactive; + + // restart viewfinder + + iAppController.EnterViewfinderMode(iAppController.CurrentMode()); + } } iViewfinderWindow = aWindow; diff -r d486e5e3cc9a -r 51dda465e618 camerauis/cameraapp/generic/src/camstartuplogo.cpp --- a/camerauis/cameraapp/generic/src/camstartuplogo.cpp Wed Mar 31 21:06:44 2010 +0300 +++ b/camerauis/cameraapp/generic/src/camstartuplogo.cpp Wed Apr 14 15:41:04 2010 +0300 @@ -18,7 +18,7 @@ #include #include #include -#include +#include #include #include "camlogging.h" #include "camstartuplogo.h"