# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1274779324 -10800 # Node ID 53c8aa5d97a3831ddbc120ca02eff65b173dff84 # Parent bf64cebf46737ad1c4aa9b145de01a80cc89af1c Revision: 201019 Kit: 2010121 diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/GsCamcorderPlugin/src/GSCamcorderSettingsContainer.cpp --- a/camerauis/cameraapp/generic/GsCamcorderPlugin/src/GSCamcorderSettingsContainer.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/GsCamcorderPlugin/src/GSCamcorderSettingsContainer.cpp Tue May 25 12:22:04 2010 +0300 @@ -208,31 +208,13 @@ } return EKeyWasNotConsumed; } - - TKeyEvent newKeyEvent = aKeyEvent; - if ( !iLauchedFromGS ) + if ( aKeyEvent.iCode == EKeyLeftArrow || + aKeyEvent.iCode == EKeyRightArrow ) { - if ( aKeyEvent.iCode == EKeyLeftArrow ) - { - newKeyEvent.iCode = EKeyDownArrow; - } - else if ( aKeyEvent.iCode == EKeyRightArrow ) - { - // Listbox takes all events even if it doesn't use them - //return EKeyWasNotConsumed; - newKeyEvent.iCode = EKeyUpArrow; - } + // Listbox takes all events even if it doesn't use them + return EKeyWasNotConsumed; } - else - { - if ( aKeyEvent.iCode == EKeyLeftArrow || - aKeyEvent.iCode == EKeyRightArrow ) - { - // Listbox takes all events even if it doesn't use them - return EKeyWasNotConsumed; - } - } - return iSettingsList->OfferKeyEventL( newKeyEvent, aType ); + return iSettingsList->OfferKeyEventL( aKeyEvent, aType ); } diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/camerauiconfigmanager/bwins/camerauiconfigmanageru.def --- a/camerauis/cameraapp/generic/camerauiconfigmanager/bwins/camerauiconfigmanageru.def Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/camerauiconfigmanager/bwins/camerauiconfigmanageru.def Tue May 25 12:22:04 2010 +0300 @@ -60,4 +60,5 @@ ?IsDSAViewFinderSupported@CCameraUiConfigManager@@QBEHH@Z @ 59 NONAME ; int CCameraUiConfigManager::IsDSAViewFinderSupported(int) const ?CriticalLevelRamMemoryFocusGained@CCameraUiConfigManager@@QBEHXZ @ 60 NONAME ; int CCameraUiConfigManager::CriticalLevelRamMemoryFocusGained(void) const ?SupportedScreenModesL@CCameraUiConfigManager@@QAEXAAV?$RArray@H@@@Z @ 61 NONAME ; void CCameraUiConfigManager::SupportedScreenModesL(class RArray &) + ?IsCustomCaptureButtonSupported@CCameraUiConfigManager@@QBEHXZ @ 62 NONAME ; int CCameraUiConfigManager::IsCustomCaptureButtonSupported(void) const diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/camerauiconfigmanager/conf/camerauiconfigmanager.confml Binary file camerauis/cameraapp/generic/camerauiconfigmanager/conf/camerauiconfigmanager.confml has changed diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/camerauiconfigmanager/conf/camerauiconfigmanager_2001B29B.crml Binary file camerauis/cameraapp/generic/camerauiconfigmanager/conf/camerauiconfigmanager_2001B29B.crml has changed diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/camerauiconfigmanager/eabi/camerauiconfigmanageru.def --- a/camerauis/cameraapp/generic/camerauiconfigmanager/eabi/camerauiconfigmanageru.def Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/camerauiconfigmanager/eabi/camerauiconfigmanageru.def Tue May 25 12:22:04 2010 +0300 @@ -64,4 +64,5 @@ _ZTV22CCameraUiConfigManager @ 63 NONAME _ZTV25CCameraUiConfigManagerImp @ 64 NONAME _ZN22CCameraUiConfigManager21SupportedScreenModesLER6RArrayIiE @ 65 NONAME + _ZNK22CCameraUiConfigManager30IsCustomCaptureButtonSupportedEv @ 66 NONAME diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/camerauiconfigmanager/inc/CameraConfigurationCrKeys.h --- a/camerauis/cameraapp/generic/camerauiconfigmanager/inc/CameraConfigurationCrKeys.h Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/camerauiconfigmanager/inc/CameraConfigurationCrKeys.h Tue May 25 12:22:04 2010 +0300 @@ -59,6 +59,7 @@ const TUint32 KCamCrFeatureThumbnailManagerAPI = 0x028; const TUint32 KCamCrFeatureBurstMode = 0x029; const TUint32 KCamCrFeatureContinuousAF = 0x01E; +const TUint32 KCamCrFeatureCustomCaptureButton = 0x01F; // Cr keys reserved for future use 0x020 -- 0x029 // Cr key for Settings which only have configured setting items diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/camerauiconfigmanager/inc/CameraDynamicSettings.hrh --- a/camerauis/cameraapp/generic/camerauiconfigmanager/inc/CameraDynamicSettings.hrh Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/camerauiconfigmanager/inc/CameraDynamicSettings.hrh Tue May 25 12:22:04 2010 +0300 @@ -62,6 +62,8 @@ ECamDynamicSettingThumbnailManagerAPI, ECamDynamicSettingBurstMode, ECamDynamicSettingContinuousAF, + ECamDynamicSettingCustomCaptureButton, + // Primary/secondary camera capture keys ECamDynamicSettingPCCaptureKeys, ECamDynamicSettingSCCaptureKeys, diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/camerauiconfigmanager/inc/CameraUiConfigManager.h --- a/camerauis/cameraapp/generic/camerauiconfigmanager/inc/CameraUiConfigManager.h Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/camerauiconfigmanager/inc/CameraUiConfigManager.h Tue May 25 12:22:04 2010 +0300 @@ -460,6 +460,12 @@ */ IMPORT_C void SupportedScreenModesL( RArray& aSupportedValues ); + + /* + * Custom capture button. + * @return ETrue if custom capture button is enabled + */ + IMPORT_C TBool IsCustomCaptureButtonSupported() const; private: void ConstructL(); diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/camerauiconfigmanager/src/CameraUiConfigManager.cpp --- a/camerauis/cameraapp/generic/camerauiconfigmanager/src/CameraUiConfigManager.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/camerauiconfigmanager/src/CameraUiConfigManager.cpp Tue May 25 12:22:04 2010 +0300 @@ -758,4 +758,13 @@ iConfigManagerImp->SupportedSettingItemsL( ECamDynamicSettingScreenModes, aSupportedValues ); } + +// ---------------------------------------------------------------------------------- +// CCameraUiConfigManager::IsCustomCaptureButtonSupported +// ---------------------------------------------------------------------------------- +// +EXPORT_C TBool CCameraUiConfigManager::IsCustomCaptureButtonSupported() const + { + return iConfigManagerImp->IsFeatureSupported( ECamDynamicSettingCustomCaptureButton ); + } //End of File diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/camerauiconfigmanager/src/CameraUiConfigManagerImp.cpp --- a/camerauis/cameraapp/generic/camerauiconfigmanager/src/CameraUiConfigManagerImp.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/camerauiconfigmanager/src/CameraUiConfigManagerImp.cpp Tue May 25 12:22:04 2010 +0300 @@ -258,6 +258,7 @@ case ECamDynamicSettingBurstMode: case ECamDynamicSettingContinuousAF: case ECamDynamicSettingBurstFileSizeEstimateFactor: + case ECamDynamicSettingCustomCaptureButton: { PRINT1( _L("Camera <> CCameraUiConfigManagerImp::LoadAllDynamicSettingsL() append %d" ), settingId ) AppendToSettingsArrayL( settingId, @@ -681,7 +682,10 @@ break; case ECamDynamicSettingContinuousAF: crKey = KCamCrFeatureContinuousAF; - break; + break; + case ECamDynamicSettingCustomCaptureButton: + crKey = KCamCrFeatureCustomCaptureButton; + break; default: PRINT( _L("Camera <> CCameraUiConfigManagerImp::MapSettingItemToCrFeatureKeyL, leave!!!" ) ) User::Leave( KErrNotSupported ); diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/common/inc/CamControllerObservers.h --- a/camerauis/cameraapp/generic/common/inc/CamControllerObservers.h Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/common/inc/CamControllerObservers.h Tue May 25 12:22:04 2010 +0300 @@ -73,6 +73,7 @@ ECamEventImageData, ECamEventFaceTrackingStateChanged, ECamEventInitReady, + ECamEventSnapshotRotated }; // FORWARD DECLARATIONS diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/common/inc/mcamsettingsmodel.h --- a/camerauis/cameraapp/generic/common/inc/mcamsettingsmodel.h Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/common/inc/mcamsettingsmodel.h Tue May 25 12:22:04 2010 +0300 @@ -293,6 +293,25 @@ virtual void StoreFaceTrackingValue() = 0; /** + * Returns the face tracking state as it was before the latest scene mode change + */ + virtual TCamSettingsOnOff GetPreviousFaceTrack() = 0; + + /** + * Sets the face tracking state as it was before the latest scene mode change + */ + virtual void SetPreviousFaceTrack( TCamSettingsOnOff aPreviousFaceTrack ) = 0; + + /** + * Returns the scene mode that was in use before the current scene mode was selected + */ + virtual TCamSceneId GetPreviousSceneMode() = 0; + /** + * Sets the scene mode that was in use before the current scene mode was selected + */ + virtual void SetPreviousSceneMode( TCamSceneId aPreviousSceneMode ) = 0; + + /** * Store UserScene settings * @since 5.1 */ diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/common/src/CamCaptureSetupListBox.cpp --- a/camerauis/cameraapp/generic/common/src/CamCaptureSetupListBox.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/common/src/CamCaptureSetupListBox.cpp Tue May 25 12:22:04 2010 +0300 @@ -126,31 +126,35 @@ TKeyResponse CCamCaptureSetupListBox::OfferKeyEventL( const TKeyEvent& aKeyEvent,TEventCode aType ) { PRINT( _L("Camera => CCamCaptureSetupListBox::OfferKeyEventL" )) - // If the Select or navi key select button is pressed, select the current item - if ( ( aKeyEvent.iCode == EKeyOK && aKeyEvent.iRepeats == 0 && aType == EEventKey ) - || aKeyEvent.iScanCode == EStdKeyDevice0 ) + + if ( !IsHighlightEnabled() && + aKeyEvent.iCode != EKeyUpArrow && + aKeyEvent.iCode != EKeyDownArrow ) { - iView->ClearSelection(); - iView->SelectItemL( iView->CurrentItemIndex() ); - } - //TInt oldCurrentItem = CurrentItemIndex(); - //TKeyResponse response = CEikListBox::OfferKeyEventL( aKeyEvent, aType ); - TKeyResponse response = EKeyWasConsumed; - /*TInt newCurrentItem = CurrentItemIndex(); + PRINT( _L("Camera <= CCamCaptureSetupListBox::OfferKeyEventL highlight not visible" )) + return EKeyWasNotConsumed; + } + + TInt oldCurrentItem = CurrentItemIndex(); + TKeyResponse response = CEikListBox::OfferKeyEventL( aKeyEvent, aType ); + TInt newCurrentItem = CurrentItemIndex(); + if ( newCurrentItem != oldCurrentItem ) { - PRINT( _L("Camera => CCamCaptureSetupListBox::OfferKeyEventL set obs" )) + PRINT( _L("Camera <> CCamCaptureSetupListBox::OfferKeyEventL set obs" )) MCamListboxModel* model = static_cast( iModel ); iSettingObserver->HandleSettingValueUpdateL( model->ItemValue( newCurrentItem ) ); - }*/ + } + else + { + PRINT( _L("Camera <= CCamCaptureSetupListBox::OfferKeyEventL EKeyWasConsumed" )) + response = EKeyWasConsumed; + } + + PRINT( _L("Camera <= CCamCaptureSetupListBox::OfferKeyEventL" )) return response; } - - - - - // --------------------------------------------------------------------------- // CCamCaptureSetupListBox::HandlePointerEventL // Handle pointer events diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/inc/CamAppController.h --- a/camerauis/cameraapp/generic/inc/CamAppController.h Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/inc/CamAppController.h Tue May 25 12:22:04 2010 +0300 @@ -706,7 +706,7 @@ * @since 2.8 * @return the current snapshot image */ - const CFbsBitmap* SnapshotImage() const; + const CFbsBitmap* SnapshotImage(); /** * Sets the specified burst mode item as the current image, in @@ -2217,6 +2217,12 @@ */ void EmbeddedStartupSequence(); + /** + * Called by the snapshotrotator to indicate when snapshot + * is rotated and ready for drawing + */ + void SnapshotRotationComplete(); + private: // ----------------------------------------------------- @@ -2602,6 +2608,7 @@ TCamImageOrientation iCaptureOrientation; TBool iIssueModeChangeSequenceSucceeded; + TBool iSnapshotRedrawNeeded; }; diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/inc/CamAppUi.h --- a/camerauis/cameraapp/generic/inc/CamAppUi.h Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/inc/CamAppUi.h Tue May 25 12:22:04 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2009 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" @@ -894,6 +894,12 @@ * Hide the toolbar. */ void SubmergeToolbar(); + + /** + * Returns ETrue if the toolbar extension is visible, + * otherwise EFalse. + */ + TBool IsToolBarExtensionVisible() const; public: // Functions from base classes /** @@ -947,6 +953,13 @@ */ void StartAsServerAppL( MCamEmbeddedObserver *aEmbeddedObserver, TInt aMode ); + + /** + * Set application file server observer + * @since 9.2 + * @param aEmbeddedObserver service observer + */ + void SetEmbeddedObserver( MCamEmbeddedObserver* aEmbeddedObserver ); /** * Closes the application diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/inc/CamPreCaptureContainerBase.h --- a/camerauis/cameraapp/generic/inc/CamPreCaptureContainerBase.h Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/inc/CamPreCaptureContainerBase.h Tue May 25 12:22:04 2010 +0300 @@ -270,6 +270,13 @@ * calling the function with EFalse. */ void BlinkResolutionIndicatorOnChange( TBool aBlink=ETrue ); + + /** + * From CCoeControl. + * @since 5.1 + * @param aDrawNow Flag to indicate if the container should be drawn + */ + void FocusChanged( TDrawNow aDrawNow ); protected: @@ -381,14 +388,21 @@ * @param aFrame pointer to the bitmap. */ void DrawFrameNow( CBitmapContext& aGc, const CFbsBitmap* aFrame ) const; - + protected: /** * Autofocus indication layout from LAF * * @since S60 S60 v5.0 */ - void SizeChanged(); + void SizeChanged(); + + /** + * Checks whether the custom capture button should be shown + * @since 5.1 + * @return ETrue if capture button should be active, EFalse otherwise + */ + TBool CaptureButtonActive() const; private: /** @@ -586,14 +600,24 @@ void TouchLayout(); /** - * Callback to blink resolution indicator + * Callback used by timer to blink resolution indicator + * @since 5.1 + * @param aSelf Pointer to self (container) */ static TInt IndicatorVisible( TAny *aSelf ); /** * Draw resolution indicator (for blinking). + * @since 5.1 */ void DrawResolutionIndicator(); + + /** + * Draws Capture/Record button + * @since 5.1 + * @param aGc The context to draw with + */ + void DrawCaptureButton( CBitmapContext& aGc ) const; // ========================================================================= // Data @@ -603,7 +627,7 @@ CCamSidePane* iSidePane; // Pointer to the instance of the zoom pane - CCamZoomPane* iZoomPane; + CCamZoomPane* iZoomPane; // Array of pointer to the resolution indicators RPointerArray iResolutionIndicators; @@ -643,6 +667,13 @@ // Reticule location and size TRect iReticuleRect; + // Icons and rect for capturing image + CFbsBitmap *iCaptureIcon; + CFbsBitmap *iCaptureMask; + TRect iCaptureRect; + TBool iCaptureButtonShown; + TBool iCaptureIconPressed; + /** * Autofocus indication icons array. */ @@ -728,6 +759,7 @@ // For blinking of resolution indicator TBool iBlinkResolutionIndicator; + TBool iBlinkModeIndicator; CPeriodic* iIndBlinkTimer; TBool iDrawIndicator; TInt iToggleCountdown; diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/inc/CamSettingsModel.h --- a/camerauis/cameraapp/generic/inc/CamSettingsModel.h Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/inc/CamSettingsModel.h Tue May 25 12:22:04 2010 +0300 @@ -88,6 +88,28 @@ * @return None */ void StoreFaceTrackingValue(); + + + /** + * Returns the face tracking state as it was before the latest scene mode change + */ + TCamSettingsOnOff GetPreviousFaceTrack(); + + /** + * Sets the face tracking state as it was before the latest scene mode change + */ + void SetPreviousFaceTrack( TCamSettingsOnOff aPreviousFaceTrack ); + + /** + * Returns the scene mode that was in use before the current scene mode was selected + */ + TCamSceneId GetPreviousSceneMode(); + + /** + * Sets the scene mode that was in use before the current scene mode was selected + */ + void SetPreviousSceneMode( TCamSceneId aPreviousSceneMode ); + // ------------------------------------------------------------------------- // From base class MCamSettingsModel diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/inc/CamSidePane.h --- a/camerauis/cameraapp/generic/inc/CamSidePane.h Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/inc/CamSidePane.h Tue May 25 12:22:04 2010 +0300 @@ -134,6 +134,27 @@ */ void UpdateLayout(); + /** + * Draw's/Clear's mode indicator. Used for blinking mode indicator. + * @since S60 5.1 + * @param aGc Graphics context to draw the indicator + * @param aDrawIcon Whether the indicator should be drawn or cleared + */ + void DrawModeIndicator( CWindowGc& aGc, TBool aDrawIcon ); + + /** + * Returns mode indicator layout rect. Used for blinking mode indicator. + * @since S60 5.1 + */ + TRect ModeIndicatorLayoutRect(); + + /** + * Updates scene indicator with the provided bitmap. + * @since S60 5.1 + * @param aBitmapId, aMask Id of the indicator bitmap and mask + */ + void UpdateSceneIndicatorL( TInt32 aBitmapId, TInt32 aMaskId ); + protected: // Functions from base classes /** diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/inc/CamUserSceneSetupViewBase.h --- a/camerauis/cameraapp/generic/inc/CamUserSceneSetupViewBase.h Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/inc/CamUserSceneSetupViewBase.h Tue May 25 12:22:04 2010 +0300 @@ -217,6 +217,9 @@ // Indicates that Viewfinder start has been requested. View switch // should not occur until viewfinder start has completed. TBool iVFRequested; + + //Boolean to check if a popup is whats generating a background event + TBool iNotifierPopupShowing; }; #endif // CAMUSERSCENESETUPVIEWBASE_H diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/src/CamAppController.cpp --- a/camerauis/cameraapp/generic/src/CamAppController.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamAppController.cpp Tue May 25 12:22:04 2010 +0300 @@ -1636,11 +1636,11 @@ iAutoFocusRequested || IsAfNeeded() ) { PRINT( _L("Camera <> Focusing going on, cannot start capture - setting iCaptureRequested" ) ); + iCaptureRequested = ETrue; if( !IsAfNeeded() ) { CancelAFNow(); - } - iCaptureRequested = ETrue; + } } // ------------------------------------------------------- //Quick pressed capture key after backing to precapture from postcapture in burst mode @@ -2231,7 +2231,7 @@ && ECamCompleting != CurrentOperation() ) { // If we are currently focused, cancel autofocus - if ( IsViewFinding() && CurrentOperation() != ECamCapturing && !InCallOrRinging() ) // Cannot do AF operations if VF not on. AF is anyway cancelled on VF start event. + if ( IsViewFinding() && CurrentOperation() != ECamCapturing ) // Cannot do AF operations if VF not on. AF is anyway cancelled on VF start event. { if( ECamFocusing == CurrentOperation() ) { @@ -2266,18 +2266,22 @@ // --------------------------------------------------------------------------- // const CFbsBitmap* -CCamAppController::SnapshotImage() const +CCamAppController::SnapshotImage() { PRINT ( _L("Camera => CCamAppController::SnapshotImage") ); PRINT1( _L("Camera <> CCamAppController::SnapshotImage .. current image index: %d"), iCurrentImageIndex ); PRINT1( _L("Camera => CCamAppController::SnapshotImage .. saved current image: %d"), SavedCurrentImage() ); + PRINT1( _L("Camera <> CCamAppController::SnapshotImage - iSnapshotRedrawNeeded:%d"), iSnapshotRedrawNeeded ); if ( iSnapShotRotator->IsActive() ) { // Avoid flickering. Do not show original snapshot, if it needs to be rotated + // Snapshot might need a separate draw if rotation takes long time + iSnapshotRedrawNeeded = ETrue; PRINT( _L("Camera <= CCamAppController::SnapshotImage - return null") ); return NULL; } + iSnapshotRedrawNeeded = EFalse; //Sometime burst capture array includes more than one image in single capture mode, //so just display the latest image here. @@ -2800,14 +2804,8 @@ appUi->SetAssumePostCaptureView( EFalse ); } } - - TBool cancelingAutoFocus = ( ECamControllerImage == CurrentMode() && - iInfo.iActiveCamera == ECamActiveCameraPrimary && - iConfigManager && - iConfigManager->IsAutoFocusSupported() && - iAFCancelInProgress ); - - if ( Busy() || cancelingAutoFocus ) + + if ( Busy() ) { PRINT( _L("Camera <> CCamAppController::ReleaseCamera: set release pending") ); iPendingRelease = ETrue; @@ -2986,12 +2984,15 @@ if( !aStartup ) { CCamAppUi* appUi = static_cast( CEikonEnv::Static()->AppUi() ); + TVwsViewId activeView; + (void) appUi->GetActiveViewId( activeView ); // ignore error if(IntegerSettingValue(ECamSettingItemRemovePhoneMemoryUsage) && !IsMemoryAvailable(ECamMediaStorageMassStorage) && !IsMemoryAvailable(ECamMediaStorageCard) && ( appUi->PreCaptureMode() == ECamPreCapViewfinder || - appUi->PreCaptureMode() == ECamPreCapGenericSetting ) ) + appUi->PreCaptureMode() == ECamPreCapGenericSetting ) && + activeView.iViewUid.iUid != ECamViewIdPhotoUserSceneSetup ) { TBool usbPersonality = 0; #ifndef __WINSCW__ @@ -3015,6 +3016,7 @@ } iIssueModeChangeSequenceSucceeded = EFalse; + ClearSequenceBusyFlag( &iBusyFlags ); } else { @@ -5102,7 +5104,6 @@ if( !Busy() ) { OstTrace0( CAMERAAPP_PERFORMANCE, CCAMAPPCONTROLLER_STARTVIEWFINDER, "e_CAM_APP_VF_INIT 0" ); //CCORAPP_APP_VF_INIT_END - OstTrace0( CAMERAAPP_PERFORMANCE, DUP1_CCAMAPPCONTROLLER_STARTVIEWFINDER, "e_CAM_APP_OVERLAY_INIT 0" ); //CCORAPP_APP_OVERLAY_INIT_END TRAPD( error, IssueDirectRequestL( ECamRequestVfStart ) ); if ( KErrNone != error @@ -7413,11 +7414,26 @@ SetIntegerSettingValueL( ECamSettingItemVideoQuality, iConfiguration->SecondaryCameraVideoQuality() ); - - + + // Remember the previous state of face tracking, + // current state of face tracking and + // the previous scene mode + TCamSettingsOnOff previousFaceTrack = iSettingsModel->GetPreviousFaceTrack(); + TCamSettingsOnOff faceTracking = static_cast( IntegerSettingValue( ECamSettingItemFaceTracking ) ); + TCamSceneId previousSceneMode = iSettingsModel->GetPreviousSceneMode(); + PRINT( _L("Camera <> CCamAppController::LoadSecondaryCameraSettingsL E" )) SetIntegerSettingValueL( ECamSettingItemDynamicPhotoScene, ECamSceneAuto ); SetIntegerSettingValueL( ECamSettingItemDynamicVideoScene, ECamSceneNormal ); + + + // Restore the previous state of face tracking, + // current state of face tracking and + // the previous scene mode + iSettingsModel->SetPreviousFaceTrack( previousFaceTrack ); + SetIntegerSettingValueL( ECamSettingItemFaceTracking, faceTracking ); + iSettingsModel->SetPreviousSceneMode( previousSceneMode ); + PRINT( _L("Camera <> CCamAppController::LoadSecondaryCameraSettingsL F" )) PRINT( _L("Camera <= CCamAppController::LoadSecondaryCameraSettingsL" )) @@ -9582,9 +9598,9 @@ if( iInfo.iMode != iInfo.iTargetMode ) { - if ( !IsInShutdownMode() && !iSaving && iInfo.iOperation != ECamCapturing ) - { - PRINT( _L("Camera <> CCamAppController: not in target mode, need to issue requests") ); + if ( !IsInShutdownMode() && !iSaving && iInfo.iOperation != ECamCapturing && iInfo.iOperation != ECamStandby ) + { + PRINT1( _L("Camera <> CCamAppController: not in target mode, need to issue requests iInfo.iOperation=%d"), iInfo.iOperation ); IssueModeChangeSequenceL(); } } @@ -11154,13 +11170,6 @@ PRINT( _L("Camera <> CCamAppController - viewfinder on, stop vf / re-prepare / start vf..") ); TRAPD( status, { - // Synchronous items - // IssueDirectRequestL( ECamRequestVfStop ); - // IssueDirectRequestL( ECamRequestSsRelease ); - // IssueRequestL( ECamRequestVideoInit ); - // IssueDirectRequestL( ECamRequestSsStart ); - // IssueDirectRequestL( ECamRequestVfStart ); - // Generate the request sequence and issue to Camera Controller. RCamRequestArray sequence; CleanupClosePushL( sequence ); @@ -11336,5 +11345,24 @@ TRAP_IGNORE( IssueModeChangeSequenceL( ETrue ) ); } +// --------------------------------------------------------------------------- +// CCamAppController::SnapshotRotationComplete +// +// --------------------------------------------------------------------------- +// +void CCamAppController::SnapshotRotationComplete() + { + PRINT( _L( "Camera => CCamAppController::SnapshotRotationComplete" ) ); + // If snapshot rotation takes too long, it might not be drawn + // unless specifically requested + if( iSnapshotRedrawNeeded ) + { + iSnapshotRedrawNeeded = EFalse; + NotifyControllerObservers( ECamEventSnapshotRotated ); + } + PRINT( _L( "Camera <= CCamAppController::SnapshotRotationComplete" ) ); + } + + // End of File diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/src/CamAppui.cpp --- a/camerauis/cameraapp/generic/src/CamAppui.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamAppui.cpp Tue May 25 12:22:04 2010 +0300 @@ -135,6 +135,9 @@ // events saying Eikon Server has gained focus. _LIT( KEikonServer, "EikonServer" ); +_LIT8(K3gpVideoMimeType, "video/3gpp"); +_LIT8(KMp4VideoMimeType, "video/mp4"); + //const TCamMediaStorage KCamInternalStorage = ECamMediaStoragePhone; const TUint KCameraEventInterest = ( ECamCameraEventClassBasicControl @@ -1699,9 +1702,18 @@ if ( !iVideoClipPlayInProgress) { - TDataType dataType; TInt err; - + TDataType dataType( K3gpVideoMimeType ); +#ifndef __WINS__ + TCamVideoFileType fileType = static_cast< TCamVideoFileType > + ( iController.IntegerSettingValue( ECamSettingItemVideoFileType ) ); + if ( fileType == ECamVideoMpeg4 ) + { + PRINT(_L("Camera <> CCamAppUi::HandleCommandL. case ECamCmdPlay D")); + dataType=TDataType( KMp4VideoMimeType ); + } +#endif + SetEmbedding( ETrue ); err = iDocHandler->OpenFileEmbeddedL( iController.CurrentFullFileName(), dataType ); @@ -2014,7 +2026,12 @@ { //load settings in case they were changed via GS iController.LoadStaticSettingsL( IsEmbedded() ); - iStillCaptureView->UpdateToolbarIconsL(); + if ( iController.CurrentMode() == ECamControllerImage + || iController.TargetMode() == ECamControllerImage ) + { + iStillCaptureView->UpdateToolbarIconsL(); + } + // and check the availability of the memory to be used iController.CheckMemoryToUseL(); } @@ -2827,7 +2844,7 @@ PRINT1( _L("Camera => CCamAppUi::HandleWsEventL (type: %d)"), type ) // In case we receive an enter key event, we should map it to MSK if ( aEvent.Type() == EEventKey && aEvent.Key()->iRepeats == 0 && - aEvent.Key()->iScanCode == EStdKeyEnter && + aEvent.Key()->iScanCode == EStdKeyEnter && iViewState != ECamViewStateUserSceneSetup && !( iMode == ECamControllerVideo && iViewState == ECamViewStatePreCapture && iController.IsDemandKeyRelease() ) ) { PRINT( _L("Camera <> CCamAppUi::HandleWsEventL: mapping enter to MSK") ); @@ -3376,7 +3393,8 @@ //We hiden toolbar when keylock was set to on in pre-capture view and camera lost focus, //so we need to display toolbar when keylock is set to off and camera gain focus again. if ( ECamViewStatePreCapture == iViewState && - ECamPreCapViewfinder == iPreCaptureMode ) + ECamPreCapViewfinder == iPreCaptureMode && + iController.CurrentOperation() != ECamCapturing ) { SetToolbarVisibility(); } @@ -6326,6 +6344,17 @@ PRINT( _L("Camera <= CCamAppUi::StartAsServerAppL") ); } +// --------------------------------------------------------- +// CCamAppUi::SetEmbeddedObserver +// --------------------------------------------------------- +// +void CCamAppUi::SetEmbeddedObserver( MCamEmbeddedObserver* aEmbeddedObserver ) + { + PRINT1( _L("Camera <> CCamAppUi::SetEmbeddedObserver %x"), aEmbeddedObserver ); + iEmbeddedObserver = aEmbeddedObserver; + } + + // --------------------------------------------------------------------------- // CCamAppUi::CamOrientation @@ -8373,6 +8402,31 @@ return iToolbarVisibility; } +// ----------------------------------------------------------------------------- +// CCamAppUi::IsToolBarExtensionVisible +// Returns ETrue if the toolbar extension is visible, +// otherwise EFalse. +// ----------------------------------------------------------------------------- +// +TBool CCamAppUi::IsToolBarExtensionVisible() const + { + if ( iController.IsTouchScreenSupported() ) + { + CAknToolbar* toolbar = CurrentFixedToolbar(); + if ( toolbar ) + { + CAknToolbarExtension* toolbarextension = + toolbar->ToolbarExtension(); + if ( toolbarextension && toolbarextension->IsShown() ) + { + PRINT( _L("Camera <> CCamAppUi::IsToolBarExtensionVisible ETrue" ) ) + return ETrue; + } + } + } + PRINT( _L("Camera <> CCamAppUi::IsToolBarExtensionVisible EFalse" ) ) + return EFalse; + } // ----------------------------------------------------------------------------- // CCamAppUi::SetAssumePostCaptureView diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/src/CamBurstCaptureArray.cpp --- a/camerauis/cameraapp/generic/src/CamBurstCaptureArray.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamBurstCaptureArray.cpp Tue May 25 12:22:04 2010 +0300 @@ -133,10 +133,7 @@ { return KNullDesC; } - else - { - return *iFileName; - } + return *iFileName; } // --------------------------------------------------------------------------- @@ -146,6 +143,10 @@ // const TDesC& CCamBurstCaptureArray::CCamBurstCaptureItem::ImageName() const { + if( !iImageName ) + { + return KNullDesC; + } return *iImageName; } diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/src/CamCaptureSetupContainer.cpp --- a/camerauis/cameraapp/generic/src/CamCaptureSetupContainer.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamCaptureSetupContainer.cpp Tue May 25 12:22:04 2010 +0300 @@ -399,7 +399,7 @@ ( IsCaptureKeyL( aKeyEvent, aType ) || IsShutterKeyL( aKeyEvent, aType ) ) ) ) { TKeyResponse response = iCaptureSetupControl->OfferKeyEventL( aKeyEvent, aType ); - if ( aType == EEventKeyDown && IsShutterKeyL( aKeyEvent, aType ) && + if ( aType == EEventKeyDown && response == EKeyWasNotConsumed && ( ECamSettingItemDynamicPhotoFlash == iControlHandler.SettingType() || ECamSettingItemDynamicSelfTimer == iControlHandler.SettingType() ) ) { @@ -409,8 +409,7 @@ { iView.HandleCommandL( EAknSoftkeyOk ); } - - return response; + return EKeyWasConsumed; } return iCaptureSetupControl->OfferKeyEventL( aKeyEvent, aType ); } @@ -713,7 +712,6 @@ switch( aEventType ) { - case EEventEnterKeyPressed: case EEventItemDoubleClicked: { iView.HandleCommandL(EAknSoftkeyOk); diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/src/CamContainerBase.cpp --- a/camerauis/cameraapp/generic/src/CamContainerBase.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamContainerBase.cpp Tue May 25 12:22:04 2010 +0300 @@ -104,6 +104,7 @@ void CCamContainerBase::BaseConstructL( const TRect& aRect ) { CreateWindowL(); + Window().SetBackgroundColor( KRgbBlack ); SetRect( aRect ); EnableDragEvents(); @@ -835,10 +836,11 @@ if ( appUi && ( !appUi->IsToolBarVisible() || !appUi->DrawPreCaptureCourtesyUI() ) && ( aKeyEvent.iScanCode == EStdKeyDevice3 - || aKeyEvent.iScanCode == EStdKeyEnter ) - && !static_cast(&iView)->IsPostCapture() ) { + || aKeyEvent.iScanCode == EStdKeyEnter + || aKeyEvent.iScanCode == EStdKeyNkpEnter ) ) + { isCapturekey = ETrue; - } + } return isCapturekey; } @@ -853,10 +855,11 @@ if ( appUi && !appUi->IsToolBarVisible() && ( aKeyEvent.iScanCode == EStdKeyDevice3 - || aKeyEvent.iScanCode == EStdKeyEnter ) - && !static_cast(&iView)->IsPostCapture() ) { + || aKeyEvent.iScanCode == EStdKeyEnter + || aKeyEvent.iScanCode == EStdKeyNkpEnter )) + { isCapturekey = ETrue; - } + } return isCapturekey; } diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/src/CamDriveChangeNotifier.cpp --- a/camerauis/cameraapp/generic/src/CamDriveChangeNotifier.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamDriveChangeNotifier.cpp Tue May 25 12:22:04 2010 +0300 @@ -359,6 +359,14 @@ iUSBTimer = CCamTimer::NewL( KUSBTimeout, TCallBack(USBTimerCallBack, this)); CleanupStack::Pop(); // listener CleanupStack::Pop(); // listener 2 + //if USB has been inserted as Mass Storage, USB timer need to start + TInt value = 0; + iUsbMSWatcher->Get( value ); + if( iUSBTimer && KUsbPersonalityIdMS == value ) + { + iUSBTimer->Cancel(); + iUSBTimer->StartTimer(); + } StartMonitoring(); diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/src/CamImageSaveActive.cpp --- a/camerauis/cameraapp/generic/src/CamImageSaveActive.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamImageSaveActive.cpp Tue May 25 12:22:04 2010 +0300 @@ -737,7 +737,12 @@ TPtrC filename = iSaveArray->MdcaPoint( 0 ); - PRINT1( _L( "Camera <> CCamImageSaveActive: trying to save file:[%S]"), &filename ); + PRINT1( _L( "Camera <> CCamImageSaveActive: trying to save file:[%S]"), &filename ); + if( filename.Length() == 0 ) + { + PRINT( _L( "Camera <= CCamImageSaveActive: DoSaveL Leaving...not a valid filename") ); + User::Leave( KErrNotReady ); + } // Check disk space TInt drive = 0; diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/src/CamInfoListBoxContainer.cpp --- a/camerauis/cameraapp/generic/src/CamInfoListBoxContainer.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamInfoListBoxContainer.cpp Tue May 25 12:22:04 2010 +0300 @@ -300,8 +300,9 @@ // Handles a change to the setting value of the slider // ----------------------------------------------------------------------------- // -void CCamInfoListBoxContainer::HandleSettingValueUpdateL( TInt /*aNewValue*/ ) - { +void CCamInfoListBoxContainer::HandleSettingValueUpdateL( TInt aNewValue ) + { + iController.PreviewSettingChangeL( ECamSettingItemDynamicPhotoLightSensitivity, aNewValue ); } // --------------------------------------------------------- @@ -420,16 +421,10 @@ TKeyResponse returnvalue = iListBox->OfferKeyEventL( aKeyEvent, aType ); - if ( CamUtility::IsNhdDevice() ) + if ( EStdKeyUpArrow == aKeyEvent.iScanCode || + EStdKeyDownArrow == aKeyEvent.iScanCode ) { - // for non touch, we use key presses to scroll thru the scene modes - // for touch with keyboard, key pressing can also scroll thru the scene modes - // after every up and down key presses we display the tool tip - if ( EStdKeyUpArrow == aKeyEvent.iScanCode || - EStdKeyDownArrow == aKeyEvent.iScanCode ) - { - ShowTooltipL(); - } + ShowTooltipL(); } else // No tooltip { @@ -592,7 +587,6 @@ { switch( aEventType ) { - case EEventEnterKeyPressed: case EEventItemDoubleClicked: { iView.HandleCommandL( EAknSoftkeySelect ); diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/src/CamNewFileService.cpp --- a/camerauis/cameraapp/generic/src/CamNewFileService.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamNewFileService.cpp Tue May 25 12:22: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" @@ -69,6 +69,12 @@ if ( !iCompleted && iObserver ) { TRAP_IGNORE( iObserver->HandleCompletedNewServiceL( EFalse ) ); + CCamAppUi* appUi = static_cast< CCamAppUi* >( CEikonEnv::Static()->EikAppUi() ); + if ( appUi ) + { + // Tell appui 'this' is not valid MCamEmbeddedObserver pointer anymore + appUi->SetEmbeddedObserver( NULL ); + } } PRINT( _L("Camera <= ~CCamNewFileService") ); } @@ -153,7 +159,7 @@ CCamAppUi * appUi = static_cast< CCamAppUi* >( CEikonEnv::Static()->EikAppUi() ); appUi->SetRequestedNewFileResolution(requestedResolution); - appUi->StartAsServerAppL( this, mode ); + appUi->StartAsServerAppL( this, mode ); // 'this' is used for MCamEmbeddedObserver pointer } // --------------------------------------------------------------------------- diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/src/CamPostCaptureContainer.cpp --- a/camerauis/cameraapp/generic/src/CamPostCaptureContainer.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamPostCaptureContainer.cpp Tue May 25 12:22:04 2010 +0300 @@ -529,15 +529,13 @@ TInt /*aError*/ ) { PRINT( _L("Camera => CCamPostCaptureContainer::HandleControllerEventL") ); - // If this is a capture complete event - if ( aEvent == ECamEventCaptureComplete ) + // If this is a capture complete event, or snapshot needs to be drawn + if ( aEvent == ECamEventCaptureComplete || + aEvent == ECamEventSnapshotReady || + aEvent == ECamEventSnapshotRotated ) { DrawNow(); } - else if ( aEvent == ECamEventSnapshotReady ) - { - DrawNow(); - } PRINT( _L("Camera <= CCamPostCaptureContainer::HandleControllerEventL") ); } diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/src/CamPreCaptureContainerBase.cpp --- a/camerauis/cameraapp/generic/src/CamPreCaptureContainerBase.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamPreCaptureContainerBase.cpp Tue May 25 12:22:04 2010 +0300 @@ -34,7 +34,9 @@ #include #include #include - +#include +#include +#include #include "CamAppUiBase.h" #include "CamPreCaptureContainerBase.h" @@ -62,7 +64,8 @@ #include "camconfiguration.h" #include "CameraUiConfigManager.h" #include "camstartuplogo.h" - +#include "camvfgridinterface.h" +#include "camlinevfgriddrawer.h" // CONSTANTS const TInt KZoomPanelTimeout = 4000000; // 4s @@ -73,8 +76,13 @@ const TInt KNumberOfBlinks = 3; const TInt KNumberOfBlinksVideo = 8; -#include "camvfgridinterface.h" -#include "camlinevfgriddrawer.h" +const TRect KIconRect(0, 0, 40, 40); +const TInt32 KCaptureButtonWidth( 50 ); +const TInt32 KCaptureButtonYDelta( 35 ); +const TInt32 KCaptureIconDelta( 7 ); +const TUint32 KToolbarExtensionBgColor = 0x00000000; +const TInt KToolBarExtensionBgAlpha = 0x7F; + // Snapshot data is needed in timelapse mode const TUint KCameraEventInterest = ( ECamCameraEventClassVfControl @@ -303,6 +311,15 @@ TRAP_IGNORE(iStartupLogo = CCamStartupLogo::NewL(*appUi->StartupLogoController(), aRect)); } + // Capture icon rectangle + TRect containerRect = Rect(); + TPoint center( containerRect.Center() ); + + iCaptureRect.SetRect( center.iX - KCaptureButtonWidth/2, + containerRect.iBr.iY - KCaptureButtonWidth - KCaptureButtonYDelta, + center.iX + KCaptureButtonWidth/2, + containerRect.iBr.iY - KCaptureButtonYDelta ); + PRINT( _L("Camera <= CCamPreCaptureContainerBase::BaseConstructL ") ); } @@ -484,11 +501,13 @@ // so will be processed by the container. // Handle Zoom in key if we are not saving video + // and if toolbar extension is not visible PRINT( _L("Camera <> CCamPreCaptureContainerBase::OfferKeyEventL B") ) if ( IsZoomKeyL( aKeyEvent, aType ) && ECamCompleting != iController.CurrentOperation() && !iController.CurrentlySavingVideo() - && !appUi->IsSecondCameraEnabled() ) + && !appUi->IsSecondCameraEnabled() + && !appUi->IsToolBarExtensionVisible() ) { // Offer the key event to the zoom pane/model TKeyResponse resp = iZoomPane->OfferKeyEventL( aKeyEvent, aType ); @@ -550,6 +569,13 @@ PRINT( _L("Camera <> CCamPreCaptureContainerBase::OfferKeyEventL calling StopZoom()") ); zoom_pane->StopZoom(); } + + // Stop blinking icon when capture is initiated + if ( iIndBlinkTimer && iIndBlinkTimer->IsActive() ) + { + iIndBlinkTimer->Cancel(); + iDrawIndicator = ETrue; + } } TBool viewFinderRunning = iReceivedVfFrame; if ( iController.UiConfigManagerPtr() && @@ -725,11 +751,42 @@ iPhotoSceneUsesReticule = !iController.CurrentSceneHasForcedFocus(); HandleOperationStateChangeEventL(); } - } + iCaptureButtonShown = CaptureButtonActive(); break; } // --------------------------------------------------- + case ECamEventEngineStateChanged: + { + PRINT1( _L("Camera <> Start mode indi blinking, op:%d"), iController.CurrentOperation() ); + + if ( !iController.UiConfigManagerPtr()->IsCustomCaptureButtonSupported() + && !iController.EngineRequestsPending() + && iController.TargetMode() == iController.CurrentMode() + && iController.CurrentOperation() == ECamNoOperation + && !iBlinkResolutionIndicator ) + { + PRINT( _L("Camera <> mode indi blinking - starting timers") ); + if ( !iIndBlinkTimer ) + { + iIndBlinkTimer = CPeriodic::NewL( EPriorityLess ); + } + else + { + iIndBlinkTimer->Cancel(); + } + + iToggleCountdown = 2 * KNumberOfBlinks; + iBlinkModeIndicator = ETrue; + iIndBlinkTimer->Start( KIndicatorBlinkDelay, + KIndicatorBlinkDelay, + TCallBack( IndicatorVisible, this) ); + + iDrawIndicator = ETrue; + } + break; + } + // --------------------------------------------------- case ECamEventExitRequested: { iShuttingDown = ETrue; @@ -798,6 +855,8 @@ case ECamEventVideoQualityChanged: if ( iBlinkResolutionIndicator ) { + iBlinkModeIndicator = EFalse; + // Force the first blink to occur right away iDrawIndicator = EFalse; DrawResolutionIndicator(); @@ -892,7 +951,7 @@ ResetVFGridVisibility(); } else - { + { // Background if ( iIndBlinkTimer ) { iIndBlinkTimer->Cancel(); @@ -914,7 +973,7 @@ // Update the view ID for when we come back. TCamAppViewIds viewId = static_cast( iView.Id().iUid ); - SetPreviousViewId( viewId ); + SetPreviousViewId( viewId ); } PRINT( _L( "Camera <= CCamPreCaptureContainerBase::HandleForegroundEventL" ) ); } @@ -1061,6 +1120,13 @@ } DrawScreenFurniture( gc ); DrawNaviControls( gc ); + + // Draw capture button + if( iCaptureButtonShown ) + { + DrawCaptureButton( gc ); + } + PRINT( _L( "Camera <= CCamPreCaptureContainerBase::Draw" ) ); } @@ -2383,37 +2449,105 @@ // void CCamPreCaptureContainerBase::HandlePointerEventL( const TPointerEvent& aPointerEvent ) { - PRINT3( _L("CCamPreCaptureContainerBase::HandlePointerEventL iType=%d iPosition=(%d, %d)"), + PRINT3( _L("Camera => CCamPreCaptureContainerBase::HandlePointerEventL iType=%d iPosition=(%d, %d)"), aPointerEvent.iType, aPointerEvent.iPosition.iX, aPointerEvent.iPosition.iY ); CCamAppUi* appUi = static_cast( iEikonEnv->AppUi() ); - if ( !appUi->IsSecondCameraEnabled() ) + // Capture button + TRect captureRect( iCaptureRect ); + captureRect.Grow( 30, 30 ); + + if ( iCaptureButtonShown && captureRect.Contains( aPointerEvent.iPosition ) ) { - // don't let zoom pane be used when capturing image - if ( iController.CurrentMode() != ECamControllerImage || - (iController.CurrentOperation() != ECamCapturing && - iController.CurrentOperation() != ECamCompleting) ) + if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) + { + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if ( !iCaptureIconPressed && feedback ) + { + feedback->InstantFeedback( ETouchFeedbackBasicButton ); + } + iCaptureIconPressed = ETrue; + DrawNow( captureRect ); + } + else if ( aPointerEvent.iType == TPointerEvent::EButton1Up + && iCaptureIconPressed ) { - if ( iZoomPane ) - { - if ( iZoomPane->HandlePointerEventL( aPointerEvent ) ) + iCaptureIconPressed = EFalse; + + // Give feedback on button release + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if ( feedback ) + { + feedback->InstantFeedback( ETouchFeedbackBasicButton ); + } + + // About to start capture ... hide stop zoom etc. + if ( iZoomPane ) + { + PRINT( _L("Camera <> CCamPreCaptureContainerBase::HandlePointerEventL - StopZoom()") ); + iZoomPane->StopZoom(); + iZoomPane->MakeVisible( EFalse, ETrue ); + } + // Stop blinking icon when capture is initiated + if ( iIndBlinkTimer && iIndBlinkTimer->IsActive() ) + { + iIndBlinkTimer->Cancel(); + iDrawIndicator = ETrue; + } + + if ( iController.CurrentMode() == ECamControllerVideo ) + { + iView.HandleCommandL( ECamCmdRecord ); + } + else + { + iView.HandleCommandL( ECamCmdCaptureImage ); + } + } + else + { + // Avoid compiler warning + } + } + else + { + PRINT( _L("Camera <> CCamPreCaptureContainerBase::HandlePointerEventL - outside button region") ); + // Drags can potentially start from inside button area + if ( iCaptureIconPressed && aPointerEvent.iType != TPointerEvent::EDrag ) + { + iCaptureIconPressed = EFalse; + DrawNow( captureRect ); + } + + if ( !appUi->IsSecondCameraEnabled() ) + { + // don't let zoom pane be used when capturing image + if ( iController.CurrentMode() != ECamControllerImage || + ( iController.CurrentOperation() != ECamCapturing && + iController.CurrentOperation() != ECamCompleting && + iController.CurrentOperation() != ECamFocusing ) ) + { + if ( iZoomPane ) { - ShowZoomPaneWithTimer(); - return; + if ( iZoomPane->HandlePointerEventL( aPointerEvent ) ) + { + ShowZoomPaneWithTimer(); + return; + } } + } + + if ( aPointerEvent.iType == TPointerEvent::EButton1Down && + !appUi->DrawPreCaptureCourtesyUI() ) + { + appUi->HandleCommandL( ECamCmdRaiseCourtesyUI ); } + CCamContainerBase::HandlePointerEventL( aPointerEvent ); } + } - if ( aPointerEvent.iType == TPointerEvent::EButton1Down && - !appUi->DrawPreCaptureCourtesyUI() ) - { - appUi->HandleCommandL( ECamCmdRaiseCourtesyUI ); - } - - CCamContainerBase::HandlePointerEventL( aPointerEvent ); - } PRINT( _L("Camera <= CCamPreCaptureContainerBase::HandlePointerEventL") ); } @@ -2675,33 +2809,30 @@ return resolutionIconLayout.Rect(); } +// ------------------------------------------------------------- +// CCamPreCaptureContainerBase::BlinkResolutionIndicatorOnChange +// ------------------------------------------------------------- +// void CCamPreCaptureContainerBase::BlinkResolutionIndicatorOnChange( TBool aBlink ) { iBlinkResolutionIndicator = aBlink; } +// ------------------------------------------------------------- +// CCamPreCaptureContainerBase::DrawResolutionIndicator +// ------------------------------------------------------------- +// void CCamPreCaptureContainerBase::DrawResolutionIndicator() { PRINT( _L("Camera => CCamPreCaptureContainerBase::DrawResolutionIndicator") ); iToggleCountdown--; - // Stop immediately the periodic timer for showing correctly - // the text "Processing image" when capturing a still image. - TBool stillCapturing = ECamControllerImage == iController.CurrentMode() && - ECamImageCaptureSingle == iController.CurrentImageMode() && - iController.IsProcessingCapture(); - if ( stillCapturing ) - { - iBlinkResolutionIndicator = EFalse; - iIndBlinkTimer->Cancel(); - return; - } - // State changed, need to redraw ActivateGc(); // Invalidate the flash icon area - TRect rect( iResolutionIndicators[iCurrentIndicator]->LayoutRect() ); + TRect rect( (iBlinkModeIndicator) ? iSidePane->ModeIndicatorLayoutRect() + : iResolutionIndicators[iCurrentIndicator]->LayoutRect() ); RWindow window = Window(); window.Invalidate( rect ); window.BeginRedraw( rect ); @@ -2709,17 +2840,35 @@ // Redraw the background in that area Redraw( rect ); - // Draw the flash icon itself + // Draw the icon CWindowGc& gc = SystemGc(); - if( iDrawIndicator ) + if ( iBlinkModeIndicator ) { - iResolutionIndicators[iCurrentIndicator]->DisplayIcon(); + iSidePane->DrawModeIndicator( gc, iDrawIndicator ); } else { - iResolutionIndicators[iCurrentIndicator]->ClearIcon(); + // Mode indicator should be visible, while the resolution indicator blinks + if ( !iController.UiConfigManagerPtr()->IsCustomCaptureButtonSupported() ) + { + iSidePane->DrawModeIndicator( gc, ETrue ); + } + + if( iDrawIndicator ) + { + iResolutionIndicators[iCurrentIndicator]->DisplayIcon(); + } + else + { + iResolutionIndicators[iCurrentIndicator]->ClearIcon(); + } + iResolutionIndicators[iCurrentIndicator]->Draw( gc ); + + // If blink timer is canceled abruptly(like capture image) at some places, resolution indicator may go missing in pre-capture mode. + // So alway set resolution clear flag to EFlase after drawing resolution indicator to avoiding missing indicator. + // This do not affect indicator blink function because this just set the flag, do not draw the indicator. + iResolutionIndicators[iCurrentIndicator]->DisplayIcon(); } - iResolutionIndicators[iCurrentIndicator]->Draw( gc ); // Tell the window redraw is finished and deactivate Gc window.EndRedraw(); @@ -2729,12 +2878,17 @@ if ( iDrawIndicator && iToggleCountdown <= 0 ) { iBlinkResolutionIndicator = EFalse; + iBlinkModeIndicator = EFalse; iIndBlinkTimer->Cancel(); } PRINT( _L("Camera <= CCamPreCaptureContainerBase::DrawResolutionIndicator") ); } +// ------------------------------------------------------------- +// CCamPreCaptureContainerBase::IndicatorVisible +// ------------------------------------------------------------- +// TInt CCamPreCaptureContainerBase::IndicatorVisible( TAny *aSelf ) { PRINT( _L("Camera => CCamPreCaptureContainerBase::IndicatorVisible") ); @@ -2749,5 +2903,65 @@ return KErrNone; } +// ------------------------------------------------------------- +// CCamPreCaptureContainerBase::DrawCaptureButton +// ------------------------------------------------------------- +// +void CCamPreCaptureContainerBase::DrawCaptureButton( CBitmapContext& aGc ) const + { + TRect containerRect = Rect(); + TPoint iconTl( containerRect.Center().iX - KCaptureButtonWidth/2 + KCaptureIconDelta, + containerRect.iBr.iY - KCaptureButtonYDelta - KCaptureButtonWidth + KCaptureIconDelta ); + + aGc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha ); + aGc.SetBrushStyle( CGraphicsContext::ESolidBrush ); + aGc.SetPenStyle( CGraphicsContext::ENullPen ); + + if ( iCaptureIconPressed ) + { + aGc.SetBrushColor( KRgbBlack ); + } + else + { + aGc.SetBrushColor( TRgb( KToolbarExtensionBgColor, KToolBarExtensionBgAlpha ) ); + } + aGc.DrawEllipse( iCaptureRect ); + + aGc.SetBrushStyle( CGraphicsContext::ENullBrush ); + aGc.SetPenStyle( CGraphicsContext::ESolidPen ); + aGc.BitBltMasked( iconTl, iCaptureIcon, KIconRect, iCaptureMask, EFalse ); + } + +// ------------------------------------------------------------- +// CCamPreCaptureContainerBase::FocusChanged +// ------------------------------------------------------------- +// +void CCamPreCaptureContainerBase::FocusChanged( TDrawNow aDrawNow ) + { + PRINT2( _L("Camera <> CCamPreCaptureContainerBase::FocusChanged, draw:%d, focused:%d"), aDrawNow, + IsFocused() ); + iCaptureButtonShown = CaptureButtonActive(); + if ( aDrawNow ) + { + DrawNow(); + } + } + +// ------------------------------------------------------------- +// CCamPreCaptureContainerBase::CaptureButtonActive +// ------------------------------------------------------------- +// +TBool CCamPreCaptureContainerBase::CaptureButtonActive() const + { + TBool buttonActive = EFalse; + if ( iController.UiConfigManagerPtr()->IsCustomCaptureButtonSupported() + && iController.IsTouchScreenSupported() ) + { + buttonActive = IsFocused() && iController.CurrentOperation() == ECamNoOperation; + PRINT1( _L("Camera <> capture button active:%d"), buttonActive ); + } + return buttonActive; + } + // End of File diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/src/CamPreCaptureViewBase.cpp --- a/camerauis/cameraapp/generic/src/CamPreCaptureViewBase.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamPreCaptureViewBase.cpp Tue May 25 12:22:04 2010 +0300 @@ -1033,7 +1033,9 @@ PRINT( _L("Camera <> CCamPreCaptureViewBase::ExitAllModesL ##" )) ExitCaptureSetupMenuModeL(); } - if(Id() == TUid::Uid(ECamViewIdVideoPreCapture)) + if( Id() == TUid::Uid( ECamViewIdVideoPreCapture ) && + iController.UiConfigManagerPtr() && + iController.UiConfigManagerPtr()->IsXenonFlashSupported() ) { iToolbarExtensionInvisible = ETrue; } @@ -1086,14 +1088,13 @@ CAknToolbar* fixedToolbar = Toolbar(); CAknToolbarExtension* extension = fixedToolbar->ToolbarExtension(); - //Only active view will set toolbar extension visibility. - - if(this->IsForeground()) + // Only active view will set toolbar extension visibility. + if( this->IsForeground() ) { if ( extension && iToolbarExtensionInvisible == EFalse ) { extension->SetShown( ETrue ); - } + } else if( extension ) { extension->SetShown( EFalse ); @@ -1822,7 +1823,8 @@ MAknTouchGestureFwPinchEvent *pinch = AknTouchGestureFwEventPinch( aEvent ); CCamAppUi* appUi = static_cast( iEikonEnv->AppUi() ); - if ( pinch && (ECamNoOperation == iController.CurrentOperation()) && appUi && !appUi->ZoomPane()->IsVisible() ) + if ( pinch && (ECamNoOperation == iController.CurrentOperation()) && appUi + && !appUi->ZoomPane()->IsCurrentlyZooming() ) { // Determine the direction of pinch: +ve -> pinch outward / zoom / widen VF TInt currMove = pinch->Movement(); @@ -1852,26 +1854,29 @@ } } } - else if ( EAknTouchGestureFwDoubleTap == aEvent.Type() ) + else if ( EAknTouchGestureFwDoubleTap == aEvent.Type() + && ( ECamNoOperation == iController.CurrentOperation() + || ( ECamCapturing == iController.CurrentOperation() + && iController.CurrentMode() == ECamControllerVideo ) ) ) { - PRINT( _L("Camera <> *** double tap event") ); + 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() ) + // Zoom to min (if not already at min) zoom level, otherwise zoom in to max level + if ( !zoomPane->IsZoomAtMinimum() ) + { + PRINT( _L("Camera <> Zooming out to min level") ); + zoomPane->ZoomToMinimum(); + } + else { PRINT( _L("Camera <> Zooming to max level") ); zoomPane->ZoomToMaximum(); } - else - { - PRINT( _L("Camera <> Zooming out to min level") ); - zoomPane->ZoomToMinimum(); - } } else { diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/src/CamSettingsModel.cpp --- a/camerauis/cameraapp/generic/src/CamSettingsModel.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamSettingsModel.cpp Tue May 25 12:22:04 2010 +0300 @@ -1221,6 +1221,7 @@ // void CCamSettingsModel::PhotoSceneHasChangedL( TInt aSceneId ) { + PRINT( _L("Camera => CCamSettingsModel::PhotoSceneHasChangedL") ) // If the scene has changed to a scene other than the "User" scene // set capture setup values to defaults and the flash to scene flash. if ( aSceneId != ECamSceneUser ) @@ -1255,32 +1256,6 @@ // Set the user setup contrast to that of the new scene TInt contrast = DefaultSettingValueForScene( aSceneId, ECamSettingItemSceneContrast ); SetIntegerSettingValueL( ECamSettingItemDynamicPhotoBrightness, contrast ); - - if ( iUiConfigManager->IsFaceTrackingSupported() ) // FT supported - { - if ( ECamSceneScenery == aSceneId || - ECamSceneSports == aSceneId || - ECamSceneMacro == aSceneId) - { - if ( ECamSceneScenery != iPreviousSceneMode && - ECamSceneSports != iPreviousSceneMode && - ECamSceneMacro != iPreviousSceneMode ) - { - iPreviousFaceTrack = TCamSettingsOnOff( IntegerSettingValue( ECamSettingItemFaceTracking ) ); - } - SetIntegerSettingValueL( ECamSettingItemFaceTracking, ECamSettOff ); - } - else if ( ( ECamSceneScenery == iPreviousSceneMode || - ECamSceneSports == iPreviousSceneMode || - ECamSceneMacro == iPreviousSceneMode ) && - ( ECamSettOff == TCamSettingsOnOff( IntegerSettingValue( ECamSettingItemFaceTracking ) ) ) ) - { - SetIntegerSettingValueL( ECamSettingItemFaceTracking, iPreviousFaceTrack ); - iPreviousFaceTrack = TCamSettingsOnOff( IntegerSettingValue( ECamSettingItemFaceTracking ) ); - CCamAppUiBase* appUi = static_cast( iEnv->AppUi() ); - TRAP_IGNORE( appUi->APHandler()->UpdateActivePaletteL() ); - } - } // Update the engine with the scene settings. //UpdateEngineWithSceneSettingsL( iPhotoScenes, aSceneId ); @@ -1291,7 +1266,44 @@ { ActivateUserSceneSettingsL(); } + + + if ( iUiConfigManager->IsFaceTrackingSupported() ) // FT supported + { + PRINT( _L("Camera <> Face tracking supported") ) + if ( ECamSceneScenery == aSceneId || + ECamSceneSports == aSceneId || + ECamSceneMacro == aSceneId) + { + PRINT( _L("Camera <> New scene mode is scenery, sports or macro") ) + if ( ECamSceneScenery != iPreviousSceneMode && + ECamSceneSports != iPreviousSceneMode && + ECamSceneMacro != iPreviousSceneMode ) + { + PRINT( _L("Camera <> Previous scene mode is not scenery, sports or macro -> Set iPreviousFaceTrack to current value") ) + iPreviousFaceTrack = TCamSettingsOnOff( IntegerSettingValue( ECamSettingItemFaceTracking ) ); + } + PRINT( _L("Camera <> Switch face tracking OFF") ) + SetIntegerSettingValueL( ECamSettingItemFaceTracking, ECamSettOff ); + } + else if ( ( ECamSceneScenery == iPreviousSceneMode || + ECamSceneSports == iPreviousSceneMode || + ECamSceneMacro == iPreviousSceneMode ) && + ( ECamSettOff == TCamSettingsOnOff( IntegerSettingValue( ECamSettingItemFaceTracking ) ) ) ) + { + PRINT( _L("Camera <> Previous scene mode was scenery, sports or macro AND face tracking is OFF") ) + PRINT( _L("Camera <> Set face tracking to iPreviousFaceTrack") ) + SetIntegerSettingValueL( ECamSettingItemFaceTracking, iPreviousFaceTrack ); + PRINT( _L("Camera <> Set iPreviousFaceTrack to current face tracking state") ) + iPreviousFaceTrack = TCamSettingsOnOff( IntegerSettingValue( ECamSettingItemFaceTracking ) ); + CCamAppUiBase* appUi = static_cast( iEnv->AppUi() ); + TRAP_IGNORE( appUi->APHandler()->UpdateActivePaletteL() ); + } + } + + iPreviousSceneMode = TCamSceneId( aSceneId ); // store scene mode setting + PRINT( _L("Camera <= CCamSettingsModel::PhotoSceneHasChangedL()") ) } // --------------------------------------------------------------------------- @@ -1603,6 +1615,7 @@ iStaticModel->StorePrimaryCameraSettingsL(); CopySettingsL(iDynamicPhotoIntSettings, iDynamicPhotoIntSettingsBackup); CopySettingsL(iDynamicVideoIntSettings, iDynamicVideoIntSettingsBackup); + PRINT( _L("Camera <= CCamSettingsModel::StorePrimaryCameraSettingsL")) } // --------------------------------------------------------------------------- @@ -2284,12 +2297,11 @@ ECamSceneMacro == activeScene) { PRINT( _L("Camera <> CCamSettingsModel::StoreFaceTrackingValue(), Scenery or Sports mode" ) ) - if ( iPreviousFaceTrack != TCamSettingsOnOff( IntegerSettingValue( ECamSettingItemFaceTracking ) ) ) - { - PRINT1( _L("Camera <> CCamSettingsModel::StoreFaceTrackingValue(), iPreviousFaceTrack [%d]" ), iPreviousFaceTrack ) - SetIntegerSettingValueL( ECamSettingItemFaceTracking, iPreviousFaceTrack ); - } + SetIntegerSettingValueL( ECamSettingItemFaceTracking, iPreviousFaceTrack ); } + + + PRINT( _L("Camera <= CamSettingsModel::StoreFaceTrackingValue()" ) ) } @@ -2385,5 +2397,47 @@ PRINT( _L("Camera <= CCamSettingsModel::SetUserSceneDefault ") ); } + +// --------------------------------------------------------------------------- +// CCamSettingsModel::GetPreviousFaceTrack +// +// Returns the face tracking state as it was before the latest scene mode change +// --------------------------------------------------------------------------- +// +TCamSettingsOnOff CCamSettingsModel::GetPreviousFaceTrack() + { + return iPreviousFaceTrack; + } + +// --------------------------------------------------------------------------- +// CCamSettingsModel::SetPreviousFaceTrack +// --------------------------------------------------------------------------- +// +void CCamSettingsModel::SetPreviousFaceTrack( TCamSettingsOnOff aPreviousFaceTrack ) + { + iPreviousFaceTrack = aPreviousFaceTrack; + } + +// --------------------------------------------------------------------------- +// CCamSettingsModel::GetPreviousSceneMode +// +// Returns the scene mode that was in use before the current scene mode was selected +// --------------------------------------------------------------------------- +// +TCamSceneId CCamSettingsModel::GetPreviousSceneMode() + { + return iPreviousSceneMode; + } + +// --------------------------------------------------------------------------- +// CCamSettingsModel::SetPreviousSceneMode +// --------------------------------------------------------------------------- +// +void CCamSettingsModel::SetPreviousSceneMode( TCamSceneId aPreviousSceneMode ) + { + iPreviousSceneMode = aPreviousSceneMode; + } + + // =========================================================================== // end of File diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/src/CamShootingModeContainer.cpp --- a/camerauis/cameraapp/generic/src/CamShootingModeContainer.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamShootingModeContainer.cpp Tue May 25 12:22:04 2010 +0300 @@ -592,7 +592,7 @@ TKeyResponse response = iListBox->OfferKeyEventL( aKeyEvent, aType ); if( UserSceneHighlighted() ) { - iView.HandleCommandL( ECamCmdSelect ); + iView.HandleCommandL( ECamCmdUserSceneSelected ); } else { @@ -606,7 +606,7 @@ TKeyResponse response = iListBox->OfferKeyEventL( aKeyEvent, aType ); if( UserSceneHighlighted() ) { - iView.HandleCommandL( ECamCmdSelect ); + iView.HandleCommandL( ECamCmdUserSceneSelected ); } else { @@ -1114,7 +1114,6 @@ { switch( aEventType ) { - case EEventEnterKeyPressed: case EEventItemDoubleClicked: case EEventItemSingleClicked: { diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/src/CamSidePane.cpp --- a/camerauis/cameraapp/generic/src/CamSidePane.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamSidePane.cpp Tue May 25 12:22:04 2010 +0300 @@ -83,6 +83,7 @@ // void CCamSidePane::ConstructL() { + PRINT( _L("Camera => CCamSidePane::ConstructL") ); LoadResourceDataL(); // side pane is a controller, self timer and burst mode observer @@ -90,6 +91,7 @@ iVisible = ETrue; UpdateLayout(); + PRINT( _L("Camera <= CCamSidePane::ConstructL") ); } // ----------------------------------------------------------------------------- @@ -546,19 +548,33 @@ { if( appUi && !appUi->IsSecondCameraEnabled() || appUi && appUi->IsQwerty2ndCamera() ) - { - if ( ECamControllerVideo == iMode ) - { - iIndicators[ECamIndicatorCaptureMode]->SetIcon( 2 ); - } - else - iIndicators[ECamIndicatorCaptureMode]->SetIcon( 0 ); - } + { + if ( ECamControllerVideo == iMode ) + { + iIndicators[ECamIndicatorCaptureMode]->SetIcon( 2 ); + } + else + iIndicators[ECamIndicatorCaptureMode]->SetIcon( 0 ); + } else iIndicators[ECamIndicatorCaptureMode]->ClearIcon(); + + if ( iController.UiConfigManagerPtr()->IsCustomCaptureButtonSupported() ) + { + iIndicators[ECamIndicatorCaptureMode]->ClearIcon(); + } break; } // ------------------------------------------------- + case ECamIndicatorTotal: + { + if ( iController.UiConfigManagerPtr()->IsCustomCaptureButtonSupported() ) + { + iIndicators[ECamIndicatorTotal]->DisplayIcon(); + } + break; + } + // ------------------------------------------------- // other indicators default: { @@ -998,6 +1014,7 @@ switch ( i ) { case ECamIndicatorCaptureMode: + case ECamIndicatorTotal: { if ( ECamControllerVideo == iMode ) { @@ -1010,6 +1027,11 @@ AknLayoutScalable_Apps::main_camera4_pane_g1( variant ) ); } iIndicators[i]->SetRect( l.Rect() ); + if ( i == ECamIndicatorCaptureMode + && iController.UiConfigManagerPtr()->IsCustomCaptureButtonSupported() ) + { + iIndicators[i]->ClearIcon(); + } break; } case ECamIndicatorBurstMode: @@ -1048,5 +1070,85 @@ } } } - + +// --------------------------------------------------------------------------- +// CCamSidePane::ModeIndicatorLayoutRect +// --------------------------------------------------------------------------- +// +TRect CCamSidePane::ModeIndicatorLayoutRect() + { + // Mode and scene indicators use the same layout rect. + // Only one of these can be used at a give time. + return iIndicators[ECamIndicatorCaptureMode]->LayoutRect(); + } + +// --------------------------------------------------------------------------- +// CCamSidePane::DrawModeIndicator +// --------------------------------------------------------------------------- +// +void CCamSidePane::DrawModeIndicator( CWindowGc& aGc, TBool aDrawIcon ) + { + PRINT( _L("Camera => CCamSidePane::DrawModeIndicator") ); + + if ( iController.UiConfigManagerPtr()->IsCustomCaptureButtonSupported() ) + { + PRINT( _L("Camera <= CCamSidePane::DrawSceneIndicator - mode indicator not used") ); + return; + } + + CCamIndicator *indicator = iIndicators[ECamIndicatorCaptureMode]; + if ( indicator ) + { + if( aDrawIcon ) + { + indicator->DisplayIcon(); + } + else + { + indicator->ClearIcon(); + } + indicator->Draw( aGc ); + } + PRINT( _L("Camera <= CCamSidePane::DrawModeIndicator") ); + } + +// --------------------------------------------------------------------------- +// CCamSidePane::UpdateSceneIndicatorL +// --------------------------------------------------------------------------- +// +void CCamSidePane::UpdateSceneIndicatorL( TInt32 aBitmapId, TInt32 aMaskId ) + { + PRINT1( _L("Camera => CCamSidePane::UpdateSceneIndicatorL - count:%d"), iIndicators.Count() ); + + if ( !iIndicators.Count() ) + { + PRINT( _L("Camera <= CCamSidePane::UpdateSceneIndicatorL - indi not initialized") ); + return; + } + + // Remove previous scene icon, if present + if ( iIndicators.Count() == ECamIndicatorTotal + 1 ) + { + CCamIndicator *indi = iIndicators[ECamIndicatorTotal]; + iIndicators.Remove( ECamIndicatorTotal ); + delete indi; + } + + // Construct and append new indicator to the indicator list + TRect rect( iIndicators[ECamIndicatorCaptureMode]->LayoutRect() ); + CCamIndicator *indicator = CCamIndicator::NewL( rect ); + + CleanupStack::PushL( indicator ); + indicator->AddIconL( aBitmapId, aMaskId ); + indicator->SetRect( rect ); + iIndicators.Append( indicator ); + CleanupStack::Pop( indicator ); + + // Mode indicator disabled and + iIndicators[ECamIndicatorCaptureMode]->ClearIcon(); + iIndicators[ECamIndicatorTotal]->DisplayIcon(); + + PRINT( _L("Camera <= CCamSidePane::UpdateSceneIndicatorL") ); + } + // End of File diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/src/CamStillPreCaptureContainer.cpp --- a/camerauis/cameraapp/generic/src/CamStillPreCaptureContainer.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamStillPreCaptureContainer.cpp Tue May 25 12:22:04 2010 +0300 @@ -51,6 +51,8 @@ const TRgb KGridColor = KRgbGray; const CGraphicsContext::TPenStyle KGridStyle = CGraphicsContext::ESolidPen; +_LIT(KCamBitmapFile, "z:\\resource\\apps\\cameraapp.mif"); +const TSize KIconSize(35, 35); // ================= MEMBER FUNCTIONS ======================= @@ -99,6 +101,13 @@ delete iFlashBitmap; delete iFlashBitmapMask; } + + if ( iCaptureIcon ) + { + delete iCaptureIcon; + delete iCaptureMask; + } + PRINT( _L("Camera <= ~CCamStillPreCaptureContainer" )) } @@ -151,6 +160,17 @@ ->SetupActivePaletteL( static_cast(&iView) ); OstTrace0( CAMERAAPP_PERFORMANCE, DUP1_CCAMSTILLPRECAPTURECONTAINER_CONSTRUCTL, "e_CAM_APP_AP_SETUP 0" ); } + + // Load capture icon + AknIconUtils::CreateIconL( + iCaptureIcon, + iCaptureMask, + KCamBitmapFile(), + EMbmCameraappQgn_indi_cam4_capture, + EMbmCameraappQgn_indi_cam4_capture_mask ); + AknIconUtils::SetSize( iCaptureIcon, KIconSize, EAspectRatioPreserved ); + AknIconUtils::SetSize( iCaptureMask, KIconSize, EAspectRatioPreserved ); + PRINT( _L("Camera <= CCamStillPreCaptureContainer::ConstructL" )) } @@ -511,7 +531,8 @@ // First handle middle softkey and enter key capture event if ( !appui->IsToolBarVisible() && ( aKeyEvent.iScanCode == EStdKeyDevice3 - || aKeyEvent.iScanCode == EStdKeyEnter ) ) + || aKeyEvent.iScanCode == EStdKeyEnter + || aKeyEvent.iScanCode == EStdKeyNkpEnter ) ) { if ( iController.UiConfigManagerPtr() ) { diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/src/CamStillPreCaptureView.cpp --- a/camerauis/cameraapp/generic/src/CamStillPreCaptureView.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamStillPreCaptureView.cpp Tue May 25 12:22:04 2010 +0300 @@ -45,11 +45,13 @@ #include #include #include +#include #include "StringLoader.h" #include "camactivepalettehandler.h" #include "CameraUiConfigManager.h" +#include "CamSidePane.h" #include "CamLocalViewIds.h" #include "OstTraceDefinitions.h" @@ -119,6 +121,7 @@ // void CCamStillPreCaptureView::HandleCommandL( TInt aCommand ) { + PRINT( _L("Camera => CCamStillPreCaptureView::HandleCommandL") ); CCamAppUi* appUi = static_cast( iEikonEnv->AppUi() ); TCamOrientation orientation = appUi->CamOrientation(); switch ( aCommand ) @@ -286,6 +289,7 @@ CCamPreCaptureViewBase::HandleCommandL( aCommand ); } } + PRINT( _L("Camera <= CCamStillPreCaptureView::HandleCommandL") ); } // ----------------------------------------------------------------------------- @@ -429,7 +433,7 @@ } } CCamPreCaptureViewBase::HandleFocusLossL(); - PRINT( _L( "Camera <= CCamVideoPreCaptureView::HandleFocusLossL" ) ); + PRINT( _L( "Camera <= CCamStillPreCaptureView::HandleFocusLossL" ) ); } // ----------------------------------------------------------------------------- @@ -747,7 +751,6 @@ { SetSoftKeysL( R_CAM_SOFTKEYS_BLANK_STOP ); - } // If "Burst" capture is completing else if ( burstEnabled && operation == ECamCompleting ) @@ -1987,7 +1990,11 @@ MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance(); TFileName iconFileName; CamUtility::ResourceFileName( iconFileName ); - + + // For use with scene indicator + TInt32 iconId = EMbmCameraappQgn_indi_cam4_mode_auto; + TInt32 maskId = EMbmCameraappQgn_indi_cam4_mode_auto_mask; + switch ( scene ) { case ECamSceneAuto: @@ -1999,6 +2006,8 @@ EMbmCameraappQgn_indi_cam4_mode_auto_mask, skinInstance, KAknsIIDQgnIndiCam4ModeAuto ); + iconId = EMbmCameraappQgn_indi_cam4_mode_auto; + maskId = EMbmCameraappQgn_indi_cam4_mode_auto_mask; break; } case ECamSceneUser: @@ -2010,6 +2019,8 @@ EMbmCameraappQgn_indi_cam4_mode_userscene_mask, skinInstance, KAknsIIDQgnIndiCam4ModeUserscene ); + iconId = EMbmCameraappQgn_indi_cam4_mode_userscene; + maskId = EMbmCameraappQgn_indi_cam4_mode_userscene_mask; break; } case ECamSceneMacro: @@ -2021,6 +2032,8 @@ EMbmCameraappQgn_indi_cam4_mode_closeup_mask, skinInstance, KAknsIIDQgnIndiCam4ModeCloseup ); + iconId = EMbmCameraappQgn_indi_cam4_mode_closeup; + maskId = EMbmCameraappQgn_indi_cam4_mode_closeup_mask; break; } case ECamScenePortrait: @@ -2032,6 +2045,8 @@ EMbmCameraappQgn_indi_cam4_mode_portrait_mask, skinInstance, KAknsIIDQgnIndiCam4ModePortrait ); + iconId = EMbmCameraappQgn_indi_cam4_mode_portrait; + maskId = EMbmCameraappQgn_indi_cam4_mode_portrait_mask; break; } case ECamSceneScenery: @@ -2043,6 +2058,8 @@ EMbmCameraappQgn_indi_cam4_mode_landscape_mask, skinInstance, KAknsIIDQgnIndiCam4ModeLandscape ); + iconId = EMbmCameraappQgn_indi_cam4_mode_landscape; + maskId = EMbmCameraappQgn_indi_cam4_mode_landscape_mask; break; } case ECamSceneNight: @@ -2054,6 +2071,8 @@ EMbmCameraappQgn_indi_cam4_mode_night_mask, skinInstance, KAknsIIDQgnIndiCam4ModeNight ); + iconId = EMbmCameraappQgn_indi_cam4_mode_night; + maskId = EMbmCameraappQgn_indi_cam4_mode_night_mask; break; } case ECamSceneSports: @@ -2065,6 +2084,8 @@ EMbmCameraappQgn_indi_cam4_mode_sport_mask, skinInstance, KAknsIIDQgnIndiCam4ModeSport ); + iconId = EMbmCameraappQgn_indi_cam4_mode_sport; + maskId = EMbmCameraappQgn_indi_cam4_mode_sport_mask; break; } case ECamSceneNightScenery: @@ -2077,14 +2098,28 @@ EMbmCameraappQgn_indi_cam4_mode_portrait_night_mask, skinInstance, KAknsIIDQgnIndiCam4ModePortraitNight ); + iconId = EMbmCameraappQgn_indi_cam4_mode_portrait_night; + maskId = EMbmCameraappQgn_indi_cam4_mode_portrait_night_mask; break; } case ECamSceneCandlelight: default: break; } + + // Update the icon in the side pane + if ( iController.UiConfigManagerPtr()->IsCustomCaptureButtonSupported() ) + { + CCamAppUi* appUi = static_cast( iEikonEnv->AppUi() ); + CCamSidePane* sidePane = appUi->SidePane(); + + if ( sidePane ) + { + PRINT( _L("Camera <> CCamStillPreCaptureView::UpdateSceneModeIconsL - Updating side pane indicator") ); + sidePane->UpdateSceneIndicatorL( iconId, maskId ); + } + } } - } // --------------------------------------------------------------------------- diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/src/CamUserSceneSetupContainer.cpp --- a/camerauis/cameraapp/generic/src/CamUserSceneSetupContainer.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamUserSceneSetupContainer.cpp Tue May 25 12:22:04 2010 +0300 @@ -445,24 +445,22 @@ const TKeyEvent& aKeyEvent, TEventCode aType ) { - if ( iController.UiConfigManagerPtr() - && iController.UiConfigManagerPtr()->IsAutoFocusSupported() ) + if ( aType == EEventKeyDown && + ( aKeyEvent.iScanCode == EStdKeyEnter || + aKeyEvent.iScanCode == EStdKeyNkpEnter ) ) { - if( aType == EEventKeyDown && IsShutterKeyL( aKeyEvent, aType ) ) - { - TKeyResponse response = iUserSceneSetupList->OfferKeyEventL( aKeyEvent, aType ); - iView.HandleCommandL( EAknSoftkeyBack ); - return response; - } + HandleSelectionL(); + return EKeyWasConsumed; } - else if( aType == EEventKeyDown && IsCaptureKeyL( aKeyEvent, aType ) ) + else if ( aKeyEvent.iScanCode == EStdKeyUpArrow || + aKeyEvent.iScanCode == EStdKeyDownArrow ) { - TKeyResponse response = iUserSceneSetupList->OfferKeyEventL( aKeyEvent, aType ); - iView.HandleCommandL( EAknSoftkeyBack ); - return response; + return iUserSceneSetupList->OfferKeyEventL( aKeyEvent, aType ); } - - return iUserSceneSetupList->OfferKeyEventL( aKeyEvent, aType ); + else + { + return EKeyWasConsumed; + } } // --------------------------------------------------------------------------- diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/src/CamUserSceneSetupViewBase.cpp --- a/camerauis/cameraapp/generic/src/CamUserSceneSetupViewBase.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamUserSceneSetupViewBase.cpp Tue May 25 12:22:04 2010 +0300 @@ -255,7 +255,7 @@ appUi->HandleCommandL( ECamCmdGoToStandby ); return; } - else if ( !appUi->IsInPretendExit() ) + else if ( !appUi->IsInPretendExit() && !iNotifierPopupShowing ) { // Register that we want to use the engine IncrementCameraUsers(); @@ -290,9 +290,11 @@ // To background else if( !aForeground ) { + iNotifierPopupShowing = appUi->AppInBackground( ETrue ); PRINT( _L("Camera <> CCamUserSceneSetupViewBase::HandleForegroundEventL dec engine count") ); // Register that we nolonger need the engine - DecrementCameraUsers(); + if( !iNotifierPopupShowing ) + DecrementCameraUsers(); } PRINT( _L("Camera <= CCamUserSceneSetupViewBase::HandleForegroundEventL ") ); } @@ -593,6 +595,8 @@ void CCamUserSceneSetupViewBase::ExitInfoListBoxL() { PRINT( _L("Camera => CCamUserSceneSetupViewBase::ExitInfoListBoxL()") ); + StopViewFinder(); + CCamCaptureSetupViewBase::ExitInfoListBoxL(); SwitchToUserSceneSetupModeL(); diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/src/CamVideoPreCaptureContainer.cpp --- a/camerauis/cameraapp/generic/src/CamVideoPreCaptureContainer.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamVideoPreCaptureContainer.cpp Tue May 25 12:22:04 2010 +0300 @@ -48,6 +48,11 @@ #endif +// CONSTANTS +_LIT(KCamBitmapFile, "z:\\resource\\apps\\cameraapp.mif"); +const TSize KIconSize(35, 35); + + // ================= MEMBER FUNCTIONS ======================= // --------------------------------------------------------------------------- @@ -79,6 +84,12 @@ iFeedback->RemoveFeedbackForControl( this ); } delete iFileTypeIndicator; + + if ( iCaptureIcon ) + { + delete iCaptureIcon; + delete iCaptureMask; + } PRINT( _L("Camera <= ~CCamVideoPreCaptureContainer") ); } @@ -150,6 +161,16 @@ if ( !iFeedback ) iFeedback = MTouchFeedback::CreateInstanceL(); } + + // Load record icon + AknIconUtils::CreateIconL( + iCaptureIcon, + iCaptureMask, + KCamBitmapFile(), + EMbmCameraappQgn_indi_cam4_video, + EMbmCameraappQgn_indi_cam4_video_mask ); + AknIconUtils::SetSize( iCaptureIcon, KIconSize, EAspectRatioPreserved ); + AknIconUtils::SetSize( iCaptureMask, KIconSize, EAspectRatioPreserved ); } // --------------------------------------------------------------------------- @@ -187,7 +208,7 @@ { if ( iController.IsTouchScreenSupported() && iFeedback ) { - iFeedback->EnableFeedbackForControl( this, EFalse ); + iFeedback->SetFeedbackEnabledForThisApp( EFalse ); } iRecordState = ECamRecording; iResolutionIndicators[iCurrentIndicator]->SetRect(iResolutionIndicatorVidcapPosition); @@ -240,7 +261,7 @@ iFileTypeIndicator->SetRect( iFileTypeIndicatorPosition ); if ( iController.IsTouchScreenSupported() && iFeedback ) { - iFeedback->EnableFeedbackForControl( this, ETrue ); + iFeedback->SetFeedbackEnabledForThisApp( ETrue, ETrue ); } break; } @@ -415,12 +436,6 @@ } else { - // Blank out the softkeys if we are capturing - if ( EKeyWasConsumed == keyResponse ) - { - BlankSoftkeysL(); - } - CCamAppUi* appUi = static_cast( iEikonEnv->AppUi() ); // neither recording nor paused @@ -430,12 +445,16 @@ // Hide the toolbar if we are capturing if( EKeyWasConsumed == keyResponse ) - { - // Repeated key events (MSK) are ignored. - iController.SetDemandKeyRelease( ETrue ); + { + // Hide capture button if we are capturing + iCaptureButtonShown = CaptureButtonActive(); + DrawNow( iCaptureRect ); - // fixed toolbar is used only with touch devices - if ( iController.IsTouchScreenSupported() ) + // Repeated key events (MSK) are ignored. + iController.SetDemandKeyRelease( ETrue ); + + // fixed toolbar is used only with touch devices + if ( iController.IsTouchScreenSupported() ) { CAknToolbar* fixedToolbar = appUi->CurrentFixedToolbar(); if ( fixedToolbar ) @@ -443,8 +462,8 @@ fixedToolbar->SetToolbarVisibility( EFalse ); } } - } - } + } + } PRINT( _L("Camera <= CCamVideoPreCaptureContainer::HandleCaptureKeyEventL") ); return keyResponse; } diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/src/CamVideoPreCaptureView.cpp --- a/camerauis/cameraapp/generic/src/CamVideoPreCaptureView.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamVideoPreCaptureView.cpp Tue May 25 12:22:04 2010 +0300 @@ -40,6 +40,7 @@ #include #include "CamCaptureSetupMenu.h" #include "CamPanic.h" +#include "CamSidePane.h" #include "CamShootingModeContainer.h" #include "CamVideoPreCaptureContainer.h" @@ -668,7 +669,7 @@ } else { - SetSoftKeysL( R_CAM_SOFTKEYS_SELECT_CANCEL ); + SetSoftKeysL( R_AVKON_SOFTKEYS_SELECT_CANCEL ); } } else if ( iStandbyModeActive ) @@ -1243,6 +1244,7 @@ // void CCamVideoPreCaptureView::UpdateToolbarIconsL() { + PRINT( _L("Camera => CCamVideoPreCaptureView::UpdateToolbarIconsL") ); // fixed toolbar is used only with touch devices if (!iController.IsTouchScreenSupported() ) return; @@ -1251,6 +1253,7 @@ UpdateVideoColorToneIconsL(); UpdateVideoWhitebalanceIconsL(); RedrawToolBar(); + PRINT( _L("Camera <= CCamVideoPreCaptureView::UpdateToolbarIconsL") ); } // --------------------------------------------------------------------------- @@ -1407,6 +1410,11 @@ CamUtility::ResourceFileName( iconFileName ); TCamSceneId scene = static_cast< TCamSceneId > ( iController.IntegerSettingValue( ECamSettingItemDynamicVideoScene ) ); + + // For use with scene indicator + TInt32 iconId = EMbmCameraappQgn_indi_cam4_mode_auto; + TInt32 maskId = EMbmCameraappQgn_indi_cam4_mode_auto_mask; + switch ( scene ) { case ECamSceneAuto: @@ -1419,6 +1427,8 @@ EMbmCameraappQgn_indi_cam4_mode_auto_mask, skinInstance, KAknsIIDQgnIndiCam4ModeAuto ); + iconId = EMbmCameraappQgn_indi_cam4_mode_auto; + maskId = EMbmCameraappQgn_indi_cam4_mode_auto_mask; break; } case ECamSceneNight: @@ -1430,6 +1440,8 @@ EMbmCameraappQgn_indi_cam4_mode_night_mask, skinInstance, KAknsIIDQgnIndiCam4ModeNight ); + iconId = EMbmCameraappQgn_indi_cam4_mode_night; + maskId = EMbmCameraappQgn_indi_cam4_mode_night_mask; break; } case ECamSceneLowLight: @@ -1441,6 +1453,8 @@ EMbmCameraappQgn_indi_cam4_wb_tungsten_mask, skinInstance, KAknsIIDQgnIndiCam4WbTungsten ); + iconId = EMbmCameraappQgn_indi_cam4_wb_tungsten; + maskId = EMbmCameraappQgn_indi_cam4_wb_tungsten_mask; break; } default: @@ -1449,6 +1463,19 @@ } break; } + + // Update the icon in the side pane + if ( iController.UiConfigManagerPtr()->IsCustomCaptureButtonSupported() ) + { + CCamAppUi* appUi = static_cast( iEikonEnv->AppUi() ); + CCamSidePane* sidePane = appUi->SidePane(); + + if ( sidePane ) + { + PRINT( _L("Camera <> CCamVideoPreCaptureView::UpdateVideoSceneModeIconsL - Updating side pane indicator") ); + sidePane->UpdateSceneIndicatorL( iconId, maskId ); + } + } } // --------------------------------------------------------------------------- diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/src/CamViewBase.cpp --- a/camerauis/cameraapp/generic/src/CamViewBase.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/src/CamViewBase.cpp Tue May 25 12:22:04 2010 +0300 @@ -862,6 +862,8 @@ // void CCamViewBase::SetSoftKeysL(TInt aResource) { + PRINT1( _L("Camera => CCamViewBase::SetSoftKeysL SoftKeys:0x%x"), aResource ); + CCamAppUi* appUi = static_cast( AppUi() ); // If courtesy softkeys are enabled, check whether the UI can be drawn without being explicitly raised // (rare, but possible: e.g. when video recording starts @@ -902,6 +904,8 @@ Cba()->DrawDeferred(); } + + PRINT( _L("Camera <= CCamViewBase::SetSoftKeysL") ); } diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/src/cameracontroller/camcameracontroller.cpp --- a/camerauis/cameraapp/generic/src/cameracontroller/camcameracontroller.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/src/cameracontroller/camcameracontroller.cpp Tue May 25 12:22:04 2010 +0300 @@ -2913,7 +2913,6 @@ CEikonEnv* env = CEikonEnv::Static(); OstTrace0( CAMERAAPP_PERFORMANCE, CCAMCAMERACONTROLLER_PROCESSVFSTARTREQUESTL, "e_CAM_APP_VF_INIT 0" ); //CCORAPP_APP_VF_INIT_END - OstTrace0( CAMERAAPP_PERFORMANCE, DUP1_CCAMCAMERACONTROLLER_PROCESSVFSTARTREQUESTL, "e_CAM_APP_OVERLAY_INIT 0" ); //CCORAPP_APP_OVERLAY_INIT_END TInt orgPos = SetVfWindowOrdinal(); // Set visible iCamera->StartViewFinderDirectL( @@ -2970,16 +2969,14 @@ { PRINT( _L("Camera <> Call CCaeEngine::StartViewFinderBitmapsL..") ); - OstTrace0( CAMERAAPP_PERFORMANCE, DUP2_CCAMCAMERACONTROLLER_PROCESSVFSTARTREQUESTL, "e_CAM_APP_VF_INIT 0" ); //CCORAPP_APP_VF_INIT_END - OstTrace0( CAMERAAPP_PERFORMANCE, DUP3_CCAMCAMERACONTROLLER_PROCESSVFSTARTREQUESTL, "e_CAM_APP_OVERLAY_INIT 0" ); //CCORAPP_APP_OVERLAY_INIT_END + OstTrace0( CAMERAAPP_PERFORMANCE, DUP1_CCAMCAMERACONTROLLER_PROCESSVFSTARTREQUESTL, "e_CAM_APP_VF_INIT 0" ); //CCORAPP_APP_VF_INIT_END iCaeEngine->StartViewFinderBitmapsL( iInfo.iViewfinderSize ); } else #endif // CAMERAAPP_CAE_FIX { PRINT( _L("Camera <> Call CCamera::StartViewFinderBitmapsL..") ); - OstTrace0( CAMERAAPP_PERFORMANCE, DUP4_CCAMCAMERACONTROLLER_PROCESSVFSTARTREQUESTL, "e_CAM_APP_VF_INIT 0" ); //CCORAPP_APP_VF_INIT_END - OstTrace0( CAMERAAPP_PERFORMANCE, DUP5_CCAMCAMERACONTROLLER_PROCESSVFSTARTREQUESTL, "e_CAM_APP_OVERLAY_INIT 0" ); //CCORAPP_APP_OVERLAY_INIT_END + OstTrace0( CAMERAAPP_PERFORMANCE, DUP2_CCAMCAMERACONTROLLER_PROCESSVFSTARTREQUESTL, "e_CAM_APP_VF_INIT 0" ); //CCORAPP_APP_VF_INIT_END iCamera->StartViewFinderBitmapsL( iInfo.iViewfinderSize ); if ( params().iMirrorImage ) @@ -3233,7 +3230,6 @@ OstTrace0( CAMERAAPP_PERFORMANCE, CCAMCAMERACONTROLLER_PROCESSIMAGEREQUESTL, "e_CAM_APP_CONFIGURATIONS 0" ); //CCORAPP_APP_CONFIGS_END iCamera->PrepareImageCaptureL( format, index ); OstTrace0( CAMERAAPP_PERFORMANCE, DUP1_CCAMCAMERACONTROLLER_PROCESSIMAGEREQUESTL, "e_CAM_APP_STILL_INIT 0" ); //CCORAPP_APP_STILL_INIT_END - OstTrace0( CAMERAAPP_PERFORMANCE, DUP2_CCAMCAMERACONTROLLER_PROCESSIMAGEREQUESTL, "e_CAM_APP_OVERLAY_INIT 1" ); //CCORAPP_APP_OVERLAY_INIT_START iCamera->SetJpegQuality( params().iQualityFactor ); @@ -3257,7 +3253,7 @@ { CheckFlagOnL( iInfo.iState, ECamImageOn, KErrNotReady ); CheckEqualsL( iInfo.iCaptureState, ECamCaptureOff, KErrInUse ); - OstTrace0( CAMERAAPP_PERFORMANCE, DUP3_CCAMCAMERACONTROLLER_PROCESSIMAGEREQUESTL, "e_CAM_APP_CAPTURE_START 0" ); //CCORAPP_CAPTURE_START_END + OstTrace0( CAMERAAPP_PERFORMANCE, DUP2_CCAMCAMERACONTROLLER_PROCESSIMAGEREQUESTL, "e_CAM_APP_CAPTURE_START 0" ); //CCORAPP_CAPTURE_START_END // New capture starts, reset capture and snapshot counters. iInfo.iCaptureCount = 0; @@ -3588,6 +3584,7 @@ { PRINT( _L("Camera <> ECamTriInactive") ); iSnapshotProvider->StartSnapshot(); + OstTrace0( CAMERAAPP_PERFORMANCE, DUP2_CCAMCAMERACONTROLLER_PROCESSSNAPSHOTREQUESTL, "e_CAM_APP_OVERLAY_INIT 0" ); //CCORAPP_APP_OVERLAY_INIT_END break; } case ECamTriActive: // Already active, no action @@ -3611,6 +3608,7 @@ case ECamRequestSsRelease: { PRINT( _L("Camera <> case ECamRequestSsRelease") ); + OstTrace0( CAMERAAPP_PERFORMANCE, DUP3_CCAMCAMERACONTROLLER_PROCESSSNAPSHOTREQUESTL, "e_CAM_APP_OVERLAY_INIT 1" ); //CCORAPP_APP_OVERLAY_INIT_START ProcessSsReleaseRequest(); break; } diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/src/camsnapshotrotator.cpp --- a/camerauis/cameraapp/generic/src/camsnapshotrotator.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/src/camsnapshotrotator.cpp Tue May 25 12:22:04 2010 +0300 @@ -107,6 +107,7 @@ PRINT( _L( "Camera => CCamSnapShotRotator::RotationCompleteL - delete iRotatedSnapshot" ) ); delete iRotatedSnapshot; iRotatedSnapshot = NULL; + iController.SnapshotRotationComplete(); } PRINT( _L( "Camera <= CCamSnapShotRotator::RotationCompleteL" ) ); diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/generic/src/camtextitem.cpp --- a/camerauis/cameraapp/generic/src/camtextitem.cpp Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/generic/src/camtextitem.cpp Tue May 25 12:22:04 2010 +0300 @@ -98,6 +98,7 @@ if ( iText ) { aBitmapContext.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha ); + aBitmapContext.SetBrushColor( KRgbWhite ); iLayout.DrawText( aBitmapContext, *iText, diff -r bf64cebf4673 -r 53c8aa5d97a3 camerauis/cameraapp/loc/cam.loc --- a/camerauis/cameraapp/loc/cam.loc Tue May 11 15:56:11 2010 +0300 +++ b/camerauis/cameraapp/loc/cam.loc Tue May 25 12:22:04 2010 +0300 @@ -1496,7 +1496,7 @@ //d:In video scene settings list //l:popup_preview_text_window/opt5 // -#define qtn_lcam_scene_vid_night_ex "Ideal for filming in low light" +#define qtn_lcam_scene_vid_night_ex "Ideal for filming in dark" //d:Sport scene descriptive text //d:In image scene settings list @@ -3798,7 +3798,7 @@ //d:In video scene settings list //l:main_cset_text2_pane_t1_copy1 // -#define qtn_lcam_scene_vid_night_ex_v2 "Ideal for filming in low light" +#define qtn_lcam_scene_vid_night_ex_v2 "Ideal for filming in dark" //d:Sport scene descriptive text //d:In image scene settings list @@ -4253,5 +4253,31 @@ //l: popup_note_window #define qtn_lcam_storage_inaccessible_note "All storage inaccessible at the moment. Please try again later" +//d: This popup note is displayed when HDMI cable is plugged to the device +//d: while video recording is ongoing. Video recording is not allowed +//d: with HDMI connection. +//l: popup_note_window +#define qtn_lcam_hdmi_cable_detected "Recording finished, because HDMI cable detected" + +//d: This popup note is displayed when user tries to start +//d: video recording while HDMI cable is plugged. +//d: Video recording is not allowed with HDMI connection. +//l: popup_note_window +#define qtn_lcam_hdmi_remove_cable "Remove HDMI cable before recording video" + +//d: Icon text for 'Grid' button in touch toolbar extension in still mode +//d: pre-capture view. Pressing the button will enable or disable +//d: a 3x3 grid layout on top of the viewfinder image to help the user +//d: to compose the image. +//l: cell_tb_ext_pane_t1/opt1 +#define qtn_lcam_tb_grid "Grid" + +//d: Icon text for 'switching to secondary camera' button in touch toolbar +//d: toolbar extension in video and still mode. Pressing the button will +//d: switch to secondary camera video or still mode. +//l: cell_tb_ext_pane_t1/opt1 +#define qtn_lcam_tb_switch "Switch" + + // end of file