omads/omadsappui/AspSyncUtil/inc/AspSchedule.h
branchRCL_3
changeset 52 4f0867e42d62
parent 0 dab8a81a92de
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/omads/omadsappui/AspSyncUtil/inc/AspSchedule.h	Wed Sep 01 12:30:02 2010 +0100
@@ -0,0 +1,412 @@
+/*
+* 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: Scheduled sync implementation and setting access 
+*
+*/
+
+
+#ifndef ASPSCHEDULE_H
+#define ASPSCHEDULE_H
+
+// INCLUDES
+#include <e32base.h>
+#include <SyncMLClient.h>    // for RSyncMLSession
+#include <SyncMLObservers.h>
+
+#include "AspDefines.h"
+#include "AspUtil.h"
+
+
+// CONSTANTS
+const TInt KDefaultStartHour = 12; // 12 noon
+const TInt KStartPeakHour = 8;
+const TInt KStartPeakMin = 00;
+const TInt KEndPeakHour = 17;
+const TInt KEndPeakMin = 00;
+_LIT(KAutoSyncProfileName, "AutoSync Profile");
+
+
+// FORWARD DECLARATIONS
+class CAspProfile;
+class CAspFilterItem;
+
+
+/**
+* CAspSchedule
+*  
+*/
+NONSHARABLE_CLASS (CAspSchedule) : public CBase
+    {
+    private:
+	enum TRepositoryKey
+		{
+	   // ERepositoryKeyInt = 1,
+	    ERepositoryKeyBin = 1
+		};
+		
+    public:
+		
+    enum TWeekdayFlags
+        {
+	    EFlagMonday      = 0x00000001,
+	    EFlagTuesday     = 0x00000002,
+	    EFlagWednesday   = 0x00000004,
+	    EFlagThursday    = 0x00000008,
+	    EFlagFriday      = 0x00000010,
+	    EFlagSaturday    = 0x00000020,
+	    EFlagSunday      = 0x00000040
+        };
+
+	enum TSyncInterval
+		{
+		EIntervalManual = 0,
+		EInterval15Mins,
+		EInterval30Mins,
+		EInterval1hour,
+		EInterval2hours,
+		EInterval4hours,
+		EInterval8hours,
+		EInterval12hours,
+		EManyTimesPerDay,
+		EInterval24hours,
+		EInterval2days,
+		EInterval4days,
+		EInterval7days,
+		EInterval14days,
+		EInterval30days
+		};
+	
+  
+	public:// Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        */
+        static CAspSchedule* NewL();
+        
+        /**
+        * Two-phased constructor.
+        */
+        static CAspSchedule* NewLC();
+
+        /**
+        * Destructor.
+        */
+        virtual ~CAspSchedule();
+    
+    private:
+
+        /**
+        * C++ default constructor.
+        */	
+        CAspSchedule();
+	
+        /**
+        * By default Symbian OS constructor is private.
+        */
+        void ConstructL();
+
+	public:
+
+		/**
+        *  auto sync error
+        */	
+	    TInt Error();
+	    void SetError(TInt aError);
+
+		/**
+        *  Profile selected for auto sync
+        */	
+	    TInt ProfileId();
+	    void SetProfileId(TInt aProfileId);
+
+		/**
+        *  week day selection 
+        */	
+	    TBool WeekdayEnabled(TInt aWeekday);
+	    void SetWeekdayEnabled(TInt aWeekday, TBool aEnabled);
+	    
+	    TBool RoamingAllowed();
+	    void SetRoamingAllowed(TBool aAllowed);
+	    
+	    void SelectedDayInfo(TInt& aDayCount, TInt& aWeekday);
+
+		/**
+        * Save all settings using a cenrep key
+        */	
+        void SaveL();
+
+		/**
+        * Auto sync content selection
+        */	
+		void SetContentEnabled(TInt aContent, TInt aEnabled);
+	    TBool ContentEnabled(TInt aContent);
+	    void ContentSelectionInfo(TInt& aContentCnt, TInt& aContent);
+
+		/**
+        * Auto sync interval
+        */	
+        void SetSyncFrequency(TInt aSchedule);
+		void SetSyncPeakSchedule(TInt aSchedule);
+		void SetSyncOffPeakSchedule(TInt aSchedule);
+		TInt SyncFrequency();
+		TInt SyncPeakSchedule();
+		TInt SyncOffPeakSchedule();
+
+		/**
+        * Peak time definition
+        */	
+		void SetStartPeakTime(TTime aStartTime);
+		void SetEndPeakTime(TTime aEndTime);
+		TTime StartPeakTime();
+		TTime EndPeakTime();
+
+		/**
+        * Auto sync enabled/disabled
+        */	
+		void SetDailySyncEnabled(TBool aSyncEnabled);
+		TBool DailySyncEnabled();
+		void SetPeakSyncEnabled(TBool aSyncEnabled);
+		TBool PeakSyncEnabled();
+		void SetOffPeakSyncEnabled(TBool aSyncEnabled);
+		TBool OffPeakSyncEnabled();
+
+		/**
+        * Sync time for intervals >= a day
+        */	
+		void SetAutoSyncScheduleTime(TTime aSchedule);
+		TTime AutoSyncScheduleTime();	
+
+		/**
+        * Schedule handle returned by task scheduler during schedule creation
+        */	
+		void SetPeakScheduleHandle(TInt aHandle);
+		TInt PeakScheduleHandle();
+		void SetOffPeakScheduleHandle(TInt aHandle);
+		TInt OffPeakScheduleHandle();
+
+		/**
+        * A hidden profile used for auto sync.Contents are set as the content selected in auto sync settings
+        *
+        */	
+
+		void CreateAutoSyncProfileL();
+		TInt AutoSyncProfileId();
+		void SetAutoSyncProfileId(TInt aProfileId);
+		void CopyAutoSyncContentsL();
+		void UpdateProfileSettingsL();
+		
+		/**
+        * Check validity of shedule based on current time and user defined peak time
+        *
+        */					
+		TInt IsValidPeakScheduleL();
+		TInt IsValidOffPeakScheduleL();
+
+		TBool IsValidNextPeakScheduleL();
+		TBool IsValidNextOffPeakScheduleL();
+
+		/**
+        * Post pone schedule until next valid time
+        */
+		void UpdatePeakScheduleL();
+		void UpdateOffPeakScheduleL();
+		TIntervalType IntervalType(TInt aInterval);
+
+		void EnableScheduleL();
+
+		/**
+        * Check if any valid mail box exists
+        */
+		TBool MailboxExistL();
+
+		/**
+        * Check mandatory settings for the selected profile
+        */
+		TInt CheckMandatoryDataL(TInt& count,TInt& firstItem);
+
+		/**
+        * Log view opened by clicking View Details link in auto sync error note
+        */
+		void ShowAutoSyncLogL();
+
+		/**
+        *SyncML sever version of selected profile
+        */
+		TInt ProtocolL();
+
+		/**
+        *Server Id modifications so that SAN selects correct profile
+        */
+		void UpdateServerIdL();
+
+		/**
+        *Check if atleast one valid content selected
+        */
+		TBool IsContentSelected();
+		
+		/**
+        *Check if auto sync is enabled
+        */
+		TBool IsAutoSyncEnabled();
+
+		/**
+        *Initialize contents
+        */
+		void InitializeContentsL();
+
+		
+		/**
+        *Check the validity of email selection.
+        */
+		void CheckEmailSelectionL();
+
+				
+    public:
+
+		/**
+        *Update the schedule settings with symbian task scheduler
+        */
+        void UpdateSyncScheduleL();
+        void UpdateSyncSchedule();
+        void GetStartTimeL(TTime& aTime, TBool aHomeTime);
+               
+      
+#ifdef _DEBUG
+		void LogSettings();
+#endif
+
+
+    public:
+   	    TBool CanSynchronizeL();
+		
+	private:
+	    void InitializeL();
+	
+	public:
+        static TTime UniversalStartTime(TInt& aStartHour);
+        static TTime LocalStartTime(TInt aStartHour);
+        
+	
+	private:
+	    void InternalizeL();
+		void DoInternalizeL();
+		void InternalizeL(RReadStream& aStream);
+		void ExternalizeL();
+		void ExternalizeL(RWriteStream& aStream);
+		void WriteRepositoryL(TInt aKey, const TDesC8& aValue);
+		void ReadRepositoryL(TInt aKey, TDes8& aValue);
+		void ResetRepositoryL();
+		
+	private:
+		TInt WeekdayFlag(TInt aWeekday);
+		TBool IsDaySelected(TTime aTime);
+	
+		void OpenSyncSessionL();
+		void CloseSyncSession();
+
+		
+#ifdef _DEBUG        
+	public:
+	    void LogScheduleL();
+	    void LogSyncDays();
+	    void LogSyncInterval();	
+
+
+    public:
+        static void PrintTimeL(TTime aTime);
+        void TestL();
+        void DoTestL();
+        void UpdateValuesL(TInt aCount);
+        CAspSchedule* CreateCopyLC();
+        void CompareValues(CAspSchedule* aSchedule);
+        void AssertEqual(TInt aValue1, TInt aValue2);
+#endif
+
+        	    
+		
+    private:
+   
+         // error code
+        TInt iError;
+
+		// profile id
+		TInt iProfileId;
+		
+		// selected days
+		TUint32 iWeekdayFlags;
+		
+		// start hour
+		TInt iStartHour;
+
+		// is roaming allowed
+		TBool iRoamingAllowed;
+		
+		// data provider id list
+		RArray<TInt> iList;
+		
+        // long buffer for string handling 
+		TBuf<KBufSize255> iBuf;
+		
+		// have settings changed
+		TBool iSettingChanged;
+
+		//content selection flags
+		TUint32 iContentFlags;
+		
+		TInt iStartPeakTimeHr;
+		TInt iStartPeakTimeMin;
+		TInt iEndPeakTimeHr;
+        TInt iEndPeakTimeMin;		
+
+		//peak interval
+		TInt iSyncPeakSchedule;
+
+		//off-peak interval
+		TInt iSyncOffPeakSchedule;
+
+		
+		TBool iPeakSyncEnabled;
+		TBool iOffPeakSyncEnabled;
+
+		//A new RSyncMLProfileBase profile is created for auto sync
+		//Selected Auto sync contents are set as the task items for this profile
+		//All the settings for this profie are copied from the profile selected by user.
+		
+		TInt iAutoSyncProfileId;
+		
+        //Sync time for once a day sync
+		TInt iAutoSyncScheduleTimeHr;
+		TInt iAutoSyncScheduleTimeMin;
+
+		//schedule handles.
+        TInt iPeakScheduleHandle;
+		TInt iOffPeakScheduleHandle;
+
+		// sync session
+		RSyncMLSession iSyncSession;
+
+		// is sync session open
+		TBool iSyncSessionOpen;
+
+		// Daily sync setting
+		TBool iDailySyncEnabled;
+		TInt iSyncFrequency;
+
+		
+    };
+
+#endif  // ASPSCHEDULE_H
+
+// End of file
\ No newline at end of file