--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/emailservices/emailframework/commonlib/inc/mmrrecurrencerule.h Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,239 @@
+/*
+* Copyright (c) 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: MR organizer definition
+*
+*/
+
+
+#ifndef M_MRRECURRENCERULE_H
+#define M_MRRECURRENCERULE_H
+
+#include <e32base.h>
+//#include <mrinfodef.h>
+
+/**
+ * MRRecurrenceRule defines meeting request recurrence rule.
+ */
+class MRRecurrenceRule
+ {
+public:
+ enum TMRRecurrenceType
+ {
+ /** The type has not yet been defined */
+ EMRRecurrenceInvalid,
+ /** Rule which repeats based on a number of days. */
+ EMRRecurrenceDaily,
+ /** Rule which repeats based on a number of weeks */
+ EMRRecurrenceWeekly,
+ /** Rule which repeats based on a number of months */
+ EMRRecurrenceMonthly,
+ EMRRecurrenceMonthlyByDay,
+ /** Rule which repeats based on a number of years */
+ EMRRecurrenceYearly,
+ EMRRecurrenceYearlyByDay
+ };
+
+ /** Definition for recurrent day */
+ enum TMRRecurrentDay
+ {
+ EMRRecurrenceMonday,
+ EMRRecurrenceTuesday,
+ EMRRecurrenceWednesday,
+ EMRRecurrenceThursday,
+ EMRRecurrenceFriday,
+ EMRRecurrenceSaturday,
+ EMRRecurrenceSunday
+ };
+
+ /** Definition for recurrent week */
+ enum TMRRecurrenceWeek
+ {
+ EMRRecurrenceLastWeekOfMonth = -1,
+ EMRRecurrenceFirstWeekOfMonth = 1,
+ EMRRecurrenceSecondWeekOfMonth = 2,
+ EMRRecurrenceThirdWeekOfMonth = 3,
+ EMRRecurrenceFourthWeekOfMonth = 4,
+ };
+
+ /** Definition for recurrence months */
+ enum TMRRecurrenceMonth
+ {
+ EMRRecurrenceJanuary = 1,
+ EMRRecurrenceFebryary,
+ EMRRecurrenceMarch,
+ EMRRecurrenceApril,
+ EMRRecurrenceMay,
+ EMRRecurrenceJune,
+ EMRRecurrenceJuly,
+ EMRRecurrenceAugust,
+ EMRRecurrenceSeptember,
+ EMRRecurrenceOctober,
+ EMRRecurrenceNovember,
+ EMRRecurrenceDecember
+ };
+
+ /**
+ * Definition to represent a weekday within a month.
+ *
+ * Valid values of iWeekInMonth are defined in enumeration
+ * TMRRecurrenceWeek. Valid values for iDayOfWeek are defined in
+ * enumeration TMRRecurrentDay.
+ *
+ * Example 1: The 3rd Wednesday would have iDay = EMRRecurrenceWednesday
+ * and iWeekInMonth = EMRRecurrenceThirdWeekOfMonth.
+ *
+ * Example 2: The last Sunday would have iDay = EMRRecurrenceSunday and
+ * iWeekInMonth = EMRRecurrenceLastWeekOfMonth.
+ */
+ struct TRecurrentDaysofMonth
+ {
+ TMRRecurrenceWeek iWeekOfMonth;
+ TMRRecurrentDay iDayOfWeek;
+ };
+
+public: // Destruction
+
+ /**
+ * Virtual destructor.
+ */
+ virtual ~MRRecurrenceRule() { }
+
+public: // Interface
+
+ /**
+ * Sets recurrence type. Calling this method will clear the
+ * previously set recurrence rules.
+ * @param aType Recurrence rule type.
+ * @exception System wide error code.
+ */
+ virtual void SetRecurrenceTypeL( TMRRecurrenceType aType ) = 0;
+
+ /**
+ * Fetches recurrence type.
+ * @return recurrence type.
+ */
+ virtual TMRRecurrenceType Type() const = 0;
+
+ /**
+ * Sets the recurrence start time.
+ * @param aStartTime Recurrence start time as utc.
+ * @return System wide error code.
+ */
+ virtual void SetRecurrenceStartTimeL( TTime aStartTime ) = 0;
+
+ /**
+ * Fetches the recurrence start time.
+ * Time information is returned in utc.
+ * @return recurrence start time as utc.
+ */
+ virtual TTime RecurrenceStartTime() const = 0;
+
+ /**
+ * Sets the recurrence until time.
+ * @param aStartTime Recurrence until time in utc.
+ * @return System wide error code.
+ */
+ virtual void SetRecurrenceUntilL( TTime aStartTime ) = 0;
+
+ /**
+ * Fetches the date on which this repeat rule finishes.
+ * Time information is returned in utc.
+ * @return The end time in utc.
+ */
+ virtual TTime RecurrentUntil() const = 0;
+
+ /**
+ * Sets recurrent rule interval.
+ * @param aInterval Recurrent rule interval.
+ * @exception Normal system wide error code.
+ */
+ virtual void SetRecurrentInterval( TInt aInterval ) = 0;
+
+ /**
+ * Fetches the recurrent interval.
+ * Interval is a number of days for a daily repeat, a number of weeks for
+ * a weekly repeat, etc.
+ * @return recurrent interval.
+ */
+ virtual TInt RecurrentInterval() const = 0;
+
+ /**
+ * Sets recurrent count.
+ * @param aCount
+ * @exception Normal system wide error code.
+ */
+ virtual void SetRecurrentCountL( TInt aCount ) = 0;
+
+ /**
+ * Fetches the number of recurrences.
+ * @return Number of recurreces.
+ */
+ virtual TUint RecurrentCount() const = 0;
+
+ /**
+ * Sets the all weekdays on which this rule is repeated.
+ * Calling this method has no effect if recurrence rule type is not
+ * weekly.
+ * @param aDays Recurrence rule weekly days.
+ * @exception Normal system wide error code.
+ */
+ virtual void SetRecurrentWeekDaysL( RArray<TMRRecurrentDay>& aDays ) = 0;
+
+ /**
+ * Fetches all weekdays on which this rule is repeated.
+ * The returned array is empty if this is not a weekly recurrence.
+ * @return Recurrent weekly days.
+ */
+ virtual const RArray<TMRRecurrentDay>& RecurrentWeekDays() const = 0;
+
+ /**
+ * Sets the days in the month on which this rule is repeated.
+ * Calling this method has no effect if recurrence rule type is not
+ * monthly or yearly.
+ * @param aDays Days in the month on which this rule is repeated.
+ * @exception Normal system wide error code.
+ */
+ virtual void SetRecurrentMonthDaysL( RArray<TInt>& aDays ) = 0;
+
+ /**
+ * Fetches all days in the month on which this rule is repeated.
+ * The returned array is empty if this is not a monthly or yearly recurrence.
+ * @return Days in the month on which this rule is repeated.
+ */
+ virtual const RArray<TInt>& RecurrentMonthDays() const = 0;
+
+ virtual void SetRecurrentDaysofMonthL( RArray<TRecurrentDaysofMonth>& aDays ) = 0;
+
+ virtual const RArray<TRecurrentDaysofMonth>& RecurrentDaysofMonth() const = 0;
+
+ /**
+ * Sets the months of the year for this repeat rule.
+ * Calling this method has no effect if recurrence rule type is not
+ * yearly.
+ * @param aMonths Months of the year for this repeat rule.
+ * @exception Normal system wide error code.
+ */
+ virtual void SetRecurrentMonthsL( RArray<TMRRecurrenceMonth>& aMonths ) = 0;
+
+ /**
+ * Fetches the months of the year for this repeat rule.
+ * This function will do nothing if this is not a yearly repeat rule.
+ * @return Months of the year for this repeat rule.
+ */
+ virtual const RArray<TMRRecurrenceMonth>& RecurrentMonths() const = 0;
+ };
+
+
+#endif // M_MRRECURRENCERULE_H
+