XTPCalendarRecurrencePattern.h
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:41k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // XTPCalendarRecurrencePattern.h: interface for the CXTPCalendarRecurrencePattern class.
  2. //
  3. // This file is a part of the XTREME CALENDAR MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. //{{AFX_CODEJOCK_PRIVATE
  21. #if !defined(_XTPCALENDARRECURRENCEPATTERN_H__)
  22. #define _XTPCALENDARRECURRENCEPATTERN_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. /////////////////////////////////////////////////////////////////////////////
  28. #include "XTPCalendarDefines.h"
  29. #include "XTPCalendarEvent.h"
  30. #include "XTPCalendarPtrs.h"
  31. #include "XTPCalendarEvents.h"
  32. class CXTPCalendarData;
  33. class CXTPPropExchange;
  34. class CXTPCalendarCustomProperties;
  35. //===========================================================================
  36. // Summary:
  37. //     This structure describes a reminder for an occurrence of a
  38. //     recurrence event.
  39. //===========================================================================
  40. class _XTP_EXT_CLASS CXTPCalendarReminderForOccurrence
  41. {
  42. public:
  43. //-----------------------------------------------------------------------
  44. // Summary:
  45. //     Default object constructor.
  46. // See Also: ~CXTPCalendarReminderForOccurrence()
  47. //-----------------------------------------------------------------------
  48. CXTPCalendarReminderForOccurrence();
  49. //-----------------------------------------------------------------------
  50. // Summary:
  51. //     Default class destructor.
  52. // Remarks:
  53. //     Handles member items deallocation.
  54. //-----------------------------------------------------------------------
  55. virtual ~CXTPCalendarReminderForOccurrence();
  56. DATE    m_dtOccurrenceStartTime; // Start time of the described occurrence.
  57. DATE    m_dtOccurrenceEndTime;   // End time of the described occurrence.
  58. int     m_nbIsReminder;          // XTPEnumCalendarReminderForOccurrenceParameters
  59. DATE    m_dtNextReminderTime_Snoozed; // Date/time of the next reminder event.
  60. //-----------------------------------------------------------------------
  61. // Summary:
  62. //      Copy operator.
  63. // Parameters:
  64. //      rSrc - Pointer to a source data object.
  65. // Returns:
  66. //      A Constant reference to updated object
  67. // See Also:
  68. //      CXTPCalendarReminderForOccurrence
  69. //-----------------------------------------------------------------------
  70. const CXTPCalendarReminderForOccurrence& operator=(const CXTPCalendarReminderForOccurrence& rSrc);
  71. };
  72. //===========================================================================
  73. // Summary:
  74. //     This class implements a collection of CXTPCalendarReminderForOccurrence
  75. //     objects as well as some common operations on it.
  76. //===========================================================================
  77. class CXTPCalendarReminderForOccurrenceArray : public
  78. CArray<CXTPCalendarReminderForOccurrence, const CXTPCalendarReminderForOccurrence&>
  79. {
  80. public:
  81. //-----------------------------------------------------------------------
  82. // Summary:
  83. //     Default collection constructor.
  84. // See Also: ~CXTPCalendarReminderForOccurrenceArray()
  85. //-----------------------------------------------------------------------
  86. CXTPCalendarReminderForOccurrenceArray();
  87. //-----------------------------------------------------------------------
  88. // Summary:
  89. //     Default collection destructor.
  90. // Remarks:
  91. //     Handles member item deallocation. Decreases reference of all
  92. //     stored CXTPCalendarReminderForOccurrence objects.
  93. // See Also: RemoveAll()
  94. //-----------------------------------------------------------------------
  95. virtual ~CXTPCalendarReminderForOccurrenceArray();
  96. //-----------------------------------------------------------------------
  97. // Summary:
  98. //     Finds an index of the occurrence event.
  99. // Parameters:
  100. //     pOccEvent - Pointer to the occurrence event object.
  101. // Returns:
  102. //     An index of the occurrence event object in the array if found;
  103. //     or -1 if not found.
  104. // See Also: Find()
  105. //-----------------------------------------------------------------------
  106. int Find(CXTPCalendarEvent* pOccEvent);
  107. //-----------------------------------------------------------------------
  108. // Summary:
  109. //     Finds an index of the occurrence event by its start and end time.
  110. // Parameters:
  111. //     dtOccStartTime - Occurrence start time.
  112. //     dtOccEndTime   - Occurrence end time.
  113. // Returns:
  114. //     An index of the occurrence event object in the array if found;
  115. //     or -1 if not found.
  116. // See Also: Find()
  117. //-----------------------------------------------------------------------
  118. int Find(DATE dtOccStartTime, DATE dtOccEndTime);
  119. //-----------------------------------------------------------------------
  120. // Summary:
  121. //     Updates occurrence custom properties with the values from the
  122. //     array if necessary one is found there.
  123. // Parameters:
  124. //     pOccEvent - Pointer to the occurrence event object.
  125. //     pPattern  - Pointer to the parent Recurrence Pattern object for
  126. //                 those occurrences.
  127. // Returns:
  128. //     Non-zero if updated successfully; zero if update failed.
  129. // See Also:
  130. //     UpdateOccIfNeedEx
  131. //-----------------------------------------------------------------------
  132. int UpdateOccIfNeed(CXTPCalendarEvent* pOccEvent,
  133. CXTPCalendarRecurrencePattern* pPattern);
  134. //-----------------------------------------------------------------------
  135. // Summary:
  136. //     Updates occurrence custom properties with the values from the
  137. //     provided CXTPCalendarReminderForOccurrence structure.
  138. // Parameters:
  139. //     pOccEvent   - Pointer to the occurrence event object.
  140. //     pOccRmdData - Pointer to the Reminder data for the occurrence.
  141. //     pPattern    - Pointer to the parent Recurrence Pattern object for
  142. //                   those occurrences.
  143. // Returns:
  144. //     Non-zero if updated successfully; zero if update failed.
  145. // See Also:
  146. //     CXTPCalendarReminderForOccurrence overview, UpdateOccIfNeed
  147. //-----------------------------------------------------------------------
  148. static int UpdateOccIfNeedEx(CXTPCalendarEvent* pOccEvent,
  149.  const CXTPCalendarReminderForOccurrence* pOccRmdData,
  150.  CXTPCalendarRecurrencePattern* pPattern);
  151. //-----------------------------------------------------------------------
  152. // Summary:
  153. //     Loads an array of occurrences information from Calendar
  154. //     Custom Properties object.
  155. // Parameters:
  156. //     pProps - Pointer to a source CXTPCalendarCustomProperties object.
  157. // Returns:
  158. //     TRUE when loaded successfully; FALSE otherwise.
  159. // See Also:
  160. //     Save()
  161. //-----------------------------------------------------------------------
  162. BOOL Load(CXTPCalendarCustomProperties* pProps);
  163. //-----------------------------------------------------------------------
  164. // Summary:
  165. //     Saves an array of occurrences information to the Calendar
  166. //     Custom Properties object.
  167. // Parameters:
  168. //     pProps   - Pointer to a destination CXTPCalendarCustomProperties
  169. //                object.
  170. //     pPattern - Pointer to the parent Recurrence Pattern object for
  171. //                those occurrences.
  172. // Returns:
  173. //     TRUE when saved successfully; FALSE otherwise.
  174. // See Also:
  175. //     Load()
  176. //-----------------------------------------------------------------------
  177. BOOL Save(CXTPCalendarCustomProperties* pProps, CXTPCalendarRecurrencePattern* pPattern);
  178. //-----------------------------------------------------------------------
  179. // Summary:
  180. //     An utility method which clears all occurrences custom properties
  181. //     which was previously set by Save method.
  182. // Parameters:
  183. //     pProps - Pointer to CXTPCalendarCustomProperties object to be
  184. //              cleared.
  185. // See Also:
  186. //     Save(), Load()
  187. //-----------------------------------------------------------------------
  188. static void ClearProperties(CXTPCalendarCustomProperties* pProps);
  189. private:
  190. static void _PropName(LPCTSTR pcszProp, int nIndex, CString& rstrPropNameI);
  191. };
  192. //===========================================================================
  193. // Summary:
  194. //     This structure defines a set of Recurrence Pattern options and is used
  195. //     by a CXTPRecurrencePattern to easily manage and transfer recurrence
  196. //     pattern data.
  197. // See Also:
  198. //     XTPCalendarEventRecurrenceType,
  199. //     XTPCalendarWeekDay,
  200. //     XTPCalendarWeekDay_Masks,
  201. //     XTPCalendarWeekDay,
  202. //     XTPCalendarWeek,
  203. //     CXTPRecurrencePattern
  204. //===========================================================================
  205. struct XTP_CALENDAR_RECURRENCE_OPTIONS
  206. {
  207. public:
  208. //=======================================================================
  209. // Summary:
  210. //     Defines a group of parameters to describe the Daily pattern.
  211. //=======================================================================
  212. struct PATTERN_DAILY
  213. {
  214. BOOL    bEveryWeekDayOnly;  // Flag determines if the event occurs every week day.
  215. int     nIntervalDays;      // Event occurs every nIntervalDays days
  216.                             // beginning from a start date.
  217. };
  218. //=======================================================================
  219. // Summary:
  220. //     Defines a group of parameters to describe the Weekly pattern.
  221. //=======================================================================
  222. struct PATTERN_WEEKLY
  223. {
  224. int nIntervalWeeks; // Event occurs every nIntervalWeeks with the
  225.                     // first week beginning from a start date.
  226. int nDayOfWeekMask; // Determines the days of the week when an event occurs.
  227.                     // See Also: XTPCalendarWeekDay, XTPCalendarWeekDay_Masks.
  228. };
  229. //=======================================================================
  230. // Summary:
  231. //     Defines a group of parameters to describe the Month pattern.
  232. //=======================================================================
  233. struct PATTERN_MONTHLY
  234. {
  235. int nIntervalMonths;// Event occurs every nIntervalMonths with the
  236.                     // first month beginning from the start date.
  237. int nDayOfMonth;    // Determines the day of the month when an event occurs.
  238.                     // See Also: XTPCalendarWeek.
  239. };
  240. //=======================================================================
  241. // Summary:
  242. //     Defines a group of parameters to describe the Month pattern.
  243. //=======================================================================
  244. struct PATTERN_MONTHNTH
  245. {
  246. int nIntervalMonths;// Event occurs every nIntervalMonths month
  247.                     // beginning from start date.
  248. int nWhichDay;      // Determines the day of the month or nth order of day.
  249. int nWhichDayMask;  // Weekday code.
  250. };
  251. //=======================================================================
  252. // Summary:
  253. //     Defines a group of parameters to describe the Year pattern.
  254. //=======================================================================
  255. struct PATTERN_YEARLY
  256. {
  257. int nMonthOfYear;   // The month of every year that the event occurs on.
  258. int nDayOfMonth;    // The day of month that the event occurs on.
  259. };
  260. //=======================================================================
  261. // Summary:
  262. //     Defines a group of parameters to describe the Year pattern.
  263. //=======================================================================
  264. struct PATTERN_YEARNTH
  265. {
  266. int nWhichDay;      // Determines the day of the month or the nth order of the day.
  267. int nWhichDayMask;  // Weekday code.
  268. int nMonthOfYear;   // Month of the year.
  269. };
  270. public:
  271. //{{AFX_CODEJOCK_PRIVATE
  272. //-----------------------------------------------------------------------
  273. // Summary:
  274. //     Default class constructor.
  275. //-----------------------------------------------------------------------
  276. XTP_CALENDAR_RECURRENCE_OPTIONS() {
  277. memset(this, 0, sizeof(*this));
  278. };
  279. // --------------------------
  280. // Summary:
  281. //     Copy operator.
  282. // Parameters:
  283. //     rSrc :  The source object refferens;
  284. // Returns:
  285. //     This object reference.
  286. // --------------------------
  287. const XTP_CALENDAR_RECURRENCE_OPTIONS& operator=(const XTP_CALENDAR_RECURRENCE_OPTIONS& rSrc) {
  288. memcpy(this, &rSrc, sizeof(*this));
  289. return *this;
  290. }
  291. //}}AFX_CODEJOCK_PRIVATE
  292. public:
  293. XTPCalendarEventRecurrenceType m_nRecurrenceType; // Recurrence type, See Also: XTPCalendarEventRecurrenceType.
  294. // union stores active set of pattern parameters.
  295. union
  296. {
  297. PATTERN_DAILY       m_Daily;    // Options for Daily Recurrence type.
  298. PATTERN_WEEKLY      m_Weekly;   // Options for Weekly Recurrence type.
  299. PATTERN_MONTHLY     m_Monthly;  // Options for Monthly Recurrence type.
  300. PATTERN_MONTHNTH    m_MonthNth; // Options for MonthNth Recurrence type.
  301. PATTERN_YEARLY      m_Yearly;   // Options for Yearly Recurrence type.
  302. PATTERN_YEARNTH     m_YearNth;  // Options for YearNth Recurrence type.
  303. };
  304. //-----------------------------------------------------------------------
  305. // Summary:
  306. //      Saves this object data as 4 long values.
  307. // Parameters:
  308. //      rnData1 - [out] Reference to data variable number 1
  309. //      rnData2 - [out] Reference to data variable number 2
  310. //      rnData3 - [out] Reference to data variable number 3
  311. //      rnData4 - [out] Reference to data variable number 4
  312. // Remarks:
  313. //      Useful to save data in data storage;
  314. // See Also:
  315. //     SetData()
  316. //-----------------------------------------------------------------------
  317. void GetData(long& rnData1, long& rnData2, long& rnData3, long& rnData4)
  318. {
  319. rnData1 = m_nRecurrenceType;
  320. rnData2 = m_YearNth.nWhichDay;
  321. rnData3 = m_YearNth.nWhichDayMask;
  322. rnData4 = m_YearNth.nMonthOfYear;
  323. }
  324. //-----------------------------------------------------------------------
  325. // Summary:
  326. //      Restore this object data from 4 long values previously retrieved
  327. //      using GetData() member function.
  328. // Parameters:
  329. //      rnData1 - [in] data value number 1
  330. //      rnData2 - [in] data value number 2
  331. //      rnData3 - [in] data value number 3
  332. //      rnData4 - [in] data value number 4
  333. // Remarks:
  334. //      Useful to load data from data storage;
  335. // See Also:
  336. //      GetData()
  337. //-----------------------------------------------------------------------
  338. void SetData(long nData1, long nData2, long nData3, long nData4)
  339. {
  340. ASSERT(nData1 >= 0 && nData1 <= 6); // just to check.
  341. m_nRecurrenceType = (XTPCalendarEventRecurrenceType)nData1;
  342. m_YearNth.nWhichDay = nData2;
  343. m_YearNth.nWhichDayMask = nData3;
  344. m_YearNth.nMonthOfYear = nData4;
  345. }
  346. };
  347. //===========================================================================
  348. // Summary:
  349. //     This class represents a recurrence pattern and stores data to build
  350. //     schedule for recurrence events.
  351. // See Also: CXTPCalendarEvent overview.
  352. //===========================================================================
  353. class _XTP_EXT_CLASS CXTPCalendarRecurrencePattern : public CXTPCmdTarget
  354. {
  355. //{{AFX_CODEJOCK_PRIVATE
  356. friend class CXTPCalendarData;
  357. friend class CXTPCalendarEvent;
  358. DECLARE_DYNAMIC(CXTPCalendarRecurrencePattern)
  359. //}}AFX_CODEJOCK_PRIVATE
  360. protected:
  361. //-----------------------------------------------------------------------
  362. // Summary:
  363. //     Protected pattern constructor.
  364. // Parameters:
  365. //     pDataProvider - Pointer to a CXTPCalendarData object.
  366. // See Also:
  367. //     ~CXTPCalendarEvent()
  368. //-----------------------------------------------------------------------
  369. CXTPCalendarRecurrencePattern(CXTPCalendarData* pDataProvider);
  370. public:
  371. //-----------------------------------------------------------------------
  372. // Summary:
  373. //     Default class destructor.
  374. // Remarks:
  375. //     Handles member items deallocation. Decreases reference of
  376. //     stored objects: CXTPCalendarEventLabels and
  377. //     CXTPCalendarRecurrencePattern.
  378. //-----------------------------------------------------------------------
  379. virtual ~CXTPCalendarRecurrencePattern();
  380. //-----------------------------------------------------------------------
  381. // Summary:
  382. //     Returns a unique pattern ID.
  383. // See Also: CXTPCalendarRecurrencePattern()
  384. //-----------------------------------------------------------------------
  385. virtual DWORD GetPatternID() const;
  386. //-----------------------------------------------------------------------
  387. // Summary:
  388. //     Call this member function to get start date-time.
  389. // Returns:
  390. //     COleDateTime object containing start date-time.
  391. // See Also: SetStartTime(COleDateTime dtStart)
  392. //-----------------------------------------------------------------------
  393. virtual COleDateTime GetStartTime() const;
  394. //-----------------------------------------------------------------------
  395. // Summary:
  396. //     This member function is used to set the new start date and time.
  397. // Parameters:
  398. //     dtStart - A COleDateTime object that contains the new start date value.
  399. // See Also: GetStartTime()
  400. //-----------------------------------------------------------------------
  401. virtual void SetStartTime(COleDateTime dtStart);
  402. //-----------------------------------------------------------------------
  403. // Summary:
  404. //     Call this member function to get a duration in minutes.
  405. // Returns:
  406. //     Integer value of a duration in minutes
  407. // See Also: SetDurationMinutes(int nMinutes), GetDuration()
  408. //-----------------------------------------------------------------------
  409. virtual int GetDurationMinutes() const;
  410. //-----------------------------------------------------------------------
  411. // Summary:
  412. //     This member function is used to set the new duration value.
  413. // Parameters:
  414. //     nMinutes - An int that contains the new duration value in minutes.
  415. // See Also: GetDurationMinutes()
  416. //-----------------------------------------------------------------------
  417. virtual void SetDurationMinutes(int nMinutes);
  418. //-----------------------------------------------------------------------
  419. // Summary:
  420. //     Call this member function to get the duration as
  421. //     a COleDateTimeSpan object.
  422. // Returns:
  423. //     A COleDateTimeSpan object with a duration interval.
  424. // See Also: SetDuration(COleDateTimeSpan spDuration, BOOL bKeepStart = TRUE)
  425. //-----------------------------------------------------------------------
  426. virtual COleDateTimeSpan GetDuration() const;
  427. //-----------------------------------------------------------------------
  428. // Summary:
  429. //     Call this member function to get the occurrence start date-time.
  430. // Parameters:
  431. //  dtOccurrenceStartDate - COleDateTime representing the start date.
  432. // Returns:
  433. //     A COleDateTime object that contains the parent's start date-time.
  434. // See Also: SetStartOccurrenceTime(COleDateTime dtStart)
  435. //-----------------------------------------------------------------------
  436. virtual COleDateTime GetStartOccurrenceTime(COleDateTime dtOccurrenceStartDate) const;
  437. //-----------------------------------------------------------------------
  438. // Summary:
  439. //     Call this member function to get the occurrence end date-time
  440. //      by its start time.
  441. // Parameters:
  442. //     dtOccurrenceStartDate   - A COleDateTime object that contains
  443. //                               the date-time occurrence to identify.
  444. // Returns:
  445. //     A COleDateTime object containing the occurrence end date-time.
  446. // See Also: SetStartTime(COleDateTime dtStart)
  447. //-----------------------------------------------------------------------
  448. virtual COleDateTime GetEndOccurrenceTime(COleDateTime dtOccurrenceStartDate) const;
  449. //-----------------------------------------------------------------------
  450. // Summary:
  451. //     This member function is used to obtain the value of the recurrence type flag.
  452. // Returns:
  453. //     An int that contains the previous value of the Recurrence type flag.
  454. // See Also: XTPCalendarEventRecurrenceType, XTP_CALENDAR_RECURRENCE_OPTIONS,
  455. //           SetRecurrenceOptions(const XTP_CALENDAR_RECURRENCE_OPTIONS& Options)
  456. //-----------------------------------------------------------------------
  457. virtual int GetRecurrenceType() const;
  458. //-----------------------------------------------------------------------
  459. // Summary:
  460. //     This member function is used to obtain a set of recurrence options.
  461. // Returns:
  462. //     Reference to an XTP_CALENDAR_RECURRENCE_OPTIONS struct.
  463. // See Also: XTP_CALENDAR_RECURRENCE_OPTIONS,
  464. //           SetRecurrenceOptions(const XTP_CALENDAR_RECURRENCE_OPTIONS& Options)
  465. //-----------------------------------------------------------------------
  466. virtual const XTP_CALENDAR_RECURRENCE_OPTIONS& GetRecurrenceOptions() const;
  467. //-----------------------------------------------------------------------
  468. // Summary:
  469. //     This member function is used to set the recurrence options.
  470. // Parameters:
  471. //     Options - Reference to a XTP_CALENDAR_RECURRENCE_OPTIONS struct.
  472. // See Also: XTP_CALENDAR_RECURRENCE_OPTIONS,
  473. //           SetRecurrenceOptions(const XTP_CALENDAR_RECURRENCE_OPTIONS& Options)
  474. //-----------------------------------------------------------------------
  475. virtual void SetRecurrenceOptions(const XTP_CALENDAR_RECURRENCE_OPTIONS& Options);
  476. //-----------------------------------------------------------------------
  477. // Summary:
  478. //     Call this member function to obtain the start pattern DateTime.
  479. // Returns:
  480. //     A COleDateTime object containing the parent's start DateTime.
  481. // See Also: SetPatternStartTime(COleDateTime dtStart)
  482. //-----------------------------------------------------------------------
  483. virtual COleDateTime GetPatternStartDate() const;
  484. //-----------------------------------------------------------------------
  485. // Summary:
  486. //     This member function is used to set the new start pattern date and time.
  487. // Parameters:
  488. //     dtStart - A COleDateTime object that contains the new date value.
  489. // See Also: GetPatternStartTime()
  490. //-----------------------------------------------------------------------
  491. virtual void SetPatternStartDate(COleDateTime dtStart);
  492. //-----------------------------------------------------------------------
  493. // Summary:
  494. //     Call this member function to obtain the end pattern DateTime.
  495. // Returns:
  496. //     A COleDateTime object that contains the parent's end DateTime.
  497. // See Also: SetPatternEndDate(COleDateTime dtEnd)
  498. //-----------------------------------------------------------------------
  499. virtual COleDateTime GetPatternEndDate() const;
  500. //-----------------------------------------------------------------------
  501. // Summary:
  502. //     This member function is used to set the new end pattern date.
  503. // Parameters:
  504. //     dtEnd   - A COleDateTime object that contains the new date value.
  505. // See Also: COleDateTime GetPatternEndDate()
  506. //-----------------------------------------------------------------------
  507. virtual void SetPatternEndDate(COleDateTime dtEnd);
  508. //-----------------------------------------------------------------------
  509. // Summary:
  510. //     This member function is used to obtain the "End After occurrences"
  511. //     recurrence pattern option.
  512. // Returns:
  513. //     An int that contains the occurrence count for the pattern end.
  514. // See Also: SetEndAfterOccurrences, GetPatternEndDate, IsNoEndDate
  515. //-----------------------------------------------------------------------
  516. virtual int GetEndAfterOccurrences() const;
  517. //-----------------------------------------------------------------------
  518. // Summary:
  519. //     This member function is used to set the "End After occurrences"
  520. //     recurrence pattern option.
  521. // Parameters:
  522. //     nOccurrences - An int that contains the occurrence count for the
  523. //                    pattern end.
  524. // See Also: GetEndAfterOccurrences, GetPatternEndDate, IsNoEndDate
  525. //-----------------------------------------------------------------------
  526. virtual void SetEndAfterOccurrences(int nOccurrences);
  527. //-----------------------------------------------------------------------
  528. // Summary:
  529. //     This member function is used to determines if the pattern has
  530. //     an end date.
  531. // Returns:
  532. //     A BOOL. TRUE if the pattern end is not set. FALSE otherwise.
  533. // See Also: SetNoEndDate(), GetEndAfterOccurrences(), GetPatternEndDate()
  534. //-----------------------------------------------------------------------
  535. virtual BOOL IsNoEndDate() const;
  536. //-----------------------------------------------------------------------
  537. // Summary:
  538. //     This member function is used to reset the pattern end date.
  539. // See Also: IsNoEndDate(), GetEndAfterOccurrences(), GetPatternEndDate()
  540. //-----------------------------------------------------------------------
  541. virtual void SetNoEndDate();
  542. //-----------------------------------------------------------------------
  543. // Summary:
  544. //     Call this method to retrieve the value of the "use end" flag.
  545. // Returns:
  546. //     An int that contains the "use end" flag value.
  547. // See Also:
  548. //     XTPCalendarPatternEnd.
  549. //-----------------------------------------------------------------------
  550. virtual XTPCalendarPatternEnd GetUseEndMethod() const;
  551. //-----------------------------------------------------------------------
  552. // Summary:
  553. //     Call this method to retrieve the end pattern value.
  554. // Returns:
  555. //     A reference of the associated pattern end structure.
  556. // See Also:
  557. //     XTP_CALENDAR_PATTERN_END, XTPCalendarPatternEnd
  558. //-----------------------------------------------------------------------
  559. virtual const XTP_CALENDAR_PATTERN_END& GetPatternEnd() const;
  560. //-----------------------------------------------------------------------
  561. // Summary:
  562. //     Call this method to set the end pattern value.
  563. // Parameters:
  564. //     patternEnd - A reference to the source pattern end structure.
  565. // See Also:
  566. //     GetPatternEnd()
  567. //-----------------------------------------------------------------------
  568. virtual void SetPatternEnd(const XTP_CALENDAR_PATTERN_END& patternEnd);
  569. //-----------------------------------------------------------------------
  570. // Summary:
  571. //     This member function is used to obtain the occurrence dates
  572. //     from the pattern in the given interval.
  573. // Parameters:
  574. //     rArDates    - A CDatesArray reference to an array of dates to be returned.
  575. //     dtStart     - A COleDateTime object that contains the interval's begin date.
  576. //     dtEnd       - A COleDateTime object that contains the interval's end date.
  577. // See Also: CDatesArray
  578. //-----------------------------------------------------------------------
  579. virtual void GetOccurrencesDates(CXTPCalendarDatesArray& rArDates, COleDateTime dtStart,
  580. COleDateTime dtEnd) const;
  581. //-----------------------------------------------------------------------
  582. // Summary:
  583. //     This member function is used to obtain the occurrence dates
  584. //     from the pattern in the given interval.
  585. // Parameters:
  586. //     pEventsArray- Pointer to a CXTPCalendarEvents object that contains
  587. //                   the returned collection of slave events (occurrences).
  588. //     dtStart     - A COleDateTime object that contains the interval's begin date.
  589. //     dtEnd       - A COleDateTime object that contains the interval's end date.
  590. //     pMasterEvent- Pointer to a CXTPCalendarEvent object that contains the
  591. //                   master event.
  592. // See Also: CXTPCalendarEvents, CXTPCalendarEvent
  593. //-----------------------------------------------------------------------
  594. virtual BOOL GetOccurrences(CXTPCalendarEvents* pEventsArray, COleDateTime dtStart,
  595. COleDateTime dtEnd, CXTPCalendarEvent* pMasterEvent);
  596. //-----------------------------------------------------------------------
  597. // Summary:
  598. //     This member function is used to obtain a pointer to the read-write
  599. //     copy of the pattern object.
  600. // Returns:
  601. //     Smart pointer to CXTPCalendarRecurrencePattern object.
  602. // See Also: CXTPCalendarRecurrencePattern.
  603. //-----------------------------------------------------------------------
  604. virtual CXTPCalendarRecurrencePatternPtr ClonePattern();
  605. //-----------------------------------------------------------------------
  606. // Summary:
  607. //     This member function is used to update the pattern data from
  608. //     the given pattern.
  609. // Parameters:
  610. //     pNewData - A pointer to a CXTPCalendarRecurrencePattern object
  611. //                that contains the pattern to update.
  612. // Returns:
  613. //     A pointer to a CXTPCalendarRecurrencePattern object that contains
  614. //     the updated pattern.
  615. // See Also: CXTPCalendarRecurrencePattern.
  616. //-----------------------------------------------------------------------
  617. virtual BOOL Update(CXTPCalendarRecurrencePattern* pNewData);
  618. //-----------------------------------------------------------------------
  619. // Summary:
  620. //     This member function is used to obtain the master event ID value.
  621. // Returns:
  622. //     A DWORD that contains the master event ID value.
  623. // See Also: SetMasterEventID(DWORD dwEventID).
  624. //-----------------------------------------------------------------------
  625. virtual DWORD GetMasterEventID() const;
  626. //-----------------------------------------------------------------------
  627. // Summary:
  628. //     This member function is used to set the master event ID value.
  629. // Parameters:
  630. //  dwEventID - A DWORD that contains the new master event ID value.
  631. // See Also: GetMasterEventID().
  632. //-----------------------------------------------------------------------
  633. virtual void SetMasterEventID(DWORD dwEventID);
  634. //-----------------------------------------------------------------------
  635. // Summary:
  636. //     This member function is used to obtain a pointer to the read-only
  637. //     interface of the master event.
  638. // Returns:
  639. //     Smart pointer to CXTPCalendarEvent object.
  640. //-----------------------------------------------------------------------
  641. virtual CXTPCalendarEventPtr GetMasterEvent() const;
  642. //-----------------------------------------------------------------------
  643. // Summary:
  644. //     This member function is used to add an exception to the master event.
  645. // Parameters:
  646. //     pException  - A pointer to a CXTPCalendarEvent object which
  647. //                   represents the exception.
  648. //     pMasterEventToUpdate    - A pointer to a CXTPCalendarEvent object
  649. //                               that is updated with the exception.
  650. // Returns:
  651. //     A BOOL. TRUE if the update is successful. FALSE otherwise.
  652. // See Also: CXTPCalendarEvent, CXTPCalendarEvent
  653. //-----------------------------------------------------------------------
  654. virtual BOOL SetException(CXTPCalendarEvent* pException, CXTPCalendarEvent* pMasterEventToUpdate = NULL);
  655. //-----------------------------------------------------------------------
  656. // Summary:
  657. //     This member function is used to remove an exception from the
  658. //     master event.
  659. // Parameters:
  660. //     pException  - A pointer to a CXTPCalendarEvent object that
  661. //                   represents the exception.
  662. //     pMasterEventToUpdate - A pointer to the CXTPCalendarEvent object
  663. //                            from which the exception is removed.
  664. // Returns:
  665. //     TRUE is success; FALSE otherwise.
  666. // See Also: CXTPCalendarEvent, CXTPCalendarEvent, RemoveAllExceptions()
  667. //-----------------------------------------------------------------------
  668. virtual BOOL RemoveException(CXTPCalendarEvent* pException, CXTPCalendarEvent* pMasterEventToUpdate = NULL);
  669. //-----------------------------------------------------------------------
  670. // Summary:
  671. //     This member function is used to remove all of the exceptions
  672. //     from the master event.
  673. // See Also: RemoveException(CXTPCalendarEvent* pException, CXTPCalendarEvent* pMasterEventToUpdate = NULL),
  674. //           SetException(CXTPCalendarEvent* pException, CXTPCalendarEvent* pMasterEventToUpdate = NULL)
  675. //-----------------------------------------------------------------------
  676. virtual void RemoveAllExceptions();
  677. //-----------------------------------------------------------------------
  678. // Summary:
  679. //     This member function is used to return the read-only collection
  680. //     with the exception events.
  681. // Returns:
  682. //     Smart pointer to a CXTPCalendarEvents object that contains the read-only
  683. //     collection of exception events.
  684. // See Also: CXTPCalendarEvent, CXTPCalendarEvent, RemoveAllExceptions()
  685. //-----------------------------------------------------------------------
  686. virtual CXTPCalendarEventsPtr GetExceptions();
  687. //-----------------------------------------------------------------------
  688. // Summary:
  689. //     Call this member function to Store/Load a recurrence pattern
  690. //     using the specified data object.
  691. // Parameters:
  692. //     pPX - Source or destination CXTPPropExchange data object reference.
  693. // Remarks:
  694. //     This member function is used to store or load pattern data to or
  695. //     form an storage.
  696. //-----------------------------------------------------------------------
  697. virtual void DoPropExchange(CXTPPropExchange* pPX);
  698. //-----------------------------------------------------------------------
  699. // Summary:
  700. //      Get custom (named, user defined) properties collection.
  701. // Returns:
  702. //      A pointer to CXTPCalendarCustomProperties object.
  703. // See Also:
  704. //      CXTPCalendarCustomProperties.
  705. //-----------------------------------------------------------------------
  706. CXTPCalendarCustomProperties* GetCustomProperties();
  707. protected:
  708. //-----------------------------------------------------------------------
  709. // Summary:
  710. //     This member function is used to assign an ID to a pattern.
  711. // Parameters:
  712. //  dwID - Identifier to set.
  713. // See Also: GetPatternID()
  714. //-----------------------------------------------------------------------
  715. void SetPatternID(DWORD dwID);
  716. private:
  717. void _GetOccurrenceStartEnd(const COleDateTime& dtOccStartDate, COleDateTime& rdtOccStart, COleDateTime& rdtOccEnd) const;
  718. public:
  719. //-----------------------------------------------------------------------
  720. // Summary:
  721. //     This member function is used to find the index of the exception
  722. //     event by its original start and end dates.
  723. // Parameters:
  724. //     dtStartOrig - A COleDateTime object that contains the start date.
  725. //     dtEndOrig   - A COleDateTime object that contains the end date.
  726. // Returns:
  727. //     An int that contains the value of the index in the collection.
  728. //     -1 if the exception is not found in the collection.
  729. //-----------------------------------------------------------------------
  730. virtual int FindExceptionIndex(COleDateTime dtStartOrig, COleDateTime dtEndOrig) const;
  731. //-----------------------------------------------------------------------
  732. // Summary:
  733. //     This member function is used to find the exception event by its
  734. //     original start and end dates.
  735. // Parameters:
  736. //     dtStartOrig - A COleDateTime object that contains the start date.
  737. //     dtEndOrig   - A COleDateTime object that contains the end date.
  738. // Returns:
  739. //     If the exception event is found, then the function returns a pointer
  740. //     to a CXTPCalendarEvent object that contains the exception event.
  741. //     If the exception event is not found, then the function returns NULL.
  742. // See Also: CXTPCalendarEvent
  743. //-----------------------------------------------------------------------
  744. virtual CXTPCalendarEvent* FindException(COleDateTime dtStartOrig, COleDateTime dtEndOrig) const;
  745. //-----------------------------------------------------------------------
  746. // Summary:
  747. //     This member function is used to find an exception event by its
  748. //     original start and end dates.
  749. // Parameters:
  750. //     pEvents - A CXTPCalendarEvents pointer that points to the collection of events to be found.
  751. //     dtStart - A COleDateTime object that contains the start date of the search interval.
  752. //     dtEnd   - A COleDateTime object that contains the end date of search interval.
  753. // Returns:
  754. //     A BOOL. The base class implementation alway returns TRUE.
  755. //     This function should return TRUE if successful.  FALSE otherwise.
  756. // See Also: CXTPCalendarEvents
  757. //-----------------------------------------------------------------------
  758. virtual BOOL FindExceptions(CXTPCalendarEvents* pEvents, COleDateTime dtStart, COleDateTime dtEnd) const;
  759. //-----------------------------------------------------------------------
  760. // Summary:
  761. //     This member function is used to retrieve a collection of reminders
  762. //     settings for occurrences of this recurrence pattern.
  763. // Returns:
  764. //     An array of CXTPCalendarReminderForoccurrence objects for every
  765. //     occurrence with configured Reminders settings.
  766. // See Also:
  767. //     CXTPCalendarReminderForoccurrenceArray overview
  768. //-----------------------------------------------------------------------
  769. CXTPCalendarReminderForOccurrenceArray* GetOccReminders();
  770. //-----------------------------------------------------------------------
  771. // Summary:
  772. //     This member function is used to setup an occurrence with new
  773. //     Reminder settings.
  774. // Parameters:
  775. //     pOccEvent - A CXTPCalendarEvent pointer that points to the occurrence
  776. //                 event which is to be modified.
  777. //     nbIsReminder - Trigger value showing whether to change enabled
  778. //                    reminder flag for this occurrence or not.
  779. //     dtNextReminderTime_Snoozed - Reminder snooze time.
  780. // See Also:
  781. //     GetOccReminders(),
  782. //     XTPEnumCalendarReminderForoccurrenceParameters overview
  783. //-----------------------------------------------------------------------
  784. void SetOccReminder(CXTPCalendarEvent* pOccEvent,
  785. int nbIsReminder = xtpCalendarRmdPrm_DontChange,
  786. DATE dtNextReminderTime_Snoozed = xtpCalendarRmdPrm_DontChange);
  787. //  void ResetReminderForOccFromThePast(CXTPCalendarEvent* pMasterEvent);
  788. private:
  789. //{{AFX_CODEJOCK_PRIVATE
  790. DWORD m_dwPatternID;
  791. DWORD m_dwMasterEventID;
  792. CXTPCalendarReminderForOccurrenceArray m_arOccReminders;
  793. CXTPCalendarEvents  m_arExceptionEvents;
  794. CXTPCalendarData* m_ptrDataProvider;
  795. COleDateTime m_dtStartTime;
  796. int m_nDurationMinutes;
  797. XTP_CALENDAR_RECURRENCE_OPTIONS m_Options;
  798. COleDateTime m_dtPatternStartDate;
  799. XTP_CALENDAR_PATTERN_END m_PatternEnd;
  800. CXTPCalendarCustomProperties* m_pCustomProperties; //Custom properties collection object.
  801. //}}AFX_CODEJOCK_PRIVATE
  802. };
  803. //===========================================================================
  804. /////////////////////////////////////////////////////////////////////////////
  805. AFX_INLINE DWORD CXTPCalendarRecurrencePattern::GetPatternID() const {
  806. return m_dwPatternID;
  807. }
  808. AFX_INLINE COleDateTime CXTPCalendarRecurrencePattern::GetStartTime() const {
  809. return m_dtStartTime;
  810. }
  811. AFX_INLINE void CXTPCalendarRecurrencePattern::SetStartTime(COleDateTime dtStart) {
  812. m_dtStartTime = dtStart;
  813. }
  814. AFX_INLINE int CXTPCalendarRecurrencePattern::GetDurationMinutes() const {
  815. return m_nDurationMinutes;
  816. }
  817. AFX_INLINE COleDateTimeSpan CXTPCalendarRecurrencePattern::GetDuration() const {
  818. return CXTPCalendarUtils::Minutes2Span(m_nDurationMinutes);
  819. }
  820. AFX_INLINE void CXTPCalendarRecurrencePattern::SetDurationMinutes(int nMinutes) {
  821. m_nDurationMinutes = nMinutes;
  822. }
  823. AFX_INLINE int CXTPCalendarRecurrencePattern::GetRecurrenceType() const {
  824. return m_Options.m_nRecurrenceType;
  825. }
  826. AFX_INLINE const XTP_CALENDAR_RECURRENCE_OPTIONS& CXTPCalendarRecurrencePattern::GetRecurrenceOptions() const {
  827. return m_Options;
  828. }
  829. AFX_INLINE const XTP_CALENDAR_PATTERN_END& CXTPCalendarRecurrencePattern::GetPatternEnd() const {
  830. return m_PatternEnd;
  831. }
  832. AFX_INLINE COleDateTime CXTPCalendarRecurrencePattern::GetPatternStartDate() const {
  833. return m_dtPatternStartDate;
  834. }
  835. AFX_INLINE COleDateTime CXTPCalendarRecurrencePattern::GetPatternEndDate() const {
  836. return m_PatternEnd.m_dtPatternEndDate;
  837. }
  838. AFX_INLINE int CXTPCalendarRecurrencePattern::GetEndAfterOccurrences() const {
  839. return m_PatternEnd.m_nEndAfterOccurrences;
  840. }
  841. AFX_INLINE void CXTPCalendarRecurrencePattern::SetEndAfterOccurrences(int nOccurrences) {
  842. m_PatternEnd.m_nEndAfterOccurrences = nOccurrences;
  843. m_PatternEnd.m_nUseEnd = xtpCalendarPatternEndAfterOccurrences;
  844. }
  845. AFX_INLINE BOOL CXTPCalendarRecurrencePattern::IsNoEndDate() const {
  846. return (m_PatternEnd.m_nUseEnd == xtpCalendarPatternEndNoDate);
  847. }
  848. AFX_INLINE void CXTPCalendarRecurrencePattern::SetNoEndDate() {
  849. m_PatternEnd.m_nUseEnd = xtpCalendarPatternEndNoDate;
  850. }
  851. AFX_INLINE XTPCalendarPatternEnd CXTPCalendarRecurrencePattern::GetUseEndMethod() const {
  852. return m_PatternEnd.m_nUseEnd;
  853. }
  854. AFX_INLINE DWORD CXTPCalendarRecurrencePattern::GetMasterEventID() const {
  855. return m_dwMasterEventID;
  856. }
  857. AFX_INLINE void CXTPCalendarRecurrencePattern::SetMasterEventID(DWORD dwEventID) {
  858. m_dwMasterEventID = dwEventID;
  859. }
  860. AFX_INLINE CXTPCalendarCustomProperties* CXTPCalendarRecurrencePattern::GetCustomProperties() {
  861. return m_pCustomProperties;
  862. }
  863. AFX_INLINE CXTPCalendarReminderForOccurrenceArray* CXTPCalendarRecurrencePattern::GetOccReminders() {
  864. return &m_arOccReminders;
  865. }
  866. #endif // !defined(_XTPCALENDARRECURRENCEPATTERN_H__)