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

对话框与窗口

开发平台:

Visual C++

  1. // XTPCalendarEvent.h: interface for the CXTPCalendarEvent 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(_XTPCALENDAREVENT_H__)
  22. #define _XTPCALENDAREVENT_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. #include "XTPCalendarDefines.h"
  28. #include "XTPCalendarRecurrencePattern.h"
  29. #include "XTPCalendarPtrs.h"
  30. #include "XTPCalendarPtrCollectionT.h"
  31. #include "XTPCalendarEventLabel.h"
  32. /////////////////////////////////////////////////////////////////////////////
  33. class CXTPCalendarEvent;
  34. class CXTPCalendarRecurrencePattern;
  35. class CXTPCalendarEventLabel;
  36. class CXTPCalendarEventLabels;
  37. class CXTPPropExchange;
  38. class CXTPCalendarCustomProperties;
  39. class CXTPCalendarIconIDs;
  40. typedef CXTPCalendarIconIDs CXTPCalendarCustomIconIDs;
  41. //===========================================================================
  42. // Summary:
  43. //     This class represents the data of a single Event used in the Calendar
  44. //     control.
  45. // Remarks:
  46. //     Event can be recurring or non-recurring: see GetRecurrenceState()
  47. //     method and XTPCalendarEventRecurrenceState. If Event is
  48. //     recurring use GetRecurrencePattern() method to retrieve recurrence
  49. //     properties.
  50. //     Recurrence States (XTPCalendarEventRecurrenceState):
  51. //
  52. //
  53. //     * <b>xtpCalendarRecurrenceMaster</b>     - Main event which is used for
  54. //                                                creating Occurrences.
  55. //     * <b>xtpCalendarRecurrenceOccurrence</b> - Event is one Occurrence of the
  56. //                                                Recurrence series.
  57. //     * <b>xtpCalendarRecurrenceException</b>  - Event is Occurrence which
  58. //                                                properties differ than in the
  59. //                                                Recurrence pattern or this
  60. //                                                Occurrence is deleted (for
  61. //                                                example: Start/End time or
  62. //                                                Location are different).
  63. //
  64. //
  65. // See Also: CXTPCalendarRecurrencePattern overview,
  66. //           CXTPCalendarEventLabels overview,
  67. //           CXTPCalendarEventLabel overview,
  68. //           XTPCalendarEventRecurrenceState
  69. //===========================================================================
  70. class _XTP_EXT_CLASS CXTPCalendarEvent : public CXTPCmdTarget
  71. {
  72. //{{AFX_CODEJOCK_PRIVATE
  73. friend class CXTPCalendarData;
  74. friend class CXTPCalendarRecurrencePattern;
  75. friend class CXTPCalendarView;
  76. DECLARE_DYNAMIC(CXTPCalendarEvent)
  77. //}}AFX_CODEJOCK_PRIVATE
  78. public:
  79. //-----------------------------------------------------------------------
  80. // Summary:
  81. //     Default object constructor.
  82. // Parameters:
  83. //     pDataProvider - Pointer to CXTPCalendarData object.
  84. // See Also: ~CXTPCalendarEvent()
  85. //-----------------------------------------------------------------------
  86. CXTPCalendarEvent(CXTPCalendarData* pDataProvider);
  87. public:
  88. //-----------------------------------------------------------------------
  89. // Summary:
  90. //     Default class destructor.
  91. // Remarks:
  92. //     Handles member items deallocation. Decreases reference of
  93. //     stored objects: CXTPCalendarEventLabels and
  94. //     CXTPCalendarRecurrencePattern.
  95. //-----------------------------------------------------------------------
  96. virtual ~CXTPCalendarEvent();
  97. //-----------------------------------------------------------------------
  98. // Summary:
  99. //     This member function is used to obtain a unique event ID.
  100. // See Also: CXTPCalendarEvent, SetEventID
  101. //-----------------------------------------------------------------------
  102. virtual DWORD GetEventID() const;
  103. //-----------------------------------------------------------------------
  104. // Summary:
  105. //     This member function is used to set a new ID value for an event.
  106. // Parameters:
  107. //     dwEventID - A DWORD that contains the event id value.
  108. //-----------------------------------------------------------------------
  109. virtual void SetEventID(DWORD dwEventID);
  110. //-----------------------------------------------------------------------
  111. // Summary:
  112. //     This member function is used to obtain a schedule ID of the event.
  113. // Remarks:
  114. //     String with the schedule ID allows to identify schedules for different
  115. //     resources, for example Schedule ID could contain the name of the
  116. //     employee, who is the owner of this event.
  117. // See Also: CXTPCalendarEvent, SetScheduleID
  118. //-----------------------------------------------------------------------
  119. virtual UINT GetScheduleID() const;
  120. //-----------------------------------------------------------------------
  121. // Summary:
  122. //     This member function is used to set a new schedule ID of the event.
  123. // Parameters:
  124. //     uScheduleID - An UINT that contains the ScheduleID.
  125. //-----------------------------------------------------------------------
  126. virtual void SetScheduleID(UINT uScheduleID);
  127. //-----------------------------------------------------------------------
  128. // Summary:
  129. //     This member function is used to obtain the event subject.
  130. // Returns:
  131. //     A CString object that contains the subject text.
  132. //-----------------------------------------------------------------------
  133. virtual CString GetSubject() const;
  134. //-----------------------------------------------------------------------
  135. // Summary:
  136. //     This member function is used to set the subject text for the event.
  137. // Parameters:
  138. //     pcszSubject - An LPCTSTR object that contains the string of text.
  139. //-----------------------------------------------------------------------
  140. virtual void SetSubject(LPCTSTR pcszSubject);
  141. //-----------------------------------------------------------------------
  142. // Summary:
  143. //     Call this member function to obtain the event location text.
  144. // Returns:
  145. //     A CString object that contains the location text.
  146. // See Also: SetLocation
  147. //-----------------------------------------------------------------------
  148. virtual CString GetLocation() const;
  149. //-----------------------------------------------------------------------
  150. // Summary:
  151. //     This member function is used to set the location text for the event.
  152. // Parameters:
  153. //     pcszLocation- An LPCTSTR object that contains the string of text.
  154. // See Also: GetLocation
  155. //-----------------------------------------------------------------------
  156. virtual void SetLocation(LPCTSTR pcszLocation);
  157. //-----------------------------------------------------------------------
  158. // Summary:
  159. //     Call this member function to obtain the event label.
  160. // Returns:
  161. //     Pointer to an CXTPCalendarEventLabel object that contains
  162. //     the event label.
  163. // See Also: CXTPCalendarEventLabel, SetLocation
  164. //-----------------------------------------------------------------------
  165. virtual CXTPCalendarEventLabel* GetLabel() const;
  166. //-----------------------------------------------------------------------
  167. // Summary:
  168. //     Call this member function to get the event label ID.
  169. // Returns:
  170. //     An int that contains the event label ID value.
  171. // See Also: CXTPCalendarEventLabel, SetLabelID
  172. //-----------------------------------------------------------------------
  173. virtual int GetLabelID() const;
  174. //-----------------------------------------------------------------------
  175. // Summary:
  176. //     This member function is used to set the new label ID for the event.
  177. // Parameters:
  178. //     nLabelID - An int that contains the label ID value.
  179. // See Also: GetLabelID
  180. //-----------------------------------------------------------------------
  181. virtual void SetLabelID(int nLabelID);
  182. //-----------------------------------------------------------------------
  183. // Summary:
  184. //     Call this member function to determine if an event is
  185. //     an "All Day" event.
  186. // Returns:
  187. //     A BOOL. TRUE if events is "All Day". FALSE otherwise.
  188. // See Also: SetAllDayEvent
  189. //-----------------------------------------------------------------------
  190. virtual BOOL IsAllDayEvent() const;
  191. //-----------------------------------------------------------------------
  192. // Summary:
  193. //     This member function is used to set the "All Day" flag
  194. //     for an event.
  195. // Parameters:
  196. //     bSet - A BOOL. Boolean value used to set the "All Day" flag
  197. //            to TRUE or FALSE.
  198. //            TRUE - Event is an "All day" event.
  199. //            FALSE - Event is not an "All day" event.
  200. // See Also: IsAllDayEvent
  201. //-----------------------------------------------------------------------
  202. virtual void SetAllDayEvent(BOOL bSet = TRUE);
  203. //-----------------------------------------------------------------------
  204. // Summary:
  205. //     Call this member function to get the event's start DateTime.
  206. // Returns:
  207. //     A COleDateTime object containing the event's start DateTime.
  208. // See Also: SetStartTime
  209. //-----------------------------------------------------------------------
  210. virtual COleDateTime GetStartTime() const;
  211. //-----------------------------------------------------------------------
  212. // Summary:
  213. //     This member function is used to set the new start date and
  214. //     time for the event.
  215. //     The time is accepted as is, and no any conversions is performed.
  216. // Parameters:
  217. //     dtStart - A COleDateTime object that contains the new start
  218. //               date value.
  219. // See Also: GetStartTime
  220. //-----------------------------------------------------------------------
  221. virtual void SetStartTime(COleDateTime dtStart);
  222. //-----------------------------------------------------------------------
  223. // Summary:
  224. //     Call this member function to get the event's end DateTime.
  225. // Returns:
  226. //     A COleDateTime object that contains the event's end DateTime.
  227. // See Also: SetEndTime
  228. //-----------------------------------------------------------------------
  229. virtual COleDateTime GetEndTime() const;
  230. //-----------------------------------------------------------------------
  231. // Summary:
  232. //     This member function is used to set the new end date and time
  233. //     for the event.
  234. // Parameters:
  235. //     dtEnd - new date value.
  236. // See Also: GetEndTime
  237. //-----------------------------------------------------------------------
  238. virtual void SetEndTime(COleDateTime dtEnd);
  239. //-----------------------------------------------------------------------
  240. // Summary:
  241. //     Call this member function to get an event duration in minutes.
  242. // Returns:
  243. //     Integer value of an event duration in minutes.
  244. // See Also: GetDuration
  245. //-----------------------------------------------------------------------
  246. virtual int GetDurationMinutes() const;
  247. //-----------------------------------------------------------------------
  248. // Summary:
  249. //     Call this member function to get an event duration as
  250. //     an COleDateTimeSpan object.
  251. // Returns:
  252. //     An COleDateTimeSpan object that contains an event duration interval.
  253. // See Also: SetDuration
  254. //-----------------------------------------------------------------------
  255. virtual COleDateTimeSpan GetDuration() const;
  256. //-----------------------------------------------------------------------
  257. // Summary:
  258. //     This member function is used to set the new duration for the event.
  259. // Parameters:
  260. //     spDuration  - An COleDateTimeSpan object that contains the
  261. //                   new date interval value.
  262. //     bKeepStart  - TRUE -  Expanded flag and expand end DateTime.
  263. //                   FALSE - Expand start DateTime.
  264. // See Also: GetDuration
  265. //-----------------------------------------------------------------------
  266. virtual void SetDuration(COleDateTimeSpan spDuration, BOOL bKeepStart = TRUE);
  267. //-----------------------------------------------------------------------
  268. // Summary:
  269. //     This member function is used to move the start date event to
  270. //     the provided DateTime, duration of the event does not change.
  271. // Parameters:
  272. //     dtNewStartTime  - An COleDateTime object that contains the new
  273. //                       start date for the event.
  274. //-----------------------------------------------------------------------
  275. virtual void MoveEvent(COleDateTime dtNewStartTime);
  276. //-----------------------------------------------------------------------
  277. // Summary:
  278. //     Call this member function to get an event duration as a number
  279. //     of days.
  280. // Returns:
  281. //     Integer value of an event duration in days.
  282. // See Also: GetDurationMinutes(), GetDuration()
  283. //-----------------------------------------------------------------------
  284. virtual int GetEventPeriodDays() const;
  285. //-----------------------------------------------------------------------
  286. // Summary:
  287. //     Call this member function to determine if a reminder is set
  288. //     for event.
  289. // Returns:
  290. //     TRUE if a reminder is set. FALSE otherwise.
  291. // See also:
  292. //     SetReminder()
  293. //-----------------------------------------------------------------------
  294. virtual BOOL IsReminder() const;
  295. //-----------------------------------------------------------------------
  296. // Summary:
  297. //     Call this member function to setup a reminder for this event.
  298. // Parameters:
  299. //     bReminder - TRUE to enable reminder. FALSE to disable.
  300. // Remarks:
  301. //     This function allows to enable/disable firing reminders
  302. //     notifications for this event.
  303. //     This boolean setting corresponds to a checkbox near "Reminder"
  304. //     word in Event details dialog.
  305. // See also:
  306. //     IsReminder()
  307. //-----------------------------------------------------------------------
  308. virtual void SetReminder(BOOL bReminder);
  309. //-----------------------------------------------------------------------
  310. // Summary:
  311. //     Call this member function to determine if sound file is configured
  312. //      for the event reminder.
  313. // Returns:
  314. //     TRUE if sound file is configured. FALSE otherwise.
  315. //-----------------------------------------------------------------------
  316. virtual BOOL IsSound() const;
  317. //-----------------------------------------------------------------------
  318. // Summary:
  319. //     Call this member function to determine the number of minutes
  320. //     before the start of an event.
  321. // Returns:
  322. //     An int that contains the number of Minutes before the start of
  323. //     an event.
  324. // See Also: SetReminderMinutesBeforeStart(int nMinutes)
  325. //-----------------------------------------------------------------------
  326. virtual int GetReminderMinutesBeforeStart() const;
  327. //-----------------------------------------------------------------------
  328. // Summary:
  329. //     This member function is used to set the number of minutes
  330. //     before the start of an event.
  331. // Parameters:
  332. //     nMinutes - An int that contains the number of minutes before
  333. //                the start of an event.
  334. // See Also: GetReminderMinutesBeforeStart()
  335. //-----------------------------------------------------------------------
  336. virtual void SetReminderMinutesBeforeStart(int nMinutes);
  337. //-----------------------------------------------------------------------
  338. // Summary:
  339. //     Call this member function to determine a full path to the
  340. //     sound file assigned to the event reminder.
  341. // Returns:
  342. //     A CString object with full path to the sound file for the
  343. //     event reminder.
  344. // See Also: SetReminderSoundFile(LPCTSTR pcszFile)
  345. //-----------------------------------------------------------------------
  346. virtual CString GetReminderSoundFile() const;
  347. //-----------------------------------------------------------------------
  348. // Summary:
  349. //     This member function is used to set the sound file for the
  350. //     event reminder.
  351. // Parameters:
  352. //     pcszFile - An LPCTSTR object.  A pointer to a string with full
  353. //                path to the sound file.
  354. // See Also: GetReminderSoundFile()
  355. //-----------------------------------------------------------------------
  356. virtual void SetReminderSoundFile(LPCTSTR pcszFile);
  357. //-----------------------------------------------------------------------
  358. // Summary:
  359. //     Call this member function to obtain the body
  360. //     text for the event.
  361. // Returns:
  362. //     A CString object with the body text for the event.
  363. // See Also: SetBody
  364. //-----------------------------------------------------------------------
  365. virtual CString GetBody() const;
  366. //-----------------------------------------------------------------------
  367. // Summary:
  368. //     This member function is used to set the body text for the event.
  369. // Parameters:
  370. //     pcszDesc - An LPCTSTR Pointer to the string with the body text.
  371. // See Also: GetBody
  372. //-----------------------------------------------------------------------
  373. virtual void SetBody(LPCTSTR pcszDesc);
  374. //-----------------------------------------------------------------------
  375. // Summary:
  376. //     Call this member function to get a busy status value for the event.
  377. // Returns:
  378. //     Busy status value for the event as an XTPCalendarEventBusyStatus flag.
  379. // See Also: SetBusyStatus, XTPCalendarEventBusyStatus enum
  380. //-----------------------------------------------------------------------
  381. virtual int GetBusyStatus() const;
  382. //-----------------------------------------------------------------------
  383. // Summary:
  384. //     This member function is used to set the busy status value for
  385. //     the event.
  386. // Parameters:
  387. //     Status - An int that contains the busy status value.
  388. // See Also: GetBusyStatus, XTPCalendarEventBusyStatus enum
  389. //-----------------------------------------------------------------------
  390. virtual void SetBusyStatus(int Status);
  391. //-----------------------------------------------------------------------
  392. // Summary:
  393. //     Call this member function to get an importance level for an event.
  394. // Returns:
  395. //     Importance level for event as an XTPCalendarEventImportance enum.
  396. // See Also: SetImportance, XTPCalendarEventImportance enum
  397. //-----------------------------------------------------------------------
  398. virtual int GetImportance() const;
  399. //-----------------------------------------------------------------------
  400. // Summary:
  401. //     This member function is used to set the importance level for
  402. //     the event.
  403. // Parameters:
  404. //     nImportance - An int that contains the importance level value.
  405. // See Also: GetImportance, XTPCalendarEventImportance enum
  406. //-----------------------------------------------------------------------
  407. virtual void SetImportance(int nImportance);
  408. //-----------------------------------------------------------------------
  409. // Summary:
  410. //     Call this member function to get the creation time for an event.
  411. // Returns:
  412. //     Creation time for event as COleDateTime object.
  413. // See Also: SetCreationTime
  414. //-----------------------------------------------------------------------
  415. virtual COleDateTime GetCreationTime() const;
  416. //-----------------------------------------------------------------------
  417. // Summary:
  418. //     This member function is used to set the creation time for an event.
  419. // Parameters:
  420. //     dtTime - A COleDateTime object that contains the new creation time.
  421. // See Also: GetCreationTime
  422. //-----------------------------------------------------------------------
  423. virtual void SetCreationTime(COleDateTime dtTime);
  424. //-----------------------------------------------------------------------
  425. // Summary:
  426. //     Call this member function to get the last modification time
  427. //     for an event.
  428. // Returns:
  429. //     A COleDateTime object that contains the last modification time
  430. //     for the event.
  431. // See Also: SetLastModificationTime
  432. //-----------------------------------------------------------------------
  433. virtual COleDateTime GetLastModificationTime() const;
  434. //-----------------------------------------------------------------------
  435. // Summary:
  436. //     This member function is used to set the modification time for
  437. //     the event.
  438. // Parameters:
  439. //     dtTime - A COleDateTime object that contains the new modification time.
  440. // See Also: GetLastModificationTime
  441. //-----------------------------------------------------------------------
  442. virtual void SetLastModificationTime(COleDateTime dtTime);
  443. //-----------------------------------------------------------------------
  444. // Summary:
  445. //     Call this member function to get a recurrence state for the event.
  446. // Returns:
  447. //     Recurrence state for the event as an XTPCalendarEventRecurrenceState enum.
  448. // See Also: MakeEventAsRecurrence, XTPCalendarEventRecurrenceState enum
  449. //-----------------------------------------------------------------------
  450. virtual XTPCalendarEventRecurrenceState GetRecurrenceState() const;
  451. //-----------------------------------------------------------------------
  452. // Summary:
  453. //     Call this member function to change the recurrence state for the event.
  454. // Returns:
  455. //     TRUE if recurrence state successfully changed. FALSE otherwise.
  456. // See Also: GetRecurrenceState, XTPCalendarEventRecurrenceState enum
  457. //-----------------------------------------------------------------------
  458. virtual BOOL MakeEventAsRecurrence();
  459. //-----------------------------------------------------------------------
  460. // Summary:
  461. //     This member function is used to set the recurrence pattern for the event.
  462. // Parameters:
  463. //     pRPattern - A pointer to a CXTPCalendarRecurrencePattern object that
  464. //                 contains the updated recurrence pattern.
  465. // Returns:
  466. //     TRUE if new pattern changed successfully. FALSE otherwise.
  467. // See Also: CXTPCalendarRecurrencePattern, RemoveRecurrence
  468. //-----------------------------------------------------------------------
  469. virtual BOOL UpdateRecurrence(CXTPCalendarRecurrencePattern* pRPattern);
  470. //-----------------------------------------------------------------------
  471. // Summary:
  472. //     This member function removes the recurrence pattern for the event.
  473. // Returns:
  474. //     TRUE if the operation is successful. FALSE otherwise.
  475. // See Also: UpdateRecurrence(CXTPCalendarRecurrencePattern* pRPattern)
  476. //-----------------------------------------------------------------------
  477. virtual BOOL RemoveRecurrence();
  478. //-----------------------------------------------------------------------
  479. // Summary:
  480. //     Call this member function to get the recurrence pattern ID.
  481. // Returns:
  482. //     A DWORD containing the recurrence pattern ID.
  483. //-----------------------------------------------------------------------
  484. virtual DWORD GetRecurrencePatternID() const;
  485. //-----------------------------------------------------------------------
  486. // Summary:
  487. //     Call this member function to get the event's recurrence pattern
  488. //     object.
  489. // Returns:
  490. //     Pointer to a CXTPCalendarRecurrencePattern object that contains
  491. //     the event's recurrence pattern.
  492. // See Also: CXTPCalendarRecurrencePattern
  493. //-----------------------------------------------------------------------
  494. virtual CXTPCalendarRecurrencePatternPtr GetRecurrencePattern() const;
  495. //-----------------------------------------------------------------------
  496. // Summary:
  497. //     Call this member function to set the event's recurrence pattern
  498. //     as an exception occurrence.
  499. // Parameters:
  500. //     dwPatternID - Recurrence pattern ID.
  501. // Returns:
  502. //     TRUE if successful. FALSE otherwise.
  503. //-----------------------------------------------------------------------
  504. virtual BOOL MakeAsRException(DWORD dwPatternID = XTP_CALENDAR_UNKNOWN_RECURRENCE_PATTERN_ID);
  505. //-----------------------------------------------------------------------
  506. // Summary:
  507. //     Call this member function to determine if an exception occurrence
  508. //     is marked as deleted.
  509. // Returns:
  510. //     TRUE if an exception occurrence is marked as deleted. FALSE otherwise.
  511. // See Also: SetRExceptionDeleted(BOOL bDeleted = TRUE)
  512. //-----------------------------------------------------------------------
  513. virtual BOOL IsRExceptionDeleted() const;
  514. //-----------------------------------------------------------------------
  515. // Summary:
  516. //     Call this member function to mark an exception occurrence as
  517. //     deleted/undeleted.
  518. // Parameters:
  519. //     bDeleted - A BOOL. Exception deleted flag value.
  520. //                TRUE  - To mark the exception recurrence as deleted.
  521. //                FALSE - To mark the exception recurrence as un-deleted.
  522. // Returns:
  523. //     TRUE if successful. FALSE otherwise.
  524. // See Also: IsRExceptionDeleted()
  525. //-----------------------------------------------------------------------
  526. virtual void SetRExceptionDeleted(BOOL bDeleted = TRUE);
  527. //-----------------------------------------------------------------------
  528. // Summary:
  529. //     Call this member function to update the event's data.
  530. // Parameters:
  531. //     pNewData - Pointer to a CXTPCalendarEvent object that contains
  532. //                the new data.
  533. // Returns:
  534. //     TRUE if successful. FALSE otherwise.
  535. // See Also: CXTPCalendarEvent
  536. //-----------------------------------------------------------------------
  537. virtual BOOL Update(CXTPCalendarEvent* pNewData);
  538. //-----------------------------------------------------------------------
  539. // Summary:
  540. //     Call this member function to obtain a pointer to the read-write
  541. //     interface of the event.
  542. // Returns:
  543. //     Pointer to a CXTPCalendarEvent object that contains the
  544. //     read-write interface of the event.
  545. //-----------------------------------------------------------------------
  546. virtual CXTPCalendarEventPtr CloneEvent();
  547. //-----------------------------------------------------------------------
  548. // Summary:
  549. //     Clones current event properties into a provided object instance.
  550. // Parameters:
  551. //     pEventDest - Pointer to a destination CXTPCalendarEvent object.
  552. // Remarks:
  553. //     This member function is used by CloneEvent() implementation.
  554. // Returns:
  555. //     TRUE if cloned successfully; FALSE otherwise.
  556. //-----------------------------------------------------------------------
  557. virtual BOOL CloneEventTo(CXTPCalendarEvent* pEventDest);
  558. //-----------------------------------------------------------------------
  559. // Summary:
  560. //     This member function is used to build an occurrence event by
  561. //     duplicating the master event.
  562. // Parameters:
  563. //      dtStart :       Start occurrence event date time.
  564. //      dtEnd :         End occurrence event date time.
  565. //      dwNewEventID :  Occurrence event ID. If specified value is
  566. //                      XTP_CALENDAR_UNKNOWN_EVENT_ID - a new occurrence
  567. //                      event ID will be generated automatically.
  568. // Remarks:
  569. //     Call this member function to get an occurrence event object.
  570. // Returns:
  571. //     Pointer to a CXTPCalendarEvent object that contains the cloned
  572. //     occurrence event.
  573. // See Also:
  574. //     CXTPCalendarEvent
  575. //-----------------------------------------------------------------------
  576. virtual CXTPCalendarEventPtr CloneForOccurrence(COleDateTime dtStart, COleDateTime dtEnd,
  577. DWORD dwNewEventID = XTP_CALENDAR_UNKNOWN_EVENT_ID);
  578. //-----------------------------------------------------------------------
  579. // Summary:
  580. //     Call this member function to compare IDs of different events.
  581. // Parameters:
  582. //     pEvent - Pointer to a CXTPCalendarEvent object that contains
  583. //              an event to compare.
  584. // Returns:
  585. //     TRUE if the provided event ID is equal the "this" ID. FALSE otherwise.
  586. //-----------------------------------------------------------------------
  587. virtual BOOL IsEqualIDs(CXTPCalendarEvent* pEvent) const;
  588. //-----------------------------------------------------------------------
  589. // Summary:
  590. //     Call this member function to compare start dates of different
  591. //     events.
  592. // Parameters:
  593. //     pEvent - Pointer to a CXTPCalendarEvent object that contains
  594. //              an event to compare.
  595. // Returns:
  596. //     TRUE if the provided event start date is equal to the "this" date.
  597. //     FALSE otherwise.
  598. //-----------------------------------------------------------------------
  599. virtual BOOL IsEqualStartEnd(CXTPCalendarEvent* pEvent) const;
  600. //-----------------------------------------------------------------------
  601. // Summary:
  602. //     This member function is used to set the state for the meeting flag.
  603. // Parameters:
  604. //     bMeeting - A BOOL that contains the new state for the meeting flag.
  605. // Remarks:
  606. //     Call this member function to set meeting state flag.
  607. //-----------------------------------------------------------------------
  608. virtual void SetMeeting(BOOL bMeeting = TRUE);
  609. //-----------------------------------------------------------------------
  610. // Summary:
  611. //     This member function is used to obtain the value of the
  612. //     Meeting state flag.
  613. // Returns:
  614. //     TRUE if the event is a meeting. FALSE otherwise.
  615. //-----------------------------------------------------------------------
  616. virtual BOOL IsMeeting();
  617. //-----------------------------------------------------------------------
  618. // Summary:
  619. //     This member function is used to set the state for the private flag.
  620. // Parameters:
  621. //     bPrivate - A BOOL that contains the new state for the private flag.
  622. // Remarks:
  623. //     Call this member function to set the private state flag. The
  624. //     private flag is used to indicate that a meeting event is private.
  625. //-----------------------------------------------------------------------
  626. virtual void SetPrivate(BOOL bPrivate = TRUE);
  627. //-----------------------------------------------------------------------
  628. // Summary:
  629. //     This member function is used to obtain the value of the
  630. //     private state flag.
  631. // Returns:
  632. //     TRUE if the event is private. FALSE otherwise. The private flag
  633. //     is used to indicate that a meeting event is private.
  634. //-----------------------------------------------------------------------
  635. virtual BOOL IsPrivate();
  636. //-----------------------------------------------------------------------
  637. // Summary:
  638. //     This member function is used to obtain collection of custom icons IDs
  639. //     associated with event object.
  640. // Returns:
  641. //     Pointer to CXTPCalendarCustomIconIDs object.
  642. //-----------------------------------------------------------------------
  643. virtual CXTPCalendarCustomIconIDs* GetCustomIcons();
  644. //-----------------------------------------------------------------------
  645. // Summary:
  646. //     This member function is used to obtain collection of Event categories
  647. //     IDs associated with event object.
  648. // Returns:
  649. //     Pointer to CXTPCalendarEventCategoryIDs object.
  650. // See also;
  651. //     CXTPCalendarEventCategories overview,
  652. //     CXTPCalendarData::GetEventCategories
  653. //-----------------------------------------------------------------------
  654. virtual CXTPCalendarEventCategoryIDs* GetCategories();
  655. //-----------------------------------------------------------------------
  656. // Summary:
  657. //     Call this member function to Store/Load an event using the
  658. //     specified data object.
  659. // Parameters:
  660. //     pPX - Source or destination CXTPPropExchange data object reference.
  661. // Remarks:
  662. //     This member function is used to store or load event data to or
  663. //     from a storage.
  664. //-----------------------------------------------------------------------
  665. virtual void DoPropExchange(CXTPPropExchange* pPX);
  666. //-----------------------------------------------------------------------
  667. // Summary:
  668. //      Get custom (named, user defined) properties collection.
  669. // Returns:
  670. //      A pointer to CXTPCalendarCustomProperties object.
  671. // See Also:
  672. //      CXTPCalendarCustomProperties.
  673. //-----------------------------------------------------------------------
  674. CXTPCalendarCustomProperties* GetCustomProperties();
  675. //-----------------------------------------------------------------------
  676. // Summary:
  677. //     This member function is used to obtain the original start
  678. //     time of an exception event.
  679. // Returns:
  680. //     A COleDateTime object with the start original date.
  681. // See Also: SetRException_StartTimeOrig, GetRException_EndTimeOrig
  682. //-----------------------------------------------------------------------
  683. virtual COleDateTime GetRException_StartTimeOrig() const;
  684. //-----------------------------------------------------------------------
  685. // Summary:
  686. //     This member function is used to set the original start time
  687. //     of an exception event.
  688. // Parameters:
  689. //     dtStartOrig - A COleDateTime object that contains the original
  690. //                   start time of the exception event.
  691. // See Also: GetRException_StartTimeOrig
  692. //-----------------------------------------------------------------------
  693. virtual void SetRException_StartTimeOrig(COleDateTime dtStartOrig);
  694. //-----------------------------------------------------------------------
  695. // Summary:
  696. //     This member function is used to obtain the original end time
  697. //     of an exception event.
  698. // Returns:
  699. //     A COleDateTime object that contains the original date.
  700. // See Also: GetRException_StartTimeOrig, SetRException_EndTimeOrig
  701. //-----------------------------------------------------------------------
  702. virtual COleDateTime GetRException_EndTimeOrig() const;
  703. //-----------------------------------------------------------------------
  704. // Summary:
  705. //     This member function is used to set the original end time of
  706. //     an exception event.
  707. // Parameters:
  708. //     dtEndOrig - A COleDateTime object that contains the original
  709. //                 end time of an exception event.
  710. // See Also: GetRException_EndTimeOrig, SetRException_StartTimeOrig
  711. //-----------------------------------------------------------------------
  712. virtual void SetRException_EndTimeOrig(COleDateTime dtEndOrig);
  713. //void SetPermanentlyROccurrence_Reminder(
  714. //      int nbIsReminder = xtpCalendarRmdPrm_DontChange,
  715. //      int nMinutesBeforeStart = xtpCalendarRmdPrm_DontChange );
  716. //      //, int nMinutesBeforeStart2_Snoozed = xtpCalendarRmdPrm_DontChange);
  717. //-----------------------------------------------------------------------
  718. // Summary:
  719. //     This member function is used to set the new ID value for the
  720. //     event recurrence pattern.
  721. // Parameters:
  722. //     dwRecurrencePatternID - An DWORD that contains the event
  723. //                             recurrence pattern id value.
  724. //-----------------------------------------------------------------------
  725. virtual void SetRecurrencePatternID(DWORD dwRecurrencePatternID);
  726. //-----------------------------------------------------------------------
  727. // Summary:
  728. //     Returns event data provider.
  729. // Returns:
  730. //     A pointer to the data provider which stores this event object.
  731. //-----------------------------------------------------------------------
  732. virtual CXTPCalendarData* GetDataProvider();
  733. protected:
  734. //-----------------------------------------------------------------------
  735. // Summary:
  736. //     This member function is used to set all event properties to the
  737. //     empty or default state. The same as after new object creation.
  738. //-----------------------------------------------------------------------
  739. virtual void Clear(); // Clear current event properties
  740. //-----------------------------------------------------------------------
  741. // Summary:
  742. //     This member function is used to calculate the date-time
  743. //     values of the start and end dates for occurrences of recurrent events.
  744. // Returns:
  745. //     TRUE if successful. FALSE otherwise.
  746. //-----------------------------------------------------------------------
  747. virtual BOOL CalcStartEndDatesFromPattern();
  748. //-----------------------------------------------------------------------
  749. // Summary:
  750. //     This member function is used to change the date-time values
  751. //     of the start and end dates of the master event using exception
  752. //     occurrences of recurrent events.
  753. // Returns:
  754. //     TRUE if successful. FALSE otherwise.
  755. //-----------------------------------------------------------------------
  756. virtual BOOL UpdateStartEndDatesFromPatternExceptions();
  757. //-----------------------------------------------------------------------
  758. // Summary:
  759. //     This member function is used to assign a new RecurrencePattern
  760. //     to an event and set the Master flag.
  761. // Parameters:
  762. //     pPattern - Pointer to a CXTPCalendarRecurrencePattern object that
  763. //                contains the new recurrence pattern for the event.
  764. // Returns:
  765. //     TRUE - If the provided event start dates are equal. FALSE otherwise.
  766. //-----------------------------------------------------------------------
  767. virtual BOOL SetRecurrenceState_Master(CXTPCalendarRecurrencePattern* pPattern);
  768. //-----------------------------------------------------------------------
  769. // Summary:
  770. //     This member function is used to set the exception recurrence.
  771. // Parameters:
  772. //     nState          - An int that contains the new state value.
  773. //     dwNewPatternID  - A DWORD that contains the new pattern ID.
  774. // Returns:
  775. //     TRUE if the provided event start dates are equal. FALSE otherwise.
  776. //-----------------------------------------------------------------------
  777. virtual BOOL SetRecurrenceState_ExceptionOccurrence(XTPCalendarEventRecurrenceState nState, DWORD dwNewPatternID = XTP_CALENDAR_UNKNOWN_RECURRENCE_PATTERN_ID);
  778. //-----------------------------------------------------------------------
  779. // Summary:
  780. //     This function is used to reset the recurrence state for an event.
  781. // Returns:
  782. //     Always returns TRUE.
  783. //-----------------------------------------------------------------------
  784. virtual BOOL SetRecurrenceState_NotRecurring();
  785. //-----------------------------------------------------------------------
  786. // Summary:
  787. //      Clear intermediate data members which where set when operations
  788. //      with recurrence properties where made.
  789. // Remarks:
  790. //      This method is automatically called by the date provider
  791. //      when event is updated or added.
  792. //-----------------------------------------------------------------------
  793. virtual void ClearIntermediateData();
  794. //-----------------------------------------------------------------------
  795. // Summary:
  796. //     This member function is used to obtain a pointer to the
  797. //     internally stored Recurrence Pattern object.
  798. // Returns:
  799. //     A CXTPCalendarRecurrencePattern pointer that contains the
  800. //     Recurrence Pattern object.
  801. //-----------------------------------------------------------------------
  802. virtual CXTPCalendarRecurrencePattern* GetRPatternRef();
  803. protected:
  804. CXTPCalendarData*  m_pDataProvider; // Pointer to the owner data provider.
  805. BOOL m_bMeeting; // Boolean flag that is used to indicate if an event is a meeting.
  806. BOOL m_bPrivate; // Boolean flag that is used to indicate if an event is a private meeting.
  807. DWORD   m_dwEventID;    // ID of this event object.
  808. int     m_nLabelID;     // Label ID.
  809. CString m_strSubject;   // Subject value.
  810. CString m_strLocation;  // Location value.
  811. UINT    m_uScheduleID;  // ID of the corresponding Schedule.
  812. BOOL m_bAllDayEvent;        // Is this an all day event value.
  813. COleDateTime m_dtStartTime; // Start event time value.
  814. COleDateTime m_dtEndTime;   // End event time value.
  815. BOOL    m_bReminder;                    // This flag value indicates is the Reminder enabled or not.
  816. int     m_nReminderMinutesBeforeStart;  // Reminder time value. (in minutes)
  817. CString m_strReminderSoundFile;         // Reminder sound file path.
  818. CString m_strBody;   // Body value.
  819. int     m_nBusyStatus;      // Event Busy Status value.
  820. int     m_nImportance;      // Event Importance value.
  821. XTPCalendarEventRecurrenceState m_nRecurrenceState; // Event Recurrence State.
  822. COleDateTime m_dtCreationTime;          // Creation event time value.
  823. COleDateTime m_dtLastModificationTime;  // Last Modification event time value.
  824. CXTPCalendarRecurrencePatternPtr m_ptrRPattern; // Recurrence Pattern object for a master event only.
  825. DWORD m_dwRecurrencePatternID;                  // Recurrence Pattern ID.
  826. BOOL m_bRExceptionDeleted;                  // Is Recurrence Exception deleted.
  827. COleDateTime m_dtRException_StartTimeOrig;  // Original start time of Recurrence exception event.
  828. COleDateTime m_dtRException_EndTimeOrig;    // Original end time of Recurrence exception event.
  829. DWORD m_dwRecurrencePatternID_ToUse;        // Previously used pattern ID.
  830. CXTPCalendarCustomProperties* m_pCustomProperties; //Custom properties collection object.
  831. CXTPCalendarCustomIconIDs*  m_pCustomIconsIDs; // An array to store custom icons id's assigned to event.
  832. CXTPCalendarEventCategoryIDs*  m_pEventCategoryIDs; // An array to store categories id's assigned to event.
  833. protected:
  834. };
  835. //===========================================================================
  836. ///////////////////////////////////////////////////////////////////////
  837. AFX_INLINE DWORD CXTPCalendarEvent::GetEventID() const {
  838. return m_dwEventID;
  839. }
  840. AFX_INLINE CString CXTPCalendarEvent::GetSubject() const {
  841. return m_strSubject;
  842. }
  843. AFX_INLINE void CXTPCalendarEvent::SetSubject(LPCTSTR pcszSubject) {
  844. m_strSubject = pcszSubject;
  845. }
  846. AFX_INLINE UINT CXTPCalendarEvent::GetScheduleID() const {
  847. return m_uScheduleID;
  848. }
  849. AFX_INLINE void CXTPCalendarEvent::SetScheduleID(UINT uScheduleID) {
  850. m_uScheduleID = uScheduleID;
  851. }
  852. AFX_INLINE CString CXTPCalendarEvent::GetLocation() const {
  853. return m_strLocation;
  854. }
  855. AFX_INLINE void CXTPCalendarEvent::SetLocation(LPCTSTR pcszLocation) {
  856. m_strLocation = pcszLocation;
  857. }
  858. AFX_INLINE int CXTPCalendarEvent::GetLabelID() const {
  859. return m_nLabelID;
  860. }
  861. AFX_INLINE void CXTPCalendarEvent::SetLabelID(int nLabelID) {
  862. m_nLabelID = nLabelID;
  863. }
  864. AFX_INLINE BOOL CXTPCalendarEvent::IsAllDayEvent() const {
  865. return m_bAllDayEvent;
  866. }
  867. AFX_INLINE void CXTPCalendarEvent::SetAllDayEvent(BOOL bSet) {
  868. ASSERT(m_nRecurrenceState != xtpCalendarRecurrenceOccurrence);
  869. m_bAllDayEvent = bSet;
  870. }
  871. AFX_INLINE COleDateTime CXTPCalendarEvent::GetStartTime() const {
  872. return m_dtStartTime;
  873. }
  874. AFX_INLINE COleDateTime CXTPCalendarEvent::GetEndTime() const {
  875. return m_dtEndTime;
  876. }
  877. AFX_INLINE BOOL CXTPCalendarEvent::IsReminder() const {
  878. return m_bReminder;
  879. }
  880. AFX_INLINE void CXTPCalendarEvent::SetReminder(BOOL bReminder) {
  881. m_bReminder = bReminder;
  882. }
  883. AFX_INLINE BOOL CXTPCalendarEvent::IsSound() const {
  884. return !m_strReminderSoundFile.IsEmpty();
  885. }
  886. AFX_INLINE int CXTPCalendarEvent::GetReminderMinutesBeforeStart() const {
  887. return m_nReminderMinutesBeforeStart;
  888. }
  889. AFX_INLINE void CXTPCalendarEvent::SetReminderMinutesBeforeStart(int nMinutes) {
  890. m_nReminderMinutesBeforeStart = nMinutes;
  891. }
  892. AFX_INLINE CString CXTPCalendarEvent::GetReminderSoundFile() const {
  893. return m_strReminderSoundFile;
  894. }
  895. AFX_INLINE void CXTPCalendarEvent::SetReminderSoundFile(LPCTSTR pcszFile) {
  896. m_strReminderSoundFile = pcszFile;
  897. }
  898. AFX_INLINE CString CXTPCalendarEvent::GetBody() const {
  899. return m_strBody;
  900. }
  901. AFX_INLINE void CXTPCalendarEvent::SetBody(LPCTSTR pcszDesc) {
  902. m_strBody = pcszDesc;
  903. }
  904. AFX_INLINE int CXTPCalendarEvent::GetBusyStatus() const {
  905. return m_nBusyStatus;
  906. }
  907. AFX_INLINE void CXTPCalendarEvent::SetBusyStatus(int nStatus) {
  908. m_nBusyStatus = nStatus;
  909. }
  910. AFX_INLINE int CXTPCalendarEvent::GetImportance() const {
  911. return m_nImportance;
  912. }
  913. AFX_INLINE void CXTPCalendarEvent::SetImportance(int nImportance) {
  914. m_nImportance = nImportance;
  915. }
  916. AFX_INLINE XTPCalendarEventRecurrenceState CXTPCalendarEvent::GetRecurrenceState() const {
  917. return m_nRecurrenceState;
  918. }
  919. AFX_INLINE COleDateTime CXTPCalendarEvent::GetCreationTime() const {
  920. return m_dtCreationTime;
  921. }
  922. AFX_INLINE void CXTPCalendarEvent::SetCreationTime(COleDateTime dtTime) {
  923. m_dtCreationTime = dtTime;
  924. }
  925. AFX_INLINE COleDateTime CXTPCalendarEvent::GetLastModificationTime() const {
  926. return m_dtLastModificationTime;
  927. }
  928. AFX_INLINE void CXTPCalendarEvent::SetLastModificationTime(COleDateTime dtTime) {
  929. m_dtLastModificationTime = dtTime;
  930. }
  931. AFX_INLINE DWORD CXTPCalendarEvent::GetRecurrencePatternID() const {
  932. return m_dwRecurrencePatternID;
  933. }
  934. //AFX_INLINE void CXTPCalendarEvent::SetRecurrencePatternID(DWORD dwRecurrencePatternID) {
  935. //  m_dwRecurrencePatternID = dwRecurrencePatternID;
  936. //}
  937. AFX_INLINE BOOL CXTPCalendarEvent::IsRExceptionDeleted() const {
  938. return m_bRExceptionDeleted;
  939. }
  940. AFX_INLINE void CXTPCalendarEvent::SetRExceptionDeleted(BOOL bDeleted) {
  941. m_bRExceptionDeleted = bDeleted;
  942. }
  943. AFX_INLINE COleDateTime CXTPCalendarEvent::GetRException_StartTimeOrig() const {
  944. return m_dtRException_StartTimeOrig;
  945. }
  946. AFX_INLINE void CXTPCalendarEvent::SetRException_StartTimeOrig(COleDateTime dtStartOrig) {
  947. m_dtRException_StartTimeOrig = dtStartOrig;
  948. }
  949. AFX_INLINE COleDateTime CXTPCalendarEvent::GetRException_EndTimeOrig() const {
  950. return m_dtRException_EndTimeOrig;
  951. }
  952. AFX_INLINE void CXTPCalendarEvent::SetRException_EndTimeOrig(COleDateTime dtEndOrig) {
  953. m_dtRException_EndTimeOrig = dtEndOrig;
  954. }
  955. AFX_INLINE BOOL CXTPCalendarEvent::MakeAsRException(DWORD dwPatternID) {
  956. ASSERT(m_nRecurrenceState == xtpCalendarRecurrenceNotRecurring ||
  957. m_nRecurrenceState == xtpCalendarRecurrenceOccurrence ||
  958. m_nRecurrenceState == xtpCalendarRecurrenceException);
  959. return SetRecurrenceState_ExceptionOccurrence(xtpCalendarRecurrenceException, dwPatternID);
  960. }
  961. AFX_INLINE void CXTPCalendarEvent::SetMeeting(BOOL bMeeting) {
  962. m_bMeeting = bMeeting;
  963. }
  964. AFX_INLINE BOOL CXTPCalendarEvent::IsMeeting() {
  965. return m_bMeeting;
  966. }
  967. AFX_INLINE void CXTPCalendarEvent::SetPrivate(BOOL bPrivate) {
  968. m_bPrivate = bPrivate;
  969. }
  970. AFX_INLINE BOOL CXTPCalendarEvent::IsPrivate() {
  971. return m_bPrivate;
  972. }
  973. AFX_INLINE CXTPCalendarCustomProperties* CXTPCalendarEvent::GetCustomProperties() {
  974. return m_pCustomProperties;
  975. }
  976. AFX_INLINE CXTPCalendarData* CXTPCalendarEvent::GetDataProvider() {
  977. return m_pDataProvider;
  978. }
  979. AFX_INLINE CXTPCalendarCustomIconIDs* CXTPCalendarEvent::GetCustomIcons() {
  980. return m_pCustomIconsIDs;
  981. }
  982. AFX_INLINE CXTPCalendarEventCategoryIDs* CXTPCalendarEvent::GetCategories() {
  983. return m_pEventCategoryIDs;
  984. }
  985. #endif // !defined(_XTPCALENDAREVENT_H__)