--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/omads/omadsappui/AspSyncUtil/inc/AspAutoSyncHandler.h Mon Nov 23 14:46:41 2009 +0200
@@ -0,0 +1,245 @@
+/*
+* Copyright (c) 2005 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: Manages schedules using Symbian Task scheduler
+*
+*/
+
+
+#ifndef ASPAUTOSYNCHANDLER_H
+#define ASPAUTOSYNCHANDLER_H
+
+// INCLUDES
+#include <e32base.h>
+#include <SyncMLClient.h> // for RSyncMLSession
+#include <SyncMLObservers.h>
+#include <schtask.h>
+
+#include "AspDefines.h"
+#include "AspUtil.h"
+#include "AspSchedule.h"
+
+
+// CLASS DECLARATION
+
+/**
+* CAspAutoSyncHandler
+*
+*/
+NONSHARABLE_CLASS (CAspAutoSyncHandler) : public CBase,
+ public MSyncMLEventObserver,
+ public MSyncMLProgressObserver
+ {
+ public:
+ enum TAutoSyncError
+ {
+ EOtherSyncRunning = -100,
+ EIncorrectProfile = -101,
+ EIncorrectSchedule = -102
+ };
+
+ public:// Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ static CAspAutoSyncHandler* NewL();
+
+ /**
+ * Destructor.
+ */
+ virtual ~CAspAutoSyncHandler();
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CAspAutoSyncHandler();
+
+ /**
+ * By default Symbian OS constructor is private.
+ */
+ void ConstructL();
+
+
+ public:
+ void SynchronizeL(RFile& aTaskFile);
+
+ void DoSynchronizeL();
+
+ private:
+ void OpenSyncSessionL();
+ void CloseSyncSession();
+ TInt CheckMandatoryDataL(TInt aProfileId);
+ TBool IsRoamingL();
+ TBool IsRoaming();
+
+
+ private: // from MSyncMLEventObserver
+
+ void OnSyncMLSessionEvent(TEvent aEvent, TInt aIdentifier,
+ TInt aError, TInt aAdditionalData);
+
+ private: //from MSyncMLProgressObserver
+
+ void OnSyncMLSyncProgress(TStatus aStatus, TInt aInfo1, TInt aInfo2);
+ void OnSyncMLDataSyncModifications(TInt aTaskId,
+ const TSyncMLDataSyncModifications& aClientModifications,
+ const TSyncMLDataSyncModifications& aServerModifications);
+ void OnSyncMLSyncError(TErrorLevel aErrorLevel, TInt aError,
+ TInt aTaskId, TInt aInfo1, TInt aInfo2);
+
+
+
+ private:
+
+ // sync session
+ RSyncMLSession iSyncSession;
+
+ // sync job
+ RSyncMLDataSyncJob iSyncJob;
+
+ // is sync currently running
+ TBool iSyncRunning;
+
+ // sync error code
+ TInt iSyncError;
+
+ // is sync session open
+ TBool iSyncSessionOpen;
+
+ // for stopping code until sync is finished
+ CActiveSchedulerWait* iWait;
+
+ // for reading auto sync settings
+ CAspSchedule* iSchedule;
+ };
+
+
+/**
+* CAspSyncSchedule
+*
+*/
+NONSHARABLE_CLASS (CAspSyncSchedule) : public CBase
+ {
+
+
+ public:// Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ static CAspSyncSchedule* NewL();
+
+ /**
+ * Two-phased constructor.
+ */
+ static CAspSyncSchedule* NewLC();
+
+ /**
+ * Destructor.
+ */
+ virtual ~CAspSyncSchedule();
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CAspSyncSchedule();
+
+ /**
+ * By default Symbian OS constructor is private.
+ */
+ void ConstructL();
+
+ public:
+
+ /**
+ * Delete existing schedule.Called before creating a new schedule
+ */
+ void DeleteScheduleL(CAspSchedule* aAspSchedule);
+ void DoDeleteScheduleL(CAspSchedule* aAspSchedule);
+
+ /**
+ * Create a new schedule based on changed settings
+ */
+ void CreatePeakScheduleL(CAspSchedule* aAspSchedule);
+ void CreateOffPeakScheduleL(CAspSchedule* aAspSchedule);
+
+ /**
+ * Edit the schedule to start after 15 min/30 mins.This is needed as task scheduler does not support
+ * schedulling interval less than a hour
+ */
+
+ void EditPeakScheduleL(CAspSchedule* aAspSchedule);
+ void EditOffPeakScheduleL(CAspSchedule* aAspSchedule);
+
+ /**
+ * Post pone the scheduled sync in till next valid time
+ */
+
+ void UpdatePeakScheduleL(CAspSchedule* aAspSchedule);
+ void UpdateOffPeakScheduleL(CAspSchedule* aAspSchedule);
+
+ /**
+ * Enable schedules
+ */
+ void EnableSchedule(CAspSchedule* aAspSchedule);
+
+#ifdef _DEBUG
+ public:
+ void LogScheduleL(CAspSchedule* aAspSchedule);
+ TInt LogSchedule(CAspSchedule* aAspSchedule);
+ static void LogIntervalType(TScheduleEntryInfo2& aInfo, TDes& aText);
+ static void LogInterval(TScheduleEntryInfo2& aInfo, TDes& aText);
+ static void LogTsTime(TTsTime aTsTime, TDes& aText);
+ static void LogTaskInfo(TTaskInfo& aInfo, TDes& aText);
+#endif
+
+ public:
+
+ /**
+ * Get next sync time.Reads due time from task scheduler.
+ */
+ void GetPeakStartTimeL(CAspSchedule* aAspSchedule, TTime& aTime, TBool aHomeTime);
+ void GetOffPeakStartTimeL(CAspSchedule* aAspSchedule, TTime& aTime, TBool aHomeTime);
+
+ public:
+ TIntervalType IntervalType(TInt aInterval);
+ TTsTime StartTime(TInt aStartHour, TInt aInterval);
+ TInt Interval(TInt aInterval);
+
+
+ private:
+ //task scheduler server session
+ RScheduler iScheduler;
+
+
+ // schedule entry list
+ CArrayFixFlat<TScheduleEntryInfo2>* ipeakEntryList;
+ CArrayFixFlat<TScheduleEntryInfo2>* ioffPeakEntryList;
+
+ // schedule entry list
+ CArrayFixFlat<TTaskInfo>* ipeakTaskList;
+ CArrayFixFlat<TTaskInfo>* ioffPeakTaskList;
+ // long buffer for string handling
+ TBuf<KBufSize255> iBuf;
+ };
+
+
+
+#endif // ASPAUTOSYNCHANDLER_H
+
+// End of file
\ No newline at end of file