diff -r 5f8e5adbbed9 -r 29cda98b007e engine/src/FeedTimer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/engine/src/FeedTimer.cpp Thu Feb 25 14:29:19 2010 +0000 @@ -0,0 +1,100 @@ +/* +* Copyright (c) 2007-2010 Sebastian Brannstrom, Lars Persson, EmbedDev AB +* +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: +* EmbedDev AB - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include "FeedTimer.h" +#include "FeedEngine.h" + +CFeedTimer::CFeedTimer(CFeedEngine *aFeedEngine) : CTimer(EPriorityIdle), iFeedEngine(aFeedEngine) + { + CActiveScheduler::Add(this); + } + +CFeedTimer::~CFeedTimer() + { + } + +void CFeedTimer::ConstructL() + { + CTimer::ConstructL(); + } + +void CFeedTimer::RunL() + { + DP("CFeedTimer::RunL"); + + // We need to trap this, otherwise we will not reschedule the timer + TRAP_IGNORE(iFeedEngine->UpdateAllFeedsL(ETrue)); + + // run again + RunPeriodically(); + } + +void CFeedTimer::SetPeriod(TInt aPeriodMinutes) + { + DP1("Setting sync period to %d", aPeriodMinutes); + iPeriodMinutes = aPeriodMinutes; + } + +void CFeedTimer::SetSyncTime(TTime aTime) + { + TTime time; + time.HomeTime(); + + DP5("Now is %4d-%02d-%02d, %02d:%02d", time.DateTime().Year(), time.DateTime().Month()+1, time.DateTime().Day()+1, time.DateTime().Hour(), time.DateTime().Minute()); + + TInt hour = aTime.DateTime().Hour(); + TInt minute = aTime.DateTime().Minute(); + + + TDateTime dTime; + + dTime.Set(time.DateTime().Year(), time.DateTime().Month(), + time.DateTime().Day(),aTime.DateTime().Hour(), + aTime.DateTime().Minute(), 0, 0); + + TTimeIntervalMinutes tmi = 0; + + // if this time already passed, add one day + if (time.DateTime().Hour() > hour || time.DateTime().Hour() == hour && time.DateTime().Minute() > minute) + { + DP("Adding one day"); + tmi = 60*24; + } + + TTime atTime(dTime); + atTime = atTime + tmi; + DP5("Setting sync timer to %4d-%02d-%02d, %02d:%02d", atTime.DateTime().Year(), atTime.DateTime().Month()+1, atTime.DateTime().Day()+1, atTime.DateTime().Hour(), atTime.DateTime().Minute()); + + // Activate the timer + At(atTime); + } + + +void CFeedTimer::RunPeriodically() + { + DP1("RunPeriodically; thePeriod=%d", iPeriodMinutes); + TTime time; + time.UniversalTime(); + + TTimeIntervalMinutes tmi; + tmi = iPeriodMinutes; + time = time + tmi; + DP("Running timer"); + + AtUTC(time); + }