diff -r 8e7494275d3a -r 4f0867e42d62 omads/omadsappui/AspSyncUtil/inc/AspSchedule.h --- /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 +#include // for RSyncMLSession +#include + +#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 iList; + + // long buffer for string handling + TBuf 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