--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/prefs/cvtuivideoquality.cpp Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,441 @@
+/*
+* Copyright (c) 2007 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: Video quality UI feature implementation.
+*
+*/
+
+
+#include <badesca.h>
+#include <AknIconArray.h>
+#include <AknsUtils.h>
+#include <StringLoader.h>
+#include <aknlists.h>
+#include <aknPopup.h>
+#include <aknselectionlist.h>
+#include <mvtengmedia.h>
+#include <cvtengmodel.h>
+#include <cvtlogger.h>
+
+#include <videotelui.rsg>
+#include "cvtuivideoquality.h"
+#include "tvtuifeatureids.h"
+#include "VtUiLayout.h"
+#include "VtUiUtility.h"
+#include "CVtUiAppUi.h"
+#include "cvtuifeaturemanager.h"
+#include "mvtuicomponentmanager.h"
+#include "tvtuilocalvariation.h"
+#include "tvtuistates.h"
+
+// constants
+_LIT( KVtUiFormatActive, "0\t%S" );
+_LIT( KVtUiFormatInactive, "\t%S" );
+const TInt KVtUiMaxListItemLength = 128;
+
+// Implementation of TVtUiVideoQualityComponentState
+
+// ---------------------------------------------------------------------------
+// TVtUiVideoQualityComponentState::TVtUiVideoQualityComponentState
+// ---------------------------------------------------------------------------
+//
+TVtUiVideoQualityComponentState::TVtUiVideoQualityComponentState(
+ MVtUiComponent& aComponent ) :
+ TVtUiComponentState( aComponent,
+ TVtUiBlockListBitField(
+ MVtUiComponent::EComponentIdDialer |
+ MVtUiComponent::EComponentIdNumberEntry ) )
+ {
+ __VTPRINTENTER( "TVtUiVideoQualityComponentState.Ctor" )
+ __VTPRINTEXIT( "TVtUiVideoQualityComponentState.Ctor" )
+ }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiVideoQuality* CVtUiVideoQuality::NewL( CVtUiFeatureManager&
+ aFeatureManager )
+ {
+ __VTPRINTENTER( "CVtUiVideoQuality.NewL" )
+ CVtUiVideoQuality* self =
+ new ( ELeave ) CVtUiVideoQuality( aFeatureManager );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+ __VTPRINTEXIT( "CVtUiVideoQuality.NewL" )
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::~CVtUiVideoQuality
+// ---------------------------------------------------------------------------
+//
+CVtUiVideoQuality::~CVtUiVideoQuality()
+ {
+ __VTPRINTENTER( "CVtUiVideoQuality.~CVtUiVideoQuality" )
+
+ // Delete the callback
+ delete iShowSelectionListCallback;
+
+ // unregister component
+ iFeatureManager.ComponentManager().ChangeComponentRegistration(
+ iComponentState, MVtUiComponentManager::EUnregister );
+
+ __VTPRINTEXIT( "CVtUiVideoQuality.~CVtUiVideoQuality" )
+ }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::StartL
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoQuality::StartL()
+ {
+ __VTPRINTENTER( "CVtUiVideoQuality.StartL" )
+ if ( iFeatureState == MVtUiFeature::EReady )
+ {
+ iFeatureManager.UiStates().SetIsFixedToolbarVisible( EFalse );
+ iFeatureManager.ComponentManager().
+ RequestActivationL ( MVtUiComponent::EComponentIdVideoQuality );
+ // set state
+ iFeatureState = MVtUiFeature::EActive;
+ }
+ __VTPRINTEXIT( "CVtUiVideoQuality.StartL" )
+ }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::Stop
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoQuality::Stop()
+ {
+ __VTPRINTENTER( "CVtUiVideoQuality.Stop" )
+ TRAP_IGNORE(
+ {
+ if ( iFeatureState == MVtUiFeature::EActive )
+ {
+ iFeatureManager.ComponentManager().
+ DeActivateComponentL ( MVtUiComponent::EComponentIdVideoQuality );
+ // set state
+ iFeatureState = MVtUiFeature::EReady;
+ }
+ } );
+ __VTPRINTEXIT( "CVtUiVideoQuality.Stop" )
+ }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::InitFeatureL
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoQuality::InitFeatureL()
+ {
+ __VTPRINTENTER( "CVtUiVideoQuality.InitFeatureL" )
+ // register component to conponent manager
+ User::LeaveIfError(
+ iFeatureManager.ComponentManager().ChangeComponentRegistration(
+ iComponentState, MVtUiComponentManager::ERegister ) );
+ iFeatureState = EReady;
+ __VTPRINTEXIT( "CVtUiVideoQuality.InitFeatureL" )
+ }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::ComponentId
+// ---------------------------------------------------------------------------
+//
+MVtUiComponent::TComponentId CVtUiVideoQuality::ComponentId() const
+ {
+ __VTPRINTENTER( "CVtUiVideoQuality.ComponentId" )
+ __VTPRINTEXIT( "CVtUiVideoQuality.ComponentId" )
+ return MVtUiComponent::EComponentIdVideoQuality;
+ }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::ComponentAsControl
+// ---------------------------------------------------------------------------
+//
+CCoeControl* CVtUiVideoQuality::ComponentAsControl()
+ {
+ __VTPRINTENTER( "CVtUiWhiteBalance.ComponentAsControl" )
+ __VTPRINTEXIT( "CVtUiVideoQuality.ComponentAsControl" )
+ return NULL;
+ }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::DoActivateL
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoQuality::DoActivateL()
+ {
+ __VTPRINTENTER( "CVtUiVideoQuality.DoActivateL" )
+ __VTPRINTEXIT( "CVtUiVideoQuality.DoActivateL" )
+ iFeatureManager.UiStates().SetVideoQualityModeOn( ETrue );
+ iShowSelectionListCallback->CallBack();
+ }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::DoDeactivateL
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoQuality::DoDeactivateL()
+ {
+ __VTPRINTENTER( "CVtUiVideoQuality.DoDeactivateL" )
+ iFeatureManager.UiStates().SetVideoQualityModeOn( EFalse );
+ __VTPRINTEXIT( "CVtUiVideoQuality.DoDeactivateL" )
+ }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::CreateIconLC
+// ---------------------------------------------------------------------------
+//
+CGulIcon* CVtUiVideoQuality::CreateIconLC( TVtUiBitmapId aIconId,
+ TVtUiBitmapId aMaskId )
+ {
+ __VTPRINTENTER( "CVtUiVideoQuality.CreateIconLC" )
+ TFileName fileName;
+ TInt bitmapIndex;
+ TInt bitmapMaskIndex;
+ CFbsBitmap* newIconBmp;
+ CFbsBitmap* newIconMaskBmp;
+ VtUiLayout::Resolve( aIconId, fileName, bitmapIndex );
+ TAknsItemID skinId = VtUiLayout::MapBitmapToSkinId( aIconId );
+ VtUiLayout::Resolve( aMaskId, fileName, bitmapMaskIndex );
+ AknsUtils::CreateIconL( AknsUtils::SkinInstance(), skinId, newIconBmp,
+ newIconMaskBmp, fileName, bitmapIndex, bitmapMaskIndex );
+ CleanupStack::PushL( newIconBmp );
+ CleanupStack::PushL( newIconMaskBmp );
+ CGulIcon* gulIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp );
+ CleanupStack::Pop( newIconMaskBmp );
+ CleanupStack::Pop( newIconBmp );
+ CleanupStack::PushL( gulIcon );
+ __VTPRINTEXIT( "CVtUiVideoQuality.CreateIconLC" )
+ return gulIcon;
+ }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::ShowSelectionListL
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoQuality::ShowSelectionListL()
+ {
+ __VTPRINTENTER( "CVtUiVideoQuality.ShowSelectionListL" )
+ // create listbox
+ CAknSingleGraphicPopupMenuStyleListBox* listBox =
+ new ( ELeave ) CAknSingleGraphicPopupMenuStyleListBox();
+ CleanupStack::PushL( listBox );
+
+ // create popuplist
+ CAknPopupList* popUpList =
+ CAknPopupList::NewL( listBox, R_VIDEOTELUI_SOFTKEYS_SELECT_CANCEL );
+ CleanupStack::PushL( popUpList );
+
+ listBox->ConstructL( popUpList,
+ EAknListBoxSelectionList | EAknListBoxLoopScrolling );
+
+ // Create an array of icons, reading them from the file and
+ // set them in the listbox
+ CArrayPtr<CGulIcon>* icons = new(ELeave) CAknIconArray( 1 );
+ CleanupStack::PushL(icons);
+ CGulIcon* icon = CreateIconLC( EVtUiBitmap_qgn_prop_sub_current,
+ EVtUiBitmap_qgn_prop_sub_current_mask );
+ icons->AppendL( icon );
+ listBox->ItemDrawer()->ColumnData()->SetIconArray( icons );
+ CleanupStack::Pop(2); //icon + icons
+
+ // Read item array from resources
+ CDesCArray* textArray =
+ iFeatureManager.AppUi().GetEikonEnv()->
+ ReadDesCArrayResourceL( R_VIDEOTELUI_VIDEO_QUALITY_ARRAY );
+ CleanupStack::PushL( textArray );
+
+ CDesCArraySeg* listBoxRows = new ( ELeave ) CDesCArraySeg( 3 );
+ CleanupStack::PushL( listBoxRows );
+
+ // Read items to array
+ SetItemsL( *listBoxRows, *textArray );
+
+ // Create listbox model.
+ CTextListBoxModel* listBoxModel = listBox->Model();
+ // Set item array
+ listBoxModel->SetItemTextArray( listBoxRows );
+
+ // Set ownership
+ listBoxModel->SetOwnershipType( ELbmOwnsItemArray );
+
+ // Enable marquee
+ listBox->ItemDrawer()->ColumnData()->EnableMarqueeL( ETrue );
+
+ CleanupStack::Pop(2); // listBoxRows + testArray
+
+ TInt popupOk = popUpList->ExecuteLD();
+
+ CleanupStack::Pop(); // popUpList
+ popUpList = NULL;
+
+ if ( popupOk )
+ {
+ ItemSelectedL( listBox->CurrentItemIndex() );
+ }
+ else
+ {
+ // Selection canceled.
+ }
+
+ // Reset arrays
+ listBoxRows->Reset();
+ textArray->Reset();
+ icons->ResetAndDestroy(); // icons + icon
+
+ // Delete listbox
+ CleanupStack::PopAndDestroy( listBox ); // listBox
+
+ iAsyncCallback->Set( TCallBack( &DoStop, this ) );
+ iAsyncCallback->CallBack();
+ __VTPRINTEXIT( "CVtUiVideoQuality.ShowSelectionListL" )
+ }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::AsyncShowSelectionListL
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiVideoQuality::AsyncShowSelectionList( TAny* aPtr )
+ {
+ CVtUiVideoQuality* self = reinterpret_cast< CVtUiVideoQuality* > ( aPtr );
+ TRAPD( err, self->ShowSelectionListL() );
+ return err;
+ }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::SetItemsL
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoQuality::SetItemsL( CDesCArray& aTarget,
+ const CDesCArray& aSource )
+ {
+ __VTPRINTENTER( "CVtUiVideoQuality.SetItemsL" )
+ TInt activeItem( ActiveItem() );
+ TInt count( aSource.Count() );
+ for ( TInt i = 0; i < count; i++ )
+ {
+ TBuf< KVtUiMaxListItemLength > item;
+ TPtrC sourceItem( aSource[ i ] );
+ if ( i == activeItem )
+ {
+ item.Format( KVtUiFormatActive(), &sourceItem );
+ }
+ else
+ {
+ item.Format( KVtUiFormatInactive(), &sourceItem );
+ }
+ aTarget.AppendL( item );
+ }
+ __VTPRINTEXIT( "CVtUiVideoQuality.SetItemsL" )
+ }
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::ActiveItem
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiVideoQuality::ActiveItem() const
+ {
+ __VTPRINTENTER( "CVtUiVideoQuality.ActiveItem" )
+ TInt activeItem( 0 );
+ MVtEngMedia::TVideoQuality videoQuality;
+ VtUiUtility::GetVideoQuality( iFeatureManager.AppUi().Model().Media(),
+ videoQuality );
+ switch( videoQuality )
+ {
+ case MVtEngMedia::EVideoQualityNormal:
+ activeItem = 0;
+ break;
+ case MVtEngMedia::EVideoQualityDetail:
+ activeItem = 1;
+ break;
+ case MVtEngMedia::EVideoQualityMotion:
+ activeItem = 2;
+ break;
+ default:
+ break;
+ }
+ __VTPRINTEXIT( "CVtUiVideoQuality.ActiveItem" )
+ return activeItem;
+ }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::ItemSelectedL
+// ---------------------------------------------------------------------------
+//
+ void CVtUiVideoQuality::ItemSelectedL( TInt aItemIndex )
+ {
+ __VTPRINTENTER( "CVtUiVideoQuality.ItemSelectedL" )
+ MVtEngMedia::TVideoQuality qualityLevel;
+ switch( aItemIndex )
+ {
+ case 0:
+ qualityLevel = MVtEngMedia::EVideoQualityNormal;
+ break;
+
+ case 1:
+ qualityLevel = MVtEngMedia::EVideoQualityDetail;
+ break;
+
+ case 2:
+ qualityLevel = MVtEngMedia::EVideoQualityMotion;
+ break;
+ default:
+ break;
+ }
+ // cast the parameter
+ TPtrC8 params( reinterpret_cast< TUint8* >( &qualityLevel ),
+ sizeof( MVtEngMedia::TVideoQuality ) );
+ iFeatureManager.AppUi().DoExecuteCmdL( KVtEngSetVideoQuality, ¶ms );
+ __VTPRINTEXIT( "CVtUiVideoQuality.ItemSelectedL" )
+ }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::CVtUiVideoQuality
+// ---------------------------------------------------------------------------
+//
+CVtUiVideoQuality::CVtUiVideoQuality( CVtUiFeatureManager& aFeatureManager ) :
+ CVtUiFeatureBase( EVtUiFeatureIdVideoQuality, aFeatureManager ),
+ iComponentState( *this )
+ {
+ __VTPRINTENTER( "CVtUiWhiteBalance.CVtUiVideoQuality" )
+ __VTPRINTEXIT( "CVtUiVideoQuality.CVtUiVideoQuality" )
+ }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoQuality::ConstructL()
+ {
+ __VTPRINTENTER( "CVtUiVideoQuality.ConstructL" )
+ BaseConstructL();
+ iShowSelectionListCallback = new ( ELeave ) CAsyncCallBack(
+ TCallBack( &AsyncShowSelectionList, this ),
+ CActive::EPriorityStandard );
+ __VTPRINTEXIT( "CVtUiVideoQuality.ConstructL" )
+ }
+
+// -----------------------------------------------------------------------------
+// CVtUiVideoQuality::DoStop
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiVideoQuality::DoStop( TAny* aAny )
+ {
+ __VTPRINTENTER( "CVtUiVideoQuality.DoStop" )
+ CVtUiFeatureBase* self = static_cast< CVtUiFeatureBase* >( aAny );
+ self->Stop();
+ __VTPRINTEXIT( "CVtUiVideoQuality.DoStop" )
+ return KErrNone;
+ }
+