diff -r f15ac8e65a02 -r 779871d1e4f4 vtuis/videotelui/src/features/prefs/cvtuicolortone.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vtuis/videotelui/src/features/prefs/cvtuicolortone.cpp Wed Sep 01 12:29:12 2010 +0100 @@ -0,0 +1,383 @@ +/* +* Copyright (c) 2006 - 2008 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" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Color tone UI feature implementation. +* +*/ + + +#include +#include +#include +#include +#include "cvtuicolortone.h" +#include "tvtuifeatureids.h" +#include +#include "mvtuicomponentmanager.h" +#include "cvtuifeaturemanager.h" +#include "CVtUiAppUi.h" +#include "tvtuilocalvariation.h" +#include "cvtuifeaturemanager.h" +#include "tvtuistates.h" +#include "cvtuicommandmanager.h" + +// Implementation of TVtUiColorToneComponentState + +// --------------------------------------------------------------------------- +// TVtUiColorToneComponentState::TVtUiColorToneComponentState +// --------------------------------------------------------------------------- +// +TVtUiColorToneComponentState::TVtUiColorToneComponentState( + MVtUiComponent& aComponent ) : + TVtUiComponentState( aComponent, + TVtUiBlockListBitField( + MVtUiComponent::EComponentIdDialer | + MVtUiComponent::EComponentIdToolbar | + MVtUiComponent::EComponentIdNumberEntry ) ) + { + } + +// --------------------------------------------------------------------------- +// CVtUiColorTone::NewL +// --------------------------------------------------------------------------- +// +CVtUiColorTone* CVtUiColorTone::NewL( CVtUiFeatureManager& + aFeatureManager ) + { + __VTPRINTENTER( "UiColorTone.NewL" ) + CVtUiColorTone* self = + new ( ELeave ) CVtUiColorTone( aFeatureManager ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop(); + __VTPRINTEXIT( "UiColorTone.NewL" ) + return self; + } + +// --------------------------------------------------------------------------- +// CVtUiColorTone::~CVtUiColorTone +// --------------------------------------------------------------------------- +// +CVtUiColorTone::~CVtUiColorTone() + { + __VTPRINTENTER( "UiColorTone.~" ) + // unregister layout change + iFeatureManager.ComponentManager().ChangeLayoutChangeRegistration( + *this, MVtUiComponentManager::EUnregister ); + // unregister component + iFeatureManager.ComponentManager().ChangeComponentRegistration( + iComponentState, MVtUiComponentManager::EUnregister ); + __VTPRINTEXIT( "UiColorTone.~" ) + } + +// --------------------------------------------------------------------------- +// CVtUiColorTone::StartL +// --------------------------------------------------------------------------- +// +void CVtUiColorTone::StartL() + { + __VTPRINTENTER( "UiColorTone.StartL" ) + if ( iFeatureState == MVtUiFeature::EReady ) + { + iFeatureManager.AppUi().EnableCommandActivatingAndCleanupPushL(); + iFeatureManager.UiStates().SetIsFixedToolbarVisible( EFalse ); + iFeatureManager.ComponentManager(). + RequestActivationL ( MVtUiComponent::EComponentIdColorTone ); + CleanupStack::Pop(); // EnableCommandActivatingAndCleanupPushL + // set state + iFeatureState = MVtUiFeature::EActive; + } + __VTPRINTEXIT( "UiColorTone.StartL" ) + } + +// --------------------------------------------------------------------------- +// CVtUiColorTone::Stop +// --------------------------------------------------------------------------- +// +void CVtUiColorTone::Stop() + { + __VTPRINTENTER( "UiColorTone.Stop" ) + iAsyncCallback->Cancel(); + iAsyncCallback->Set( TCallBack( &DoStopL, this ) ); + iAsyncCallback->CallBack(); + __VTPRINTEXIT( "UiColorTone.Stop" ) + } + +// --------------------------------------------------------------------------- +// CVtUiColorTone::InitFeatureL +// --------------------------------------------------------------------------- +// +void CVtUiColorTone::InitFeatureL() + { + __VTPRINTENTER( "UiColorTone.InitFeatureL" ) + CVtUiPrefSettingListBase::InitFeatureL(); + User::LeaveIfError( + iFeatureManager.ComponentManager().ChangeComponentRegistration( + iComponentState, MVtUiComponentManager::ERegister ) ); + User::LeaveIfError( + iFeatureManager.ComponentManager().ChangeLayoutChangeRegistration( + *this, MVtUiComponentManager::ERegister ) ); + iFeatureState = EReady; + __VTPRINTEXIT( "UiColorTone.InitFeatureL" ) + } + +// --------------------------------------------------------------------------- +// CVtUiColorTone::ComponentId +// --------------------------------------------------------------------------- +// +MVtUiComponent::TComponentId CVtUiColorTone::ComponentId() const + { + __VTPRINTENTER( "UiColorTone.ComponentId" ) + __VTPRINTEXIT( "UiColorTone.ComponentId" ) + return MVtUiComponent::EComponentIdColorTone; + } + +// --------------------------------------------------------------------------- +// CVtUiColorTone::ComponentAsControl +// --------------------------------------------------------------------------- +// +CCoeControl* CVtUiColorTone::ComponentAsControl() + { + __VTPRINTENTER( "UiColorTone.ComponentAsControl" ) + __VTPRINTEXIT( "UiColorTone.ComponentAsControl" ) + return NULL; + } + +// --------------------------------------------------------------------------- +// CVtUiColorTone::DoActivateL +// --------------------------------------------------------------------------- +// +void CVtUiColorTone::DoActivateL() + { + __VTPRINTENTER( "UiColorTone.DoActivateL" ) + // get supported color tone modes + iCameraPref->GetSupportedColorTones( iSupportedModes ); + __VTPRINT2( DEBUG_GEN, "UiColorTone.ConstructL=%d", iSupportedModes ) + iFeatureManager.UiStates().SetColorToneModeOn( ETrue ); + iAsyncCallback->Cancel(); + iAsyncCallback->Set( TCallBack( &DoStartL, this ) ); + iAsyncCallback->CallBack(); + __VTPRINTEXIT( "UiColorTone.DoActivateL" ) + } + +// --------------------------------------------------------------------------- +// CVtUiColorTone::DoDeactivateL +// --------------------------------------------------------------------------- +// +void CVtUiColorTone::DoDeactivateL() + { + __VTPRINTENTER( "UiColorTone.DoDeactivateL" ) + iFeatureManager.UiStates().SetColorToneModeOn( EFalse ); + CVtUiPrefSettingListBase::StopSettingPageL(); + __VTPRINTEXIT( "UiColorTone.DoDeactivateL" ) + } + +// --------------------------------------------------------------------------- +// CVtUiColorTone::HandleLayoutChangeL +// --------------------------------------------------------------------------- +// +void CVtUiColorTone::HandleLayoutChangeL() + { + __VTPRINTENTER( "UiColorTone.HandleLayoutChangeL" ) + if ( iFeatureState == MVtUiFeature::EActive ) + { + SizeChanged(); + } + __VTPRINTEXIT( "UiColorTone.HandleLayoutChangeL" ) + } + +// --------------------------------------------------------------------------- +// CVtUiColorTone::CurrentSelection +// --------------------------------------------------------------------------- +// +TInt CVtUiColorTone::CurrentSelection() + { + __VTPRINTENTER( "UiColorTone.CurrentSelection" ) + // ask from engine which item is currently active + MVtEngCameraPreferences::TColorTone wb; + if ( iCameraPref->GetColorTone( wb ) ) + { + __VTPRINTEXIT( "UiColorTone.CurrentSelectionERR" ) + // if error occured return 0 i.e. first list item + return 0; + } + __VTPRINTEXIT( "UiColorTone.CurrentSelection" ) + return MapCTEnumToArrayIndex( wb ); + } + +// --------------------------------------------------------------------------- +// CVtUiColorTone::SetItemsL +// --------------------------------------------------------------------------- +// +void CVtUiColorTone::SetItemsL( CDesCArray& aArray ) + { + __VTPRINTENTER( "UiColorTone.SetItemsL<" ) + __VTPRINT2( DEBUG_GEN, "UiColorTone.SetItemsL=%d", iSupportedModes ) + // Normal mode allways supported + ReadAndAppendItemL( aArray, R_VIDEOTELUI_QTN_INCAL_CT_NORMAL_OPTION ); + iActiveItems.Append( MVtEngCameraPreferences::ENormal ); + + if( iSupportedModes & MVtEngCameraPreferences::ESepia ) + { + ReadAndAppendItemL( aArray, R_VIDEOTELUI_QTN_INCAL_SEPIA_OPTION ); + iActiveItems.Append( MVtEngCameraPreferences::ESepia ); + } + if( iSupportedModes & MVtEngCameraPreferences::EGrayscale ) + { + ReadAndAppendItemL( aArray, R_VIDEOTELUI_QTN_INCAL_B_AND_W_OPTION ); + iActiveItems.Append( MVtEngCameraPreferences::EGrayscale ); + } + if( iSupportedModes & MVtEngCameraPreferences::ENegative ) + { + ReadAndAppendItemL( aArray, R_VIDEOTELUI_QTN_INCAL_NEGATIVE_OPTION ); + iActiveItems.Append( MVtEngCameraPreferences::ENegative ); + } + __VTPRINTEXIT( "UiColorTone.SetItemsL" ) + } + +// --------------------------------------------------------------------------- +// CVtUiColorTone::SettingPageResId +// --------------------------------------------------------------------------- +// +TInt CVtUiColorTone::SettingPageResId() const + { + __VTPRINTENTER( "UiColorTone.SettingPageResId" ) + __VTPRINTEXIT( "UiColorTone.SettingPageResId" ) + return R_VIDEOTELUI_COLOR_TONE_SETTING_PAGE; + } + +// --------------------------------------------------------------------------- +// CVtUiColorTone::SettingPageItemChanged +// --------------------------------------------------------------------------- +// +void CVtUiColorTone::SettingPageItemChangedL( TInt aIndex ) + { + __VTPRINTENTER( "CVtUiColorTone.SettingPageItemChangedL" ) + __VTPRINT2( DEBUG_GEN, "CVtUiColorTone.index=%d", aIndex ) + if ( iFeatureManager.UiStates().ExecState() == TVtUiStates::EExecStateResetting ) + { + __VTPRINTEXIT( "CVtUiColorTone.SettingPageItemChangedL" ) + return; + } + // Map index to right color tone value + MVtEngCameraPreferences::TColorTone ct = MapArrayIndexToCTEnum( aIndex ); + + // cast the parameter + TPtrC8 params( reinterpret_cast< TUint8* >( &ct ), + sizeof( MVtEngCameraPreferences::TColorTone ) ); + + // Adjust color tone + MVtEngMedia::TCameraId currentCamId; + iFeatureManager.AppUi().Model().Media().GetCurrentCameraId( currentCamId ); + if( currentCamId == MVtEngMedia::ESecondaryCamera ) + { + iFeatureManager.AppUi().DoExecuteCmdL( KVtEngSetColorTone, ¶ms ); + iPendingSettingChangeCmd = EFalse; + } + else + iPendingSettingChangeCmd = ETrue; + __VTPRINTEXIT( "CVtUiColorTone.SettingPageItemChangedL" ) + } + + +// --------------------------------------------------------------------------- +// CVtUiColorTone::CVtUiColorTone +// --------------------------------------------------------------------------- +// +CVtUiColorTone::CVtUiColorTone( CVtUiFeatureManager& aFeatureManager ) + : CVtUiPrefSettingListBase( aFeatureManager, EVtUiFeatureIdColourTone ), + iComponentState( *this ) + { + __VTPRINTENTER( "UiColorTone.UiColorTone" ) + __VTPRINTEXIT( "UiColorTone.UiColorTone" ) + } + +// --------------------------------------------------------------------------- +// CVtUiColorTone::MapCTEnumToArrayIndex +// --------------------------------------------------------------------------- +// +TInt CVtUiColorTone::MapCTEnumToArrayIndex( MVtEngCameraPreferences:: + TColorTone& aColorTone ) const + { + __VTPRINTENTER( "CVtUiColorTone.MapCTEnumToArrayIndex" ) + __VTPRINT2( DEBUG_GEN, "CVtUiColorTone.cpunt=%d", iActiveItems.Count() ) + for ( TInt i = 0; i < iActiveItems.Count(); ++i ) + { + if ( iActiveItems [ i ] == aColorTone ) + { + __VTPRINT2( DEBUG_GEN, "CVtUiColorTone.index=%d", i ) + __VTPRINTEXIT( "CVtUiColorTone.MapCTEnumToArrayIndex" ) + return i; + } + } + __VTPRINTEXIT( "CVtUiColorTone.MapCTEnumToArrayIndex" ) + // not found + return KErrNotFound; + } +// --------------------------------------------------------------------------- +// CVtUiColorTone::MapArrayIndexToCTEnum +// --------------------------------------------------------------------------- +// +MVtEngCameraPreferences::TColorTone CVtUiColorTone::MapArrayIndexToCTEnum( + TInt aIndex) const + { + __VTPRINTENTER( "TColorTone.MapArrayIndexToCTEnum" ) + __VTPRINT2( DEBUG_GEN, "TColorTone.index=%d", aIndex ) + __VTPRINT2( DEBUG_GEN, "TColorTone.count=%d", iActiveItems.Count() ) + const TInt count = iActiveItems.Count(); + if ( count > 0 && aIndex < count && aIndex >= 0 ) + { + __VTPRINTEXIT( "TColorTone.MapArrayIndexToCTEnum" ) + return static_cast< MVtEngCameraPreferences::TColorTone > + ( iActiveItems[ aIndex ] ); + } + else // not valid index return first item in the list + { + __VTPRINTEXIT( "TColorTone.MapArrayIndexToCTEnum_ERROR_INDEX" ) + return static_cast< MVtEngCameraPreferences::TColorTone > + ( iActiveItems[ 0 ] ); + } + } + +// --------------------------------------------------------------------------- +// CVtUiColorTone::DoStop +// --------------------------------------------------------------------------- +// +TInt CVtUiColorTone::DoStopL( TAny* aAny ) + { + __VTPRINTENTER( "CVtUiColorTone.DoStopL" ) + CVtUiColorTone* self = static_cast< CVtUiColorTone* >( aAny ); + if ( self->iFeatureState == MVtUiFeature::EActive ) + { + self->iFeatureManager.ComponentManager(). + DeActivateComponentL ( MVtUiComponent::EComponentIdColorTone ); + // set state + self->iFeatureState = MVtUiFeature::EReady; + } + __VTPRINTEXIT( "CVtUiColorTone.DoStopL" ) + return KErrNone; + } + +// --------------------------------------------------------------------------- +// CVtUiColorTone::DoStart +// --------------------------------------------------------------------------- +// +TInt CVtUiColorTone::DoStartL( TAny* aAny ) + { + __VTPRINTENTER( "CVtUiColorTone.DoStart" ) + CVtUiColorTone* self = static_cast< CVtUiColorTone* >( aAny ); + self->CVtUiPrefSettingListBase::StartSettingPageL(); + self->iFeatureManager.UiStates().SetIsCommandActivating( EFalse ); + __VTPRINTEXIT( "CVtUiColorTone.DoStart" ) + return KErrNone; + }