diff -r 8b2d6d0384b0 -r dbec5787fa68 camerauis/cameraapp/generic/src/CamAppui.cpp --- a/camerauis/cameraapp/generic/src/CamAppui.cpp Tue Feb 02 00:01:39 2010 +0200 +++ b/camerauis/cameraapp/generic/src/CamAppui.cpp Fri Feb 19 22:36:31 2010 +0200 @@ -52,6 +52,7 @@ #include #include #include +#include #ifndef __WINSCW__ //#include @@ -3307,9 +3308,16 @@ { CAknToolbar* toolbar = CurrentFixedToolbar(); if ( toolbar ) - { - toolbar->SetToolbarVisibility( ETrue ); - } + { + if ( iPreCaptureMode == ECamPreCapViewfinder ) + { + toolbar->SetToolbarVisibility( ETrue ); + } + else + { + toolbar->SetToolbarVisibility( EFalse ); + } + } } } break; @@ -3811,14 +3819,18 @@ { SetViewFinderInTransit(ETrue); iController.StopViewFinder(); - TUid viewId = iView->Id(); - if(viewId == TUid::Uid( ECamViewIdStillPreCapture ) - || viewId == TUid::Uid( ECamViewIdVideoPreCapture )) - { - CCamViewBase* view = static_cast(iView); - CCamContainerBase* container = view->Container(); - container->DrawNow(); - } + if ( iView ) + { + TUid viewId = iView->Id(); + if(viewId == TUid::Uid( ECamViewIdStillPreCapture ) + || viewId == TUid::Uid( ECamViewIdVideoPreCapture )) + { + CCamViewBase* view = static_cast(iView); + CCamContainerBase* container = view->Container(); + container->DrawNow(); + } + } + } PRINT( _L("Camera TrySwitchViewL E") ) @@ -5657,6 +5669,44 @@ } } +// --------------------------------------------------------- +// CCamAppUi::IsHeadsetConnected +// Return whether headset is connected +// --------------------------------------------------------- +// +TBool CCamAppUi::IsHeadsetConnected() const + { + TBool connected( EFalse ); + + TRAP_IGNORE( + { + CAccMonitor* monitor = CAccMonitor::NewLC(); + RConnectedAccessories accessories; + CleanupClosePushL( accessories ); + + TAccMonCapability device = KAccMonNoDevice; + + monitor->GetConnectedAccessoriesL( accessories ); + TInt count = accessories.Count(); + + // loop through connected accessories + for ( TInt i = 0; i != count; i++ ) + { + device = accessories[i]->AccDeviceType(); + // headset device type + if ( device == KAccMonHeadset ) + { + connected = ETrue; + break; + } + } + + CleanupStack::PopAndDestroy( &accessories ); + CleanupStack::PopAndDestroy( monitor ); + }); + + return connected; + } // --------------------------------------------------------------------------- // CCamAppUi::HandleVolumeKeyEvent @@ -5668,7 +5718,7 @@ { PRINT2( _L("Camera => CCamAppUi::HandleVolumeKeyEvent op (%d) act (%d)"), aOperationId, aButtonAct ) - if ( !iZoomUsingVolumeKeys ) + if ( !iZoomUsingVolumeKeys || IsHeadsetConnected() ) { PRINT( _L("Camera <= CCamAppUi::HandleVolumeKeyEvent NOT zooming with volume keys") ) return;