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

对话框与窗口

开发平台:

Visual C++

  1. // XTPCalendarDefines.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(_XTPCALENDARDEFINES_H__)
  22. #define _XTPCALENDARDEFINES_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. //{{AFX_CODEJOCK_PRIVATE
  28. //#define DBG_TRACE_TIMER TRACE
  29. //#define DBG_DATA_ASSERT ASSERT
  30. //#define DBG_DATA_VERIFY VERIFY
  31. //---------------
  32. #ifndef DBG_TRACE_TIMER
  33. #define DBG_TRACE_TIMER
  34. #endif
  35. #ifndef DBG_DATA_ASSERT
  36. #define DBG_DATA_ASSERT
  37. #endif
  38. #ifndef DBG_DATA_VERIFY
  39. #define DBG_DATA_VERIFY
  40. #endif
  41. //}}AFX_CODEJOCK_PRIVATE
  42. /////////////////////////////////////////////////////////////////////////////
  43. class CXTPCalendarEvent;
  44. class CXTPCalendarEvents;
  45. class CXTPCalendarRecurrencePattern;
  46. class CXTPCalendarEventLabel;
  47. class CXTPCalendarEventLabels;
  48. #include "XTPCalendarUtils.h"
  49. typedef long XTP_DATE_VALUE;
  50. //-----------------------------------------------------------------------
  51. // Summary:
  52. //     Paint themes used by calendar.
  53. //-----------------------------------------------------------------------
  54. enum XTPCalendarTheme
  55. {
  56. xtpCalendarThemeUnknown = -1,
  57. xtpCalendarThemeOffice2000,     // Office 2000 theme.
  58. xtpCalendarThemeOfficeXP,       // Office XP theme.
  59. xtpCalendarThemeOffice2003,     // Office 2003 theme.
  60. xtpCalendarThemeOffice2007,     // Office 2007 theme.
  61. //  xtpCalendarThemeCustom          // Custom theme.
  62. };
  63. //===========================================================================
  64. // Summary:
  65. //     Define unknown event ID.
  66. //===========================================================================
  67. #define XTP_CALENDAR_UNKNOWN_EVENT_ID 0
  68. //===========================================================================
  69. // Summary:
  70. //     Define an unknown recurrence pattern ID.
  71. //===========================================================================
  72. #define XTP_CALENDAR_UNKNOWN_RECURRENCE_PATTERN_ID 0
  73. //===========================================================================
  74. // Summary:
  75. //     Define unknown schedule ID.
  76. //===========================================================================
  77. #define XTP_CALENDAR_UNKNOWN_SCHEDULE_ID 0
  78. //===========================================================================
  79. // Summary:
  80. //     Define maximum text length for calendar event subject, location or body
  81. //     which will be drawn on the screen.
  82. //     Used to optimize drawing performance.
  83. //===========================================================================
  84. #define XTP_CALENDAR_DRAW_EVENTITEMTEXT_MAX 255
  85. //===========================================================================
  86. // Summary:
  87. //     Define light and dark colors which are used by
  88. //     CXTPImageManager::DisableBitmap to draw disabled calendar window content.
  89. //===========================================================================
  90. #define XTP_CALENDAR_DISABLED_COLOR_LIGHT   RGB(250, 250, 250)
  91. #define XTP_CALENDAR_DISABLED_COLOR_DARK    RGB(128, 128, 128)  //<COMBINE XTP_CALENDAR_DISABLED_COLOR_LIGHT>
  92. //===========================================================================
  93. // Summary:
  94. //     Timeout before appearing event tool tip window.
  95. //===========================================================================
  96. #define XTP_CALENDAR_SHOW_TOOLTIP_TIMEOUT_MS 400
  97. #define XTP_CALENDAR_SHOW_BUTTON_TIMEOUT_MS 1400 //<COMBINE XTP_CALENDAR_SHOW_TOOLTIP_TIMEOUT_MS>
  98. //===========================================================================
  99. // Summary:
  100. //     Enumerates busy status values.
  101. // Example:
  102. // <code>
  103. // CXTPCalendarData* pData;
  104. // CXTPCalendarEventPtr ptrEvent = pData->CreateNewEvent();
  105. // ptrEvent->SetBusyStatus(xtpCalendarBusyStatusTentative);
  106. // VERIFY(pCalendarData->AddEvent(ptrEvent));
  107. // </code>
  108. // See Also: CXTPCalendarEvent::SetBusyStatus
  109. //===========================================================================
  110. enum XTPCalendarEventBusyStatus
  111. {
  112. xtpCalendarBusyStatusUnknown        = -1,   // Typed unknown value.
  113. xtpCalendarBusyStatusFree           = 0,    // Free event status.
  114. xtpCalendarBusyStatusTentative      = 1,    // Tentative event status.
  115. xtpCalendarBusyStatusBusy           = 2,    // Busy event status.
  116. xtpCalendarBusyStatusOutOfOffice    = 3     // OutOfOffice event status.
  117. };
  118. //===========================================================================
  119. // Summary:
  120. //     Enumerates importance level values.
  121. // Example:
  122. // <code>
  123. // CXTPCalendarData* pData;
  124. // CXTPCalendarEventPtr ptrEvent = pData->CreateNewEvent();
  125. // ptrEvent->SetImportance(xtpCalendarImportanceHigh);
  126. // VERIFY(pCalendarData->AddEvent(ptrEvent));
  127. // </code>
  128. // See Also: CXTPCalendarEvent::SetImportance
  129. //===========================================================================
  130. enum XTPCalendarEventImportance
  131. {
  132. xtpCalendarImportanceUnknown        = -1,   // Typed unknown value.
  133. xtpCalendarImportanceLow            = 0,    // Low importance level.
  134. xtpCalendarImportanceNormal         = 1,    // Normal importance level.
  135. xtpCalendarImportanceHigh           = 2     // High importance level.
  136. };
  137. //===========================================================================
  138. // Summary:
  139. //     Enumerates standard Event Categories for office 2007 theme.
  140. //===========================================================================
  141. enum XTPCalendarEventCategories
  142. {
  143. xtpCalendarEventCategoryUnknown = 0,    // Typed unknown value.
  144. xtpCalendarEventCategoryYellow  = 1,    // The Yellow category ID.
  145. xtpCalendarEventCategoryGreen   = 2,    // The Green category ID.
  146. xtpCalendarEventCategoryRed     = 3,    // The Red category ID.
  147. xtpCalendarEventCategoryPink    = 4,    // The Pink category ID.
  148. xtpCalendarEventCategoryOrange  = 5,    // The Orange category ID.
  149. xtpCalendarEventCategoryBlue    = 6     // The Blue category ID.
  150. };
  151. //===========================================================================
  152. // Summary:
  153. //     Enumerates recurrence states.
  154. //===========================================================================
  155. enum XTPCalendarEventRecurrenceState
  156. {
  157. xtpCalendarRecurrenceNotRecurring   = 0,    // Event is not recurring.
  158. xtpCalendarRecurrenceMaster         = 1,    // Event is a Master (template to generate occurrences).
  159. xtpCalendarRecurrenceOccurrence     = 2,    // Event is Occurrence.
  160. xtpCalendarRecurrenceException      = 3     // Event is Exception (changed occurrence).
  161. };
  162. //===========================================================================
  163. // Summary:
  164. //     Type definition for an array of dates.
  165. //===========================================================================
  166. typedef CArray<COleDateTime, COleDateTime&> CXTPCalendarDatesArray;
  167. //===========================================================================
  168. // Summary:
  169. //     Specify the end of the recurrence pattern type.
  170. //===========================================================================
  171. enum XTPCalendarPatternEnd
  172. {
  173. xtpCalendarPatternEndDate              , // End of the recurrence pattern specified by the date.
  174. xtpCalendarPatternEndAfterOccurrences  , // End of the recurrence pattern specified by the occurrences amount.
  175. xtpCalendarPatternEndNoDate              // Recurrence pattern has no End.
  176. };
  177. //===========================================================================
  178. // Summary:
  179. //     Enumerates Recurrence Pattern Types.
  180. //===========================================================================
  181. enum XTPCalendarEventRecurrenceType
  182. {
  183. xtpCalendarRecurrenceUnknown   = 0,     // Typed unknown value.
  184. xtpCalendarRecurrenceDaily     = 1,     // Every N days. N = { 1, 2 .. }
  185. xtpCalendarRecurrenceWeekly    = 2,     // Every N weeks on specified 'DaysMask'.
  186.                                         //   N = { 1, 2 .. },
  187.                                         //   DaysMask = {see enum XTPCalendarWeekDay}
  188. xtpCalendarRecurrenceMonthly   = 3,     // D day of every N months.
  189.                                         //   D = { 1, 2 .. 31}
  190.                                         //   N = { 1, 2 .. }
  191. xtpCalendarRecurrenceMonthNth  = 4,     // The first, second, ... X of every N months.
  192.                                         //   first, second, ... = {see enum XTPCalendarWeek}
  193.                                         //   X = {see enums XTPCalendarWeekDay}
  194.                                         //   N = { 1, 2 .. }
  195. xtpCalendarRecurrenceYearly    = 5,     // Every month(M) day(D).
  196.                                         //   M = { 1, 2 .. 12}
  197.                                         //   D = { 1, 2 .. 31}
  198. xtpCalendarRecurrenceYearNth   = 6      // The first, second, ... X of month(M).
  199.                                         //   first, second, ... = {see enum XTPCalendarWeek}
  200.                                         //   X = {see enums XTPCalendarWeekDay}
  201.                                         //   M = { 1, 2 .. 12}
  202. };
  203. //===========================================================================
  204. // Summary:
  205. //     Enumerates Day of Weeks codes.
  206. //===========================================================================
  207. enum XTPCalendarWeekDay
  208. {
  209. xtpCalendarDaySunday        = 0x001,        // Sunday
  210. xtpCalendarDayMonday        = 0x002,        // Monday
  211. xtpCalendarDayTuesday       = 0x004,        // Tuesday
  212. xtpCalendarDayWednesday     = 0x008,        // Wednesday
  213. xtpCalendarDayThursday      = 0x010,        // Thursday
  214. xtpCalendarDayFriday        = 0x020,        // Friday
  215. xtpCalendarDaySaturday      = 0x040,        // Saturday
  216. xtpCalendarDayAllWeek       = xtpCalendarDayMonday | xtpCalendarDayTuesday |
  217.   xtpCalendarDayWednesday | xtpCalendarDayThursday |
  218.   xtpCalendarDayFriday | xtpCalendarDaySaturday |
  219.   xtpCalendarDaySunday, // All week mask.
  220. xtpCalendarDaySaSu          = xtpCalendarDaySaturday | xtpCalendarDaySunday, // Saturday, Sunday mask.
  221. xtpCalendarDayMo_Fr         = xtpCalendarDayAllWeek ^ xtpCalendarDaySaSu     // Monday to Friday mask.
  222. };
  223. //===========================================================================
  224. // Summary:
  225. //     Enumerates a sequence numbers for days.
  226. //===========================================================================
  227. enum XTPCalendarWeek
  228. {
  229. xtpCalendarWeekFirst    = 1, // First
  230. xtpCalendarWeekSecond   = 2, // Second
  231. xtpCalendarWeekThird    = 3, // Third
  232. xtpCalendarWeekFourth   = 4, // Fourth
  233. xtpCalendarWeekLast     = 5  // Last
  234. };
  235. //===========================================================================
  236. // Summary:
  237. //     Enumeration used to determine the calendar data provider in use.
  238. // Remarks:
  239. //     This enumeration contains all available data provider types.
  240. // See Also:
  241. //     CXTPCalendarData, CXTPCalendarMemoryDataProvider,
  242. //     CXTPCalendarDatabaseDataProvider
  243. //===========================================================================
  244. enum XTPCalendarDataProvider
  245. {
  246. xtpCalendarDataProviderUnknown  = 0,    // Unknown data provider
  247. xtpCalendarDataProviderMemory   = 1,    // Memory data provider - CXTPCalendarMemoryDataProvider.
  248. xtpCalendarDataProviderDatabase = 2,    // Database data provider - CXTPCalendarDatabaseDataProvider.
  249. xtpCalendarDataProviderMAPI     = 3,    // MAPI (Exchange server) data provider - CXTPCalendarMAPIDataProvider.
  250. xtpCalendarDataProviderCustom   = 4     // Custom data provider - CXTPCalendarCustomDataProvider.
  251. };
  252. //===========================================================================
  253. // Summary:
  254. //     Enumeration used to determine the calendar view type in use.
  255. // Remarks:
  256. //     This enumeration contains all available Calendar view types.
  257. // See Also:
  258. //     CXTPCalendarView, CXTPCalendarDayView, CXTPCalendarWeekView,
  259. //     CXTPCalendarMonthView
  260. //===========================================================================
  261. enum XTPCalendarViewType
  262. {
  263. xtpCalendarDayView,     // Day view - CXTPCalendarDayView
  264. xtpCalendarWorkWeekView, // Day view - CXTPCalendarDayView. Work week days are shown.
  265. xtpCalendarWeekView,    // Week view - CXTPCalendarWeekView
  266. xtpCalendarMonthView,    // Month view - CXTPCalendarMonthView
  267. xtpCalendarFullWeekView  // Day view - CXTPCalendarDayView. All week days are shown.
  268. };
  269. //===========================================================================
  270. // Summary:
  271. //     Enumeration of operational mouse modes.
  272. // Remarks:
  273. //     Calendar Control has several
  274. //     Mouse states that handled by control. This enumeration helps to
  275. //     clearly identify each of these
  276. //     - Sends Notifications:
  277. //     - Sends Messages:
  278. // See Also:
  279. //===========================================================================
  280. enum XTPCalendarMouseMode
  281. {
  282. xtpCalendarMouseNothing,                // User is doing nothing - just watching to the control.
  283. xtpCalendarMouseEventPreResizeV,        // User is moving mouse under event view vertical "resize" area.
  284. xtpCalendarMouseEventPreResizeH,        // User is moving mouse under event view horizontal "resize" area.
  285. xtpCalendarMouseEventPreDrag,           // User is moving mouse under event view "drag" area.
  286. xtpCalendarMouseEventResizingV,         // User is resizing event vertically (holding mouse left button down).
  287. xtpCalendarMouseEventResizingH,         // User is resizing event horizontally (holding mouse left button down).
  288. xtpCalendarMouseEventDragCopy,          // User is dragging event view (holding left mouse button down).
  289. xtpCalendarMouseEventDragMove,          // User is dragging event view (holding left mouse button down and Control key is down).
  290. xtpCalendarMouseEventDraggingOut        // User is dragging event out of dragging area.
  291. };
  292. //===========================================================================
  293. // Summary:
  294. //     Contains bit-masks for adjusting the calendar control.
  295. // Remarks:
  296. //     This enumeration contains bit masks for using with
  297. //     CXTPCalendarControl::CUpdateContext.
  298. //     Depending on members of this enum there will be specific
  299. //     redrawing functionality called on exiting adjuster's scope.
  300. //===========================================================================
  301. enum XTPCalendarUpdateOptions
  302. {
  303. xtpCalendarUpdateLayout    = 0x0001,    // Adjust positions of control's elements.
  304. xtpCalendarUpdateScrollBar = 0x0002,    // Recalculate control's scrollbar positions.
  305. xtpCalendarUpdateRedraw    = 0x0004,    // Redraw control picture.
  306. xtpCalendarUpdateAll       = 0x000F,    // Redraw all portions of the control on exiting adjuster scope.
  307. xtpCalendarUpdateRedrawIfNeed      = 0x0010    // Redraw control's picture if needed.
  308. };
  309. //===========================================================================
  310. // Summary:
  311. //     This enumeration contains options for
  312. //     CXTPCalendarControl::CViewChangedContext.
  313. //===========================================================================
  314. enum XTPCalendarViewChangedUpdateOptions
  315. {
  316. xtpCalendarViewChangedSend  = 1, // Set send request for XTP_NC_CALENDARVIEWWASCHANGED notification and lock sending.
  317. xtpCalendarViewChangedLock  = 2  // Lock sending only, send request for XTP_NC_CALENDARVIEWWASCHANGED notification is not set.
  318. };
  319. //===========================================================================
  320. // Summary:
  321. //     Enumerates allowable hit test codes.
  322. // Remarks:
  323. //     ResizeV, ResizeH flags are used together with
  324. //     ResizeBegin or ResizeEnd.
  325. //===========================================================================
  326. enum XTPCalendarHitTestCode
  327. {
  328. xtpCalendarHitTestUnknown           = 0,        // The position is unknown or does not belong to our control.
  329. xtpCalendarHitTestDayArea           = 0x000001,   // The position is inside the days area.
  330. xtpCalendarHitTestDayHeader         = 0x000002,   // The position is inside control's header.
  331. xtpCalendarHitTestDayExpandButton   = 0x000004,   // The position is over Expand day button icon.
  332. xtpCalendarHitTestGroupArea         =  xtpCalendarHitTestDayArea, // The position is inside a group area (formerly day).
  333. xtpCalendarHitTestGroupHeader       = 0x000008,   // The position is inside Group (resource) header.
  334. xtpCalendarHitTestDay_Mask          = 0x00000F,   // The mask for any position inside days area with the header.
  335. xtpCalendarHitTestEventDragArea     = 0x000010,   // The position is on Event drag area.
  336. xtpCalendarHitTestEventTextArea     = 0x000020,   // The position is on Event text view area.
  337. xtpCalendarHitTestEventResizeVArea  = 0x000100,   // Event vertical resize area.
  338. xtpCalendarHitTestEventResizeHArea  = 0x000200,   // Event horizontal resize area.
  339. xtpCalendarHitTestEventResizeArea_Mask = xtpCalendarHitTestEventResizeVArea | xtpCalendarHitTestEventResizeHArea, // The mask for both event resize areas.
  340. xtpCalendarHitTestEventResizeBegin  = 0x000400,   // Event start resizing area.
  341. xtpCalendarHitTestEventResizeEnd    = 0x000800,   // Event end resizing area.
  342. xtpCalendarHitTestEvent_Mask        = 0x000FF0,   // The mask for event area at whole.
  343. xtpCalendarHitTestDayViewTimeScale  = 0x001000,   // Time scale part of the day view.
  344. xtpCalendarHitTestDayViewCell       = 0x002000,   // Day view cells - its general part.
  345. xtpCalendarHitTestDayViewAllDayEvent= 0x004000,  // All day zone on the day view.
  346. xtpCalendarHitTestDayViewScrollUp   = 0x010000,  // DayView Scroll Up button. (presents in office 2007 theme only)
  347. xtpCalendarHitTestDayViewScrollDown = 0x020000,  // DayView Scroll Down button. (presents in office 2007 theme only)
  348. xtpCalendarHitTestDayView_Mask      = 0x0FF000,    // The mask for all DayView areas.
  349. xtpCalendarHitTestPrevEventButton   = 0x100000,  // Go to Rrevious event button. (presents in office 2007 theme only)
  350. xtpCalendarHitTestNextEventButton   = 0x200000,  // Go to Next event button. (presents in office 2007 theme only)
  351. };
  352. //===========================================================================
  353. // Summary:
  354. //     Enumerates allowable dragging mode state codes.
  355. //===========================================================================
  356. enum XTPCalendarDraggingMode
  357. {
  358. xtpCalendaDragModeUnknown     = 0, // No dragging mode.
  359. xtpCalendaDragModeCopy        = 1, // Copying event.
  360. xtpCalendaDragModeMove        = 2, // Moving event.
  361. xtpCalendaDragModeResizeBegin = 3, // Resizing event begin.
  362. xtpCalendaDragModeResizeEnd   = 4, // Resizing event end.
  363. xtpCalendaDragModeEditSubject = 5  // Editing event subject.
  364. };
  365. //===========================================================================
  366. // Summary:
  367. //     Enumerates allowable flags for driving subject editors.
  368. //===========================================================================
  369. enum XTPCalendarEndEditSubjectAction
  370. {
  371. xtpCalendarEditSubjectUnknown    = 0,    // Action is undefined.
  372. xtpCalendarEditSubjectCommit     = 1,    // Apply and commit dragging.
  373. xtpCalendarEditSubjectCancel     = 2     // Cancel editing and dragging changes.
  374. };
  375. //===========================================================================
  376. // Summary:
  377. //     Enumerates flags to identify undo mode.
  378. //===========================================================================
  379. enum XTPCalendarUndoMode
  380. {
  381. xtpCalendarUndoModeUnknown = 0,    // Undo mode is undefined.
  382. xtpCalendarUndoModeUndo    = 1,    // Undo action is pending.
  383. xtpCalendarUndoModeRedo    = 2     // Redo action is pending.
  384. };
  385. //===========================================================================
  386. // Summary:
  387. //     Enumerates additional flags used in clipboard operations.
  388. //===========================================================================
  389. enum XTPCalendarClipboardCopyFlags
  390. {
  391. xtpCalendarCopyFlagROccurrence2RException = 0x0001, // Convert recurrence Occurrence to Exception before paste.
  392. xtpCalendarCopyFlagKeepRException         = 0x0002, // Keep recurrence Exception event state before paste.
  393. xtpCalendarCopyFlagClearCBAfterPaste      = 0x0004, // Clear clipboard after paste.
  394. xtpCalendarCopyFlagCutMask = xtpCalendarCopyFlagROccurrence2RException |
  395. xtpCalendarCopyFlagKeepRException         |
  396. xtpCalendarCopyFlagClearCBAfterPaste  // Default flags for Cut operation.
  397. };
  398. //===========================================================================
  399. // Summary:
  400. //     Enumerates parameters used in configuring reminders for recurrence
  401. //     patterns occurrences.
  402. //===========================================================================
  403. enum XTPEnumCalendarReminderForOccurrenceParameters
  404. {
  405. xtpCalendarRmdPrm_Default       = LONG_MAX, // Set default reminders value.
  406. xtpCalendarRmdPrm_DontChange    = LONG_MIN  // Do not change reminders time value.
  407. };
  408. //===========================================================================
  409. // Summary:
  410. //     Enumerates flags to CXTPCalendarOptions.nDayView_CurrentTimeMarkVisible
  411. //     member.
  412. //     This set of flags define when Current Time Mark on the timescale is
  413. //     visible.
  414. //===========================================================================
  415. enum XTPCalendarCurrentTimeMarkFlags
  416. {
  417. xtpCalendarCurrentTimeMarkNone              = 0, // Time Mark invisible.
  418. xtpCalendarCurrentTimeMarkVisibleForToday   = 1, // Time Mark visible if today day is visible.
  419. xtpCalendarCurrentTimeMarkVisibleAlways     = 2, // Time Mark always visible.
  420. xtpCalendarCurrentTimeMarkPrinted           = 4  // If this flag set - Time Mark is visible for printed calendar also, otherwise it is hidden when printing.
  421. };
  422. //===========================================================================
  423. // Summary:
  424. //     Icons IDs set to be used with calendar event custom icons to customize
  425. //     standard event glyphs.
  426. //===========================================================================
  427. enum XTPCalendarEventIconIDs
  428. {
  429. xtpCalendarEventIconIDReminder      = -1, // Reminder glyph ID.
  430. xtpCalendarEventIconIDOccurrence    = -2, // Recurrence glyph ID.
  431. xtpCalendarEventIconIDException     = -3, // Recurrence exception glyph ID.
  432. xtpCalendarEventIconIDMeeting       = -4, // Meeting glyph ID.
  433. xtpCalendarEventIconIDPrivate       = -5  // Private glyph ID.
  434. };
  435. class CXTPCalendarViewDay;
  436. class CXTPCalendarViewGroup;
  437. class CXTPCalendarViewEvent;
  438. //===========================================================================
  439. // Summary:
  440. //     Structure contains the calendar day view selection block.
  441. // Remarks:
  442. //     This structure describes a selection bounds on the calendar day view.
  443. // See Also: CXTPCalendarDayView
  444. //===========================================================================
  445. struct XTP_CALENDAR_VIEWSELECTION
  446. {
  447. //{{AFX_CODEJOCK_PRIVATE
  448. public:
  449. //-----------------------------------------------------------------------
  450. // Summary:
  451. //     Default constructor.
  452. // Remarks:
  453. //     Initializes a XTP_CALENDAR_VIEWSELECTION object to the empty
  454. //     selection bounds.
  455. //-----------------------------------------------------------------------
  456. XTP_CALENDAR_VIEWSELECTION()
  457. {
  458. nGroupIndex = -1;
  459. bAllDayEvent = FALSE;
  460. dtBegin.SetStatus(COleDateTime::null);
  461. dtEnd.SetStatus(COleDateTime::null);
  462. }
  463. //-----------------------------------------------------------------------
  464. // Summary:
  465. //     Copy operator.
  466. // Parameters:
  467. //     rSrc - The source object.
  468. // Remarks:
  469. //     Initialize members from the specified object.
  470. // Returns:
  471. //     Reference to the current object.
  472. //-----------------------------------------------------------------------
  473. const XTP_CALENDAR_VIEWSELECTION& operator=(const XTP_CALENDAR_VIEWSELECTION& rSrc)
  474. {
  475. nGroupIndex = rSrc.nGroupIndex;
  476. bAllDayEvent = rSrc.bAllDayEvent;
  477. if(rSrc.dtBegin.GetStatus() == COleDateTime::valid) {
  478. dtBegin = rSrc.dtBegin;
  479. }
  480. else
  481. {
  482. dtBegin.SetStatus(rSrc.dtBegin.GetStatus());
  483. }
  484. if(rSrc.dtEnd.GetStatus() == COleDateTime::valid) {
  485. dtEnd = rSrc.dtEnd;
  486. }
  487. else
  488. {
  489. dtEnd.SetStatus(rSrc.dtEnd.GetStatus());
  490. }
  491. return *this;
  492. }
  493. //-----------------------------------------------------------------------
  494. // Summary:
  495. //     Determines are times members values valid.
  496. // Returns:
  497. //     TRUE if date time object members are valid, otherwise FALSE.
  498. //-----------------------------------------------------------------------
  499. BOOL IsValid() const {
  500. return dtBegin.GetStatus() == COleDateTime::valid &&
  501.    dtEnd.GetStatus() == COleDateTime::valid &&
  502.    nGroupIndex >= 0;
  503. }
  504. public:
  505. //}}AFX_CODEJOCK_PRIVATE
  506. int nGroupIndex;        // Numeric index of the corresponding resource group.
  507. COleDateTime dtBegin;   // Selection start time.
  508. COleDateTime dtEnd;     // Selection finish time.
  509. BOOL bAllDayEvent;      // TRUE when all day is selected, FALSE otherwise.
  510. };
  511. //===========================================================================
  512. // Summary:
  513. //     Basic set of parameters transferred from calendar items to
  514. //     mouse handlers.
  515. // Remarks:
  516. //     This structure groups together all essential parameters used in
  517. //     items processing activities. It is a basic structure for all
  518. //     particular calendar's structures.
  519. // See Also: XTP_CALENDAR_HITTESTINFO_DAY_VIEW, XTP_CALENDAR_HITTESTINFO_WEEK_VIEW,
  520. //          XTP_CALENDAR_HITTESTINFO_MONTH_VIEW
  521. //===========================================================================
  522. struct XTP_CALENDAR_HITTESTINFO
  523. {
  524. COleDateTime            dt;             // Time stamp on the specified point.
  525. BOOL                    bTimePartValid; // Specifies whether date's time part is valid,
  526.                                         // i.e. if we hit on all day events area, bTimePartValid will be FALSE.
  527. int                     uHitCode;       // A bitwise combination of XTPCalendarHitTestCode constants.
  528. int                     nDay;           // Number of the day.
  529. int                     nGroup;         // Number of the group.
  530. int                     nEvent;         // ID of the specified event.
  531. CXTPCalendarViewDay*    pViewDay;       // Pointer to affected CXTPCalendarViewDay object.
  532. CXTPCalendarViewGroup*  pViewGroup;     // Pointer to affected CXTPCalendarViewGroup object.
  533. CXTPCalendarViewEvent*  pViewEvent;     // Pointer to affected CXTPCalendarViewEvent object.
  534. //{{AFX_CODEJOCK_PRIVATE
  535. //-----------------------------------------------------------------------
  536. // Summary:
  537. //     Default constructor.
  538. // Remarks:
  539. //     Initializes a XTP_CALENDAR_HITTESTINFO object to the empty
  540. //     and zero values.
  541. //-----------------------------------------------------------------------
  542. XTP_CALENDAR_HITTESTINFO()
  543. {
  544. dt.SetStatus(COleDateTime::null);
  545. bTimePartValid = FALSE;
  546. uHitCode = xtpCalendarHitTestUnknown;
  547. pViewDay = NULL;
  548. pViewGroup = NULL;
  549. pViewEvent = NULL;
  550. nDay = -1;
  551. nGroup = -1;
  552. nEvent = -1;
  553. }
  554. //-----------------------------------------------------------------------
  555. // Summary:
  556. //     Default destructor.
  557. //-----------------------------------------------------------------------
  558. virtual ~XTP_CALENDAR_HITTESTINFO()
  559. {
  560. };
  561. //-----------------------------------------------------------------------
  562. // Summary:
  563. //     Equality operator.
  564. // Parameters:
  565. //     hitInfo2 - Second XTP_CALENDAR_HITTESTINFO object to compare.
  566. // Remarks:
  567. //     Compare 2 XTP_CALENDAR_HITTESTINFO objects.
  568. // Returns:
  569. //     TRUE if specified objects are equal, otherwise FALSE.
  570. //-----------------------------------------------------------------------
  571. BOOL operator==(const XTP_CALENDAR_HITTESTINFO& hitInfo2)
  572. {
  573. return  (dt.GetStatus() == hitInfo2.dt.GetStatus()) &&
  574. ((dt.GetStatus() == COleDateTime::valid) &&
  575. (CXTPCalendarUtils::IsEqual(dt, hitInfo2.dt) ||
  576. (dt.GetStatus() != COleDateTime::valid))
  577. ) &&
  578. (bTimePartValid == hitInfo2.bTimePartValid) &&
  579. (uHitCode == hitInfo2.uHitCode) &&
  580. (pViewDay == hitInfo2.pViewDay) &&
  581. (pViewGroup == hitInfo2.pViewGroup) &&
  582. (pViewEvent == hitInfo2.pViewEvent) &&
  583. (nDay == hitInfo2.nDay) &&
  584. (nGroup == hitInfo2.nGroup) &&
  585. (nEvent == hitInfo2.nEvent);
  586. };
  587. //-----------------------------------------------------------------------
  588. // Summary:
  589. //     Non-Equality operator.
  590. // Parameters:
  591. //     hitInfo2 - Second XTP_CALENDAR_HITTESTINFO object to compare.
  592. // Remarks:
  593. //     Compare 2 XTP_CALENDAR_HITTESTINFO objects.
  594. // Returns:
  595. //     TRUE if specified objects are not equal, otherwise FALSE.
  596. //-----------------------------------------------------------------------
  597. BOOL operator!=(const XTP_CALENDAR_HITTESTINFO& hitInfo2) {
  598. return !(*this == hitInfo2);
  599. }
  600. //-----------------------------------------------------------------------
  601. // Summary:
  602. //     Copy operator.
  603. // Parameters:
  604. //     hitInfo2 - The source object.
  605. // Remarks:
  606. //     Initialize members from the specified object.
  607. // Returns:
  608. //     Reference to the current object.
  609. //-----------------------------------------------------------------------
  610. const XTP_CALENDAR_HITTESTINFO& operator=(const XTP_CALENDAR_HITTESTINFO& hitInfo2)
  611. {
  612. dt = hitInfo2.dt;
  613. bTimePartValid = hitInfo2.bTimePartValid;
  614. uHitCode = hitInfo2.uHitCode;
  615. pViewDay = hitInfo2.pViewDay;
  616. pViewGroup = hitInfo2.pViewGroup;
  617. pViewEvent = hitInfo2.pViewEvent;
  618. nDay = hitInfo2.nDay;
  619. nGroup = hitInfo2.nGroup;
  620. nEvent = hitInfo2.nEvent;
  621. return *this;
  622. };
  623. //}}AFX_CODEJOCK_PRIVATE
  624. };
  625. //===========================================================================
  626. // Summary:
  627. //     Enumeration used to determine the scroll direction.
  628. // Remarks:
  629. //     The enumeration determines if scrolling is necessary based on the
  630. //     scroll mode(up, down, or NotNeeded.)
  631. // See Also: CXTPCalendarDayView
  632. //===========================================================================
  633. enum XTPCalendarDayViewScrollDirection
  634. {
  635. xtpCalendarDayViewScrollUp,         // ScrollV Up.
  636. xtpCalendarDayViewScrollDown,       // ScrollV Down.
  637. xtpCalendarDayViewScrollNotNeeded   // Scrolling not needed.
  638. };
  639. //===========================================================================
  640. // Summary:
  641. //     Enhanced set of parameters for hit test operations on
  642. //     calendar day view area.
  643. // Remarks:
  644. //     This enumeration enhances XTP_CALENDAR_HITTESTINFO set of parameters
  645. //     by specific calendar day view items.
  646. // See Also: XTP_CALENDAR_HITTESTINFO
  647. //===========================================================================
  648. struct XTP_CALENDAR_HITTESTINFO_DAY_VIEW : public XTP_CALENDAR_HITTESTINFO
  649. {
  650. POINT pt;   // Point where the mouse was clicked in client coordinates.
  651. //{{AFX_CODEJOCK_PRIVATE
  652. //-----------------------------------------------------------------------
  653. // Summary:
  654. //     Default constructor.
  655. // Remarks:
  656. //     Initializes a XTP_CALENDAR_HITTESTINFO_DAY_VIEW object to the
  657. //     empty values.
  658. //-----------------------------------------------------------------------
  659. XTP_CALENDAR_HITTESTINFO_DAY_VIEW()
  660. {
  661. pt.x = pt.y = -1;
  662. }
  663. //}}AFX_CODEJOCK_PRIVATE
  664. };
  665. //===========================================================================
  666. // Summary:
  667. //     Set of parameters transferred from calendar items to
  668. //     mouse handlers.
  669. // See Also: XTP_CALENDAR_HITTESTINFO
  670. //===========================================================================
  671. struct XTP_CALENDAR_HITTESTINFO_WEEK_VIEW : public XTP_CALENDAR_HITTESTINFO
  672. {
  673. };
  674. //===========================================================================
  675. // Summary:
  676. //     Defines a set of data and methods to easily manipulate with day
  677. //     positions in month view. Used to convert Week/Day indexes pair to
  678. //     sequential integer value and vice versa.
  679. //===========================================================================
  680. struct XTP_CALENDAR_MONTHVIEW_DAYPOS
  681. {
  682. int nWeekIndex;     // Week index. From 0 to XTP_CALENDAR_MONTHVIEW_SHOW_WEEKS_MAX
  683. int nWeekDayIndex;  // Week day cell index. From 0 to 6
  684. //{{AFX_CODEJOCK_PRIVATE
  685. //-----------------------------------------------------------------------
  686. // Summary:
  687. //     Default object constructor.
  688. // Parameters:
  689. //     nPOS - Initial sequential integer value.
  690. //-----------------------------------------------------------------------
  691. XTP_CALENDAR_MONTHVIEW_DAYPOS(int nPOS = -1) {
  692. nWeekIndex = nWeekDayIndex  = -1;
  693. if (nPOS >= 0) {
  694. SetPOS(nPOS);
  695. }
  696. }
  697. //-----------------------------------------------------------------------
  698. // Summary:
  699. //     This member function is used to obtain the sequential integer value.
  700. // Remarks:
  701. //     This is the overloaded int operator.
  702. // Returns:
  703. //     Sequential integer value.
  704. // See Also: GetPOS
  705. //-----------------------------------------------------------------------
  706. operator int();
  707. //-----------------------------------------------------------------------
  708. // Summary:
  709. //     This member function is used to set a new Sequential integer value.
  710. // Parameters:
  711. //     nPOS - An int that contains the new value.
  712. // Remarks:
  713. //     This is the overloaded assignment operator.
  714. // Returns:
  715. //     An XTP_CALENDAR_MONTHVIEW_DAYPOS object reference.
  716. // See Also: SetPOS
  717. //-----------------------------------------------------------------------
  718. const XTP_CALENDAR_MONTHVIEW_DAYPOS& operator=(int nPOS);
  719. //-----------------------------------------------------------------------
  720. // Summary:
  721. //     This member function is used to pre-increment a sequential
  722. //     position by 1.
  723. // Remarks:
  724. //     This is the overloaded pre-increment operator.(++i)
  725. // Returns:
  726. //     This object reference incremented by 1.
  727. //-----------------------------------------------------------------------
  728. XTP_CALENDAR_MONTHVIEW_DAYPOS& operator++();
  729. //-----------------------------------------------------------------------
  730. // Summary:
  731. //     This member function is used to post-increment a sequential
  732. //     position by 1.
  733. // Remarks:
  734. //     This is the overloaded post-increment operator.(i++)
  735. // Returns:
  736. //     Object value before incrementing.
  737. //-----------------------------------------------------------------------
  738. XTP_CALENDAR_MONTHVIEW_DAYPOS operator++(int);
  739. //-----------------------------------------------------------------------
  740. // Summary:
  741. //     This member function is used to obtain a sequential integer value.
  742. // Returns:
  743. //     An int that represents the sequential integer value.
  744. // See Also: SetPOS, operator int()
  745. //-----------------------------------------------------------------------
  746. int GetPOS();
  747. //-----------------------------------------------------------------------
  748. // Summary:
  749. //     This member function is used to set a new week/day index value.
  750. // Parameters:
  751. //     nWidx   - An int that contains the Week index.
  752. //               Valid values are from 0 to XTP_CALENDAR_MONTHVIEW_SHOW_WEEKS_MAX
  753. //     nWDidx  - An int that contains the Week day cell index.
  754. //               Valid values are From 0 to 6.
  755. // See Also: operator=(int nPOS), SetPOS(int nPOS)
  756. //-----------------------------------------------------------------------
  757. void SetPOS(int nWidx, int nWDidx);
  758. //-----------------------------------------------------------------------
  759. // Summary:
  760. //     This member function is used to set a new sequential integer value.
  761. // Parameters:
  762. //     nPOS - An int that contains the new integer value.
  763. // See Also: operator=(int nPOS), SetPOS(int nWidx, int nWDidx)
  764. //-----------------------------------------------------------------------
  765. void SetPOS(int nPOS);
  766. //-----------------------------------------------------------------------
  767. // Summary:
  768. //     This member function is used to determine if the WeekIndex and
  769. //     WeekDayIndex values are valid.
  770. // Remarks:
  771. //     The valid values are nWeekIndex >= 0 || nWeekDayIndex >= 0.
  772. // Returns:
  773. //     TRUE if values are valid. Otherwise FALSE.
  774. //-----------------------------------------------------------------------
  775. BOOL IsValid();
  776. //}}AFX_CODEJOCK_PRIVATE
  777. };
  778. class CXTPCalendarMonthViewDay;
  779. class CXTPCalendarMonthViewEvent;
  780. //===========================================================================
  781. // Summary:
  782. //     Set of parameters transferred from calendar items to
  783. //     mouse handlers.
  784. // Remarks:
  785. //     This structure groups together all essential parameters used in
  786. //     items processing activities. It is a basic structure for all
  787. //     particular calendar's structures.
  788. // See Also: XTP_CALENDAR_HITTESTINFO, XTP_CALENDAR_MONTHVIEW_DAYPOS
  789. //===========================================================================
  790. struct XTP_CALENDAR_HITTESTINFO_MONTH_VIEW : public XTP_CALENDAR_HITTESTINFO
  791. {
  792. XTP_CALENDAR_MONTHVIEW_DAYPOS dayPOS; // Day position.
  793. };
  794. //===========================================================================
  795. // Summary:
  796. //     Enumerates DB Provider cache modes.
  797. //===========================================================================
  798. enum XTPCalendarDataProviderCacheMode
  799. {
  800. xtpCalendarDPCacheModeOff       = 0x000, // Cache is not used.
  801. xtpCalendarDPCacheModeOnRepeat  = 0x001, // Repeat all event manipulations in cache.
  802. xtpCalendarDPCacheModeOnClear   = 0x002, // Clear cache after every event manipulation.
  803. xtpCalendarDPCacheModeOnMask    = 0x00F, // Cache mode on mask.
  804. };
  805. //===========================================================================
  806. // Summary:
  807. //     Define unknown event label ID.
  808. //===========================================================================
  809. #define XTP_CALENDAR_UNKNOWN_LABEL_ID -1
  810. //===========================================================================
  811. // Summary:
  812. //     Define event label ID which is used by default for a new event.
  813. //     (Valid for default labels list only)
  814. //===========================================================================
  815. #define XTP_CALENDAR_DEFAULT_LABEL_ID 0
  816. //===========================================================================
  817. // Summary:
  818. //     Define event label ID which signifies no label.
  819. //     (Valid for default labels list only)
  820. //===========================================================================
  821. #define XTP_CALENDAR_NONE_LABEL_ID 0
  822. //===========================================================================
  823. // Summary:
  824. //     Define default reminders value minutes which is for a new event.
  825. //===========================================================================
  826. #define XTP_CALENDAR_DEFAULT_REMINDER_MINUTES 15
  827. //===========================================================================
  828. // Summary:
  829. //      The location in the registry that contains time zone information
  830. //      for Windows NT family (NT/2000/XP).
  831. // See also:
  832. //      Microsoft KB221542
  833. //===========================================================================
  834. #define XTP_CALENDAR_TIMEZONESKEY_NT _T("SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones")
  835. //===========================================================================
  836. // Summary:
  837. //      The location in the registry that contains time zone information
  838. //      for Windows 9x family.
  839. // See also:
  840. //      Microsoft KB221542
  841. //===========================================================================
  842. #define XTP_CALENDAR_TIMEZONESKEY_9X _T("SOFTWARE\Microsoft\Windows\CurrentVersion\Time Zones")
  843. //===========================================================================
  844. // Summary:
  845. //      Registry key name for a StandardName member value of
  846. //      TIME_ZONE_INFORMATION.
  847. // See also:
  848. //      TIME_ZONE_INFORMATION WinAPI structure
  849. //===========================================================================
  850. #define XTP_CALENDAR_TZIRegValName_StandardName _T("Std")
  851. // <COMBINE XTP_CALENDAR_TZIRegValName_StandardName>
  852. #define XTP_CALENDAR_TZIRegValName_StandardNameW L"Std"
  853. //===========================================================================
  854. // Summary:
  855. //      Registry key name for a DaylightName member value of
  856. //      TIME_ZONE_INFORMATION.
  857. // See also:
  858. //      TIME_ZONE_INFORMATION WinAPI structure
  859. //===========================================================================
  860. #define XTP_CALENDAR_TZIRegValName_DaylightName _T("Dlt")
  861. // <COMBINE XTP_CALENDAR_TZIRegValName_DaylightName>
  862. #define XTP_CALENDAR_TZIRegValName_DaylightNameW L"Dlt"
  863. //===========================================================================
  864. // Summary:
  865. //      Registry key name for a time zone display string value.
  866. //      For example: "(GMT+02:00) Athens, Beirut, Istanbul, Minsk"
  867. //===========================================================================
  868. #define XTP_CALENDAR_TZIRegValName_DisplayStr   _T("Display")
  869. //===========================================================================
  870. // Summary:
  871. //      Registry key name for a time zone order index value.
  872. // Remarks:
  873. //      This index value is used to sort time zones in the right order.
  874. //===========================================================================
  875. #define XTP_CALENDAR_TZIRegValName_Index        _T("Index")
  876. //===========================================================================
  877. // Summary:
  878. //      Registry key name for some TIME_ZONE_INFORMATION structure members.
  879. // See also:
  880. //      Microsoft KB115231,
  881. //      CXTPCalendarTimeZones::REGISTRY_TIMEZONE_INFORMATION
  882. //===========================================================================
  883. #define XTP_CALENDAR_TZIRegValName_DATA         _T("TZI")
  884. //===========================================================================
  885. //{{AFX_CODEJOCK_PRIVATE
  886. #define XTP_EVENT_PLACE_POS_UNDEFINED 0xFFFF
  887. //}}AFX_CODEJOCK_PRIVATE
  888. //{{AFX_CODEJOCK_PRIVATE
  889. #define XTP_SAFE_GET1(_ptr1, _member, _defVal) (_ptr1 ? _ptr1->_member : (_defVal))
  890. #define XTP_SAFE_GET2(_ptr1, _ptr2, _member, _defVal) ((_ptr1 && _ptr1->_ptr2) ? _ptr1->_ptr2->_member : (_defVal) )
  891. #define XTP_SAFE_GET3(_ptr1, _ptr2, _ptr3, _member, _defVal) ((_ptr1 && _ptr1->_ptr2 && _ptr1->_ptr2->_ptr3) ? _ptr1->_ptr2->_ptr3->_member : (_defVal) )
  892. #define XTP_SAFE_GET4(_ptr1, _ptr2, _ptr3, _ptr4, _member, _defVal) ((_ptr1 && _ptr1->_ptr2 && _ptr1->_ptr2->_ptr3 && _ptr1->_ptr2->_ptr3->_ptr4) ? _ptr1->_ptr2->_ptr3->_ptr4->_member : (_defVal) )
  893. #define XTP_SAFE_GET5(_ptr1, _ptr2, _ptr3, _ptr4, _ptr5, _member, _defVal) ((_ptr1 && _ptr1->_ptr2 && _ptr1->_ptr2->_ptr3 && _ptr1->_ptr2->_ptr3->_ptr4 && _ptr1->_ptr2->_ptr3->_ptr4->_ptr5) ? _ptr1->_ptr2->_ptr3->_ptr4->_ptr5->_member : (_defVal) )
  894. #define XTP_SAFE_SET1(_ptr1, _member, _Val) 
  895. if (_ptr1){ 
  896. _ptr1->_member = _Val; 
  897. }
  898. #define XTP_SAFE_SET2(_ptr1, _ptr2, _member, _Val) 
  899. if (_ptr1 && _ptr1->_ptr2){ 
  900. _ptr1->_ptr2->_member = _Val; 
  901. }
  902. #define XTP_SAFE_SET3(_ptr1, _ptr2, _ptr3, _member, _Val) 
  903. if (_ptr1 && _ptr1->_ptr2 && _ptr1->_ptr2->_ptr3){ 
  904. _ptr1->_ptr2->_ptr3->_member = _Val; 
  905. }
  906. #define XTP_SAFE_CALL1(_ptr1, _member) 
  907. if (_ptr1){ 
  908. _ptr1->_member; 
  909. }
  910. #define XTP_SAFE_CALL2(_ptr1, _ptr2, _member) 
  911. if (_ptr1 && _ptr1->_ptr2){ 
  912. _ptr1->_ptr2->_member; 
  913. }
  914. #define XTP_SAFE_CALL3(_ptr1, _ptr2, _ptr3, _member) 
  915. if (_ptr1 && _ptr1->_ptr2 && _ptr1->_ptr2->_ptr3){ 
  916. _ptr1->_ptr2->_ptr3->_member; 
  917. }
  918. #define XTP_SAFE_CALL4(_ptr1, _ptr2, _ptr3, _ptr4, _member) 
  919. if (_ptr1 && _ptr1->_ptr2 && _ptr1->_ptr2->_ptr3 && 
  920. _ptr1->_ptr2->_ptr3->_ptr4) 
  921. _ptr1->_ptr2->_ptr3->_ptr4->_member; 
  922. }
  923. #define XTP_SAFE_CALL5(_ptr1, _ptr2, _ptr3, _ptr4, _ptr5, _member) 
  924. if (_ptr1 && _ptr1->_ptr2 && _ptr1->_ptr2->_ptr3 && 
  925. _ptr1->_ptr2->_ptr3->_ptr4 && _ptr1->_ptr2->_ptr3->_ptr4->_ptr5) 
  926. _ptr1->_ptr2->_ptr3->_ptr4->_ptr5->_member; 
  927. }
  928. //}}AFX_CODEJOCK_PRIVATE
  929. //===========================================================================
  930. // Summary:
  931. //      The WM_XTP_CALENDAR_BASE constant is used by Calendar Control to help
  932. //      define private messages for use by private window classes, usually of
  933. //      the form WM_XTP_CALENDAR_BASE+X, where X is an integer value.
  934. // See Also:
  935. //      WM_USER overview
  936. //===========================================================================
  937. const UINT WM_XTP_CALENDAR_BASE = (WM_USER + 9600);
  938. // Internal properties (has prefix *xtp*)
  939. static const LPCTSTR cszEventCustProp_NextReminderTime_Snoozed = _T("*xtp*NextReminderTime_Snoozed"); // String name of the corresponding property.
  940. static const LPCTSTR cszEventCustProp_IconsIDs = _T("*xtp*CustomIcons"); // String name of the corresponding property.
  941. static const LPCTSTR cszEventCustProp_CategoryIDs = _T("*xtp*Categories"); // String name of the corresponding property.
  942. // Public custom properties
  943. static const LPCTSTR cszEventCustProp_MarkupTemplate = _T("xtpMarkupTemplate"); // String name of the MarkupTemplate property.
  944. // Markup template params
  945. static const LPCTSTR cszCalendarMarkupPrm_Subject   = _T("/Calendar/Events/Event/Subject");
  946. static const LPCTSTR cszCalendarMarkupPrm_Location  = _T("/Calendar/Events/Event/Location");
  947. static const LPCTSTR cszCalendarMarkupPrm_Body      = _T("/Calendar/Events/Event/Body");
  948. static const LPCTSTR cszCalendarMarkupPrm_StartTime = _T("/Calendar/Events/Event/StartTime");
  949. static const LPCTSTR cszCalendarMarkupPrm_EndTime   = _T("/Calendar/Events/Event/EndTime");
  950. //===========================================================================
  951. // Summary:
  952. //      This structure describes parameters of the end of the recurrence
  953. //      pattern type.
  954. //===========================================================================
  955. struct XTP_CALENDAR_PATTERN_END
  956. {
  957. //{{AFX_CODEJOCK_PRIVATE
  958. //-----------------------------------------------------------------------
  959. // Summary:
  960. //    Default constructor of the structure.
  961. //    Handles members initialization.
  962. // See Also: ~XTP_CALENDAR_PATTERN_END
  963. //-----------------------------------------------------------------------
  964. XTP_CALENDAR_PATTERN_END()
  965. {
  966. m_nUseEnd = xtpCalendarPatternEndNoDate;
  967. m_dtPatternEndDate = (DATE)0;
  968. m_nEndAfterOccurrences = 1;
  969. }
  970. //-----------------------------------------------------------------------
  971. // Summary:
  972. //    Default destructor of the structure.
  973. //    Handles members deallocation.
  974. // See Also: XTP_CALENDAR_PATTERN_END
  975. //-----------------------------------------------------------------------
  976. virtual ~XTP_CALENDAR_PATTERN_END(){};
  977. //-----------------------------------------------------------------------
  978. // Summary:
  979. //     This assignment operator is used to initialize a
  980. //     XTP_CALENDAR_PATTERN_END object.
  981. // Parameters:
  982. //     rSrc - Source value.
  983. // Returns:
  984. //     A reference to a valid XTP_CALENDAR_PATTERN_END object.
  985. //-----------------------------------------------------------------------
  986. const XTP_CALENDAR_PATTERN_END& operator=(const XTP_CALENDAR_PATTERN_END& rSrc)
  987. {
  988. m_nUseEnd = rSrc.m_nUseEnd;
  989. if (rSrc.m_dtPatternEndDate.GetStatus() == COleDateTime::valid)
  990. {
  991. m_dtPatternEndDate = rSrc.m_dtPatternEndDate;
  992. }
  993. else
  994. {
  995. m_dtPatternEndDate.SetStatus(rSrc.m_dtPatternEndDate.m_status);
  996. }
  997. m_nEndAfterOccurrences = rSrc.m_nEndAfterOccurrences;
  998. return *this;
  999. }
  1000. //}}AFX_CODEJOCK_PRIVATE
  1001. public:
  1002. XTPCalendarPatternEnd   m_nUseEnd;              // End type.
  1003. COleDateTime            m_dtPatternEndDate;     // End date.
  1004. int                     m_nEndAfterOccurrences; // End number of occurrences.
  1005. };
  1006. //////////////////////////////////////////////////////////////////////////
  1007. // Custom class name for the Calendar control window
  1008. static const LPCTSTR XTPCALENDARCTRL_CLASSNAME = _T("XTPCalendar");
  1009. static const LPCTSTR XTPCALENDARCAPTIONBAR_CLASSNAME = _T("XTPCalendarCaptionBar");
  1010. // for compatibility with previous versions
  1011. // see xtp_wm_UserAction
  1012. //
  1013. //{{AFX_CODEJOCK_PRIVATE
  1014. // String name of the calendar switch view custom message
  1015. static const LPCTSTR XTPCALENDARCTRL_SWITCHVIEWMSG = _T("XTPCalendarSwitchView");
  1016. // A message identifier of the calendar switch view custom message
  1017. const UINT xtp_wm_SwitchView = RegisterWindowMessage( XTPCALENDARCTRL_SWITCHVIEWMSG );
  1018. //}}AFX_CODEJOCK_PRIVATE
  1019. // String name of the calendar switch view custom message
  1020. static const LPCTSTR XTPCALENDARCTRL_USERACTION = _T("XTPCalendarUserAction");
  1021. // A message identifier of the Calendar User Action custom message
  1022. const UINT xtp_wm_UserAction = RegisterWindowMessage( XTPCALENDARCTRL_USERACTION );
  1023. // The font name for Office 2007 theme
  1024. #define XTP_CALENDAR_OFFICE2007_FONT_NAME   _T("Segoe UI")
  1025. //////////////////////////////////////////////////////////////////////////
  1026. /////////////////////////////////////////////////////////////////////////////
  1027. #endif // !defined(_XTPCALENDARDEFINES_H__)