vtuis/videotelui/src/features/prefs/cvtuiwhitebalance.cpp
changeset 0 ed9695c8bcbe
equal deleted inserted replaced
-1:000000000000 0:ed9695c8bcbe
       
     1 /*
       
     2 * Copyright (c) 2007 - 2008 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  White balance UI feature implementation.
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include    <mvtengmedia.h>
       
    20 #include    <cvtengmodel.h>
       
    21 #include    <mvtengcamerapreferences.h>
       
    22 #include    "cvtuiwhitebalance.h"
       
    23 #include    "tvtuifeatureids.h"
       
    24 #include    <videotelui.rsg>
       
    25 #include    <cvtlogger.h>
       
    26 #include    "mvtuicomponentmanager.h"
       
    27 #include    "cvtuifeaturemanager.h"
       
    28 #include    "CVtUiAppUi.h"
       
    29 #include	"tvtuilocalvariation.h"
       
    30 #include    "tvtuistates.h"
       
    31 #include    "cvtuifeaturemanager.h"
       
    32 #include    "cvtuicommandmanager.h"
       
    33 
       
    34 // Implementation of TVtUiWhiteBalanceComponentState
       
    35 
       
    36 // ---------------------------------------------------------------------------
       
    37 // TVtUiWhiteBalanceComponentState::TVtUiWhiteBalanceComponentState
       
    38 // ---------------------------------------------------------------------------
       
    39 //
       
    40 TVtUiWhiteBalanceComponentState::TVtUiWhiteBalanceComponentState(
       
    41     MVtUiComponent& aComponent ) :
       
    42     TVtUiComponentState( aComponent,
       
    43         TVtUiBlockListBitField(
       
    44             MVtUiComponent::EComponentIdToolbar |
       
    45             MVtUiComponent::EComponentIdNumberEntry ) )
       
    46     {
       
    47     }
       
    48 
       
    49 // ---------------------------------------------------------------------------
       
    50 // CVtUiWhiteBalance::NewL
       
    51 // ---------------------------------------------------------------------------
       
    52 //
       
    53 CVtUiWhiteBalance* CVtUiWhiteBalance::NewL( CVtUiFeatureManager&
       
    54     aFeatureManager )
       
    55     {
       
    56     __VTPRINTENTER( "CVtUiWhiteBalance.NewL" )
       
    57     CVtUiWhiteBalance* self =
       
    58         new ( ELeave ) CVtUiWhiteBalance( aFeatureManager );
       
    59     CleanupStack::PushL( self );
       
    60     self->ConstructL();
       
    61     CleanupStack::Pop();
       
    62     __VTPRINTEXIT( "CVtUiWhiteBalance.NewL" )
       
    63     return self;
       
    64     }
       
    65 
       
    66 // ---------------------------------------------------------------------------
       
    67 // CVtUiWhiteBalance::~CVtUiWhiteBalance
       
    68 // ---------------------------------------------------------------------------
       
    69 //
       
    70 CVtUiWhiteBalance::~CVtUiWhiteBalance()
       
    71     {
       
    72     __VTPRINTENTER( "CVtUiWhiteBalance.~CVtUiWhiteBalance" )
       
    73     // unregister layout change
       
    74     iFeatureManager.ComponentManager().ChangeLayoutChangeRegistration(
       
    75         *this, MVtUiComponentManager::EUnregister );
       
    76      // unregister component
       
    77     iFeatureManager.ComponentManager().ChangeComponentRegistration(
       
    78         iComponentState, MVtUiComponentManager::EUnregister );
       
    79     __VTPRINTEXIT( "CVtUiWhiteBalance.~CVtUiWhiteBalance" )
       
    80     }
       
    81 
       
    82 // ---------------------------------------------------------------------------
       
    83 // CVtUiWhiteBalance::StartL
       
    84 // ---------------------------------------------------------------------------
       
    85 //
       
    86 void CVtUiWhiteBalance::StartL()
       
    87     {
       
    88     __VTPRINTENTER( "CVtUiWhiteBalance.StartL" )
       
    89     if ( iFeatureState == MVtUiFeature::EReady )
       
    90         {
       
    91         iFeatureManager.AppUi().EnableCommandActivatingAndCleanupPushL();
       
    92         iFeatureManager.UiStates().SetIsFixedToolbarVisible( EFalse );
       
    93         iFeatureManager.ComponentManager().
       
    94             RequestActivationL ( MVtUiComponent::EComponentIdWhiteBalance );
       
    95         CleanupStack::Pop(); // EnableCommandActivatingAndCleanupPushL
       
    96         // set state
       
    97         iFeatureState = MVtUiFeature::EActive;
       
    98         }
       
    99     __VTPRINTEXIT( "CVtUiWhiteBalance.StartL" )
       
   100     }
       
   101 
       
   102 // ---------------------------------------------------------------------------
       
   103 // CVtUiWhiteBalance::Stop
       
   104 // ---------------------------------------------------------------------------
       
   105 //
       
   106 void CVtUiWhiteBalance::Stop()
       
   107     {
       
   108     __VTPRINTENTER( "CVtUiWhiteBalance.Stop" )
       
   109     iAsyncCallback->Cancel();
       
   110     iAsyncCallback->Set( TCallBack( &DoStopL, this ) );
       
   111     iAsyncCallback->CallBack();
       
   112     __VTPRINTEXIT( "CVtUiWhiteBalance.Stop" )
       
   113     }
       
   114 
       
   115 // ---------------------------------------------------------------------------
       
   116 // CVtUiWhiteBalance::InitFeatureL
       
   117 // ---------------------------------------------------------------------------
       
   118 //
       
   119 void CVtUiWhiteBalance::InitFeatureL()
       
   120     {
       
   121     __VTPRINTENTER( "CVtUiWhiteBalance.InitFeatureL" )
       
   122     CVtUiPrefSettingListBase::InitFeatureL();
       
   123     User::LeaveIfError(
       
   124        iFeatureManager.ComponentManager().ChangeComponentRegistration(
       
   125        iComponentState, MVtUiComponentManager::ERegister ) );
       
   126     User::LeaveIfError(
       
   127        iFeatureManager.ComponentManager().ChangeLayoutChangeRegistration(
       
   128        *this, MVtUiComponentManager::ERegister ) );
       
   129     iFeatureState  = EReady;
       
   130     __VTPRINTEXIT( "CVtUiWhiteBalance.InitFeatureL" )
       
   131     }
       
   132 
       
   133 // ---------------------------------------------------------------------------
       
   134 // CVtUiWhiteBalance::ComponentId
       
   135 // ---------------------------------------------------------------------------
       
   136 //
       
   137 MVtUiComponent::TComponentId CVtUiWhiteBalance::ComponentId() const
       
   138     {
       
   139     __VTPRINTENTER( "CVtUiWhiteBalance.ComponentId" )
       
   140     __VTPRINTEXIT( "CVtUiWhiteBalance.ComponentId" )
       
   141     return MVtUiComponent::EComponentIdWhiteBalance;
       
   142     }
       
   143 
       
   144 // ---------------------------------------------------------------------------
       
   145 // CVtUiWhiteBalance::ComponentAsControl
       
   146 // ---------------------------------------------------------------------------
       
   147 //
       
   148 CCoeControl* CVtUiWhiteBalance::ComponentAsControl()
       
   149     {
       
   150     __VTPRINTENTER( "CVtUiWhiteBalance.ComponentAsControl" )
       
   151     __VTPRINTEXIT( "CVtUiWhiteBalance.ComponentAsControl" )
       
   152     return NULL;
       
   153     }
       
   154 
       
   155 // ---------------------------------------------------------------------------
       
   156 // CVtUiWhiteBalance::DoActivateL
       
   157 // ---------------------------------------------------------------------------
       
   158 //
       
   159 void CVtUiWhiteBalance::DoActivateL()
       
   160     {
       
   161     __VTPRINTENTER( "CVtUiWhiteBalance.DoActivateL" )
       
   162     // get supported white balance modes
       
   163     iCameraPref->GetSupportedWhiteBalanceModes( iSupportedModes );
       
   164     __VTPRINT2( DEBUG_GEN,"CVtUiWhiteBalance.DoActivateL=%d", iSupportedModes )
       
   165     iFeatureManager.UiStates().SetWhiteBalanceModeOn( ETrue );
       
   166     iAsyncCallback->Cancel();
       
   167     iAsyncCallback->Set( TCallBack( &DoStartL, this ) );
       
   168     iAsyncCallback->CallBack();
       
   169     __VTPRINTEXIT( "CVtUiWhiteBalance.DoActivateL" )
       
   170     }
       
   171 
       
   172 // ---------------------------------------------------------------------------
       
   173 // CVtUiWhiteBalance::DoDeactivateL
       
   174 // ---------------------------------------------------------------------------
       
   175 //
       
   176 void CVtUiWhiteBalance::DoDeactivateL()
       
   177     {
       
   178     __VTPRINTENTER( "CVtUiWhiteBalance.DoDeactivateL" )
       
   179     iFeatureManager.UiStates().SetWhiteBalanceModeOn( EFalse );
       
   180     CVtUiPrefSettingListBase::StopSettingPageL();
       
   181     __VTPRINTEXIT( "CVtUiWhiteBalance.DoDeactivateL" )
       
   182     }
       
   183 
       
   184 // ---------------------------------------------------------------------------
       
   185 // CVtUiWhiteBalance::HandleLayoutChangeL
       
   186 // ---------------------------------------------------------------------------
       
   187 //
       
   188 void CVtUiWhiteBalance::HandleLayoutChangeL()
       
   189     {
       
   190      __VTPRINTENTER( "CVtUiWhiteBalance.HandleLayoutChangeL" )
       
   191     if ( iFeatureState  == MVtUiFeature::EActive )
       
   192         {
       
   193         SizeChanged();
       
   194         }
       
   195     __VTPRINTEXIT( "CVtUiWhiteBalance.HandleLayoutChangeL" )
       
   196     }
       
   197 
       
   198 // ---------------------------------------------------------------------------
       
   199 // CVtUiWhiteBalance::CurrentSelection
       
   200 // ---------------------------------------------------------------------------
       
   201 //
       
   202 TInt CVtUiWhiteBalance::CurrentSelection()
       
   203     {
       
   204     __VTPRINTENTER( "CVtUiWhiteBalance.CurrentSelection" )
       
   205     // ask from engine which item is currently active
       
   206     MVtEngCameraPreferences::TWhiteBalance wb;
       
   207     if ( iCameraPref->GetWhiteBalance( wb ) )
       
   208         {
       
   209         __VTPRINT( DEBUG_GEN, "CurrentSelection::error" );
       
   210         __VTPRINTEXIT( "CVtUiWhiteBalance.CurrentSelection" )
       
   211         // if error occured return 0 i.e. first list item
       
   212         return 0;
       
   213         }
       
   214     __VTPRINTEXIT( "CVtUiWhiteBalance.CurrentSelection" )
       
   215     return MapWBEnumToArrayIndex( wb );
       
   216     }
       
   217 
       
   218 // ---------------------------------------------------------------------------
       
   219 // CVtUiWhiteBalance::SetItemsL
       
   220 // ---------------------------------------------------------------------------
       
   221 //
       
   222 void CVtUiWhiteBalance::SetItemsL( CDesCArray& aArray )
       
   223     {
       
   224     __VTPRINTENTER( "CVtUiWhiteBalance.SetItemsL" )
       
   225     __VTPRINT2( DEBUG_GEN, "CVtUiWhiteBalance.SetItemsL=%d", iSupportedModes )
       
   226     // Auto mode allways supported
       
   227     ReadAndAppendItemL( aArray, R_VIDEOTELUI_QTN_INCAL_AUTOMATIC_OPTION );
       
   228     iActiveItems.Append( MVtEngCameraPreferences::EAuto );
       
   229 
       
   230     if( iSupportedModes & MVtEngCameraPreferences::EDaylight )
       
   231         {
       
   232         ReadAndAppendItemL( aArray, R_VIDEOTELUI_QTN_INCAL_SUNNY_OPTION );
       
   233         iActiveItems.Append( MVtEngCameraPreferences::EDaylight );
       
   234         }
       
   235     if( iSupportedModes & MVtEngCameraPreferences::ECloudy )
       
   236         {
       
   237         ReadAndAppendItemL( aArray, R_VIDEOTELUI_QTN_INCAL_CLOUDY_OPTION );
       
   238         iActiveItems.Append( MVtEngCameraPreferences::ECloudy );
       
   239         }
       
   240     if( iSupportedModes & MVtEngCameraPreferences::ETungsten )
       
   241         {
       
   242         ReadAndAppendItemL( aArray, R_VIDEOTELUI_QTN_INCAL_INCANDESCENT_OPTION );
       
   243         iActiveItems.Append( MVtEngCameraPreferences::ETungsten );
       
   244         }
       
   245     if( iSupportedModes & MVtEngCameraPreferences::EFluorescent )
       
   246         {
       
   247         ReadAndAppendItemL( aArray, R_VIDEOTELUI_QTN_INCAL_FLUORESCENT_OPTION );
       
   248         iActiveItems.Append( MVtEngCameraPreferences::EFluorescent );
       
   249         }
       
   250     __VTPRINTEXIT( "CVtUiWhiteBalance.SetItemsL" )
       
   251     }
       
   252 
       
   253 // ---------------------------------------------------------------------------
       
   254 // CVtUiWhiteBalance::SettingPageResId
       
   255 // ---------------------------------------------------------------------------
       
   256 //
       
   257 TInt CVtUiWhiteBalance::SettingPageResId() const
       
   258     {
       
   259     __VTPRINTENTER( "CVtUiWhiteBalance.SettingPageResId" )
       
   260     __VTPRINTEXIT( "CVtUiWhiteBalance.SettingPageResId" )
       
   261     return R_VIDEOTELUI_WHITE_BALANCE_SETTING_PAGE;
       
   262     }
       
   263 
       
   264 // ---------------------------------------------------------------------------
       
   265 // CVtUiWhiteBalance::SettingPageItemChangedL
       
   266 // ---------------------------------------------------------------------------
       
   267 //
       
   268 void CVtUiWhiteBalance::SettingPageItemChangedL( TInt aIndex )
       
   269     {
       
   270     __VTPRINTENTER( "CVtUiWhiteBalance.SettingPageItemChangedL" )
       
   271     __VTPRINT2( DEBUG_GEN, "CVtUiWhiteBalance.index=%d", aIndex )
       
   272     if ( iFeatureManager.UiStates().ExecState() == TVtUiStates::EExecStateResetting )
       
   273         {
       
   274         __VTPRINTEXIT( "CVtUiWhiteBalance.SettingPageItemChangedL" )
       
   275         return;
       
   276         }
       
   277     // Map index to right white balance value
       
   278     MVtEngCameraPreferences::TWhiteBalance wb = MapArrayIndexToWBEnum( aIndex );
       
   279 
       
   280     // cast the parameter
       
   281     TPtrC8 params( reinterpret_cast< TUint8* >( &wb ),
       
   282         sizeof( MVtEngCameraPreferences::TWhiteBalance ) );
       
   283 
       
   284     // Adjust white balance
       
   285     MVtEngMedia::TCameraId camId;
       
   286     iFeatureManager.AppUi().Model().Media().GetCurrentCameraId(camId);
       
   287 
       
   288     if( camId == MVtEngMedia::ESecondaryCamera  )
       
   289         {            
       
   290          iFeatureManager.AppUi().DoExecuteCmdL( KVtEngSetWhiteBalance, &params );        
       
   291          iPendingSettingChangeCmd = EFalse;
       
   292          }
       
   293     else
       
   294         iPendingSettingChangeCmd = ETrue;
       
   295     __VTPRINTEXIT( "CVtUiWhiteBalance.SettingPageItemChangedL" )
       
   296     }
       
   297 
       
   298 // ---------------------------------------------------------------------------
       
   299 // CVtUiWhiteBalance::CVtUiWhiteBalance
       
   300 // ---------------------------------------------------------------------------
       
   301 //
       
   302 CVtUiWhiteBalance::CVtUiWhiteBalance( CVtUiFeatureManager& aFeatureManager )
       
   303     : CVtUiPrefSettingListBase( aFeatureManager, EVtUiFeatureIdWhiteBalance ),
       
   304     iComponentState( *this )
       
   305     {
       
   306     __VTPRINTENTER( "CVtUiWhiteBalance.CVtUiWhiteBalance" )
       
   307     __VTPRINTEXIT( "CVtUiWhiteBalance.CVtUiWhiteBalance" )
       
   308     }
       
   309 
       
   310 // ---------------------------------------------------------------------------
       
   311 // CVtUiWhiteBalance::MapWBEnumToArrayIndex
       
   312 // ---------------------------------------------------------------------------
       
   313 //
       
   314 TInt CVtUiWhiteBalance::MapWBEnumToArrayIndex( MVtEngCameraPreferences::
       
   315     TWhiteBalance& aWhiteBalance ) const
       
   316     {
       
   317      __VTPRINTENTER( "CVtUiWhiteBalance.MapWBEnumToArrayIndex" )
       
   318     __VTPRINT2( DEBUG_GEN, "CVtUiWhiteBalance.cpunt=%d", iActiveItems.Count() )
       
   319     for ( TInt i = 0; i < iActiveItems.Count(); ++i )
       
   320          {
       
   321          if ( iActiveItems [ i ] ==  aWhiteBalance  )
       
   322              {
       
   323              __VTPRINT2( DEBUG_GEN, "CVtUiWhiteBalance.index=%d", i )
       
   324              __VTPRINTEXIT( "CVtUiWhiteBalance.MapWBEnumToArrayIndex" )
       
   325              return i;
       
   326              }
       
   327          }
       
   328      // not found
       
   329      __VTPRINTEXIT( "CVtUiWhiteBalance.MapWBEnumToArrayIndexNF" )
       
   330      return KErrNotFound;
       
   331     }
       
   332 
       
   333 // ---------------------------------------------------------------------------
       
   334 // CVtUiWhiteBalance::MapArrayIndexToWBEnum
       
   335 // ---------------------------------------------------------------------------
       
   336 //
       
   337 MVtEngCameraPreferences::TWhiteBalance CVtUiWhiteBalance::
       
   338     MapArrayIndexToWBEnum( TInt aIndex) const
       
   339     {
       
   340      __VTPRINTENTER( "CVtUiWhiteBalance.MapArrayIndexToWBEnum" )
       
   341      __VTPRINT2( DEBUG_GEN, "CVtUiWhiteBalance.index=%d", aIndex )
       
   342     __VTPRINT2( DEBUG_GEN, "CVtUiWhiteBalance.count=%d", iActiveItems.Count() )
       
   343     const TInt count = iActiveItems.Count();
       
   344     if ( count > 0 && aIndex < count && aIndex >= 0 )
       
   345         {
       
   346         __VTPRINTEXIT( "CVtUiWhiteBalance.MapArrayIndexToWBEnum" )
       
   347         return static_cast< MVtEngCameraPreferences::TWhiteBalance >
       
   348             ( iActiveItems[ aIndex ] );
       
   349         }
       
   350     else // not valid index return first item in the list
       
   351         {
       
   352         __VTPRINTEXIT( "CVtUiWhiteBalance.MapArrayIndexToWBEnum_ERROR_INDEX" )
       
   353         return static_cast< MVtEngCameraPreferences::TWhiteBalance >
       
   354             ( iActiveItems[ 0 ] );
       
   355         }
       
   356     }
       
   357 
       
   358 // ---------------------------------------------------------------------------
       
   359 // CVtUiWhiteBalance::DoStop
       
   360 // ---------------------------------------------------------------------------
       
   361 //
       
   362 TInt CVtUiWhiteBalance::DoStopL( TAny* aAny )
       
   363     {
       
   364     __VTPRINTENTER( "CVtUiWhiteBalance.DoStopL" )
       
   365     CVtUiWhiteBalance* self = static_cast< CVtUiWhiteBalance* >( aAny );
       
   366     if ( self->iFeatureState == MVtUiFeature::EActive )
       
   367         {
       
   368         __VTPRINT( DEBUG_GEN, "CVtUiWhiteBalance::Stop1" );
       
   369         self->iFeatureManager.ComponentManager().
       
   370             DeActivateComponentL ( MVtUiComponent::EComponentIdWhiteBalance );
       
   371         // set state
       
   372         self->iFeatureState = MVtUiFeature::EReady;
       
   373         }
       
   374     __VTPRINTEXIT( "CVtUiWhiteBalance.DoStopL" )
       
   375     return KErrNone;
       
   376     }
       
   377 
       
   378 // ---------------------------------------------------------------------------
       
   379 // CVtUiWhiteBalance::DoStart
       
   380 // ---------------------------------------------------------------------------
       
   381 //
       
   382 TInt CVtUiWhiteBalance::DoStartL( TAny* aAny )
       
   383     {
       
   384     __VTPRINTENTER( "CVtUiWhiteBalance.DoStart" )
       
   385     CVtUiWhiteBalance* self = static_cast< CVtUiWhiteBalance* >( aAny );
       
   386     self->CVtUiPrefSettingListBase::StartSettingPageL();
       
   387     self->iFeatureManager.UiStates().SetIsCommandActivating( EFalse );
       
   388     __VTPRINTEXIT( "CVtUiWhiteBalance.DoStart" )
       
   389     return KErrNone;
       
   390     }