--- /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);
+ }