vtuis/videotelui/src/features/toolbar/cvtuifixedtoolbar.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 27 Apr 2010 16:40:55 +0300
branchRCL_3
changeset 14 856ae1b15d98
parent 12 3e521e99f813
permissions -rw-r--r--
Revision: 201015 Kit: 201017

/*
* Copyright (c) 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:  Fixed toolbar UI feature implementation.
*
*/


// INCLUDE FILES

#include    "cvtuifixedtoolbar.h"
#include    "cvtuifeaturemanager.h"
#include    "mvtuicomponentmanager.h"
#include    "mvtuicommandmanager.h"
#include    "videotelui.hrh"
#include    "tvtuistates.h"
#include    "cvtuitoolbarcmdpolicy.h"
#include    "cvtuitoolbarskmodifier.h"
#include    "CVtUiAppUi.h"
#include    <videotelui.rsg>
#include    <cvtlogger.h>
#include    <akntoolbar.h>
#include    "tvtuistates.h"
#include    <layoutmetadata.cdl.h>

// -----------------------------------------------------------------------------
// CVtUiFixedToolbar::NewL
// -----------------------------------------------------------------------------
//
CVtUiFixedToolbar* CVtUiFixedToolbar::NewL( CVtUiFeatureManager&
     aFeatureManager )
    {
    __VTPRINTENTER( "FixedToolbar.NewL" )
    CVtUiFixedToolbar* self = new ( ELeave ) CVtUiFixedToolbar(
        aFeatureManager );
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop( self );
    __VTPRINTEXIT( "FixedToolbar.NewL" )
    return self;
    }

// -----------------------------------------------------------------------------
// CVtUiFixedToolbar::CVtUiFixedToolbar
// C++ constructor can NOT contain any code, that
// might leave.
// -----------------------------------------------------------------------------
//
CVtUiFixedToolbar::CVtUiFixedToolbar( CVtUiFeatureManager&
    aFeatureManager ) : CVtUiToolbarBase( aFeatureManager )
    {
    }

// -----------------------------------------------------------------------------
// CVtUiFixedToolbar::ConstructL
// Symbian 2nd phase constructor.
// -----------------------------------------------------------------------------
//
void CVtUiFixedToolbar::ConstructL()
    {
    __VTPRINTENTER( "FixedToolbar.ConstructL" )
    BaseConstructL();

    //create toolbar
    iToolbar = iFeatureManager.AppUi().CurrentFixedToolbar();

    // create and add items into the toolbar
    CreateToolbarButtonsL();

    // Dim all toolbar buttons until first refresh is called
    DimToolbarbuttons( ETrue );

    if ( !Layout_Meta_Data::IsLandscapeOrientation() )
        {
        MakeToolbarVisible( EFalse );
        }

    __VTPRINTEXIT( "FixedToolbar.ConstructL" )
    }

// -----------------------------------------------------------------------------
// CVtUiFixedToolbar::~CVtUiFixedToolbar
// Destructor.
// -----------------------------------------------------------------------------
//
CVtUiFixedToolbar::~CVtUiFixedToolbar()
    {
    __VTPRINTENTER( "FixedToolbar.~" )
    delete iIdle;
    __VTPRINTEXIT( "FixedToolbar.~" )
    }

// -----------------------------------------------------------------------------
// CVtUiFixedToolbar::CreateToolbarButtons
// -----------------------------------------------------------------------------
//
void CVtUiFixedToolbar::CreateToolbarButtonsL()
    {
    __VTPRINTENTER( "FixedToolbar.CreateToolbarButtons" )
    // Default buttons created in base clase
    CVtUiToolbarBase::CreateToolbarButtonsL();

    // toggle microphone
    CreateToolbarItemL( R_AVKONBUTTON_AUDIO_ROUTING_BUTTON,
        EVtUiCmdToolbarAudioRouting, iFeatureManager.AppUi() );


    __VTPRINTEXIT( "FixedToolbar.CreateToolbarButtons" )
    }

