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

对话框与窗口

开发平台:

Visual C++

  1. // XTPCalendarViewEvent.h: interface for the CXTPCalendarViewEvent 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(_XTP_CALENDARViewEvent_H__)
  22. #define _XTP_CALENDARViewEvent_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. #include "XTPCalendarPtrCollectionT.h"
  28. #include "Common/XTPDrawHelpers.h"
  29. #include "XTPCalendarDefines.h"
  30. #include "XTPCalendarView.h"
  31. class CXTPCalendarEvent;
  32. class CXTPCalendarControl;
  33. class CXTPCalendarViewGroup;
  34. struct XTP_CALENDAR_HITTESTINFO;
  35. class CXTPCalendarViewEventSubjectEditor;
  36. class CXTPMarkupUIElement;
  37. //===========================================================================
  38. // Summary:
  39. //     Enumerates allowable formats for event caption.
  40. //===========================================================================
  41. enum XTPCalendarEventCaptionFormat
  42. {
  43. xtpCalendarCaptionFormatUnknown          = 0,   // Undefined format.
  44. xtpCalendarCaptionFormatSubject          = 1,   // Caption displays subject.
  45. xtpCalendarCaptionFormatStartSubject     = 2,   // Besides subject displays start time.
  46. xtpCalendarCaptionFormatStartEndSubject  = 3    // Besides subject displays start and end time.
  47. };
  48. //===========================================================================
  49. // Summary:
  50. //     Enumerates defined flags for multi day event states.
  51. //===========================================================================
  52. enum XTPCalendarMultiDayEventFlags
  53. {
  54. xtpCalendarMultiDayUnknown     = 0,             // Undefined multi day event.
  55. xtpCalendarMultiDayNoMultiDay  = 0x01,          // Not a multi day event.
  56. xtpCalendarMultiDayFirst       = 0x02,          // First portion of a multi day event.
  57.                                                 // Displayed in the first (by date) day view.
  58. xtpCalendarMultiDayMiddle      = 0x04,          // Middle portion of a multi day event.
  59.                                                 // Displayed in one of a middle day view.
  60. xtpCalendarMultiDayLast        = 0x08,          // Last portion of a multi day event.
  61.                                                 // Displayed in the last (by date) day view.
  62. xtpCalendarMultiDayFMLmask     = xtpCalendarMultiDayFirst | xtpCalendarMultiDayMiddle | xtpCalendarMultiDayLast, // Combined flag.
  63. xtpCalendarMultiDayMaster      = 0x10,          // First portion of a multi day event.
  64.                                                 // Displayed in the first (by date) day view.
  65. xtpCalendarMultiDaySlave       = 0x20,          // Rest of the event views (besides Master).
  66. xtpCalendarMultiDayMSmask      = xtpCalendarMultiDayMaster | xtpCalendarMultiDaySlave    // Combines flag.
  67. };
  68. //===========================================================================
  69. // Summary:
  70. //     This class represents an event view portion of the CalendarViewGroup.
  71. // Remarks:
  72. //     It represents a specific view of the event associated data according
  73. //     to various view types and display settings and provides basic
  74. //     functionality on this data using user input through keyboard and mouse.
  75. //
  76. //          These are the predefined view implementations available
  77. //          for the Calendar control:
  78. //
  79. //
  80. //          * Day and work week event views - Using the CXTPCalendarDayViewEvent class.
  81. //          * Week event view               - Using the CXTPCalendarWeekViewEvent class.
  82. //          * Month view view               - Using the CXTPCalendarMonthViewEvent class.
  83. //
  84. //
  85. //          Furthermore, any type of user defined event view may also be implemented as
  86. //          a descendant of the CXTPCalendarViewEvent class.
  87. //
  88. // See Also: CXTPCalendarDayViewEvent, CXTPCalendarWeekViewEvent,
  89. //              CXTPCalendarMonthViewEvent,
  90. //          CXTPCalendarView, CXTPCalendarViewDay, CXTPCalendarViewGroup
  91. //===========================================================================
  92. class _XTP_EXT_CLASS CXTPCalendarViewEvent : public CXTPCalendarWMHandler
  93. {
  94. //{{AFX_CODEJOCK_PRIVATE
  95. friend class CXTPCalendarView;
  96. friend class CXTPCalendarViewDay;
  97. friend class CXTPCalendarViewGroup;
  98. DECLARE_DYNAMIC(CXTPCalendarViewEvent)
  99. typedef CXTPCalendarWMHandler TBase;
  100. //}}AFX_CODEJOCK_PRIVATE
  101. public:
  102. //-----------------------------------------------------------------------
  103. // Summary:
  104. //     Default object constructor.
  105. // Parameters:
  106. //     pViewGroup    - A pointer to a CXTPCalendarViewGroup object.
  107. //     pEvent      - A pointer to a CXTPCalendarEvent object.
  108. // See Also: ~CXTPCalendarViewEvent()
  109. //-----------------------------------------------------------------------
  110. CXTPCalendarViewEvent(CXTPCalendarEvent* pEvent, CXTPCalendarViewGroup* pViewGroup);
  111. //-----------------------------------------------------------------------
  112. // Summary:
  113. //     Default class destructor.
  114. //-----------------------------------------------------------------------
  115. virtual ~CXTPCalendarViewEvent();
  116. //-----------------------------------------------------------------------
  117. // Summary:
  118. //     This member function is used to determine which view item,
  119. //     if any, is at the specified position index, and returns additional
  120. //     info in the XTP_CALENDAR_HITTESTINFO struct.
  121. // Parameters:
  122. //     pt          - A CPoint that contains the coordinates of the point to test.
  123. //     pHitTest    - A pointer to an XTP_CALENDAR_HITTESTINFO structure.
  124. // Returns:
  125. //     A BOOL. TRUE if the item is found. FALSE otherwise.
  126. // See Also: XTP_CALENDAR_HITTESTINFO
  127. //-----------------------------------------------------------------------
  128. virtual BOOL HitTest(CPoint pt, XTP_CALENDAR_HITTESTINFO* pHitTest) = 0;
  129. //-----------------------------------------------------------------------
  130. // Summary:
  131. //     Call this member function to obtain a pointer to the containing
  132. //     CXTPCalendarViewDay object.
  133. // Returns:
  134. //     A pointer to the CXTPCalendarViewDay object.
  135. //-----------------------------------------------------------------------
  136. virtual CXTPCalendarViewGroup* GetViewGroup_() const = 0;
  137. //-----------------------------------------------------------------------
  138. // Summary:
  139. //     Call this member function to obtain the corresponding read only
  140. //     event object without increasing the object's reference counter.
  141. // Returns:
  142. //     A pointer to a CXTPCalendarEvent object.
  143. //-----------------------------------------------------------------------
  144. CXTPCalendarEvent* GetEvent();
  145. //-----------------------------------------------------------------------
  146. // Summary:
  147. //     Call this member function to obtain a pointer to the containing
  148. //     CXTPCalendarViewDay object.
  149. // Returns:
  150. //     A pointer to a CXTPCalendarViewDay object.
  151. //-----------------------------------------------------------------------
  152. CXTPCalendarControl* GetCalendarControl();
  153. //-----------------------------------------------------------------------
  154. // Summary:
  155. //     Call this member function to determine if this event view is
  156. //     visible on the screen.
  157. // Remarks:
  158. //     This is a pure virtual function. This function must be defined
  159. //     in the derived class.
  160. // Returns:
  161. //     A BOOL. TRUE if the event view is visible. FALSE otherwise.
  162. //-----------------------------------------------------------------------
  163. virtual BOOL IsVisible() = 0;
  164. //-----------------------------------------------------------------------
  165. // Summary:
  166. //     Call this member function to determine if the given event view
  167. //     is selected.
  168. // Returns:
  169. //     A BOOL. TRUE if the event view is selected. FALSE otherwise.
  170. // See Also: SetSelected(bSet)
  171. //-----------------------------------------------------------------------
  172. virtual BOOL IsSelected() const;
  173. //-----------------------------------------------------------------------
  174. // Summary:
  175. //     This member function is used to set the day view as select or
  176. //     unselected.
  177. // Parameters:
  178. //     bSet    - A BOOL. If TRUE, then set the flag as selected.
  179. //               Otherwise, set the flag as unselected.
  180. // See Also: IsSelected()
  181. //-----------------------------------------------------------------------
  182. virtual void SetSelected(BOOL bSet = TRUE);
  183. //-----------------------------------------------------------------------
  184. // Summary:
  185. //     Call this member function to determine if the given event view
  186. //     is a multi-day event.
  187. // Returns:
  188. //     A BOOL. TRUE if the event view is a multi-day event. FALSE otherwise.
  189. //-----------------------------------------------------------------------
  190. virtual BOOL IsMultidayEvent();
  191. //-----------------------------------------------------------------------
  192. // Summary:
  193. //     This member function is used to create and to show the subject
  194. //     editor.
  195. // Remarks:
  196. //     Subject is created only for the Master event if the event is a
  197. //     multi day event. If this member function is called for a slave
  198. //     event, then the editing process is passed to the master event.
  199. // Returns:
  200. //     A pointer to a CXTPCalendarViewEvent object for which editor is created.
  201. //-----------------------------------------------------------------------
  202. virtual CXTPCalendarViewEvent* StartEditSubject();
  203. //-----------------------------------------------------------------------
  204. // Summary:
  205. //     Call this member function to obtain an edited subject.
  206. // Returns:
  207. //     A CString object containing the edited subject.
  208. //-----------------------------------------------------------------------
  209. virtual CString GetEditingSubjectFromEditor();
  210. //-----------------------------------------------------------------------
  211. // Summary:
  212. //     This member function is used to end the editing project, delete
  213. //     the subject editor, and to obtain the edited text.
  214. // Returns:
  215. //     A CString object containing the edited subject text.
  216. //-----------------------------------------------------------------------
  217. virtual CString EndEditSubject();
  218. //-----------------------------------------------------------------------
  219. // Summary:
  220. //     This member function is used to show a ToolTip rectangle.
  221. //-----------------------------------------------------------------------
  222. virtual void ShowToolTip();
  223. //-----------------------------------------------------------------------
  224. // Summary:
  225. //     This member function is used to hide the ToolTip rectangle.
  226. //-----------------------------------------------------------------------
  227. virtual void HideToolTip();
  228. //-----------------------------------------------------------------------
  229. // Summary:
  230. //     Call this member function to determine if the event's subject
  231. //     is currently being edited.
  232. // Returns:
  233. //     A BOOL. TRUE if the subject is being edited. FALSE otherwise.
  234. //-----------------------------------------------------------------------
  235. virtual BOOL IsEditingSubject() const;
  236. //-----------------------------------------------------------------------
  237. // Summary:
  238. //     This member function is used to obtain the subject editor
  239. //     rectangle coordinates.
  240. // Returns:
  241. //     A CRect object containing the subject editor rectangle coordinates.
  242. //-----------------------------------------------------------------------
  243. virtual CRect GetSubjectEditorRect() const;
  244. //-----------------------------------------------------------------------
  245. // Summary:
  246. //     This member function is used to obtain the event's subject
  247. //     editor window.
  248. // Returns:
  249. //     A pointer to the CWnd or NULL.
  250. //-----------------------------------------------------------------------
  251. virtual CWnd* GetSubjectEditor();
  252. //-----------------------------------------------------------------------
  253. // Summary:
  254. //     Call this member function to determine if the event's tooltip
  255. //     is visible.
  256. // Returns:
  257. //     A BOOL. TRUE if the subject is visible. FALSE otherwise.
  258. //-----------------------------------------------------------------------
  259. virtual BOOL IsShowingToolTip();
  260. //-----------------------------------------------------------------------
  261. // Summary:
  262. //     This member function is used to format the event's time as a
  263. //     string with a predefined format.
  264. // Parameters:
  265. //     dtTime  - A COleDateTime time object that contains the value
  266. //               to format.
  267. // Returns:
  268. //     A CString object that contains the formatted time.
  269. //-----------------------------------------------------------------------
  270. virtual CString FormatEventTime(COleDateTime dtTime);
  271. //-----------------------------------------------------------------------
  272. // Summary:
  273. //     This member function is used to obtain the rectangle coordinates
  274. //     used for drawing a clock in the beginning of a multi day event.
  275. // Returns:
  276. //     A CRect object containing the clocks rectangle coordinates.
  277. //-----------------------------------------------------------------------
  278. virtual CRect GetFirstClockRect();
  279. //-----------------------------------------------------------------------
  280. // Summary:
  281. //     This member function is used to obtain the rectangle coordinates
  282. //     used for drawing a clock in the end of multi day event.
  283. // Returns:
  284. //     A CRect object containing the clocks rectangle.
  285. //-----------------------------------------------------------------------
  286. virtual CRect GetLastClockRect();
  287. //-----------------------------------------------------------------------
  288. // Summary:
  289. //     This member function is used to obtain the rectangle coordinates
  290. //     used for displaying the event's subject.
  291. // Returns:
  292. //     A CRect object containing the text rectangle.
  293. //-----------------------------------------------------------------------
  294. virtual CRect GetTextRect();
  295. //-----------------------------------------------------------------------
  296. // Summary:
  297. //     This member function is used to obtain the rectangle coordinates
  298. //     used for displaying a clock to show the start event time for
  299. //     single day events.
  300. // Returns:
  301. //     A CRect object containing the clocks rectangle.
  302. //-----------------------------------------------------------------------
  303. virtual CRect GetStartTimeRect();
  304. //-----------------------------------------------------------------------
  305. // Summary:
  306. //     This member function is used to obtain the rectangle coordinates
  307. //     for displaying a clock to show the end event time for single day events.
  308. // Returns:
  309. //     A CRect object containing the clocks rectangle.
  310. //-----------------------------------------------------------------------
  311. virtual CRect GetEndTimeRect();
  312. //-----------------------------------------------------------------------
  313. // Summary:
  314. //     This member function is used to obtain the rectangle coordinates
  315. //     for the event's rectangle.
  316. // Returns:
  317. //     A CRect object containing the event's rectangle.
  318. //-----------------------------------------------------------------------
  319. virtual CRect GetViewEventRect();
  320. //-----------------------------------------------------------------------
  321. // Summary:
  322. //     This member function is used to obtain the rectangle coordinates
  323. //     for the event's maximum rectangle dimensions.
  324. // Returns:
  325. //     A CRect object containing the event's maximum rectangle dimensions.
  326. //-----------------------------------------------------------------------
  327. virtual CRect GetViewEventRectMax();
  328. //-----------------------------------------------------------------------
  329. // Summary:
  330. //     This member function is used to obtain the rectangle coordinates
  331. //     for displaying the remainder icon.
  332. // Returns:
  333. //     A CRect object containing the glyph rectangle.
  334. //-----------------------------------------------------------------------
  335. virtual CRect GetReminderGlyphRect();
  336. //-----------------------------------------------------------------------
  337. // Summary:
  338. //     This member function is used to obtain the rectangle coordinates
  339. //     used for displaying the recurrence icon.
  340. // Returns:
  341. //     A CRect object containing the glyph rectangle.
  342. //-----------------------------------------------------------------------
  343. virtual CRect GetRecurrenceGlyphRect();
  344. //-----------------------------------------------------------------------
  345. // Summary:
  346. //     This member function obtains the rectangle coordinates for
  347. //     displaying the meeting icon.
  348. // Returns:
  349. //     A CRect object containing the glyph rectangle.
  350. //-----------------------------------------------------------------------
  351. virtual CRect GetMeetingGlyphRect();
  352. //-----------------------------------------------------------------------
  353. // Summary:
  354. //     This member function is used to obtain the rectangle coordinates
  355. //     used for displaying the private icon.
  356. // Returns:
  357. //     A CRect object containing the glyph rectangle.
  358. //-----------------------------------------------------------------------
  359. virtual CRect GetPrivateGlyphRect();
  360. //-----------------------------------------------------------------------
  361. // Summary:
  362. //     This member function is used to obtain the flag to determine if
  363. //     multi day text align mode is on.
  364. // Remarks:
  365. //     Multi day text align mode means that all event items align to the
  366. //     center.
  367. // Returns:
  368. //     A BOOL. TRUE if multi day text align mode is on. FALSE otherwise.
  369. //-----------------------------------------------------------------------
  370. virtual BOOL IsMultyDayTextAlign();
  371. //-----------------------------------------------------------------------
  372. // Summary:
  373. //     This member function is used to obtain the multi day event state flags.
  374. // Returns:
  375. //     An int that contains the event state flags.
  376. // See Also: XTPCalendarMultiDayEventFlags
  377. //-----------------------------------------------------------------------
  378. virtual int  GetMultiDayEventFlags() const;
  379. //-----------------------------------------------------------------------
  380. // Summary:
  381. //     This member function is used to set the multi day event Master/Slave state.
  382. // Parameters:
  383. //     bMaster     - A BOOL. Used to indicate Master or Slave state.
  384. //                   TRUE if in the Master state.
  385. //                   FALSE if in the Slave state.
  386. //     pMasterView - A CXTPCalendarViewEvent pointer to the Master event view object.
  387. // Remarks:
  388. //     Master/Slave states are used to draw a multi day event. Such
  389. //     event are drawn not as a few events for a few days, but as one big
  390. //     event for a few days, or a few big events for a few days. For this
  391. //     purposes, the first event view in the chain is marked as <b>Master</b>
  392. //     and other events views in this chain are marked as <b>Slave</b>.
  393. //     Event view's chain is the set of events views which can be
  394. //     drawn continuously in the one row.
  395. //     On adjust layout process width of the Master event view rect
  396. //     is extended to cover last Slave event view rect in the chain
  397. //     and only master event view are drawn because it covers Slave
  398. //     evens views too. Slave events views look hidden and they
  399. //     are used for adjusting process (to reserve place on the screen
  400. //     and for other purposes).One multi day event can have few Master
  401. //     events. This depends on screen positions of days event parts.
  402. // See Also: AddMultiDayEvent_Slave
  403. //-----------------------------------------------------------------------
  404. virtual void SetMultiDayEvent_MasterSlave(BOOL bMaster, CXTPCalendarViewEvent* pMasterView);
  405. //-----------------------------------------------------------------------
  406. // Summary:
  407. //     This member function is used to add a Slave event view to the
  408. //     Master event view.
  409. // Parameters:
  410. //     pSlaveView        - A CXTPCalendarViewEvent pointer to the Slave
  411. //                         event view object.
  412. //     nMasterEventPlace - An int that contains the Master event place number.
  413. // Remarks:
  414. //     For multi day event only.
  415. // See Also: SetMultiDayEvent_MasterSlave
  416. //-----------------------------------------------------------------------
  417. virtual void AddMultiDayEvent_Slave(CXTPCalendarViewEvent* pSlaveView, int nMasterEventPlace);
  418. //-----------------------------------------------------------------------
  419. // Summary:
  420. //     This member function is used to set a flag to determine if the
  421. //     text size exceeds the event view bounds.
  422. // Parameters:
  423. //     bOutOfBorders - A BOOL. TRUE if the text is out of the borders.
  424. //                     FALSE otherwise.
  425. //-----------------------------------------------------------------------
  426. virtual void SetTextOutOfBorders(BOOL bOutOfBorders);
  427. //-----------------------------------------------------------------------
  428. // Summary:
  429. //     This member function is used to determine if the text size
  430. //     exceeds the event view bounds.
  431. // Returns:
  432. //     A BOOL. TRUE if text size exceeds the event view bounds. FALSE otherwise.
  433. //-----------------------------------------------------------------------
  434. virtual BOOL IsTextOutOfBorders();
  435. //-----------------------------------------------------------------------
  436. // Summary:
  437. //     This member function is used to obtain the place number of the
  438. //     event view.
  439. // Returns:
  440. //     An int that contains the event's view place number.
  441. //-----------------------------------------------------------------------
  442. virtual int GetEventPlaceNumber() const;
  443. //-----------------------------------------------------------------------
  444. // Summary:
  445. //     This member function is used to obtain the event view's bounding
  446. //     rectangle.
  447. // Remarks:
  448. //     Use this member function to obtain the event view's bounding
  449. //     rectangle coordinates.
  450. // Returns:
  451. //     A CRect object with the bounding rectangle's coordinates.
  452. //-----------------------------------------------------------------------
  453. CRect GetEventRect() const;
  454. //-----------------------------------------------------------------------
  455. // Summary:
  456. //     This member function is used to adjust the view's layout
  457. //     depending on the provided rectangle and calls AdjustLayout()
  458. //     for all sub-items.
  459. // Parameters:
  460. //     pDC               - A pointer to a valid device context.
  461. //     rcEventMax        - A CRect that contains the rectangle coordinates
  462. //                         used to draw the view.
  463. //     nEventPlaceNumber - An int that contains the sequential place number.
  464. // Remarks:
  465. //     Call Populate(COleDateTime dtDayDate) prior to adjust layout.
  466. //-----------------------------------------------------------------------
  467. virtual void AdjustLayout(CDC* pDC, const CRect& rcEventMax, int nEventPlaceNumber);
  468. virtual void AdjustLayout2(CDC* pDC, const CRect& rcEventMax, int nEventPlaceNumber) = 0; // <COMBINE CXTPCalendarViewEvent::AdjustLayout@CDC*@const CRect&@int>
  469. //-----------------------------------------------------------------------
  470. // Summary:
  471. //     This member function is used to perform additional adjustments
  472. //     in some kinds of views.
  473. // Remarks:
  474. //     Call this member function to perform additional adjustments after
  475. //     all adjustment activities are completed.
  476. //-----------------------------------------------------------------------
  477. virtual void OnPostAdjustLayout();
  478. //-----------------------------------------------------------------------
  479. // Summary:
  480. //     This member function is used to draw the view content using
  481. //     the specified device context.
  482. // Parameters:
  483. //     pDC - A pointer to a valid device context.
  484. // Remarks:
  485. //     Call AdjustLayout() before calling Draw().
  486. //     This is a pure virtual function. This function must be defined
  487. //     in the derived class.
  488. // See Also: AdjustLayout()
  489. //-----------------------------------------------------------------------
  490. virtual void Draw(CDC* pDC) = 0;
  491. //-----------------------------------------------------------------------
  492. // Summary:
  493. //     This member function is used to perform adjustments of the subject
  494. //     editor area.
  495. // Remarks:
  496. //     Call this member function to perform adjustment of subject editor
  497. //     rectangle.
  498. //-----------------------------------------------------------------------
  499. virtual void AdjustSubjectEditor();
  500. //-----------------------------------------------------------------------
  501. // Summary:
  502. //     These member functions are used to obtain event subject, location,
  503. //     body and others items text.
  504. // parameters:
  505. //     dwItemFlag       - [in] Flags from enum XTPCalendarGetItemText
  506. //                        which specify event item.
  507. //     pcszDefaultText  - [in] Pointer to default item text or NULL to
  508. //                        generate default text automatically.
  509. // Remarks:
  510. //     If AskItemTextFlags has xtpCalendarItemText_EventXXX
  511. //     flags set - XTP_NC_CALENDAR_GETITEMTEXT notification is sent to
  512. //     customize standard text.
  513. // See Also:
  514. //     XTPCalendarGetItemText,XTPCalendarGetItemTextEx,
  515. //     XTP_NC_CALENDAR_GETITEMTEXT,
  516. //     CXTPCalendarControl::GetAskItemTextFlags,
  517. //     CXTPCalendarControlPaintManager::GetAskItemTextFlags,
  518. //     CXTPCalendarControlPaintManager::SetAskItemTextFlags,
  519. //     CXTPCalendarTheme::GetAskItemTextFlags,
  520. //     CXTPCalendarTheme::SetAskItemTextFlags
  521. //-----------------------------------------------------------------------
  522. virtual CString GetItemTextSubject();
  523. virtual CString GetItemTextLocation(); //<COMBINE GetItemTextSubject>
  524. virtual CString GetItemTextBody();     //<COMBINE GetItemTextSubject>
  525. virtual CString GetItemTextStartTime(); //<COMBINE GetItemTextSubject>
  526. virtual CString GetItemTextEndTime();   //<COMBINE GetItemTextSubject>
  527. virtual CString GetItemText(DWORD dwItemFlag, LPCTSTR pcszDefaultText = NULL); //<COMBINE GetItemTextSubject>
  528. //-----------------------------------------------------------------------
  529. // Summary:
  530. //     This member functions are used to obtain markup template text.
  531. // Remarks:
  532. //     It internally call GetItemText to replace markup template parameters:
  533. //  [ul]
  534. //  [li] /Calendar/Events/Event/Subject
  535. //  [li] /Calendar/Events/Event/Location
  536. //  [li] /Calendar/Events/Event/Body
  537. //  [li] /Calendar/Events/Event/StartTime
  538. //  [li] /Calendar/Events/Event/EndTime
  539. // Returns:
  540. //     String with prepared markup text.
  541. //-----------------------------------------------------------------------
  542. virtual CString GetMarkupText();
  543. //-----------------------------------------------------------------------
  544. // Summary:
  545. //     This member functions are used to get stored CXTPMarkupUIElement object.
  546. // Returns:
  547. //     A pointer to CXTPMarkupUIElement object.
  548. //-----------------------------------------------------------------------
  549. virtual CXTPMarkupUIElement* GetMarkupUIElement();
  550. protected:
  551. //-----------------------------------------------------------------------
  552. // Summary:
  553. //     This member function is used to adjust a multi day view's layout
  554. //     depending on the provided rectangle coordinates.
  555. // Parameters:
  556. //     rcEventMax        - A CRect that contains the rectangle coordinates
  557. //                         used to draw the view.
  558. //     nEventPlaceNumber - An int that contains the sequential place number.
  559. // Remarks:
  560. //     Call this member function to perform special adjustment of
  561. //     multi day events that must be drawn together through a number
  562. //     of sequential days in some views.
  563. //     Call Populate(COleDateTime dtDayDate) prior to adjust layout.
  564. //-----------------------------------------------------------------------
  565. virtual void AdjustMultidayEvent(CRect rcEventMax, int nEventPlaceNumber);
  566. //-----------------------------------------------------------------------
  567. // Summary:
  568. //     This member function is used to obtain tooltip text for the
  569. //     event view.
  570. // Returns:
  571. //     A CString object containing the tooltip text.
  572. //-----------------------------------------------------------------------
  573. virtual CString GetToolText();
  574. //-----------------------------------------------------------------------
  575. // Summary:
  576. //     This member function is used to adjust the icons rectangle used
  577. //     to draw the event view icons.
  578. // Parameters:
  579. //     rc  - A CRect that contains the coordinates used to draw the view.
  580. // Remarks:
  581. //     Call this member function to calculate rectangles used to draw event
  582. //     view icons depending on what glyphs must be drawn and based on
  583. //     the event view rect.
  584. //-----------------------------------------------------------------------
  585. virtual int CalcIconsRect(CRect rc);
  586. //-----------------------------------------------------------------------
  587. // Summary:
  588. //     This member function is used to process mouse movement events.
  589. // Parameters:
  590. //     nFlags  - A UINT that indicates whether various virtual keys are down.
  591. //     point   - A CPoint that specifies the x- and y- coordinate of the cursor.
  592. //               These coordinates are always relative to the
  593. //               upper-left corner of the window.
  594. // Remarks:
  595. //     This method is called by the CalendarViewGroup when the user
  596. //     moves the mouse cursor or stylus.
  597. //-----------------------------------------------------------------------
  598. virtual void OnMouseMove(UINT nFlags, CPoint point);
  599. //-----------------------------------------------------------------------
  600. // Summary:
  601. //     This member function is used to create a timer event.
  602. // Parameters:
  603. //     uTimeOut_ms - A UINT that specifies the duration of the timer
  604. //                   in milliseconds.
  605. // Returns:
  606. //     The identifier of the timer.
  607. //-----------------------------------------------------------------------
  608. virtual UINT SetTimer(UINT uTimeOut_ms);
  609. //-----------------------------------------------------------------------
  610. // Summary:
  611. //     This member function is used to destroy a timer event.
  612. // Parameters:
  613. //     uTimerID - A UINT that specifies the identifier of the timer.
  614. // Returns:
  615. //     For the derived classes. This member function should return
  616. //     TRUE if successful. FALSE otherwise.
  617. //-----------------------------------------------------------------------
  618. virtual void KillTimer(UINT uTimerID);
  619. //-----------------------------------------------------------------------
  620. // Summary:
  621. //     The framework calls this member function after each interval
  622. //     specified in the SetTimer member function.
  623. // Parameters:
  624. //     uTimerID - A UINT that specifies the identifier of the timer.
  625. // Returns:
  626. //     A BOOL. TRUE if successful. FALSE otherwise.
  627. //-----------------------------------------------------------------------
  628. virtual BOOL OnTimer(UINT_PTR uTimerID);
  629. //-----------------------------------------------------------------------
  630. // Summary:
  631. //     This member function is used to obtain the timeout value for
  632. //     displaying a tooltip.
  633. // Returns:
  634. //     A UINT that contains the value of timeout in milliseconds.
  635. //-----------------------------------------------------------------------
  636. virtual UINT GetShowToolTipTimeOut() const;
  637. //-----------------------------------------------------------------------
  638. // Summary:
  639. //     This member function is used to obtain the styles of the editor
  640. //     window.
  641. // Returns:
  642. //     A DWORD that contains the value of the window styles.
  643. //-----------------------------------------------------------------------
  644. virtual DWORD GetSubjectEditorStyles(); // like multi-line
  645. //-----------------------------------------------------------------------
  646. // Summary:
  647. //     This member function is used to obtain a pointer to the editor
  648. //     window font.
  649. // Returns:
  650. //     A pointer to a CFont object that contains the editor window font.
  651. //-----------------------------------------------------------------------
  652. virtual CFont* GetSubjectEditorFont();
  653. // ------------------------------------------------------------
  654. // Summary:
  655. //     This function is used to change the event place number.
  656. // Parameters:
  657. //     nNewPlace :  new event place number.
  658. // ------------------------------------------------------------
  659. virtual void ChangeEventPlace(int nNewPlace);
  660. //{{AFX_CODEJOCK_PRIVATE
  661. virtual void _ChangeEventPlace(int nNewPlace, int nYbasePrev, int nYbaseNew);
  662. //}}AFX_CODEJOCK_PRIVATE
  663. //-----------------------------------------------------------------------
  664. // Summary:
  665. //     This member function is used to move the rectangle vertically.
  666. // Parameters:
  667. //     nYbasePrev  - An int that contains the previous position.
  668. //     nYbaseNew   - An int that contains the new position.
  669. //     rRC         - A CRect that contains the rectangle coordinates.
  670. //-----------------------------------------------------------------------
  671. static void _MoveRectY(int nYbasePrev, int nYbaseNew, CRect& rRC);
  672. //-----------------------------------------------------------------------
  673. // Summary:
  674. //     Called by the framework before the destroy() function is called.
  675. //-----------------------------------------------------------------------
  676. virtual void OnBeforeDestroy();
  677. public:
  678. CXTPEmptyRect m_rcEvent;            // Event view rectangle.
  679. CXTPEmptyRect m_rcEventMax;         // Event view rectangle margins.
  680. CXTPEmptyRect m_rcText;             // Rectangle to display event text in event view.
  681. CSize m_szText;                     // Sizes of displayed text.
  682. CXTPEmptyRect m_rcFirstClock;       // Rectangle to draw clock in the beginning of the first day of multi day event.
  683. CXTPEmptyRect m_rcLastClock;        // Rectangle to draw clock at the end of the last day of multi day event.
  684. CXTPEmptyRect m_rcStartTime;        // Rectangle to display start time day event view.
  685. CXTPEmptyRect m_rcEndTime;          // Rectangle to display end time event view.
  686. int m_nMultiDayEventFlags;                // Multi day event flags packed into integer by bitwise operations.
  687. //protected:
  688. CXTPEmptyRect m_rcReminderGlyph;    // Rectangle to draw reminder glyph event view.
  689. CXTPEmptyRect m_rcRecurrenceGlyph;  // Rectangle to draw recurrence glyph event view.
  690. CXTPEmptyRect m_rcMeetingGlyph;     // Rectangle to draw meeting glyph event view.
  691. CXTPEmptyRect m_rcPrivateGlyph;     // Rectangle to draw private glyph event view.
  692. CXTPEmptyRect m_rcSubjectEditor;    // Subject editor rectangle.
  693. CXTPEmptyRect m_rcToolTip;          // Tool tip rectangle.
  694. CXTPMarkupUIElement* m_pUIElement;       // Store pointer to CXTPMarkupUIElement object.
  695. CString              m_strUIElementText; // Store last markup text for which m_pUIElement object was updated.
  696. protected:
  697. CXTPCalendarEvent*    m_ptrEvent; // Pointer to the displayed event object.
  698. BOOL m_bSelected;                   // Event view selected flag.
  699. CXTPCalendarViewEvent* m_pMasterView;   // Pointer to Master event view object.
  700. int m_nEventPlaceNumber;                  // Event view place number (sequential identifier).
  701. UINT m_nTimerID_ShowToolTip;        // Identifier of timer event to show tooltip with delay.
  702. CXTPCalendarViewEventSubjectEditor* m_pSubjectEditor;            // Pointer to subject editor.
  703. BOOL m_bMultyDayTextAlign;          // Flag indicates special text alignment for multi day event.
  704. BOOL m_bTextOutOfBorders;           // Flag indicates text out of event borders.
  705. private:
  706. BOOL m_bShowingToolTip;             // Whether we are currently showing event tooltip window.
  707. };
  708. //===========================================================================
  709. // Summary:
  710. //     This class used as collection of Event View object.
  711. // See Also: CXTPCalendarPtrCollectionT
  712. //===========================================================================
  713. class _XTP_EXT_CLASS CXTPCalendarViewEvents : public CXTPCalendarPtrCollectionT<CXTPCalendarViewEvent>
  714. {
  715. public:
  716. //{{AFX_CODEJOCK_PRIVATE
  717. typedef CXTPCalendarPtrCollectionT<CXTPCalendarViewEvent> TBase;
  718. //}}AFX_CODEJOCK_PRIVATE
  719. //-----------------------------------------------------------------------
  720. // Summary:
  721. //     Default class constructor.
  722. //-----------------------------------------------------------------------
  723. CXTPCalendarViewEvents();
  724. //-----------------------------------------------------------------------
  725. // Summary:
  726. //     Default class destructor.
  727. //-----------------------------------------------------------------------
  728. virtual ~CXTPCalendarViewEvents();
  729. //-----------------------------------------------------------------------
  730. // Summary:
  731. //      This member function finds first event view index in the collection
  732. //      using event object.
  733. // Parameters:
  734. //      pEvent - A pointer to a CXTPCalendarEvent object.
  735. // Returns:
  736. //      -1 if event view is not found, otherwise an integer index that is
  737. //      greater than or equal to 0 and less than the value returned
  738. //      by GetCount.
  739. //-----------------------------------------------------------------------
  740. virtual int Find(CXTPCalendarEvent* pEvent);
  741. //-----------------------------------------------------------------------
  742. // Summary:
  743. //      This member function finds all event views for event object
  744. //      and removes them from the array.
  745. // Parameters:
  746. //      pEvent - A pointer to a CXTPCalendarEvent object.
  747. //-----------------------------------------------------------------------
  748. virtual void Remove(CXTPCalendarEvent* pEvent);
  749. };
  750. //===========================================================================
  751. // Summary:
  752. //     This class is used to build the ViewEvent layer of the DayView and
  753. //     ViewEvent hierarchies.
  754. // Remarks:
  755. //     This class template customizes, overrides and implements some
  756. //     functionality for the CXTPCalendarViewEvent base class.
  757. //     It is used as a part of the calendar control framework to build
  758. //     <b><i>ViewEvent</i></b> layer of <b>View->DayView->ViewEvent</b>
  759. //     typed objects hierarchy.
  760. //     These are the template parameters:
  761. //     _TViewGroup   - Type of View Day objects stored in View
  762. //     _THitTest   - Type of HitTest struct, used as parameter in the
  763. //                     member functions.
  764. //
  765. //          All of the above parameters are required.
  766. //
  767. // See Also: CXTPCalendarViewEvent
  768. //===========================================================================
  769. template<class _TViewGroup, class _THitTest>
  770. class CXTPCalendarViewEventT : public CXTPCalendarViewEvent
  771. {
  772. public:
  773. //-----------------------------------------------------------------------
  774. // Summary:
  775. //     Default object constructor.
  776. // Parameters:
  777. //     pEvent      - Pointer to CXTPCalendarEvent object.
  778. //     pViewGroup    - Template parameter specifies type of VIew Day object.
  779. // See Also: ~CXTPCalendarViewEventT()
  780. //-----------------------------------------------------------------------
  781. CXTPCalendarViewEventT(CXTPCalendarEvent* pEvent, _TViewGroup* pViewGroup) :
  782. CXTPCalendarViewEvent(pEvent, (CXTPCalendarViewGroup*)pViewGroup) {
  783. m_pViewGroup = pViewGroup;
  784. }
  785. //-----------------------------------------------------------------------
  786. // Summary:
  787. //     Default class destructor.
  788. //-----------------------------------------------------------------------
  789. virtual ~CXTPCalendarViewEventT() {
  790. };
  791. //-----------------------------------------------------------------------
  792. // Summary:
  793. //     This member function is used to determine which view item,
  794. //     if any, is at a specified position index, and returns additional
  795. //     info in a XTP_CALENDAR_HITTESTINFO struct.
  796. // Parameters:
  797. //     pt       - A CPoint that contains the coordinates of the point to
  798. //                test.
  799. //     pHitTest - A pointer to a XTP_CALENDAR_HITTESTINFO structure that
  800. //                contains information about the point to test.
  801. // Returns:
  802. //     A BOOL. TRUE if the item is found. FALSE otherwise.
  803. // See Also: XTP_CALENDAR_HITTESTINFO
  804. //-----------------------------------------------------------------------
  805. virtual BOOL HitTest(CPoint pt, XTP_CALENDAR_HITTESTINFO* pHitTest)
  806. {
  807. _THitTest hitInfo;
  808. BOOL bRes = HitTestEx(pt, &hitInfo);
  809. if (bRes && pHitTest) {
  810. *pHitTest = (XTP_CALENDAR_HITTESTINFO)hitInfo;
  811. }
  812. return bRes;
  813. }
  814. //-----------------------------------------------------------------------
  815. // Summary:
  816. //     This member function is used to determine which view item,
  817. //     if any, is at a specified position index, and returns additional
  818. //     info in a _THitTest template parameter.
  819. // Parameters:
  820. //     pt       - A CPoint that contains the coordinates of the point to test.
  821. //     pHitTest - A pointer to a _THitTest. Template parameter specifies
  822. //                the type of HitTest info structure.
  823. // Returns:
  824. //     TRUE if item is found. FALSE otherwise.
  825. // See Also: XTP_CALENDAR_HITTESTINFO
  826. //-----------------------------------------------------------------------
  827. virtual BOOL HitTestEx(CPoint pt, _THitTest* pHitTest) = 0;
  828. //-----------------------------------------------------------------------
  829. // Summary:
  830. //     This member function is used to obtain a base CXTPCalendarViewGroup*
  831. //     pointer to a corresponding DayView object.
  832. // Remarks:
  833. //     Call this member function to obtain a pointer to a DayView object
  834. //     which stores the ViewEvent.
  835. // Returns:
  836. //     A pointer to a base CXTPCalendarViewGroup object.
  837. // See also:
  838. //     GetViewGroup()
  839. //-----------------------------------------------------------------------
  840. virtual CXTPCalendarViewGroup* GetViewGroup_() const {
  841. ASSERT(this);
  842. return this ? (CXTPCalendarViewGroup*)m_pViewGroup : NULL;
  843. }
  844. //-----------------------------------------------------------------------
  845. // Summary:
  846. //     This member function is used to obtain a pointer to a DayView object.
  847. // Remarks:
  848. //     Call this member function to obtain a pointer to a DayView object
  849. //     which stores the ViewEvent. The _TViewGroup template parameter is
  850. //     used to determine the type of the returned pointer.
  851. // Returns:
  852. //     A pointer to a DayView object, the type of the returned pointer
  853. //     is determined by the _TViewGroup template parameter.
  854. // See also:
  855. //     GetViewGroup_()
  856. //-----------------------------------------------------------------------
  857. _TViewGroup* GetViewGroup() const{
  858. ASSERT(this);
  859. return this ? m_pViewGroup : NULL;
  860. }
  861. private:
  862. _TViewGroup* m_pViewGroup;
  863. };
  864. ////////////////////////////////////////////////////////////////////////////
  865. //===========================================================================
  866. // Summary:
  867. //      This class is used to edit event subject.
  868. // Remarks:
  869. //      All massages received by this window are sent to the parent calendar
  870. //      control before they are processed. Some of them are handled by parent
  871. //      calendar control object.
  872. // See Also: CXTPCalendarControl::OnWndMsg_Children()
  873. //===========================================================================
  874. class _XTP_EXT_CLASS CXTPCalendarViewEventSubjectEditor : public CEdit
  875. {
  876. public:
  877. //-----------------------------------------------------------------------
  878. // Summary:
  879. //     Default object constructor.
  880. // Parameters:
  881. //     pOwner    - A pointer to a owner calendar control object.
  882. // See Also: ~CXTPCalendarViewEventSubjectEditor()
  883. //-----------------------------------------------------------------------
  884. CXTPCalendarViewEventSubjectEditor(CXTPCalendarControl* pOwner);
  885. //-----------------------------------------------------------------------
  886. // Summary:
  887. //     Default class destructor.
  888. //-----------------------------------------------------------------------
  889. virtual ~CXTPCalendarViewEventSubjectEditor();
  890. protected:
  891. CXTPCalendarControl* m_pOwner; // Stored pointer to the owner calendar control object.
  892. //{{AFX_CODEJOCK_PRIVATE
  893. DECLARE_MESSAGE_MAP()
  894. afx_msg virtual UINT OnGetDlgCode();
  895. virtual BOOL OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
  896. //}}AFX_CODEJOCK_PRIVATE
  897. };
  898. ////////////////////////////////////////////////////////////////////////////
  899. AFX_INLINE void CXTPCalendarViewEvent::SetTextOutOfBorders(BOOL bOutOfBorders) {
  900. m_bTextOutOfBorders = bOutOfBorders;
  901. }
  902. AFX_INLINE  BOOL CXTPCalendarViewEvent::IsTextOutOfBorders() {
  903. return m_bTextOutOfBorders;
  904. }
  905. //AFX_INLINE CXTPCalendarViewGroup* CXTPCalendarViewEvent::GetViewGroup_() const {
  906. //  return NULL;
  907. //}
  908. AFX_INLINE CXTPCalendarEvent* CXTPCalendarViewEvent::GetEvent() {
  909. return m_ptrEvent;
  910. }
  911. AFX_INLINE int CXTPCalendarViewEvent::GetMultiDayEventFlags() const {
  912. return m_nMultiDayEventFlags;
  913. }
  914. AFX_INLINE int CXTPCalendarViewEvent::GetEventPlaceNumber() const {
  915. return m_nEventPlaceNumber;
  916. }
  917. AFX_INLINE BOOL CXTPCalendarViewEvent::IsEditingSubject() const {
  918. return m_pSubjectEditor != NULL;
  919. }
  920. AFX_INLINE CRect CXTPCalendarViewEvent::GetSubjectEditorRect() const {
  921. return m_rcSubjectEditor;
  922. }
  923. AFX_INLINE CWnd* CXTPCalendarViewEvent::GetSubjectEditor() {
  924. return m_pSubjectEditor;
  925. }
  926. AFX_INLINE UINT CXTPCalendarViewEvent::GetShowToolTipTimeOut() const {
  927. return XTP_CALENDAR_SHOW_TOOLTIP_TIMEOUT_MS;
  928. }
  929. AFX_INLINE DWORD CXTPCalendarViewEvent::GetSubjectEditorStyles() {
  930. return ES_AUTOHSCROLL | ES_NOHIDESEL;
  931. }
  932. AFX_INLINE CFont* CXTPCalendarViewEvent::GetSubjectEditorFont() {
  933. return NULL;
  934. }
  935. AFX_INLINE CRect CXTPCalendarViewEvent::GetFirstClockRect() {
  936. return m_rcFirstClock;
  937. }
  938. AFX_INLINE CRect CXTPCalendarViewEvent::GetLastClockRect() {
  939. return m_rcLastClock;
  940. }
  941. AFX_INLINE CRect CXTPCalendarViewEvent::GetTextRect() {
  942. return m_rcText;
  943. }
  944. AFX_INLINE CRect CXTPCalendarViewEvent::GetStartTimeRect() {
  945. return m_rcStartTime;
  946. }
  947. AFX_INLINE CRect CXTPCalendarViewEvent::GetEndTimeRect() {
  948. return m_rcEndTime;
  949. }
  950. AFX_INLINE CRect CXTPCalendarViewEvent::GetViewEventRect() {
  951. return m_rcEvent;
  952. }
  953. AFX_INLINE CRect CXTPCalendarViewEvent::GetViewEventRectMax() {
  954. return m_rcEventMax;
  955. }
  956. AFX_INLINE CRect CXTPCalendarViewEvent::GetReminderGlyphRect() {
  957. return m_rcReminderGlyph;
  958. }
  959. AFX_INLINE CRect CXTPCalendarViewEvent::GetRecurrenceGlyphRect() {
  960. return m_rcRecurrenceGlyph;
  961. }
  962. AFX_INLINE CRect CXTPCalendarViewEvent::GetMeetingGlyphRect() {
  963. return m_rcMeetingGlyph;
  964. }
  965. AFX_INLINE CRect CXTPCalendarViewEvent::GetPrivateGlyphRect() {
  966. return m_rcPrivateGlyph;
  967. }
  968. AFX_INLINE BOOL CXTPCalendarViewEvent::IsMultyDayTextAlign() {
  969. return m_bMultyDayTextAlign;
  970. }
  971. AFX_INLINE CRect CXTPCalendarViewEvent::GetEventRect() const {
  972. return m_rcEvent;
  973. }
  974. AFX_INLINE CString CXTPCalendarViewEvent::GetItemTextSubject() {
  975. return GetItemText(xtpCalendarItemText_EventSubject);
  976. }
  977. AFX_INLINE CString CXTPCalendarViewEvent::GetItemTextLocation() {
  978. return GetItemText(xtpCalendarItemText_EventLocation);
  979. }
  980. AFX_INLINE CString CXTPCalendarViewEvent::GetItemTextBody() {
  981. return GetItemText(xtpCalendarItemText_EventBody);
  982. }
  983. AFX_INLINE CString CXTPCalendarViewEvent::GetItemTextStartTime() {
  984. return GetItemText(xtpCalendarItemText_EventStartTimeText);
  985. }
  986. AFX_INLINE CString CXTPCalendarViewEvent::GetItemTextEndTime() {
  987. return GetItemText(xtpCalendarItemText_EventEndTimeText);
  988. }
  989. //////////////////////////////////////////////////////////////////////////
  990. #endif // !defined(_XTP_CALENDARViewEvent_H__)