vtuis/videotelui/src/features/zoom/cvtuizoompopup.cpp
changeset 0 ed9695c8bcbe
child 3 b1602a5ab0a3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/zoom/cvtuizoompopup.cpp	Mon Nov 23 14:47:47 2009 +0200
@@ -0,0 +1,282 @@
+/*
+* Copyright (c) 2006 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:  Zoom popup implementation.
+*
+*/
+
+
+#include    <aknvolumepopup.h>
+#include    <cvtlogger.h>
+#include    "cvtuizoompopup.h"
+#include    "cvtuifeaturemanager.h"
+#include	"tVtuifeaturevariation.h"
+#include    "CVtUiAppUi.h"
+#include    "cvtengmodel.h"
+
+// Number of zoom steps
+static const TInt KZoomStepCount = 10;
+
+// Minimum zoom factor value
+static const TInt KMinZoomFactor = 0;
+
+// default time out time for zoom popup
+const TInt KDefaultZoomTimeOutTime = 5;  
+
+// ---------------------------------------------------------------------------
+// CVtUiZoomPopup::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiZoomPopup* CVtUiZoomPopup::NewL( CVtUiFeatureManager&
+    aFeatureManager )
+    {
+    __VTPRINTENTER( "CVtUiZoomPopup.NewL" )
+    CVtUiZoomPopup* self =
+        new ( ELeave ) CVtUiZoomPopup( aFeatureManager );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+    __VTPRINTEXIT( "CVtUiZoomPopup.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoomPopup::~CVtUiZoomPopup
+// ---------------------------------------------------------------------------
+//
+CVtUiZoomPopup::~CVtUiZoomPopup()
+    {
+    __VTPRINTENTER( "CVtUiZoomPopup.~" )
+    __VTPRINTEXIT( "CVtUiZoomPopup.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoomPopup::RefreshL
+// ---------------------------------------------------------------------------
+//
+void CVtUiZoomPopup::RefreshL()
+    {
+    __VTPRINTENTER( "CVtUiZoomPopup.RefreshL" )
+    
+    UpdateAdjustRangeL();
+    
+    iCurrent = CurrentZoomStep();
+    if ( iCurrent < KMinZoomFactor )
+        {
+        User::Leave( KErrArgument );
+        }
+    SetValue( iCurrent );
+    ShowPopupL();
+    __VTPRINTEXIT( "CVtUiZoomPopup.RefreshL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoomPopup::DoActivateL()
+// ---------------------------------------------------------------------------
+//
+void CVtUiZoomPopup::DoActivateL()
+    {
+    __VTPRINTENTER( "CVtUiZoomPopup.DoActivateL" )
+    UpdateAdjustRangeL();
+    CVtUiPopupBase::DoActivateL();
+    // In order to refresh softkey.
+    iFeatureManager.AppUi().RefreshSoftkeysL();
+    __VTPRINTEXIT( "CVtUiZoomPopup.DoActivateL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoomPopup::OfferKeyEventL()
+// ---------------------------------------------------------------------------
+//
+TKeyResponse CVtUiZoomPopup::OfferKeyEventL( const TKeyEvent& aEvent,
+    TEventCode aCode )
+    {
+    __VTPRINTENTER( "CVtUiZoomPopup.OfferKeyEventL" )
+    TKeyResponse response( EKeyWasNotConsumed );
+    // Don't  handle other types here
+    if ( aCode != EEventKey )
+        {
+        return response;
+        }
+        
+    if ( aEvent.iScanCode == EStdKeyUpArrow ||
+         aEvent.iScanCode == EStdKeyDownArrow ||
+         aEvent.iCode == EKeyZoomIn ||
+         aEvent.iCode == EKeyZoomOut )
+        {
+        __VTPRINT( DEBUG_GEN, "CVtUiZoomPopup.OfferKeyEventL zoom key" )
+        TInt step( 1 );
+        if ( aEvent.iScanCode == EStdKeyDownArrow ||
+             aEvent.iCode == EKeyZoomOut )
+            {
+            step = -step;
+            }
+        const TInt current( Value() );
+        TInt value( current + step );
+        value = Max( KMinZoomFactor, Min( value, KZoomStepCount ) );
+        if ( value != current )
+            {
+            __VTPRINT2( DEBUG_GEN, "CVtUiZoomPopup.OfferKeyEventL zoom = %d",
+                value )
+            SetValue( value );
+            iFeatureManager.AppUi().SetZoomFactorL( ScaledValue() );
+            response = EKeyWasConsumed;
+            }
+        ShowPopupL();
+        }
+    __VTPRINTEXITR( "CVtUiZoomPopup.OfferKeyEventL %d", response )
+    return response;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoomPopup::HandleControlEventL
+// ---------------------------------------------------------------------------
+//
+void CVtUiZoomPopup::HandleControlEventL( CCoeControl* aControl,
+    TCoeEvent aEventType )
+    {
+    __VTPRINTENTER( "CVtUiZoomPopup.HandleControlEventL" )
+    CVtUiPopupBase::HandleControlEventL( aControl, aEventType );
+    
+    if ( aEventType == EEventStateChanged )
+        {
+        __VTPRINT2( DEBUG_GEN, "CVtUiZoomPopup.HandleControlEventL zoom = %d", ScaledValue() )
+        
+        if ( CurrentZoomStep() != Value() )
+            {
+            iFeatureManager.AppUi().SetZoomFactorL( ScaledValue() );
+            }
+        }
+        
+    __VTPRINTEXIT( "CVtUiZoomPopup.HandleControlEventL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoomPopup::CVtUiZoomPopup
+// ---------------------------------------------------------------------------
+//
+CVtUiZoomPopup::CVtUiZoomPopup( CVtUiFeatureManager& aFeatureManager )
+    : CVtUiPopupBase( aFeatureManager.ComponentManager(),
+      TVtUiBlockListBitField(
+        MVtUiComponent::EComponentIdDialer |
+        MVtUiComponent::EComponentIdToolbar |
+        MVtUiComponent::EComponentIdNumberEntry |
+        MVtUiComponent::EComponentIdVolume  |
+        MVtUiComponent::EVComponentIdBrightness |
+        MVtUiComponent::EVComponentIdContrast
+        ),
+      EComponentIdZoom ),
+      iFeatureManager( aFeatureManager ),
+      iMedia( aFeatureManager.AppUi().Model().Media() ),
+      iCurrent( KErrNotReady )
+    {
+    __VTPRINTENTER( "CVtUiZoomPopup.CVtUiZoomPopup" )
+    __VTPRINTEXIT( "CVtUiZoomPopup.CVtUiZoomPopup" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoomPopup::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiZoomPopup::ConstructL()
+    {
+    __VTPRINTENTER( "CVtUiZoomPopup.ConstructL" )
+    BaseConstructL();
+    // Set slider type to percentage
+    SetValueType( EAknSliderValuePercentage );
+    
+    // Set timeout
+    SetTimeOut( KDefaultZoomTimeOutTime );
+    __VTPRINTEXIT( "CVtUiZoomPopup.ConstructL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoomPopup::UpdateAdjustRangeL
+// ---------------------------------------------------------------------------
+//
+void CVtUiZoomPopup::UpdateAdjustRangeL()
+    {
+    __VTPRINTENTER( "CVtUiZoomPopup.UpdateAdjustRangeL" )
+    // Get max zoom step from engine
+    iMax = MaxZoomStep();
+    // Set value range to visible slider control
+    // range 0-10 or 0-iMax if max < 0
+    // stepcount = 10 or iMax if max < 10
+    SetAdjustRange( KMinZoomFactor, Min( KZoomStepCount, iMax ), Min( KZoomStepCount, iMax ) );
+   
+    // Set value range to baseclass
+    // range on e.g. 0-20
+    SetMinAndMaxValues( KMinZoomFactor, iMax );    
+    
+    // Get current zoom step
+    iCurrent = CurrentZoomStep();    
+    
+    if ( iCurrent == KErrNotFound || iMax == KErrNotFound || iCurrent > iMax )
+        {
+        User::Leave( KErrNotFound );
+        }
+    // Set new value
+    SetValue( iCurrent );
+    __VTPRINTEXIT( "CVtUiZoomPopup.UpdateAdjustRangeL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoomPopup::CurrentZoomStep
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiZoomPopup::CurrentZoomStep() const
+    {
+    __VTPRINTENTER( "CVtUiZoomPopup.CurrentZoomStep" )
+    TInt current( KMinZoomFactor );
+    const TInt error( iMedia.GetCurrentZoomStep( current ) );
+    current = ( error ? KErrNotFound : current );
+    
+    // Value asked from the engine must be scaled.
+    // If the current asked  value is 1 then the scaling formula in the 
+    // popupbase doesn't round the value to 1 there fore value is 
+    // initalized to 1.
+    TInt  val = 1; 
+    if ( current != 1 )
+        {
+        val =  SliderValueWithScaling( current );
+        }
+    __VTPRINTEXITR( "CVtUiZoomPopup.CurrentZoomStep %d", val )
+    return val;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoomPopup::MaxZoomStep
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiZoomPopup::MaxZoomStep() const
+    {
+    __VTPRINTENTER( "CVtUiZoomPopup.MaxZoomStep" )
+    TInt max( KMinZoomFactor );
+    const TInt error( iMedia.GetMaxZoomStep( max ) );
+    max = ( error ? KErrNotFound : max );
+    __VTPRINTEXITR( "CVtUiZoomPopup.MaxZoomStep %d", max )
+    return max;
+    }
+    
+// ---------------------------------------------------------------------------
+// CVtUiZoomPopup::ScaleAndSetZoomFactorL
+// ---------------------------------------------------------------------------
+//
+void CVtUiZoomPopup::ScaleAndSetZoomFactorL( TInt aValue )
+    {
+       __VTPRINTENTER( "CVtUiZoomPopup.ScaleAndSetZoomFactorL" )
+    const TInt value = aValue * MaxZoomStep() / 10; // 10 vakioksi count + 1 ei yhtä
+    iFeatureManager.AppUi().SetZoomFactorL( value );  
+     __VTPRINTEXITR( "CVtUiZoomPopup.ScaleAndSetZoomFactorL %d", value )
+    }
+