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

对话框与窗口

开发平台:

Visual C++

  1. // XTPCalendarDayView.h: interface for the CXTPCalendarDayView 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(_XTPCALENDARDAYVIEW_H__)
  22. #define _XTPCALENDARDAYVIEW_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. class CXTPCalendarDayViewTimeScale;
  28. #include "XTPCalendarView.h"
  29. #include "XTPCalendarDayViewDay.h"
  30. #include "XTPCalendarTimeZoneHelper.h"
  31. //===========================================================================
  32. // Summary:
  33. //     This class implements a specific view portion of the Calendar
  34. //     control - called <b>Day view</b>.
  35. // Remarks:
  36. //          The Day view consists of one or more days, placed in a
  37. //          row. Each day is stretched down by a number of fixed time
  38. //          intervals. Each day is represented by a CXTPCalendarDayViewDay class.
  39. //
  40. //          The Day view also contains two time scales defining those intervals
  41. //          at the left of the view, which is represented by the
  42. //          CXTPCalendarDayViewTimeScale class. One time scale is the main and
  43. //          is visible by default, second one is the alternative and can be
  44. //          enabled programmatically. Time scale interval can be changed
  45. //          using the SetScaleInterval member function. The content of the view
  46. //          refreshes automatically.
  47. //
  48. // See Also: CXTPCalendarView, CXTPCalendarWeekView, CXTPCalendarMonthView,
  49. //          CXTPCalendarDayViewDay, CXTPCalendarDayViewEvent
  50. //===========================================================================
  51. class _XTP_EXT_CLASS CXTPCalendarDayView : public CXTPCalendarViewT<CXTPCalendarDayViewDay,
  52.  XTP_CALENDAR_HITTESTINFO_DAY_VIEW>
  53. {
  54. //{{AFX_CODEJOCK_PRIVATE
  55. friend class CXTPCalendarDayViewDay;
  56. friend class CXTPCalendarDayViewGroup;
  57. friend class CXTPCalendarDayViewTimeScale;
  58. friend class CXTPCalendarControl;
  59. friend class CXTPCalendarControlView;
  60. friend class CXTPCalendarTheme;
  61. DECLARE_DYNAMIC(CXTPCalendarDayView)
  62. //}}AFX_CODEJOCK_PRIVATE
  63. public:
  64. //------------------------------------------------------------------------
  65. // Remarks:
  66. //     Base class type definition
  67. //------------------------------------------------------------------------
  68. typedef CXTPCalendarViewT< CXTPCalendarDayViewDay,
  69. XTP_CALENDAR_HITTESTINFO_DAY_VIEW> TBase;
  70. public:
  71. //-----------------------------------------------------------------------
  72. // Summary:
  73. //     Default object constructor.
  74. // Parameters:
  75. //     pCalendarControl - Pointer to CXTPCalendarControl object.
  76. // See Also: ~CXTPCalendarEvent()
  77. //-----------------------------------------------------------------------
  78. CXTPCalendarDayView(CXTPCalendarControl* pCalendarControl);
  79. //-----------------------------------------------------------------------
  80. // Summary:
  81. //     Default class destructor.
  82. // Remarks:
  83. //     Handles class members deallocation.
  84. //-----------------------------------------------------------------------
  85. virtual ~CXTPCalendarDayView();
  86. //-----------------------------------------------------------------------
  87. // Summary:
  88. //     Call this member function to obtain the view type flag.
  89. // Returns:
  90. //     An XTPCalendarViewType object that contains the view type flag.
  91. // See Also: XTPCalendarViewType
  92. //-----------------------------------------------------------------------
  93. virtual XTPCalendarViewType GetViewType();
  94. //-----------------------------------------------------------------------
  95. // Summary:
  96. //     This member function is used to adjust the view's layout
  97. //     depending on the window's client dimensions and calls.
  98. // Parameters:
  99. //     pDC      - Pointer to a valid device context.
  100. //     rcView   - A CRect that contains the bounding rectangle dimensions
  101. //                of the view.
  102. //     bCallPostAdjustLayout - TRUE for calling additional post-adjustments
  103. // Remarks:
  104. //     Call Populate() prior adjusting layout. Adjust layout of all
  105. //     sub-items.
  106. //     AdjustLayout2 is called by calendar control instead of AdjustLayout
  107. //     when theme is set.
  108. //-----------------------------------------------------------------------
  109. virtual void AdjustLayout(CDC* pDC, const CRect& rcView, BOOL bCallPostAdjustLayout = TRUE);
  110. virtual void AdjustLayout2(CDC* pDC, const CRect& rcView, BOOL bCallPostAdjustLayout = TRUE); //<COMBINE AdjustLayout>
  111. //-----------------------------------------------------------------------
  112. // Summary:
  113. //     This member function is used to retrieve information about a
  114. //     scroll bar's state.
  115. // Parameters:
  116. //     pSI          - A pointer to scrollbar information structure.
  117. //     pnScrollStep - A pointer to int to receive scroll step. Can be NULL.
  118. // Returns: A BOOL.
  119. //          TRUE if the visible row count is not the same as the actual row count.
  120. //          FALSE otherwise.
  121. //-----------------------------------------------------------------------
  122. virtual BOOL GetScrollBarInfoV(SCROLLINFO* pSI);
  123. virtual BOOL GetScrollBarInfoH(SCROLLINFO* pSI, int* pnScrollStep = NULL); //<COMBINE CXTPCalendarDayView::GetScrollBarInfoV@SCROLLINFO*>
  124. //-----------------------------------------------------------------------
  125. // Summary:
  126. //     This member function is used to scroll the content of a view.
  127. // Parameters:
  128. //     nPos     - Position value.
  129. //     nPos_raw - Raw position value. (Not used at this time.)
  130. //-----------------------------------------------------------------------
  131. virtual void ScrollV(int nPos, int nPos_raw);
  132. //-----------------------------------------------------------------------
  133. // Summary:
  134. //     This member function is used to scroll the content of a view.
  135. // Parameters:
  136. //     nPos     - Position value.
  137. //     nPos_raw - Raw position value. (Not used at this time.)
  138. //-----------------------------------------------------------------------
  139. virtual void ScrollH(int nPos, int nPos_raw);
  140. //-----------------------------------------------------------------------
  141. // Summary:
  142. //     This member function returns values which interpreted as a minimum
  143. //     column width, where column is a group view object.
  144. // Remarks:
  145. //     The returned number may be one of the following values:
  146. //      [ul]
  147. //      [li] 0 means disabled;
  148. //      [li] -1 use some default width for multiresources only;
  149. //      [li] -N use for multiresources only (internally converted to +N);
  150. //      [li] +N used always (in single and multi resources mode).
  151. //      [/ul]
  152. //
  153. // Returns:
  154. //     Minimum column width in pixels (may be negative) or 0 or -1.
  155. // See Also: SetMinColumnWidth
  156. //-----------------------------------------------------------------------
  157. virtual int GetMinColumnWidth() const;
  158. //-----------------------------------------------------------------------
  159. // Summary:
  160. //     This member function used to set minimum column width, where column
  161. //     is a group view object.
  162. // Parameters:
  163. //     nWidth - [in] Minimum column width in pixels (may be negative) or 0 or -1.
  164. //              See remarks section.
  165. // Remarks:
  166. //     nWidth number may be one of the following values:
  167. //      [ul]
  168. //      [li] 0 means disabled;
  169. //      [li] -1 use some default width for multiresources only;
  170. //      [li] -N use for multiresources only (internally converted to +N);
  171. //      [li] +N used always (in single and multi resources mode).
  172. //      [/ul]
  173. //
  174. // See Also: GetMinColumnWidth
  175. //-----------------------------------------------------------------------
  176. virtual void SetMinColumnWidth(int nWidth);
  177. //-----------------------------------------------------------------------
  178. // Summary:
  179. //     This member function performs all of the drawing logic of the
  180. //     calendar view.
  181. // Parameters:
  182. //     pDC - Pointer to a valid device context.
  183. //-----------------------------------------------------------------------
  184. virtual void OnDraw(CDC* pDC);
  185. //-----------------------------------------------------------------------
  186. // Summary:
  187. //     This member function is used to draw the view content using the
  188. //     specified device context.
  189. // Parameters:
  190. //     pDC - Pointer to a valid device context.
  191. // Remarks:
  192. //     Call AdjustLayout() before Draw()
  193. //     Draw2 is called by calendar control instead of Draw when theme
  194. //     is set.
  195. // See Also: AdjustLayout
  196. //-----------------------------------------------------------------------
  197. virtual void Draw(CDC* pDC);
  198. virtual void Draw2(CDC* pDC); //<COMBINE Draw>
  199. //-----------------------------------------------------------------------
  200. // Summary:
  201. //     This member function is used to process left mouse button events.
  202. // Parameters:
  203. //     nFlags  - Indicates whether various virtual keys are down.
  204. //     point   - Specifies the x- and y- coordinate of the cursor.
  205. //     These coordinates are always relative to the upper-left corner
  206. //     of the window.
  207. // Remarks:
  208. //     This method is called by the CalendarControl when the user
  209. //     presses the left mouse button.
  210. //-----------------------------------------------------------------------
  211. virtual BOOL OnLButtonDown(UINT nFlags, CPoint point);
  212. //-----------------------------------------------------------------------
  213. // Summary:
  214. //     This member function is used to processes left mouse button events.
  215. // Parameters:
  216. //     nFlags  - A UINT that is used to indicate whether various virtual keys are down.
  217. //     point   - A CPoint that specifies the x- and y- coordinates of the cursor.
  218. //               These coordinates are always relative to the
  219. //               upper-left corner of the window.
  220. // Remarks:
  221. //     This method is called by the CalendarControl when the user
  222. //     releases the left mouse button.
  223. //-----------------------------------------------------------------------
  224. virtual BOOL OnLButtonUp(UINT nFlags, CPoint point);
  225. //-----------------------------------------------------------------------
  226. // Summary:
  227. //     This member function is used to process mouse move events.
  228. // Parameters:
  229. //     nFlags  - Indicates whether various virtual keys are down.
  230. //     point   - Specifies the x- and y- coordinate of the cursor.
  231. //     These coordinates are always relative to the upper-left
  232. //     corner of the window.
  233. // Remarks:
  234. //     This method is called by the CalendarControl when the user
  235. //     moves the mouse cursor or stylus.
  236. //-----------------------------------------------------------------------
  237. virtual void OnMouseMove(UINT nFlags, CPoint point);
  238. //-----------------------------------------------------------------------
  239. // Summary:
  240. //     This member function is used to process keyboard events.
  241. // Parameters:
  242. //     nChar   - Virtual key code of the given key.
  243. //     nRepCnt - Number of times the keystroke is repeated as a result
  244. //               of the user holding down the key.
  245. //     nFlags  - Scan code, key-transition code, previous key state,
  246. //               and context code.
  247. // Remarks:
  248. //     This method is called by the CalendarControl when the user
  249. //     presses keys on the keyboard.
  250. //-----------------------------------------------------------------------
  251. virtual void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
  252. //-----------------------------------------------------------------------
  253. // Summary:
  254. //     Call this member function to get the date of a day view by the
  255. //     day's index.
  256. // Parameters:
  257. //     nIndex  - Day view index in the view collection.
  258. // Returns:
  259. //     COleDateTime object with the day view date and time.
  260. // Remarks:
  261. //     Index number starts at 0 and cannot be negative.
  262. // See Also: GetViewDayCount()
  263. //-----------------------------------------------------------------------
  264. virtual COleDateTime GetViewDayDate(int nIndex);
  265. //-----------------------------------------------------------------------
  266. // Summary:
  267. //     This member function is used to determine which view item,
  268. //     if any, is at a specified position index, and returns
  269. //     additional info in a XTP_CALENDAR_HITTESTINFO_DAY_VIEW structure.
  270. // Parameters:
  271. //     pt       - Coordinates of point to test.
  272. //     pHitTest - Pointer to a XTP_CALENDAR_HITTESTINFO_DAY_VIEW structure.
  273. // Returns:
  274. //     TRUE if item found. FALSE otherwise.
  275. // See Also: XTP_CALENDAR_HITTESTINFO_DAY_VIEW
  276. //-----------------------------------------------------------------------
  277. virtual BOOL HitTestEx(CPoint pt, XTP_CALENDAR_HITTESTINFO_DAY_VIEW* pHitTest);
  278. //-----------------------------------------------------------------------
  279. // Summary:
  280. //     This member function is used to obtain the visible row count
  281. //     on the view.
  282. // Returns:
  283. //     An int containing the count of the visible rows on the view.
  284. //-----------------------------------------------------------------------
  285. int GetVisibleRowCount() const;
  286. //-----------------------------------------------------------------------
  287. // Summary:
  288. //     This member function is used to obtain the top visible row on the view.
  289. // Returns:
  290. //     An int that contains the number of the top visible row on the view.
  291. //-----------------------------------------------------------------------
  292. int GetTopRow() const;
  293. //-----------------------------------------------------------------------
  294. // Summary:
  295. //     This member function is used to obtain the total row count on the view.
  296. // Returns:
  297. //     An int containing the total count of rows on the view.
  298. //-----------------------------------------------------------------------
  299. int GetRowCount() const;
  300. /////////////////////////////////////////////////////////////////////////
  301. // time scale related
  302. //-----------------------------------------------------------------------
  303. // Summary:
  304. //     This member function is used to obtain the time scale item interval.
  305. // Returns:
  306. //     A COleDateTimeSpan object that contains the time interval of
  307. //     the time scale item.
  308. //-----------------------------------------------------------------------
  309. COleDateTimeSpan GetScaleInterval() const;
  310. //-----------------------------------------------------------------------
  311. // Summary:
  312. //     This member function is used to set the time scale item interval.
  313. // Parameters:
  314. //     spScaleInterval - A COleDateTimeSpan object that contains the
  315. //                       new time scale item interval.
  316. //-----------------------------------------------------------------------
  317. void SetScaleInterval(const COleDateTimeSpan spScaleInterval);
  318. //-----------------------------------------------------------------------
  319. // Summary:
  320. //     This member function is used to set the text label for the
  321. //     default time scale.
  322. // Parameters:
  323. //     strText - A CString that contains the new text label for the
  324. //               default time label.
  325. //-----------------------------------------------------------------------
  326. void SetScaleText(LPCTSTR strText);
  327. //-----------------------------------------------------------------------
  328. // Summary:
  329. //     This member function is used to obtain the text label of the
  330. //     default time scale.
  331. // Returns:
  332. //     A CString object that contains the default time scale text label.
  333. //-----------------------------------------------------------------------
  334. CString GetScaleText();
  335. //-----------------------------------------------------------------------
  336. // Summary:
  337. //     This member function is used to set the text label for the
  338. //     alternative time scale.
  339. // Parameters:
  340. //     strText - A CString that contains the new text label.
  341. //-----------------------------------------------------------------------
  342. void SetScale2Text(LPCTSTR strText);
  343. //-----------------------------------------------------------------------
  344. // Summary:
  345. //     This member function is used to obtain the text label of the
  346. //     alternative time scale.
  347. // Returns:
  348. //     A CString object that contains the alternative time scale text label.
  349. //-----------------------------------------------------------------------
  350. CString GetScale2Text();
  351. //-----------------------------------------------------------------------
  352. // Summary:
  353. //     This member function is used to set the time zone information for
  354. //     the alternative time scale.
  355. // Parameters:
  356. //     pTzInfo - A pointer to time zone information structure.
  357. // See Also:
  358. //     MSDN Articles:
  359. //          INFO: Retrieving Time-Zone Information
  360. //          KB115231, Q115231
  361. //
  362. //          HOWTO: Change Time Zone Information Using Visual Basic
  363. //          KB221542, Q221542
  364. //
  365. //-----------------------------------------------------------------------
  366. void SetScale2TimeZone(const TIME_ZONE_INFORMATION* pTzInfo);
  367. //-----------------------------------------------------------------------
  368. // Summary:
  369. //     This member function is used to get the time zone information for
  370. //     the alternative time scale.
  371. // Returns:
  372. //     A reference to time zone information structure.
  373. //-----------------------------------------------------------------------
  374. const TIME_ZONE_INFORMATION& GetScale2TimeZone();
  375. //-----------------------------------------------------------------------
  376. // Summary:
  377. //      Get full information about current time zone.
  378. // Remarks:
  379. //      Retrieve additional information from the registry.
  380. // Returns:
  381. //      A smart pointer to CXTPCalendarTimeZone object.
  382. // See Also:
  383. //      GetTimeZoneInformation(), CXTPCalendarTimeZone::GetTimeZoneInfo()
  384. //-----------------------------------------------------------------------
  385. CXTPCalendarTimeZonePtr GetCurrentTimeZoneInfo();
  386. //-----------------------------------------------------------------------
  387. // Summary:
  388. //      Get full information about additional time scale time zone.
  389. // Remarks:
  390. //      Retrieve additional information from the registry.
  391. // Returns:
  392. //      A smart pointer to CXTPCalendarTimeZone object.
  393. // See Also:
  394. //      GetTimeZoneInformation(), CXTPCalendarTimeZone::GetTimeZoneInfo()
  395. //-----------------------------------------------------------------------
  396. CXTPCalendarTimeZonePtr GetScale2TimeZoneInfo();  // scale 2
  397. //-----------------------------------------------------------------------
  398. // Summary:
  399. //     This member function is used to Show or hide the alternative
  400. //     time scale.
  401. // Parameters:
  402. //     bShow - A BOOL that contains the new visibility flag value.
  403. //             TRUE - Default value, shows the alternative time scale.
  404. //             FALSE - Do not show the default value.
  405. //-----------------------------------------------------------------------
  406. void ShowScale2(BOOL bShow = TRUE);
  407. //-----------------------------------------------------------------------
  408. // Summary:
  409. //     This member function is used to obtain the visibility flag of
  410. //     the alternative time scale.
  411. // Returns:
  412. //     A BOOL that contains the visibility flag value.
  413. //     TRUE - If the alternative time scale is visible.
  414. //     FALSE - If the alternative time scale is not visible.
  415. //-----------------------------------------------------------------------
  416. BOOL IsScale2Visible();
  417. //-----------------------------------------------------------------------
  418. // Summary:
  419. //     This member function is used to obtain the Expand Up glyph
  420. //     flag value.
  421. // Returns:
  422. //     A BOOL that contains the Expand Up glyph flag value.
  423. //         TRUE  - If the Expand Up glyph is visible.
  424. //         FALSE - If the Expand Up glyph is not visible.
  425. //-----------------------------------------------------------------------
  426. BOOL IsExpandUp();
  427. //-----------------------------------------------------------------------
  428. // Summary:
  429. //     This member function is used to obtain the Expand Down glyph
  430. //     flag value.
  431. // Returns:
  432. //     A BOOL that contains the Expand Down flag value.
  433. //     TRUE  - If the Expand Down glyph is visible.
  434. //     FALSE - If the Expand Down glyph is not visible.
  435. //-----------------------------------------------------------------------
  436. BOOL IsExpandDown();
  437. /////////////////////////////////////////////////////////////////////////
  438. // cells related
  439. //-----------------------------------------------------------------------
  440. // Summary:
  441. //     This member function is used to obtain the time value for
  442. //     the specified cell.
  443. // Parameters:
  444. //     nCell - An int that contains a cell number.
  445. // Returns:
  446. //     A COleDateTime object that contains the specific time value
  447. //     for the cell's beginning coordinate.
  448. //-----------------------------------------------------------------------
  449. COleDateTime GetCellTime(int nCell) const;
  450. //-----------------------------------------------------------------------
  451. // Summary:
  452. //     This member function is used to obtain the current cell duration.
  453. // Returns:
  454. //     A COleDateTimeSpan object that contains the amount of time between
  455. //     a cell's start coordinates and the next cell's starting coordinates.
  456. //-----------------------------------------------------------------------
  457. COleDateTimeSpan GetCellDuration() const;
  458. //-----------------------------------------------------------------------
  459. // Summary:
  460. //     This member function is used to calculate the cell number for
  461. //     the specified time value.
  462. // Parameters:
  463. //     dtTime - A COleDateTime object that contains a time
  464. //              value to check for.
  465. //     bForEndTime - A BOOL that contains the value that indicates if
  466. //                   we should consider a split line between cells to
  467. //                   belong to the end of the previous
  468. //                   cell or to the beginning of the next cell.
  469. // Returns:
  470. //     Call this member function when you want to retrieve which cell
  471. //     contains a specified time value.
  472. //-----------------------------------------------------------------------
  473. int GetCellNumber(COleDateTime dtTime, BOOL bForEndTime) const;
  474. //-----------------------------------------------------------------------
  475. // Summary:
  476. //     This member function is used to calculate the cell number for
  477. //     the specified time value.
  478. // Parameters:
  479. //     nHour - An int that contains the hour part of the time value to check for.
  480. //     nMin - An int that contains the minute part of the time value to check for.
  481. //     nSec - An int that contains the second part of the time value to check for.
  482. //     bForEndTime - A BOOL that contains the value that indicates if
  483. //                   we should consider a split line between cells to
  484. //                   belong to the end of the previous
  485. //                   cell or to the beginning of the next cell.
  486. // Returns:
  487. //     Call this member function when you want to retrieve which cell
  488. //     contains a specified time value.
  489. //-----------------------------------------------------------------------
  490. int GetCellNumber(int nHour, int nMin, int nSec, BOOL bForEndTime) const;
  491. /////////////////////////////////////////////////////////////////////////
  492. // selection related
  493. //-----------------------------------------------------------------------
  494. // Summary:
  495. //     This member function is used to obtain the view selection.
  496. // Parameters:
  497. //     pBegin                 - A pointer to the COleDateTime object
  498. //                              that contains the beginning of the selection.
  499. //     pEnd                   - A pointer to the COleDateTime object
  500. //                              that contains the ending of the selection.
  501. //     pbAllDayEvent          - A pointer to the BOOL variable
  502. //                              that contains the AllDayEvent attribute of
  503. //                              the selection (used in the day view only).
  504. //     pnGroupIndex           - A pointer to int to receive group index.
  505. //     pspSelectionResolution - A pointer to the COleDateTimeSpan
  506. //                              object that contains the selection unit
  507. //                              length. (i.e. 1 day, 1 Hour, ... 5 min)
  508. // Remarks:
  509. //     Call this member function to fill provided COleDateTime
  510. //     objects with the values of the selection beginning, ending,
  511. //     and selection unit length.
  512. // Returns:
  513. //     TRUE - If the selection is returned successfully.
  514. //     FALSE otherwise.
  515. //-----------------------------------------------------------------------
  516. virtual BOOL GetSelection(COleDateTime* pBegin = NULL, COleDateTime* pEnd = NULL,
  517.   BOOL* pbAllDayEvent = NULL, int* pnGroupIndex = NULL,
  518.   COleDateTimeSpan* pspSelectionResolution = NULL);
  519. /////////////////////////////////////////////////////////////////////////
  520. // day manipulations
  521. //-----------------------------------------------------------------------
  522. // Summary:
  523. //     This member function is used to show the specified day in the
  524. //     calendar day view.
  525. // Parameters:
  526. //     date - A COleDateTime object that contains the date to show.
  527. //     bSelect - TRUE to select the specified day after showing,
  528. //               FALSE otherwise. TRUE is the default value.
  529. // Remarks:
  530. //     Call this member function to show only the specified day in the
  531. //     calendar day view.
  532. //-----------------------------------------------------------------------
  533. virtual void ShowDay(const COleDateTime& date, BOOL bSelect = TRUE);
  534. //-----------------------------------------------------------------------
  535. // Summary:
  536. //     This member function is used to show the specified day interval
  537. //     in the calendar day view.
  538. // Parameters:
  539. //     dtBegin - A COleDateTime object that contains the beginning
  540. //               interval date to show.
  541. //     dtEnd - A COleDateTime object that contains the ending interval
  542. //             date to show.
  543. // Remarks:
  544. //     Call this member function to show all days from the dtBegin
  545. //     up to dtEnd inclusive.
  546. //-----------------------------------------------------------------------
  547. virtual void ShowDays(const COleDateTime& dtBegin, const COleDateTime& dtEnd);
  548. //-----------------------------------------------------------------------
  549. // Summary:
  550. //     This member function is used to show that working week
  551. //     in the calendar day view, which includes the specified day.
  552. // Parameters:
  553. //     dtDay - A COleDateTime object that contains the date to show.
  554. // Remarks:
  555. //     Call this member function to show working week
  556. //     which includes dtDay.
  557. //-----------------------------------------------------------------------
  558. virtual void ShowWorkingDays(const COleDateTime& dtDay);
  559. //-----------------------------------------------------------------------
  560. // Summary:
  561. //     This member function is used to add a specified date to the
  562. //     dates set showing in the current calendar day view.
  563. // Parameters:
  564. //     date - A COleDateTime object that contains the date to display.
  565. // Remarks:
  566. //     Call this member function to display a specific day in the
  567. //     calendar day view in addition to the days already visible.
  568. //-----------------------------------------------------------------------
  569. virtual void AddDay(const COleDateTime& date);
  570. //-----------------------------------------------------------------------
  571. // Summary:
  572. //     This member function is used to ensure that an event view item
  573. //     is visible.
  574. // Parameters:
  575. //     pViewEvent - A CXTPCalendarViewEvent object.  A pointer to the
  576. //                  event view item being made visible.
  577. //     pViewGroup - A CXTPCalendarViewGroup object. A pointer to the
  578. //                  group view being made visible.
  579. // Remarks:
  580. //     If necessary, the function scrolls the day view so that the
  581. //     event view item is visible.
  582. // Returns:
  583. //     Returns TRUE if the system scrolled the day view in the
  584. //     Calendar control to ensure that the specified event view item
  585. //     is visible. Otherwise, the return value is FALSE.
  586. //-----------------------------------------------------------------------
  587. virtual BOOL EnsureVisible(CXTPCalendarViewEvent* pViewEvent);
  588. virtual BOOL EnsureVisibleH(CXTPCalendarViewEvent* pViewEvent); //<COMBINE EnsureVisible>
  589. virtual BOOL EnsureVisibleH(CXTPCalendarViewGroup* pViewGroup); //<COMBINE EnsureVisible>
  590. //-----------------------------------------------------------------------
  591. // Summary:
  592. //     This member function is used to start view from the work day starting time.
  593. // Remarks:
  594. //     Call this method after set new data provider because new data
  595. //     provider store other time scale resolution value.
  596. //-----------------------------------------------------------------------
  597. virtual void ScrollToWorkDayBegin();
  598. //-----------------------------------------------------------------------
  599. // Summary:
  600. //     This member function is used to determine whether resource group
  601. //     header should be visible.
  602. // Remarks:
  603. //     This method returns FALSE when resource groups count is zero and
  604. //     there is only one schedule used.
  605. // Returns:
  606. //     TRUE when visible; FALSE otherwise.
  607. //-----------------------------------------------------------------------
  608. virtual BOOL IsGroupHeaderVisible();
  609. //-----------------------------------------------------------------------
  610. // Summary:
  611. //     This member function is used to get main or additional time scale
  612. //     object.
  613. // Parameters:
  614. //     nNumber - A time scale object number:
  615. //                  1 - main time scale,
  616. //                  2 - additional time scale.
  617. // Remarks:
  618. //   By default number 1 (main time scale) is used.
  619. // Returns:
  620. //     Pointer to the CXTPCalendarDayViewTimeScale object.
  621. //-----------------------------------------------------------------------
  622. virtual CXTPCalendarDayViewTimeScale* GetTimeScale(int nNumber = 1);
  623. //-----------------------------------------------------------------------
  624. // Summary:
  625. //     Call this member function to obtain the CXTPCalendarDayViewDay object
  626. //     by the day's date.
  627. // Parameters:
  628. //     dtDay  - A day date to find.
  629. // Remarks:
  630. //     Returns NULL if no day with the specified date in the days collection.
  631. // Returns:
  632. //     A pointer to a CXTPCalendarViewDay object.
  633. // See Also: GetViewDayCount(), GetViewDay_, GetViewDay
  634. //-----------------------------------------------------------------------
  635. virtual CXTPCalendarDayViewDay* GetDay(COleDateTime dtDay);
  636. //-----------------------------------------------------------------------
  637. // Summary:
  638. //     This member function is used to scroll the view back a
  639. //     specified number of days.
  640. // Parameters:
  641. //     nScrollDaysCount - An int that is used to specify the number
  642. //                        of days to scroll.
  643. // Remarks:
  644. //     Call this member function when you want to switch the
  645. //     number of days back from the current day.
  646. // See Also: ScrollDaysToNext
  647. //-----------------------------------------------------------------------
  648. virtual void ScrollDaysToPrev(int nScrollDaysCount = 1);
  649. //-----------------------------------------------------------------------
  650. // Summary:
  651. //     This member function is used to scroll the view forward a
  652. //     specified number of days.
  653. // Parameters:
  654. //     nScrollDaysCount - An int that is used to specify the number
  655. //                        of days to scroll.
  656. // Remarks:
  657. //     Call this member function to switch the number of days forward
  658. //     from the current date.
  659. // See Also: ScrollDaysToPrev
  660. //-----------------------------------------------------------------------
  661. virtual void ScrollDaysToNext(int nScrollDaysCount = 1);
  662. protected:
  663. //-----------------------------------------------------------------------
  664. // Summary:
  665. //     This member function is used to stop vertical scrolling.
  666. // Remarks:
  667. //     If there is a vertical scroll event in process, then calling
  668. //     this member function stops the vertical scrolling.
  669. //-----------------------------------------------------------------------
  670. virtual void StopVertEventScroll();
  671. // ----------------------------------------------------------------------
  672. // Summary:
  673. //     This member function is used to change the mouse cursor.
  674. // Parameters:
  675. //     bOutOfArea : TRUE means out (FALSE - inside) of drag area.
  676. // Remarks:
  677. //     Call this member function to changes the mouse cursor depending on
  678. //     which drag mode is currently active. Note: The drag mode is
  679. //     contained in the XTPCalendarDraggingMode m_eDraggingMode member
  680. //     variable.
  681. // ----------------------------------------------------------------------
  682. virtual void SetMouseOutOfDragArea(BOOL bOutOfArea);
  683. //-----------------------------------------------------------------------
  684. // Summary:
  685. //     This member function is used to determine if the point is in
  686. //     the drag able rectangle.
  687. // Parameters:
  688. //     pnt      - A CPoint object that contains the point to test.
  689. //     pHitInfo - Pointer to the XTP_CALENDAR_HITTESTINFO_DAY_VIEW structure,
  690. //                which helps to determine the client rectangle.
  691. // Returns:
  692. //     TRUE if the point is out of the drag able rectangle, FALSE otherwise.
  693. //-----------------------------------------------------------------------
  694. virtual BOOL IsOutOfClientRect(CPoint pnt, XTP_CALENDAR_HITTESTINFO_DAY_VIEW *pHitInfo);
  695. //-----------------------------------------------------------------------
  696. // Summary:
  697. //     This member function is used to determine the scroll direction.
  698. // Parameters:
  699. //     pnt - Test mouse point.
  700. // Remarks:
  701. //     This function returns an XTPCalendarDayViewScrollDirection enumeration which defines the
  702. //     scroll direction.
  703. // Returns:
  704. //     xtpCalendarDayViewScrollUp/xtpCalendarDayViewScrollDown if scrolling up/down is needed.
  705. //     xtpCalendarDayViewScrollNotNeeded if scrolling is not needed.
  706. //-----------------------------------------------------------------------
  707. virtual XTPCalendarDayViewScrollDirection GetNeededScrollDirection(CPoint pnt);
  708. //-----------------------------------------------------------------------
  709. // Summary:
  710. //     This member function is used to vertically scroll an event
  711. //     in the current view.
  712. // Parameters:
  713. //     bUp - A BOOL that contains the direction to scroll:
  714. //           TRUE if up.
  715. //           FALSE if down.
  716. // Returns:
  717. //     TRUE, if scrolled successfully. FALSE otherwise.
  718. //-----------------------------------------------------------------------
  719. virtual BOOL VertEventScroll(BOOL bUp);
  720. //-----------------------------------------------------------------------
  721. // Summary:
  722. //     This member function is used to return the minimum event
  723. //     duration so that the event is visible in the current view.
  724. // Returns:
  725. //     A COleDateTimeSpan object that specifies the minimum duration
  726. //     of the event.
  727. //-----------------------------------------------------------------------
  728. virtual COleDateTimeSpan GetEventDurationMin() const;
  729. //-----------------------------------------------------------------------
  730. // Summary:
  731. //     This member function is used to select or un-select the provided
  732. //     day, including all of the day's events.
  733. // Parameters:
  734. //     pDay    - A pointer to a CXTPCalendarViewDay object.
  735. // See Also: CXTPCalendarViewDay, SelectDay(COleDateTime dtSelDay, BOOL bSelect)
  736. //-----------------------------------------------------------------------
  737. virtual void SelectDay(CXTPCalendarViewDay* pDay);
  738. //-----------------------------------------------------------------------
  739. // Summary:
  740. //      Converts Time Zones from both timescales to the minutes shift
  741. //      of the second time scale in comparison with the first one.
  742. // See Also: CXTPCalendarViewDay, SelectDay(COleDateTime dtSelDay, BOOL bSelect)
  743. //-----------------------------------------------------------------------
  744. virtual void AdjustScale2TimeZone();
  745. //-----------------------------------------------------------------------
  746. // Summary:
  747. //     This member function is used to scroll the content of a view.
  748. // Parameters:
  749. //     nIndex :    Position value.
  750. //     nPos_raw :  Raw position value. (Not used at this time.)
  751. //-----------------------------------------------------------------------
  752. virtual void _ScrollV(int nIndex, int nPos_raw);
  753. private:
  754. virtual void OnStartDragging(CPoint point, XTP_CALENDAR_HITTESTINFO* pHitTest);
  755. virtual BOOL OnDragging(CPoint point, XTP_CALENDAR_HITTESTINFO* pHitTest);
  756. virtual BOOL OnEndDragging(CPoint point, XTP_CALENDAR_HITTESTINFO* pHitInfo);
  757. virtual void ClearDays();
  758. virtual void _ScrollDays(int nScrollDaysCount, BOOL bPrev);
  759. virtual void ProcessCellSelection(COleDateTime dtNewSelBegin, BOOL bFixSelEnd,
  760. BOOL bAllDayEventSel, int nGroupIndex);
  761. virtual void ProcessDaySelection(XTP_CALENDAR_HITTESTINFO* pInfo, UINT nFlags);
  762. virtual CXTPCalendarViewEvent* FindEventToEditByTAB(COleDateTime dtMinStart,
  763. BOOL bReverse,
  764. CXTPCalendarEvent* pAfterEvent = NULL);
  765. virtual COleDateTime GetNextTimeEditByTAB();
  766. virtual void UpdateNextTimeEditByTAB(COleDateTime dtNext, BOOL bReverse,
  767.  BOOL bReset = FALSE);
  768. virtual BOOL OnTimer(UINT_PTR uTimerID);
  769. virtual void OnActivateView(BOOL bActivate, CXTPCalendarView* pActivateView,
  770. CXTPCalendarView* pInactiveView);
  771. void _AddDay(const COleDateTime& date);
  772. int CalculateHeaderFormatAndHeight(CDC* pDC, int nCellWidth);
  773. virtual CXTPCalendarData* _GetDataProviderByConnStr(LPCTSTR pcszConnStr, BOOL bCompareNoCase = TRUE);
  774. public:
  775. //{{AFX_CODEJOCK_PRIVATE
  776. virtual void AdjustAllDayEvents();
  777. virtual CRect GetDayHeaderRectangle();
  778. virtual CRect GetAllDayEventsRectangle();
  779. virtual int GetAllDayEventsMaxCount();
  780. virtual int GetTotalGroupsCount();
  781. virtual int RecalcMinColumnWidth();
  782. struct XTP_DAY_VIEW_LAYOUT
  783. {
  784. int m_nVisibleRowCount; // Visible rows count on the day view.
  785. CRect m_rcDayHeader;
  786. CRect m_rcAllDayEvents;
  787. int  m_nRowCount;        // Total rows count on the day view.
  788. int  m_nTopRow;          // Top visible row on the day view.
  789. int  m_nAllDayEventsCountMax; // Reserved amount of all day events area to avoid area 'blinking' when dragging.
  790. int  m_nAllDayEventHeight;    // The height of one event in all day events area.
  791. };
  792. //}}AFX_CODEJOCK_PRIVATE
  793. protected:
  794. //{{AFX_CODEJOCK_PRIVATE
  795. virtual XTP_DAY_VIEW_LAYOUT& GetLayout();
  796. virtual BOOL IsUseCellAlignedDraggingInTimeArea();
  797. //}}AFX_CODEJOCK_PRIVATE
  798. private:
  799. XTP_DAY_VIEW_LAYOUT m_LayoutX; // Layout data.
  800. CXTPCalendarDayViewTimeScale* m_pTimeScaleHeader;   // Pointer to the main time scale object.
  801. CXTPCalendarDayViewTimeScale* m_pTimeScaleHeader2;  // Pointer to the alternative time scale object.
  802. int  m_nAllDayEventsCountMin_WhenDrag;
  803. COleDateTimeSpan m_spDraggingStartOffset_Time;
  804. COleDateTime m_dtSelectionStart;
  805. DWORD m_dwScrollingEventTimerID;
  806. BOOL m_bScrollingEventUp;
  807. BOOL m_bMouseOutOfDragArea;
  808. COleDateTime m_dtDraggingStartPoint;
  809. CPoint m_ptLastMousePos;
  810. CPoint m_ptLBtnDownMousePos;
  811. DWORD m_dwRedrawNowLineTimerID;
  812. COleDateTime m_dtLastRedrawTime;
  813. protected:
  814. int m_nScrollOffsetX;   // Stores horizontal left offset of visible day view part.
  815. int m_nMinColumnWidth;  //  0 means disabled;
  816.                         // -1 use some default width for multiresources only;
  817.                         // -N use for multiresources only (internally converted to +N);
  818.                         // +N used always (in single and multi resources mode).
  819. //-----------------------------------------------------------------------
  820. // Summary:
  821. //     This member function is used to get time scales area width.
  822. // Returns:
  823. //     Time scales area width in pixels.
  824. //-----------------------------------------------------------------------
  825. int _GetTimeScaleWith();
  826. //-----------------------------------------------------------------------
  827. // Summary:
  828. //     This member function is used to get horizontal scroll area rect.
  829. // Returns:
  830. //     Horizontal scroll area rect.
  831. //-----------------------------------------------------------------------
  832. CRect _GetScrollRectClient();
  833. BOOL _EnsureVisibleH(CXTPCalendarViewEvent* pViewEvent); //<COMBINE EnsureVisible>
  834. BOOL _EnsureVisibleV(CXTPCalendarViewEvent* pViewEvent); //<COMBINE EnsureVisible>
  835. //-----------------------------------------------------------------------
  836. // Summary:
  837. //     This member function is used to ensure that an selection is visible.
  838. // Remarks:
  839. //     If necessary, the function scrolls the day view horizontally so that
  840. //     the selection is visible.
  841. // Returns:
  842. //     Returns TRUE if the system scrolled the day view, otherwise FALSE.
  843. //-----------------------------------------------------------------------
  844. BOOL _EnsureVisibleSelectionH();
  845. };
  846. //================================================================
  847. AFX_INLINE CRect CXTPCalendarDayView::GetDayHeaderRectangle() {
  848. return m_LayoutX.m_rcDayHeader;
  849. }
  850. AFX_INLINE CRect CXTPCalendarDayView::GetAllDayEventsRectangle() {
  851. return m_LayoutX.m_rcAllDayEvents;
  852. }
  853. AFX_INLINE int CXTPCalendarDayView::GetRowCount() const {
  854. return m_LayoutX.m_nRowCount;
  855. }
  856. AFX_INLINE int CXTPCalendarDayView::GetVisibleRowCount() const {
  857. return m_LayoutX.m_nVisibleRowCount;
  858. }
  859. AFX_INLINE int CXTPCalendarDayView::GetTopRow() const {
  860. return m_LayoutX.m_nTopRow;
  861. }
  862. AFX_INLINE void CXTPCalendarDayView::ProcessDaySelection(XTP_CALENDAR_HITTESTINFO* /*pInfo*/, UINT /*nFlags*/) {
  863. UnselectAllEvents();
  864. }
  865. AFX_INLINE void CXTPCalendarDayView::SelectDay(CXTPCalendarViewDay* /*pDay*/) {
  866. // Do nothing for day view.
  867. }
  868. AFX_INLINE CXTPCalendarDayViewTimeScale* CXTPCalendarDayView::GetTimeScale(int nNumber) {
  869. ASSERT(nNumber == 1 || nNumber == 2);
  870. return nNumber <= 1 ? m_pTimeScaleHeader : m_pTimeScaleHeader2;
  871. }
  872. AFX_INLINE CXTPCalendarDayView::XTP_DAY_VIEW_LAYOUT& CXTPCalendarDayView::GetLayout() {
  873. return m_LayoutX;
  874. }
  875. AFX_INLINE int CXTPCalendarDayView::GetMinColumnWidth() const {
  876. return m_nMinColumnWidth;
  877. }
  878. AFX_INLINE void CXTPCalendarDayView::SetMinColumnWidth(int nWidth) {
  879. m_nMinColumnWidth = nWidth;
  880. }
  881. #endif // !defined(_XTPCALENDARDAYVIEW_H__)