--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/meetingrequest/mrservices/inc/cesmrrecurrenceinfohandler.h Wed Sep 01 12:28:57 2010 +0100
@@ -0,0 +1,233 @@
+/*
+* Copyright (c) 2007-2009 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: ESMR service policy checker
+*
+*/
+
+
+#ifndef CESMRRECURRENCEINFOHANDLER_H
+#define CESMRRECURRENCEINFOHANDLER_H
+
+#include <e32base.h>
+//<cmail>
+#include "esmrdef.h"
+//</cmail>
+#include <caltime.h>
+#include <calcommon.h>
+
+class CCalEntry;
+class TCalRRule;
+class MESMRCalDbMgr;
+
+/**
+ * CESMRRecurrenceInfoHandler is responsible for handling recurrence related
+ * issues.
+ *
+ * @lib esmrservices.lib
+ */
+NONSHARABLE_CLASS(CESMRRecurrenceInfoHandler) :
+ public CBase
+ {
+public: // Construction and destruction
+ /**
+ * Two-phased constructor. Creates and initializes
+ * CESMRRecurrenceInfoHandler object. Ownership transferred to caller.
+ *
+ * @param aEntry Reference to calendar entry.
+ * @param aCalDb Reference to caldb manager
+ * @return Pointer to esmr recurrence handler object.
+ */
+ IMPORT_C static CESMRRecurrenceInfoHandler* NewL(
+ CCalEntry& aEntry );
+
+ /**
+ * Two-phased constructor. Creates and initializes
+ * CESMRRecurrenceInfoHandler object. Ownership transferred to caller.
+ * Created object is left to cleanup stack.
+ *
+ * @param aEntry Reference to calendar entry.
+ * @param aCalDb Pointer to caldb manager. Ownership not transferred.
+ * @return Pointer to esmr recurrence handler object.
+ */
+ IMPORT_C static CESMRRecurrenceInfoHandler* NewL(
+ CCalEntry& aEntry,
+ MESMRCalDbMgr* aCalDb );
+
+ /**
+ * Two-phased constructor. Creates and initializes
+ * CESMRRecurrenceInfoHandler object. Ownership transferred to caller.
+ *
+ * @param aEntry Reference to calendar entry.
+ * @param aCalDb Reference to caldb manager
+ * @return Pointer to esmr recurrence handler object.
+ */
+ IMPORT_C static CESMRRecurrenceInfoHandler* NewLC(
+ CCalEntry& aEntry );
+
+ /**
+ * Two-phased constructor. Creates and initializes
+ * CESMRRecurrenceInfoHandler object. Ownership transferred to caller.
+ * Created object is left to cleanup stack.
+ *
+ * @param aEntry Reference to calendar entry.
+ * @param aCalDb Reference to caldb manager
+ * @return Pointer to esmr recurrence handler object.
+ */
+ IMPORT_C static CESMRRecurrenceInfoHandler* NewLC(
+ CCalEntry& aEntry,
+ MESMRCalDbMgr* aCalDb );
+
+ /**
+ * C++ Destructor.
+ */
+ IMPORT_C ~CESMRRecurrenceInfoHandler();
+
+public: // Interface
+
+ /**
+ * Sets recurrence to ES MR entry. If until time is not set
+ * (i.e, it is null time), then until time is implementation
+ * dependent.
+ *
+ * When recurrence is set to ERecurrenceNot, then aUntil parameter
+ * is ignored.
+ *
+ * @param aRecurrece Recurrece value.
+ * @param aUntil Recurrence valid until in UTC format.
+ */
+ IMPORT_C void SetRecurrenceL(
+ TESMRRecurrenceValue aRecurrence,
+ TTime aUntil );
+
+ /**
+ * Fetches entry's recurrence value.
+ *
+ * @param aRecurrence On return contains entry's recurrence information
+ * @param aUntil On return contains time in UTC until recurrence is valid.
+ */
+ IMPORT_C void GetRecurrenceL(
+ TESMRRecurrenceValue& aRecurrence,
+ TTime& aUntil) const;
+
+ /**
+ * Removes instance from series.
+ * @param aInstanceTime Instance to be removed
+ */
+ IMPORT_C void RemoveInstanceL(
+ TCalTime aInstanceTime );
+
+ /**
+ * Removes calendar instance from entry.
+ * @param aNewInstanceTime New instance time
+ * @param aOrginalInstanceTime Orginal instance time
+ */
+ IMPORT_C void AddExceptionL(
+ TCalTime aNewInstanceTime,
+ TCalTime aOrginalInstanceTime );
+
+ /**
+ * Copies recurrence information to entry given as parameter.
+ * @param aDestination Reference to destination calendar entry
+ */
+ IMPORT_C void CopyRecurrenceInformationToL(
+ CCalEntry& aDestination );
+
+ /**
+ * Copies recurrence information from entry given as parameter.
+ * @param aSource Reference to source calendar entry
+ */
+ IMPORT_C void CopyRecurrenceInformationFromL(
+ const CCalEntry& aSource );
+
+ /**
+ * Gets first instances start and end time.
+ * @param aStart Reference to start time.
+ * @param aEnd Reference to end time.
+ */
+ IMPORT_C void GetFirstInstanceTimeL(
+ TCalTime& aStart,
+ TCalTime& aEnd );
+
+ /**
+ * Gets the start and end times of the previous instance.
+ * @param aStart Reference to start time.
+ * @param aEnd Reference to end time.
+ */
+ IMPORT_C void GetPreviousInstanceTimeL( TCalTime& aPreviousStartTime,
+ TCalTime& aPreviousEndTime,
+ TTime aInstanceDateTime );
+
+ /**
+ * Gets the start and end times of the next instance.
+ * @param aStart Reference to start time.
+ * @param aEnd Reference to end time.
+ */
+ IMPORT_C void GetNextInstanceTimeL( TCalTime& aNextStartTime,
+ TCalTime& aNextEndTime,
+ TTime aInstanceDateTime );
+
+private: // Implementation
+ CESMRRecurrenceInfoHandler(
+ CCalEntry& aEntry,
+ MESMRCalDbMgr* aCalDb );
+ void ConstructL();
+
+ void CalculateRecurrenceUntilDateL(
+ TESMRRecurrenceValue aRecurrenceType,
+ TTime& aUntil,
+ TCalRRule& aRule,
+ const CCalEntry& aEntry ) const;
+
+ void HandleDailyRecurrenceL(
+ TESMRRecurrenceValue& aRecurrenceValue,
+ TCalRRule& aRule ) const;
+
+ void HandleWeeklyRecurrenceL(
+ TESMRRecurrenceValue& aRecurrenceValue,
+ TCalRRule& aRule ) const;
+
+ void HandleMonthlyRecurrenceL(
+ TESMRRecurrenceValue& aRecurrenceValue,
+ TCalRRule& aRule ) const;
+
+ void HandleYearlyRecurrenceL(
+ TESMRRecurrenceValue& aRecurrenceValue,
+ TCalRRule& aRule ) const;
+
+ TBool NeedToSetRecurrenceL(
+ TESMRRecurrenceValue aRecurrence,
+ TTime aUntil ) const;
+
+ TTime GetPreviousInstanceForRepeatOtherL(
+ CCalEntry& aEntry,
+ const CalCommon::TCalTimeRange& timeRange );
+
+ TTime GetNextInstanceForRepeatOtherL(
+ CCalEntry& aEntry,
+ const CalCommon::TCalTimeRange& timeRange );
+
+ TESMRRecurrenceValue RepeatIndexL( const CCalEntry& aEntry );
+
+
+
+private:
+ /// Ref: Reference to meeting request entry
+ CCalEntry& iEntry;
+ /// Ref: Reference to caldb manager
+ MESMRCalDbMgr* iCalDb;
+ };
+
+#endif // CESMRRECURRENCEINFOHANDLER_H
+
+// EOF