diff -r fb3763350a08 -r 4d54b72983ae idlehomescreen/xmluirendering/renderingplugins/xnanimationfactory/src/xnanimationadapter.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/xmluirendering/renderingplugins/xnanimationfactory/src/xnanimationadapter.cpp Tue Jan 26 11:48:23 2010 +0200 @@ -0,0 +1,228 @@ +/* +* Copyright (c) 2002-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: Xuikon Bitmap Plugin. +* +*/ +#include +#include +#include +#include +#include "xnnodepluginif.h" +#include "xndomproperty.h" +#include "xnproperty.h" +#include "xncontroladapter.h" + +#include "xnanimationadapter.h" + +const TInt KPeriodicTimerInterval5Sec(100000); // 0.1 sec +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CXnAnimationAdapter::NewL +// Symbian static 1st phase constructor +// ----------------------------------------------------------------------------- +// +CXnAnimationAdapter* CXnAnimationAdapter::NewL(CXnNodePluginIf& aNode) + { + CXnAnimationAdapter* self = new( ELeave ) CXnAnimationAdapter( aNode ); + + CleanupStack::PushL( self ); + self->ConstructL( aNode ); + CleanupStack::Pop(); + + return self; + } + +// ----------------------------------------------------------------------------- +// CXnAnimationAdapter::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CXnAnimationAdapter::ConstructL(CXnNodePluginIf& aNode) + { + CXnControlAdapter::ConstructL( aNode ); + iSkinId = KAknsIIDNone; + iAnimationSarted = EFalse; + } + +// ----------------------------------------------------------------------------- +// CXnAnimationAdapter::CXnAnimationAdapter +// C++ default constructor +// ----------------------------------------------------------------------------- +// +CXnAnimationAdapter::CXnAnimationAdapter(CXnNodePluginIf& aNode) : iNode( aNode ) + { + } + +// ----------------------------------------------------------------------------- +// CXnAnimationAdapter::~CXnAnimationAdapter +// C++ destructor +// ----------------------------------------------------------------------------- +// +CXnAnimationAdapter::~CXnAnimationAdapter() + { + if (iPeriodicTimer) + { + iPeriodicTimer->Cancel(); + delete iPeriodicTimer; + iPeriodicTimer = NULL; + } + } + + +// ----------------------------------------------------------------------------- +// CXnAnimationAdapter::Draw +// ----------------------------------------------------------------------------- +// +void CXnAnimationAdapter::Draw(const TRect& aRect) const + { + CXnControlAdapter::Draw( aRect ); + AknsDrawUtils::DrawCachedImage( AknsUtils::SkinInstance(), + SystemGc(), aRect, iSkinId ); + } + +// ----------------------------------------------------------------------------- +// CXnAnimationAdapter::HandlePropertyChangeL +// ----------------------------------------------------------------------------- +// +void CXnAnimationAdapter::DoHandlePropertyChangeL( CXnProperty* aProperty ) + { + if( aProperty ) + { + const TDesC8& name( aProperty->Property()->Name( ) ); + + if( name == XnPropertyNames::style::common::KDisplay ) + { + const TDesC8& display( aProperty->StringValue() ); + + if( display == XnPropertyNames::style::common::display::KBlock ) + { + iDisplay = ETrue; + StartAnimation(); + } + else + { + iDisplay = EFalse; + StopAnimation(); + } + } + } + } + +// ----------------------------------------------------------------------------- +// CXnNewstickerAdapter::MakeVisible() +// ----------------------------------------------------------------------------- +// +void CXnAnimationAdapter::MakeVisible( TBool aVisible ) + { + if( aVisible ) + { + StartAnimation(); + } + else + { + StopAnimation(); + } + CCoeControl::MakeVisible( aVisible ); + } + +// ----------------------------------------------------------------------------- +// CXnAnimationAdapter::Update +// ----------------------------------------------------------------------------- +// +void CXnAnimationAdapter::Update() + { + if (iAnimationSarted ) + { + switch(iSkinId.iMinor ) + { + case EAknsMinorGenericQgnHomeRefreshing1: + { + iSkinId.Set(KAknsIIDQgnHomeRefreshing2); + } + break; + case EAknsMinorGenericQgnHomeRefreshing2: + { + iSkinId.Set(KAknsIIDQgnHomeRefreshing3); + } + break; + case EAknsMinorGenericQgnHomeRefreshing3: + { + iSkinId.Set(KAknsIIDQgnHomeRefreshing4); + } + break; + case EAknsMinorGenericQgnHomeRefreshing4: + { + iSkinId.Set(KAknsIIDQgnHomeRefreshing1); + } + break; + default : + break; + }; + DrawNow(); + } + } + +// ---------------------------------------------------------------------------- +// CXnAnimationAdapter::PeriodicTimerCallBack(TAny* aAny) +// The call back function. +// ---------------------------------------------------------------------------- +// +TInt CXnAnimationAdapter::TimerCallBack(TAny* aAny) + { + CXnAnimationAdapter* self = static_cast (aAny); + + // Update widget every 5 seconds + self->Update(); + + return KErrNone; // Return value ignored by CPeriodic + } + +// ---------------------------------------------------------------------------- +// CXnAnimationAdapter::StartAnimation() +// ---------------------------------------------------------------------------- +// +void CXnAnimationAdapter::StartAnimation() + { + if ( !iAnimationSarted && iDisplay ) + { + TRAPD(err, iPeriodicTimer = CPeriodic::NewL(CActive::EPriorityIdle) ); + if ( err == KErrNone ) + { + iPeriodicTimer->Start( KPeriodicTimerInterval5Sec, + KPeriodicTimerInterval5Sec, TCallBack( TimerCallBack, this ) ); + iSkinId = KAknsIIDQgnHomeRefreshing1; + iAnimationSarted = ETrue; + } + } + } + +// ---------------------------------------------------------------------------- +// CXnAnimationAdapter::StopAnimation() +// ---------------------------------------------------------------------------- +// +void CXnAnimationAdapter::StopAnimation() + { + if ( iAnimationSarted ) + { + iPeriodicTimer->Cancel(); + delete iPeriodicTimer; + iPeriodicTimer = NULL; + iSkinId = KAknsIIDNone; + iAnimationSarted = EFalse; + } + } + +// End of File +