diff -r 000000000000 -r 2f259fa3e83a uifw/EikStd/coctlsrc/touchtoolbardata.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uifw/EikStd/coctlsrc/touchtoolbardata.cpp Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,152 @@ +/* +* 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: Utility class for passing data between touchpane and toolbar. +* +*/ + + +#include +#include +#include "touchtoolbardata.h" + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +TInt CTouchToolbarData::SetData( const CCoeControl* aControl, + TRect aDemarcationRect, + TBool aDemarcationRectSet ) + { + CTouchToolbarData* self = new CTouchToolbarData; + if ( !self ) + { + return KErrNoMemory; + } + self->iDemarcationRect = aDemarcationRect; + self->iDemarcationRectSet = aDemarcationRectSet; + self->iBetweenRegisterAndBegin = EFalse; + self->iSelectPressed = EFalse; + + // If there's already data stored for this key, remove and free it. + TInt key = reinterpret_cast( aControl ); + CTouchToolbarData* data = + reinterpret_cast( CAknTransitionUtils::GetData( key ) ); + if ( data ) + { + CAknTransitionUtils::RemoveObserver( data, 0xffffffff ); + CAknTransitionUtils::RemoveData( key ); + delete data; + } + + return CAknTransitionUtils::SetData( key, reinterpret_cast( self ) ); + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +CTouchToolbarData* CTouchToolbarData::GetData( const CCoeControl* aControl ) + { + return ( CTouchToolbarData* )CAknTransitionUtils::GetData( + reinterpret_cast( aControl ) ); + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +TRect& CTouchToolbarData::DemarcationRect() + { + return iDemarcationRect; + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +TBool CTouchToolbarData::DemarcationRectSet() const + { + return iDemarcationRectSet; + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +TBool CTouchToolbarData::BetweenRegisterAndBegin() const + { + return iBetweenRegisterAndBegin; + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +TBool CTouchToolbarData::SelectPressed() const + { + return iSelectPressed; + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +void CTouchToolbarData::SetBetweenRegisterAndBegin( TBool aBetweenRegisterAndBegin ) + { + iBetweenRegisterAndBegin = aBetweenRegisterAndBegin; + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +void CTouchToolbarData::SetSelectPressed( TBool aSelectPressed ) + { + iSelectPressed = aSelectPressed; + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +void CTouchToolbarData::SetFocusedItem( CCoeControl* aItem ) + { + iFocusedItem = aItem; + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +TInt CTouchToolbarData::AknTransitionCallback(TInt aEvent, TInt /* aState */, + const TDesC8* aParams) + { + if ( iFocusedItem ) + { + // Show tooltip + iFocusedItem->SetFocus( EFalse, ENoDrawNow ); + iFocusedItem->PrepareForFocusGainL(); + iFocusedItem->SetFocus( ETrue, EDrawNow ); + } + const CCoeControl* control = reinterpret_cast( aParams ); + TInt key = reinterpret_cast( aParams ); + + GfxTransEffect::Deregister( control ); + + CTouchToolbarData* data = + reinterpret_cast( CAknTransitionUtils::GetData( key ) ); + + CAknTransitionUtils::RemoveObserver( this, aEvent ); + CAknTransitionUtils::RemoveData( key ); + delete data; + + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +CTouchToolbarData::CTouchToolbarData() : iFocusedItem( NULL ) + { + }