// -----------------------------------------------------------------------------
// CVtUiFixedToolbar::PopulateCmdsIdsL
// -----------------------------------------------------------------------------
//
void CVtUiFixedToolbar::PopulateCmdsIdsL()
    {
    __VTPRINTENTER( "FixedToolbar.PopulateCmdsIdsL" )
    // Default commands populated in base clase
    CVtUiToolbarBase::PopulateCmdsIdsL();

    CVtUiAppUi& appUi = iFeatureManager.AppUi();

    iCmdIds.AppendL( EVtUiCmdActivateBT );
    iCmdIds.AppendL( EVtUiCmdSwitchFromBTToIHF );
    iCmdIds.AppendL( EVtUiCmdActivateLoudspeaker );
    iCmdIds.AppendL( EVtUiCmdDeactivateLoudspeaker );

    __VTPRINTEXIT( "FixedToolbar.PopulateCmdsIdsL" )
    }

// -----------------------------------------------------------------------------
// CVtUiFixedToolbar::SetToolbarVisibilityAfterLayoutChangeL
// -----------------------------------------------------------------------------
//
void CVtUiFixedToolbar::SetToolbarVisibilityAfterLayoutChangeL( TBool aVisible )
    {
    // Portrait to landscape show tb
        __VTPRINTENTER( "FixedToolbar.SetToolbarVisibilityAfterLayoutChangeL" )
    if( aVisible )
        {
        __VTPRINT(DEBUG_GEN, "FixedToolbar.SetToolbarVisibilityAfterLayoutChangeL.1" )
        DimToolbarbuttons( ETrue );
        // Set flag
        iFeatureManager.UiStates().SetIsFixedToolbarVisible( ETrue );
        // set visible
        iFeatureManager.AppUi().CurrentFixedToolbar()
            ->SetToolbarVisibility( ETrue );
        // Set callback to dim toolbarbuttons
//        if ( !iIdle )
//            {
//            iIdle = CIdle::NewL( CActive::EPriorityIdle );
//            }
//        
//        if ( !iIdle->IsActive() )
//            {
//            iIdle->Start( TCallBack( &DoDimToolbarButtons, this ) );
//            }
        }
    // Landsacpe to portrait hide tb
    else
        {
        __VTPRINT(DEBUG_GEN, "FixedToolbar.SetToolbarVisibilityAfterLayoutChangeL.2" )
        DimToolbarbuttons( EFalse );
        iFeatureManager.AppUi().CurrentFixedToolbar()
            ->SetToolbarVisibility( EFalse );
         // Set flag
        iFeatureManager.UiStates().SetIsFixedToolbarVisible( EFalse );
        }
    __VTPRINTEXIT( "FixedToolbar.SetToolbarVisibilityAfterLayoutChangeL" )
    }

// -----------------------------------------------------------------------------
// CVtUiFixedToolbar::DimToolbarbuttons
// -----------------------------------------------------------------------------
//
void CVtUiFixedToolbar::DimToolbarbuttons( TBool aIsDimmed )
    {
    __VTPRINTENTER( "FixedToolbar.DimToolbarbuttons" )
    iToolbar->SetItemDimmed( EVtUiCmdToolbarToggleVideo, aIsDimmed, ETrue );
    iToolbar->SetItemDimmed( EVtUiCmdToolbarToggleMicrophone, aIsDimmed, ETrue );
    iToolbar->SetItemDimmed( EVtUiCmdToolbarAudioRouting, aIsDimmed, ETrue );
    __VTPRINTEXITR( "FixedToolbar.DimToolbarbuttons %d", aIsDimmed )
    }

// -----------------------------------------------------------------------------
// CVtUiFixedToolbar::MakeToolbarVisible
// -----------------------------------------------------------------------------
//
void CVtUiFixedToolbar::MakeToolbarVisible( const TBool aVisible )
    {
    __VTPRINTENTER( "FixedToolbar.MakeToolbarVisible" )
    iFeatureManager.AppUi().CurrentFixedToolbar()->
        SetToolbarVisibility( aVisible );
    iFeatureManager.UiStates().SetIsFixedToolbarVisible( aVisible );
    __VTPRINTEXITR( "FixedToolbar.MakeToolbarVisible %d", aVisible )
    }

