camerauis/cameraapp/generic/src/CamPreCaptureContainerBase.cpp
branchRCL_3
changeset 31 8f559c47d7fd
parent 27 53c8aa5d97a3
child 35 e32fcfe0045f
equal deleted inserted replaced
27:53c8aa5d97a3 31:8f559c47d7fd
    64 #include "camconfiguration.h"
    64 #include "camconfiguration.h"
    65 #include "CameraUiConfigManager.h"
    65 #include "CameraUiConfigManager.h"
    66 #include "camstartuplogo.h"
    66 #include "camstartuplogo.h"
    67 #include "camvfgridinterface.h"
    67 #include "camvfgridinterface.h"
    68 #include "camlinevfgriddrawer.h"
    68 #include "camlinevfgriddrawer.h"
       
    69 #include "camcapturebuttoncontainer.h"
    69 
    70 
    70 // CONSTANTS
    71 // CONSTANTS
    71 const TInt KZoomPanelTimeout = 4000000;     // 4s 
    72 const TInt KZoomPanelTimeout = 4000000;     // 4s 
    72 const TInt KReticuleFlashTimeout = 250000;  // Quarter of a second (in microseconds).
    73 const TInt KReticuleFlashTimeout = 250000;  // Quarter of a second (in microseconds).
    73 const TInt KAFIconCorners = 4; // Hip to be square 
    74 const TInt KAFIconCorners = 4; // Hip to be square 
    74 
    75 
    75 const TInt KIndicatorBlinkDelay = 250 * 1000;
    76 const TInt KIndicatorBlinkDelay = 250 * 1000;
    76 const TInt KNumberOfBlinks = 3;
    77 const TInt KNumberOfBlinks = 3;
    77 const TInt KNumberOfBlinksVideo = 8;
    78 const TInt KNumberOfBlinksVideo = 8;
    78 
    79 
    79 const TRect KIconRect(0, 0, 40, 40);
    80 const TSize  KCaptureButtonSize( 50, 50 );
    80 const TInt32 KCaptureButtonWidth( 50 );
    81 const TSize  KAdditionalArea( 25, 11 );
    81 const TInt32 KCaptureButtonYDelta( 35 );
    82 const TInt32 KCaptureButtonYDelta( 10 );
    82 const TInt32 KCaptureIconDelta( 7 );
       
    83 const TUint32 KToolbarExtensionBgColor = 0x00000000;
       
    84 const TInt KToolBarExtensionBgAlpha = 0x7F;
       
    85 
       
    86 
    83 
    87 // Snapshot data is needed in timelapse mode
    84 // Snapshot data is needed in timelapse mode
    88 const TUint KCameraEventInterest = ( ECamCameraEventClassVfControl      
    85 const TUint KCameraEventInterest = ( ECamCameraEventClassVfControl      
    89                                    | ECamCameraEventClassVfData 
    86                                    | ECamCameraEventClassVfData 
    90                                    | ECamCameraEventClassSsData 
    87                                    | ECamCameraEventClassSsData 
   100 // ---------------------------------------------------------
    97 // ---------------------------------------------------------
   101 //
    98 //
   102 CCamPreCaptureContainerBase::~CCamPreCaptureContainerBase()
    99 CCamPreCaptureContainerBase::~CCamPreCaptureContainerBase()
   103   {
   100   {
   104   PRINT( _L("Camera => ~CCamPreCaptureContainerBase" ))
   101   PRINT( _L("Camera => ~CCamPreCaptureContainerBase" ))
   105   
   102 
       
   103   if( iCaptureButtonContainer )
       
   104       {
       
   105       delete iCaptureButtonContainer;
       
   106       }
       
   107 
   106   iController.ViewfinderWindowDeleted( &Window() );
   108   iController.ViewfinderWindowDeleted( &Window() );
   107   
   109   
   108   iController.RemoveSettingsObserver  ( this );
   110   iController.RemoveSettingsObserver  ( this );
   109   iController.RemoveCameraObserver    ( this );
   111   iController.RemoveCameraObserver    ( this );
   110   iController.RemoveControllerObserver( this );    
   112   iController.RemoveControllerObserver( this );    
   309   if (appUi->StartupLogoController())
   311   if (appUi->StartupLogoController())
   310     {
   312     {
   311     TRAP_IGNORE(iStartupLogo = CCamStartupLogo::NewL(*appUi->StartupLogoController(), aRect));
   313     TRAP_IGNORE(iStartupLogo = CCamStartupLogo::NewL(*appUi->StartupLogoController(), aRect));
   312     }
   314     }
   313 
   315 
   314   // Capture icon rectangle
   316   // Capture button container  
   315   TRect containerRect = Rect();
   317   if ( iController.UiConfigManagerPtr()->IsCustomCaptureButtonSupported() &&
   316   TPoint center( containerRect.Center() );
   318        iController.IsTouchScreenSupported() )
   317 
   319       {
   318   iCaptureRect.SetRect( center.iX - KCaptureButtonWidth/2, 
   320       TRect rect = Rect();
   319                         containerRect.iBr.iY - KCaptureButtonWidth - KCaptureButtonYDelta, 
   321       TPoint center( rect.Center() );
   320                         center.iX + KCaptureButtonWidth/2, 
   322       TRect captureRect;
   321                         containerRect.iBr.iY - KCaptureButtonYDelta  );
   323       captureRect.SetRect( center.iX   - KCaptureButtonSize.iWidth/2,
       
   324                            rect.iBr.iY - KCaptureButtonSize.iHeight - KCaptureButtonYDelta, 
       
   325                            center.iX   + KCaptureButtonSize.iWidth/2,
       
   326                            rect.iBr.iY - KCaptureButtonYDelta  );
       
   327       captureRect.Grow( KAdditionalArea );
       
   328 
       
   329       TCamCameraMode mode = ECamControllerImage;
       
   330       if ( iView.Id() == TUid::Uid( ECamViewIdVideoPreCapture ) )
       
   331           {
       
   332           mode = ECamControllerVideo;
       
   333           }
       
   334       iCaptureButtonContainer = CCamCaptureButtonContainer::NewL( iController, iView, 
       
   335                                                                   *this, captureRect, 
       
   336                                                                   mode );
       
   337       }
   322 
   338 
   323   PRINT( _L("Camera <= CCamPreCaptureContainerBase::BaseConstructL ") );
   339   PRINT( _L("Camera <= CCamPreCaptureContainerBase::BaseConstructL ") );
   324   }
   340   }
   325 
   341 
   326 // ---------------------------------------------------------------------------
   342 // ---------------------------------------------------------------------------
   560     TBool captureKey = IsCaptureKeyL( aKeyEvent, aType );
   576     TBool captureKey = IsCaptureKeyL( aKeyEvent, aType );
   561 
   577 
   562     // Stop any zooming activity if capture key detected
   578     // Stop any zooming activity if capture key detected
   563     if ( captureKey )
   579     if ( captureKey )
   564         {
   580         {
   565         CCamZoomPane* zoom_pane = appUi->ZoomPane();
   581         PrepareForCapture();
   566 
       
   567         if ( zoom_pane )
       
   568             {
       
   569             PRINT( _L("Camera <> CCamPreCaptureContainerBase::OfferKeyEventL calling StopZoom()") );
       
   570             zoom_pane->StopZoom();
       
   571             }
       
   572         
       
   573         // Stop blinking icon when capture is initiated
       
   574         if ( iIndBlinkTimer && iIndBlinkTimer->IsActive() )
       
   575             {
       
   576             iIndBlinkTimer->Cancel();
       
   577             iDrawIndicator = ETrue;
       
   578             }
       
   579         }
   582         }
   580     TBool viewFinderRunning = iReceivedVfFrame;
   583     TBool viewFinderRunning = iReceivedVfFrame;
   581     if ( iController.UiConfigManagerPtr() &&
   584     if ( iController.UiConfigManagerPtr() &&
   582            ( iController.UiConfigManagerPtr()->
   585            ( iController.UiConfigManagerPtr()->
   583                IsDSAViewFinderSupported( ETrue ) &&
   586                IsDSAViewFinderSupported( ETrue ) &&
   669                 }
   672                 }
   670 
   673 
   671             PRINT( _L("Camera <= CCamPreCaptureContainerBase::OfferKeyEventL .. capture key up handled") )
   674             PRINT( _L("Camera <= CCamPreCaptureContainerBase::OfferKeyEventL .. capture key up handled") )
   672             return EKeyWasConsumed;
   675             return EKeyWasConsumed;
   673             }
   676             }
       
   677         iController.HandlePendingHdmiEvent();
   674         }
   678         }
   675     else 
   679     else 
   676         {
   680         {
   677         // remove Lint warning                
   681         // remove Lint warning                
   678         }
   682         }
   740       break;
   744       break;
   741       }
   745       }
   742     // ---------------------------------------------------
   746     // ---------------------------------------------------
   743     case ECamEventOperationStateChanged:
   747     case ECamEventOperationStateChanged:
   744       {
   748       {
       
   749 	  UpdateCaptureButton();
       
   750 
   745       if( iController.IsAppUiAvailable() && iController.UiConfigManagerPtr()
   751       if( iController.IsAppUiAvailable() && iController.UiConfigManagerPtr()
   746           && iController.UiConfigManagerPtr()->IsAutoFocusSupported() )
   752           && iController.UiConfigManagerPtr()->IsAutoFocusSupported() )
   747         {
   753         {
   748         // ReCheck if we have to draw the reticule.
   754         // ReCheck if we have to draw the reticule.
   749         if ( ECamControllerImage == iController.CurrentMode() )
   755         if ( ECamControllerImage == iController.CurrentMode() )
   750             {
   756             {
   751             iPhotoSceneUsesReticule = !iController.CurrentSceneHasForcedFocus();
   757             iPhotoSceneUsesReticule = !iController.CurrentSceneHasForcedFocus();
   752             HandleOperationStateChangeEventL();
   758             HandleOperationStateChangeEventL();
   753             }
   759             }
   754         }
   760         }
   755       iCaptureButtonShown = CaptureButtonActive();
       
   756       break;
   761       break;
   757       }
   762       }
   758     // ---------------------------------------------------
   763     // ---------------------------------------------------
   759     case ECamEventEngineStateChanged:
   764     case ECamEventEngineStateChanged:
   760         {
   765         {
       
   766         UpdateCaptureButton();
       
   767         
   761         PRINT1( _L("Camera <> Start mode indi blinking, op:%d"), iController.CurrentOperation() );
   768         PRINT1( _L("Camera <> Start mode indi blinking, op:%d"), iController.CurrentOperation() );
   762 
   769 
   763         if ( !iController.UiConfigManagerPtr()->IsCustomCaptureButtonSupported() 
   770         if ( !iController.UiConfigManagerPtr()->IsCustomCaptureButtonSupported() 
   764                 && !iController.EngineRequestsPending()
   771                 && !iController.EngineRequestsPending()
   765                 && iController.TargetMode() == iController.CurrentMode()
   772                 && iController.TargetMode() == iController.CurrentMode()
  1118        {
  1125        {
  1119        //Do nothing
  1126        //Do nothing
  1120        }
  1127        }
  1121    DrawScreenFurniture( gc );
  1128    DrawScreenFurniture( gc );
  1122    DrawNaviControls( gc );
  1129    DrawNaviControls( gc );
  1123    
       
  1124    // Draw capture button
       
  1125    if( iCaptureButtonShown )
       
  1126        {
       
  1127        DrawCaptureButton( gc );   
       
  1128        }
       
  1129 
  1130 
  1130    PRINT( _L( "Camera <= CCamPreCaptureContainerBase::Draw" ) );        
  1131    PRINT( _L( "Camera <= CCamPreCaptureContainerBase::Draw" ) );        
  1131    }
  1132    }
  1132 
  1133 
  1133 
  1134 
  1708 // Return number of child controls owned by this control
  1709 // Return number of child controls owned by this control
  1709 // ----------------------------------------------------
  1710 // ----------------------------------------------------
  1710 //
  1711 //
  1711 TInt CCamPreCaptureContainerBase::CountComponentControls() const
  1712 TInt CCamPreCaptureContainerBase::CountComponentControls() const
  1712   {
  1713   {
  1713   TInt count = 0;
  1714   TInt count = CCamContainerBase::CountComponentControls();
  1714     if(iActivePalette && iActivePalette->CoeControl()->IsVisible())
  1715     if(iActivePalette && iActivePalette->CoeControl()->IsVisible())
  1715         {
  1716         {
  1716         count++; //Active Palette
  1717         count++; //Active Palette
  1717         }   
  1718         }
  1718     
  1719     
  1719   return count;
  1720     if( iCaptureButtonContainer ) // Capture button container
  1720   }
  1721         {
       
  1722         count++;
       
  1723         }
       
  1724     PRINT1( _L("Camera <> CCamPreCaptureContainerBase::CountComponentControls %d"), count );
       
  1725     return count;
       
  1726     }
  1721 
  1727 
  1722 // ----------------------------------------------------
  1728 // ----------------------------------------------------
  1723 // CCamPreCaptureContainerBase::ComponentControl
  1729 // CCamPreCaptureContainerBase::ComponentControl
  1724 // Return requested control
  1730 // Return requested control
  1725 // ----------------------------------------------------
  1731 // ----------------------------------------------------
  1726 //
  1732 //
  1727 CCoeControl* CCamPreCaptureContainerBase::ComponentControl( TInt aIndex ) const
  1733 CCoeControl* CCamPreCaptureContainerBase::ComponentControl( TInt aIndex ) const
  1728   {
  1734   {
  1729   CCoeControl* con = NULL;
  1735   PRINT1( _L("Camera <> CCamPreCaptureContainerBase::ComponentControl index:%d"), aIndex );
       
  1736   CCoeControl* con = CCamContainerBase::ComponentControl( aIndex );
       
  1737   if( con )
       
  1738       return con;
       
  1739 
  1730   switch ( aIndex )
  1740   switch ( aIndex )
  1731       {
  1741       {
  1732      
       
  1733      /*
  1742      /*
  1734       case ECamTimeLapseControl:
  1743       case ECamTimeLapseControl:
  1735             {
  1744             {
  1736             
  1745             
  1737             if ( iTimeLapseSlider && static_cast<CCamAppUi*>( CEikonEnv::Static()->AppUi() )->TimeLapseEnabled() )
  1746             if ( iTimeLapseSlider && static_cast<CCamAppUi*>( CEikonEnv::Static()->AppUi() )->TimeLapseEnabled() )
  1750       case ECamActivePalette:
  1759       case ECamActivePalette:
  1751           {
  1760           {
  1752           if(iActivePalette && iActivePalette->CoeControl()->IsVisible())         
  1761           if(iActivePalette && iActivePalette->CoeControl()->IsVisible())         
  1753               {
  1762               {
  1754               con = iActivePalette->CoeControl();
  1763               con = iActivePalette->CoeControl();
  1755               }             
  1764               }
       
  1765           else if( iCaptureButtonContainer )
       
  1766               {
       
  1767               PRINT( _L("Camera <> capture button container A") );
       
  1768               con = iCaptureButtonContainer;
       
  1769               }
       
  1770           else
       
  1771               {
       
  1772               
       
  1773               }
  1756           break;
  1774           break;
  1757           }        
  1775           }     
       
  1776       case ECamCaptureButton:
       
  1777           {
       
  1778           if( iCaptureButtonContainer )
       
  1779               {
       
  1780               PRINT( _L("Camera <> capture button container A") );
       
  1781               con = iCaptureButtonContainer;
       
  1782               }
       
  1783           }
  1758         default:
  1784         default:
  1759             break;
  1785             break;
  1760       }         
  1786       }         
  1761     return con; 
  1787     return con; 
  1762   }
  1788   }
  2451     {
  2477     {
  2452     PRINT3( _L("Camera => CCamPreCaptureContainerBase::HandlePointerEventL iType=%d iPosition=(%d, %d)"),
  2478     PRINT3( _L("Camera => CCamPreCaptureContainerBase::HandlePointerEventL iType=%d iPosition=(%d, %d)"),
  2453         aPointerEvent.iType,
  2479         aPointerEvent.iType,
  2454         aPointerEvent.iPosition.iX,
  2480         aPointerEvent.iPosition.iX,
  2455         aPointerEvent.iPosition.iY );
  2481         aPointerEvent.iPosition.iY );
  2456    CCamAppUi* appUi = static_cast<CCamAppUi*>( iEikonEnv->AppUi() );
  2482     CCamAppUi* appUi = static_cast<CCamAppUi*>( iEikonEnv->AppUi() );
  2457    
  2483     if ( !appUi->IsSecondCameraEnabled() )
  2458    // Capture button
       
  2459    TRect captureRect( iCaptureRect );
       
  2460    captureRect.Grow( 30, 30 );
       
  2461    
       
  2462    if ( iCaptureButtonShown && captureRect.Contains( aPointerEvent.iPosition ) )
       
  2463        {
  2484        {
  2464        if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
  2485        // don't let zoom pane be used when capturing image
       
  2486        if ( iController.CurrentMode() != ECamControllerImage ||
       
  2487             ( iController.CurrentOperation() != ECamCapturing &&
       
  2488               iController.CurrentOperation() != ECamCompleting &&
       
  2489               iController.CurrentOperation() != ECamFocusing ) )
  2465            {
  2490            {
  2466            MTouchFeedback* feedback = MTouchFeedback::Instance(); 
  2491            if ( iZoomPane )  
  2467            if ( !iCaptureIconPressed && feedback )
  2492                 {
  2468                {
  2493                 if ( iZoomPane->HandlePointerEventL( aPointerEvent ) )
  2469                feedback->InstantFeedback( ETouchFeedbackBasicButton );        
  2494                     {
  2470                }
  2495                     ShowZoomPaneWithTimer(); 
  2471            iCaptureIconPressed = ETrue;           
  2496                     return;
  2472            DrawNow( captureRect );
  2497                     }
       
  2498                 }
  2473            }
  2499            }
  2474        else if ( aPointerEvent.iType == TPointerEvent::EButton1Up
  2500 
  2475                  && iCaptureIconPressed )
  2501         if ( aPointerEvent.iType == TPointerEvent::EButton1Down &&
  2476            {
  2502               !appUi->DrawPreCaptureCourtesyUI() )
  2477            iCaptureIconPressed = EFalse;
  2503             {
  2478 
  2504             appUi->HandleCommandL( ECamCmdRaiseCourtesyUI );
  2479            // Give feedback on button release
  2505             }
  2480            MTouchFeedback* feedback = MTouchFeedback::Instance(); 
  2506        CCamContainerBase::HandlePointerEventL( aPointerEvent );
  2481            if ( feedback )
       
  2482                {
       
  2483                feedback->InstantFeedback( ETouchFeedbackBasicButton );        
       
  2484                }
       
  2485 
       
  2486            // About to start capture ... hide stop zoom etc.
       
  2487            if ( iZoomPane )
       
  2488                {
       
  2489                PRINT( _L("Camera <> CCamPreCaptureContainerBase::HandlePointerEventL - StopZoom()") );
       
  2490                iZoomPane->StopZoom();
       
  2491                iZoomPane->MakeVisible( EFalse, ETrue );
       
  2492                }
       
  2493            // Stop blinking icon when capture is initiated
       
  2494            if ( iIndBlinkTimer && iIndBlinkTimer->IsActive() )
       
  2495                {
       
  2496                iIndBlinkTimer->Cancel();
       
  2497                iDrawIndicator = ETrue;
       
  2498                }
       
  2499 
       
  2500            if ( iController.CurrentMode() == ECamControllerVideo ) 
       
  2501                {
       
  2502                iView.HandleCommandL( ECamCmdRecord );
       
  2503                }
       
  2504            else
       
  2505                {
       
  2506                iView.HandleCommandL( ECamCmdCaptureImage );
       
  2507                }
       
  2508            }
       
  2509        else
       
  2510            {
       
  2511 		   // Avoid compiler warning
       
  2512            }
       
  2513        }
       
  2514    else 
       
  2515        {
       
  2516        PRINT( _L("Camera <> CCamPreCaptureContainerBase::HandlePointerEventL - outside button region") );
       
  2517        // Drags can potentially start from inside button area
       
  2518        if ( iCaptureIconPressed && aPointerEvent.iType != TPointerEvent::EDrag )
       
  2519            {
       
  2520            iCaptureIconPressed = EFalse;
       
  2521            DrawNow( captureRect );
       
  2522            }
       
  2523           
       
  2524        if ( !appUi->IsSecondCameraEnabled() )
       
  2525            {
       
  2526            // don't let zoom pane be used when capturing image
       
  2527            if ( iController.CurrentMode() != ECamControllerImage ||
       
  2528                 ( iController.CurrentOperation() != ECamCapturing &&
       
  2529                   iController.CurrentOperation() != ECamCompleting &&
       
  2530                   iController.CurrentOperation() != ECamFocusing ) )
       
  2531                {
       
  2532                if ( iZoomPane )  
       
  2533                     {
       
  2534                     if ( iZoomPane->HandlePointerEventL( aPointerEvent ) )
       
  2535                         {
       
  2536                         ShowZoomPaneWithTimer(); 
       
  2537                         return;
       
  2538                         }
       
  2539                     }
       
  2540                }
       
  2541     
       
  2542             if ( aPointerEvent.iType == TPointerEvent::EButton1Down &&
       
  2543                   !appUi->DrawPreCaptureCourtesyUI() )
       
  2544                 {
       
  2545                 appUi->HandleCommandL( ECamCmdRaiseCourtesyUI );
       
  2546                 }
       
  2547            CCamContainerBase::HandlePointerEventL( aPointerEvent );
       
  2548            }
       
  2549        }
  2507        }
  2550 
  2508 
  2551     PRINT( _L("Camera <= CCamPreCaptureContainerBase::HandlePointerEventL") );
  2509     PRINT( _L("Camera <= CCamPreCaptureContainerBase::HandlePointerEventL") );
  2552     }
  2510     }
  2553 
  2511 
  2902     PRINT( _L("Camera <= CCamPreCaptureContainerBase::IndicatorVisible") );
  2860     PRINT( _L("Camera <= CCamPreCaptureContainerBase::IndicatorVisible") );
  2903     return KErrNone;
  2861     return KErrNone;
  2904     }
  2862     }
  2905 
  2863 
  2906 // -------------------------------------------------------------
  2864 // -------------------------------------------------------------
  2907 // CCamPreCaptureContainerBase::DrawCaptureButton
       
  2908 // -------------------------------------------------------------
       
  2909 //
       
  2910 void CCamPreCaptureContainerBase::DrawCaptureButton( CBitmapContext& aGc ) const
       
  2911     {
       
  2912     TRect containerRect = Rect();
       
  2913     TPoint iconTl( containerRect.Center().iX - KCaptureButtonWidth/2 + KCaptureIconDelta, 
       
  2914                    containerRect.iBr.iY - KCaptureButtonYDelta - KCaptureButtonWidth + KCaptureIconDelta );
       
  2915 
       
  2916     aGc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
       
  2917     aGc.SetBrushStyle( CGraphicsContext::ESolidBrush );
       
  2918     aGc.SetPenStyle( CGraphicsContext::ENullPen );
       
  2919    
       
  2920     if ( iCaptureIconPressed )
       
  2921         {
       
  2922         aGc.SetBrushColor( KRgbBlack );
       
  2923         }
       
  2924     else
       
  2925         {
       
  2926         aGc.SetBrushColor( TRgb( KToolbarExtensionBgColor, KToolBarExtensionBgAlpha ) );
       
  2927         }
       
  2928     aGc.DrawEllipse( iCaptureRect );    
       
  2929 
       
  2930     aGc.SetBrushStyle( CGraphicsContext::ENullBrush );
       
  2931     aGc.SetPenStyle( CGraphicsContext::ESolidPen );
       
  2932     aGc.BitBltMasked( iconTl, iCaptureIcon, KIconRect, iCaptureMask, EFalse );
       
  2933     }
       
  2934 
       
  2935 // -------------------------------------------------------------
       
  2936 // CCamPreCaptureContainerBase::FocusChanged
  2865 // CCamPreCaptureContainerBase::FocusChanged
  2937 // -------------------------------------------------------------
  2866 // -------------------------------------------------------------
  2938 //
  2867 //
  2939 void CCamPreCaptureContainerBase::FocusChanged( TDrawNow aDrawNow )
  2868 void CCamPreCaptureContainerBase::FocusChanged( TDrawNow aDrawNow )
  2940     {
  2869     {
  2941     PRINT2( _L("Camera <> CCamPreCaptureContainerBase::FocusChanged, draw:%d, focused:%d"), aDrawNow, 
  2870     PRINT3( _L("Camera <> CCamPreCaptureContainerBase::FocusChanged, draw:%d, focused:%d, button focused:%d"), 
  2942                 IsFocused() );
  2871                 aDrawNow, IsFocused(), 
  2943     iCaptureButtonShown = CaptureButtonActive();
  2872                 iCaptureButtonContainer ? iCaptureButtonContainer->IsFocused() : 0 );
  2944     if ( aDrawNow )
  2873     UpdateCaptureButton();
  2945         {
  2874     CCoeControl::FocusChanged( aDrawNow );
  2946         DrawNow();
       
  2947         }
       
  2948     }
  2875     }
  2949 
  2876 
  2950 // -------------------------------------------------------------
  2877 // -------------------------------------------------------------
  2951 // CCamPreCaptureContainerBase::CaptureButtonActive
  2878 // CCamPreCaptureContainerBase::UpdateCaptureButton
  2952 // -------------------------------------------------------------
  2879 // -------------------------------------------------------------
  2953 //
  2880 //
  2954 TBool CCamPreCaptureContainerBase::CaptureButtonActive() const
  2881 void CCamPreCaptureContainerBase::UpdateCaptureButton()
  2955     {
  2882     {
       
  2883     PRINT(_L("Camera => CCamPreCaptureContainerBase::UpdateCaptureButton"));
       
  2884     
  2956     TBool buttonActive = EFalse;
  2885     TBool buttonActive = EFalse;
  2957     if ( iController.UiConfigManagerPtr()->IsCustomCaptureButtonSupported() 
  2886     if ( iCaptureButtonContainer )
  2958             && iController.IsTouchScreenSupported() )
  2887         {
  2959         {
  2888         TCamCameraMode mode = iController.CurrentMode();
  2960         buttonActive = IsFocused() && iController.CurrentOperation() == ECamNoOperation;
  2889         
  2961         PRINT1( _L("Camera <> capture button active:%d"), buttonActive );
  2890         buttonActive = ( IsFocused() || iCaptureButtonContainer->IsFocused() ) 
  2962         }
  2891                        && ECamNoOperation == iController.CurrentOperation()
  2963     return buttonActive;
  2892                        && ( ECamControllerImage == mode || ECamControllerVideo == mode );
  2964     }
  2893 
  2965 
  2894         PRINT1( _L("Camera <> capture button shown:%d"), buttonActive );
  2966 // End of File  
  2895         iCaptureButtonContainer->SetCaptureButtonShown( buttonActive );
  2967 
  2896         }
       
  2897     PRINT(_L("Camera <= CCamPreCaptureContainerBase::UpdateCaptureButton"));
       
  2898     }
       
  2899 
       
  2900 // -------------------------------------------------------------
       
  2901 // CCamPreCaptureContainerBase::PrepareForCapture
       
  2902 // -------------------------------------------------------------
       
  2903 //
       
  2904 void CCamPreCaptureContainerBase::PrepareForCapture()
       
  2905     {
       
  2906     if ( iZoomPane )
       
  2907         {
       
  2908         PRINT( _L("Camera <> CCamPreCaptureContainerBase::PrepareForCapture - StopZoom()") );
       
  2909         iZoomPane->StopZoom();
       
  2910         }
       
  2911     
       
  2912     // Stop blinking icon when capture is initiated
       
  2913     if ( iIndBlinkTimer && iIndBlinkTimer->IsActive() )
       
  2914         {
       
  2915         iIndBlinkTimer->Cancel();
       
  2916         iDrawIndicator = ETrue;
       
  2917         }
       
  2918     
       
  2919     if ( iCaptureButtonContainer )
       
  2920         {
       
  2921         iCaptureButtonContainer->SetCaptureButtonShown( EFalse );
       
  2922         }
       
  2923     }
       
  2924 // End of File
       
  2925