diff -r 000000000000 -r 05e9090e2422 skins/AknSkins/srvsrc/aknssrvwallpapertimer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/skins/AknSkins/srvsrc/aknssrvwallpapertimer.cpp Thu Dec 17 09:14:12 2009 +0200 @@ -0,0 +1,157 @@ +/* +* Copyright (c) 2007-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: Slide set wallpaper timer. +* +*/ + + +#include "aknssrvwallpapertimer.h" + +// ======== MEMBER FUNCTIONS ======== +// --------------------------------------------------------------------------- +// Constructor. +// --------------------------------------------------------------------------- +// +CAknsSrvWallpaperTimer* CAknsSrvWallpaperTimer::NewL( + MAknsSrvWallpaperListener* aListener ) + { + CAknsSrvWallpaperTimer* self = + new (ELeave)CAknsSrvWallpaperTimer( aListener ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// Handles an active object's request completion event. +// --------------------------------------------------------------------------- +// +void CAknsSrvWallpaperTimer::RunL() + { + if ( iStatus.Int() == KErrAbort && !iCanceled ) + { + TTime now; + now.HomeTime(); + TTimeIntervalSeconds seconds; + now.SecondsFrom( iPreviousTime, seconds ); + if ( seconds.Int() < iInterval ) + { + IssueRequest( iInterval-seconds.Int() ); + return; + } + } + + iListener->WallpaperTimerTimeoutL(); + if ( !iCanceled ) + { + IssueRequest(); + } + } + +// --------------------------------------------------------------------------- +// Cancels request. +// --------------------------------------------------------------------------- +// +void CAknsSrvWallpaperTimer::DoCancel() + { + iCanceled = ETrue; + iTimer.Cancel(); + } + +// --------------------------------------------------------------------------- +// Issues a new request. +// --------------------------------------------------------------------------- +// +void CAknsSrvWallpaperTimer::IssueRequest( TInt aTempInterval ) + { + iCanceled = EFalse; + if ( !IsActive() ) + { + TTime now; + now.HomeTime(); + if ( aTempInterval ) + { + now += TTimeIntervalSeconds( aTempInterval ); + } + else + { + iPreviousTime = now; + now += TTimeIntervalSeconds( iInterval ); + } + iTimer.At( iStatus, now ); + SetActive(); + } + } + +// --------------------------------------------------------------------------- +// Destructor. +// --------------------------------------------------------------------------- +// +CAknsSrvWallpaperTimer::~CAknsSrvWallpaperTimer() + { + iTimer.Close(); + } + +// --------------------------------------------------------------------------- +// Second phase constructor. +// --------------------------------------------------------------------------- +// +void CAknsSrvWallpaperTimer::ConstructL() + { + User::LeaveIfError( iTimer.CreateLocal() ); + } + +// --------------------------------------------------------------------------- +// C++ constructor. +// --------------------------------------------------------------------------- +// +CAknsSrvWallpaperTimer::CAknsSrvWallpaperTimer( + MAknsSrvWallpaperListener* aListener ) : + CActive( CActive::EPriorityStandard ), + iListener( aListener ) + { + CActiveScheduler::Add( this ); + } + +// --------------------------------------------------------------------------- +// Returns the interval period of the timer. +// --------------------------------------------------------------------------- +// +TInt CAknsSrvWallpaperTimer::Interval() + { + return iInterval; + } + +// --------------------------------------------------------------------------- +// Start the timer. +// --------------------------------------------------------------------------- +// +void CAknsSrvWallpaperTimer::Start( TInt aInterval ) + { + Cancel(); + iInterval = aInterval; + IssueRequest(); + } + +// --------------------------------------------------------------------------- +// Stop the timer. +// --------------------------------------------------------------------------- +// +void CAknsSrvWallpaperTimer::Stop() + { + Cancel(); + } + +// End of file