// -----------------------------------------------------------------------------
// CVtUiFixedToolbar::DoShowToolbarL
// -----------------------------------------------------------------------------
//
TInt CVtUiFixedToolbar::DoShowToolbarL( TAny* aAny )
    {
    __VTPRINTENTER( "FixedToolbar.DoShowToolbarL" )
    CVtUiFixedToolbar* self = static_cast< CVtUiFixedToolbar* >( aAny );
    self->iFeatureManager.AppUi().CurrentFixedToolbar()
        ->SetToolbarVisibility( ETrue );
    __VTPRINTEXIT( "FixedToolbar.DoShowToolbarL" )
    return KErrNone;
    }

// -----------------------------------------------------------------------------
// CVtUiFixedToolbar::DoToolbarButton
// -----------------------------------------------------------------------------
//
TInt CVtUiFixedToolbar::DoDimToolbarButtons( TAny* aAny )
    {
    __VTPRINTENTER( "FixedToolbar.DoDimToolbarButtons" )
    CVtUiFixedToolbar* self = static_cast< CVtUiFixedToolbar* >( aAny );
    self->DimToolbarbuttons( ETrue );
    __VTPRINTEXIT( "FixedToolbar.DoDimToolbarButtons" )
    return EFalse;
    }

// -----------------------------------------------------------------------------
// CVtUiFixedToolbar::DoActivateL
// -----------------------------------------------------------------------------
//
void CVtUiFixedToolbar::DoActivateL()
    {
    __VTPRINTENTER( "FixedToolbar.DoActivateL" )
    if ( !iFeatureManager.UiStates().IsFixedToolbarVisible() &&
         !Layout_Meta_Data::IsLandscapeOrientation() )
        {
        // reset flag
        iFeatureManager.UiStates().SetIsFixedToolbarVisible( ETrue );
        // Show toolbar with delay in order to prevent overdrawing
        // witht other components.
        iAsyncCallback->Cancel();
        iAsyncCallback->Set( TCallBack( &DoShowToolbarL, this ) );
        iAsyncCallback->CallBack();
        }
    else
        {
        // Undim buttons
        __VTPRINT( DEBUG_GEN, "FixedToolbar.DoDeactivateL.DTB EFalse" )
        // toolbar might be unvisible, because condition in the contructor 
        // "if ( !Layout_Meta_Data::IsLandscapeOrientation() )"
        // will be evaluated ture eventhough the orientation is forced to be landsacepe
        // because it seems that the orientation is still portrait in the constructor phase
        MakeToolbarVisible( ETrue );
        DimToolbarbuttons( EFalse );
        }
    // Start blocking pointer events
    BlockPointerEvents( ETrue );
    // Base class
    CVtUiToolbarBase::DoActivateL();
    __VTPRINTEXIT( "FixedToolbar.DoActivateL" )
    }

// -----------------------------------------------------------------------------
// CVtUiFixedToolbar::DoDeactivateL
// -----------------------------------------------------------------------------
//
void CVtUiFixedToolbar::DoDeactivateL()
    {
    __VTPRINTENTER( "FixedToolbar.DoDeactivateL" )
    iAsyncCallback->Cancel();
    if ( !iFeatureManager.UiStates().IsFixedToolbarVisible() &&
         !Layout_Meta_Data::IsLandscapeOrientation() )
        {
        iFeatureManager.AppUi().CurrentFixedToolbar()
            ->SetToolbarVisibility( EFalse );
        __VTPRINT( DEBUG_GEN, "FixedToolbar.DoDeactivateL.Vs" )
        }
    else
        {
        // Dim all buttons
        __VTPRINT( DEBUG_GEN, "FixedToolbar.DoDeactivateL.DTB ETrue" )
        DimToolbarbuttons( ETrue );
        }
    // Stop blocking pointer events
    BlockPointerEvents( EFalse );
    // Base class
    CVtUiToolbarBase::DoDeactivateL();
    __VTPRINTEXIT( "FixedToolbar.DoDeactivateL" )
    }

//  End of File