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

对话框与窗口

开发平台:

Visual C++

  1. // XTPCalendarControl.h: interface for the CXTPCalendarControl 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(_XTPCALENDARCONTROL_H__)
  22. #define _XTPCALENDARCONTROL_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. class CXTPCalendarView;
  28. class CXTPCalendarPaintManager;
  29. class CXTPCalendarData;
  30. class CXTPCalendarDayView;
  31. class CXTPCalendarWeekView;
  32. class CXTPCalendarMonthView;
  33. class CXTPCalendarOptions;
  34. class CXTPNotifyConnection;
  35. class CXTPCalendarRemindersManager;
  36. class CXTPCalendarResources;
  37. class CXTPCalendarResourcesNf;
  38. class CXTPCalendarTheme;
  39. class CXTPMarkupContext;
  40. class CXTPMarkupUIElement;
  41. #include "Common/XTPNotifyConnection.h"
  42. #include "XTPCalendarTip.h"
  43. #include "XTPCalendarDefines.h"
  44. //===========================================================================
  45. // Summary:
  46. //     Class CXTPCalendarControl implements the calendar's view interface.
  47. // Remarks:
  48. //     A CXTPCalendarControl object implements a calendar view interface
  49. //     similar to Outlook 2003 interface.
  50. //
  51. //     There are 2 main separated concepts: Calendar data contents
  52. //     and Calendar views representing this contents.
  53. //
  54. //     It can show 3 types of following predefined views. Also any type
  55. //     of user view could also be implemented as a descendant of CXTPCalendarView class.
  56. //
  57. //     * Day and work week views - using CXTPCalendarDayView class.
  58. //     * Week view - using CXTPCalendarWeekView class.
  59. //     * Month view - using CXTPCalendarMonthView class.
  60. //
  61. //     One of the other main Control's concepts is Calendar Resources.
  62. //     Resource is the source of Calendar data contents with some additional
  63. //     properties. This concept is designed to represent a schedule of a
  64. //     separate person, or a shared resource (sic!) like a conference room,
  65. //     a projector, and any similar entity. Each Resource has its own Data
  66. //     Provider, therefore the Control can show different data sources on the
  67. //     same screen. For example, you can configure Control to show your own
  68. //     Outlook events in "your" resource (using MAPI Data Provider), then
  69. //     you can use some shared resource data using Database Data Provider, etc.
  70. //
  71. //     Note that each event now has standard "Schedule" property, defining
  72. //     which user's schedule it belongs to. And each resource has a collection
  73. //     of Schedule ID's to represent on it. For example, you can have only
  74. //     one common Data Provider which stores events data for all members of
  75. //     your organization. Every member has a corresponding schedule (i.e.
  76. //     Jeff - ID 1, Matt - ID 2, John - ID 3, Room 1 - ID 10, Room 2 - ID 11, etc).
  77. //     You can configure a number of resources to show data for every team
  78. //     member separately, and one resource to show events for both room 1 and
  79. //     room 2 together. Or for example, you want to show a common view of all
  80. //     events for a specified team including only some of employees. You will
  81. //     add their schedule ID's to the corresponding Resource collection, and
  82. //     see all of them. Of course, when you open event details, you'll see
  83. //     who it belongs to.
  84. //
  85. //
  86. //     There are 2 regular models of using your custom data source with Calendar control.
  87. //
  88. //     a) Firstly, you can use built-in Memory data provider, which will handle
  89. //        all the data in itself. If you do not specify neither XML nor Binary
  90. //        filename, it will not be automatically loaded or saved. In this case,
  91. //        you'll have 2 entry points in your application:
  92. //        -- Loading all data from your data source (could be done on form load
  93. //           for example). Your data access code would transfer CalendarEvents
  94. //           records from the data storage to objects and add them into
  95. //           corresponding Calendar's collection.
  96. //        -- Saving data to your data storage. You'll have to iterate all CalendarEvents,
  97. //           transfer them into your data records and upload into the database.
  98. //           This could be implemented on pressing Save button for example.
  99. //        This is the most easy way.
  100. //
  101. //     b) Second idea is to handle basic data storage operations by yourself.
  102. //        This is called "custom data provider model". It could be needed when
  103. //        you have a very lot of CalendarEvents records and do not want to store
  104. //        them all in memory because of a huge size. Another possible need of
  105. //        using this model is having all the information always updated if your
  106. //        data storage is shared.
  107. //
  108. //
  109. //     For some predefined examples of this functionality look Calendar Samples,
  110. //     and menu items: MultiSchedules configuration and Load sample configurations...
  111. //
  112. // See Also: CXTPCalendarView, CXTPCalendarData, CXTPCalendarResource
  113. //===========================================================================
  114. class _XTP_EXT_CLASS CXTPCalendarControl : public CWnd
  115. {
  116. //{{AFX_CODEJOCK_PRIVATE
  117. friend class CXTPCalendarView;
  118. friend class CXTPCalendarViewDay;
  119. friend class CXTPCalendarViewGroup;
  120. friend class CXTPCalendarViewEvent;
  121. friend class CCalendarControlCtrl;
  122. friend class CXTPCalendarControlView;
  123. friend class CXTPCalendarResource;
  124. friend class CXTPCalendarThemePart;
  125. //}}AFX_CODEJOCK_PRIVATE
  126. public:
  127. //-----------------------------------------------------------------------
  128. // Summary:
  129. //     This member function constructs a CXTPCalendarControl object.
  130. // Remarks:
  131. //     Construct a CXTPCalendarControl object in two steps.
  132. //     First, call the constructor CXTPCalendarControl and then
  133. //     call Create method, which initializes the window.
  134. //
  135. // Example:
  136. // <code>
  137. // Declare a local CXTPCalendarControl object.
  138. // CXTPCalendarControl myCalendar;
  139. //
  140. // // Declare a dynamic CXTPCalendarControl object.
  141. // CXTPCalendarControl* pMyCalendar = new CXTPCalendarControl();
  142. //
  143. // // Create a window
  144. // if (!myCalendar.Create(WS_CHILD | WS_TABSTOP | WS_VISIBLE, rcRect, this, ID_CALENDAR_CONTROL))
  145. // {
  146. //     TRACE(_T("Failed to create calendar control windown"));
  147. // }
  148. // </code>
  149. // See Also: Create
  150. //-----------------------------------------------------------------------
  151. CXTPCalendarControl();
  152. //-----------------------------------------------------------------------
  153. // Summary:
  154. //     This member function destroys a CXTPCalendarControl object and
  155. //     handles cleanup and de-allocation.
  156. //-----------------------------------------------------------------------
  157. virtual ~CXTPCalendarControl();
  158. //-----------------------------------------------------------------------
  159. // Summary:
  160. //     This member function handles control window creation.
  161. // Parameters:
  162. //     dwStyle - Specifies the window style attributes.
  163. //     rect - The size and position of the window, in client coordinates of pParentWnd.
  164. //     pParentWnd - The parent window.
  165. //     nID - The ID of the child window.
  166. // Returns:
  167. //     Nonzero if successful; otherwise 0.
  168. //-----------------------------------------------------------------------
  169. virtual BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
  170. //-----------------------------------------------------------------------
  171. // Summary:
  172. //     This member function populates the active control view with
  173. //     events data.
  174. // Remarks:
  175. //     Creates a new events views collection for the view, populating it
  176. //     with the data objects taken from the associated data provider.
  177. // See Also:
  178. //-----------------------------------------------------------------------
  179. virtual void Populate();
  180. // Operations
  181. public:
  182. //-----------------------------------------------------------------------
  183. // Summary:
  184. //     This member function is used to obtain current paint theme.
  185. // Returns:
  186. //     A paint theme ID from enum XTPCalendarTheme.
  187. //-----------------------------------------------------------------------
  188. virtual XTPCalendarTheme GetPaintTheme() const;
  189. //-----------------------------------------------------------------------
  190. // Summary:
  191. //     This member function is used to set current paint theme.
  192. // Parameters:
  193. //     ePaintTheme - A paint theme ID from enum XTPCalendarTheme.
  194. //-----------------------------------------------------------------------
  195. virtual void SetPaintTheme(XTPCalendarTheme ePaintTheme);
  196. /////////////////////////////////////////////////////////////////////////
  197. // drawing related
  198. //-----------------------------------------------------------------------
  199. // Summary:
  200. //     This member function obtains a pointer to the associated paint
  201. //     manager.
  202. // Remarks:
  203. //     Call this member function to obtain the paint manager object used
  204. //     for drawing a calendar control window.
  205. // Returns:
  206. //     A CXTPCalendarPaintManager pointer to the associated paint manager object.
  207. // See Also:
  208. //-----------------------------------------------------------------------
  209. CXTPCalendarPaintManager* GetPaintManager();
  210. //-----------------------------------------------------------------------
  211. // Summary:
  212. //     This member function obtains a pointer to the associated theme
  213. //     object.
  214. //
  215. // Remarks:
  216. //     Themes are used for drawing a calendar control window instead of
  217. //     a Paint manager.
  218. //     This is a new feature of Calendar control which will be further
  219. //     developed.
  220. //     Some new drawing features will be added for themes only
  221. //     (no for Paint manager). But the Paint manager will also be used
  222. //     for compatibility.
  223. //
  224. //     Initial version. Themes will be expanded in the feature.
  225. // Returns:
  226. //     A CXTPCalendarTheme pointer to the associated theme object or NULL.
  227. // See Also:
  228. //     CXTPCalendarView::GetTheme, GetPaintManager
  229. //-----------------------------------------------------------------------
  230. CXTPCalendarTheme* GetTheme();
  231. //-----------------------------------------------------------------------
  232. // Summary:
  233. //     This member function sets (or disable) the new control drawing
  234. //     theme.
  235. // Parameters:
  236. //     pTheme - A CXTPCalendarTheme pointer to the theme object.
  237. //              If pTheme is NULL - themes are disabled and the paint
  238. //              manager is used.
  239. // Remarks:
  240. //     Themes are used for drawing a calendar control window instead of
  241. //     a Paint manager.
  242. //     This is a new feature of Calendar control which will be further
  243. //     developed.
  244. //     Some new drawing features will be added for themes only
  245. //     (no for Paint manager). But the Paint manager will also be used
  246. //     for compatibility.
  247. //
  248. //     Initial version. Themes will be expanded in the feature.
  249. // See Also: GetPaintManager
  250. //-----------------------------------------------------------------------
  251. void SetTheme(CXTPCalendarTheme* pTheme);
  252. /////////////////////////////////////////////////////////////////////////
  253. // resources related
  254. //-----------------------------------------------------------------------
  255. // Summary:
  256. //     Obtain a pointer to collection of Calendar Resources.
  257. // Remarks:
  258. //     Use this method to retrieve a pointer to the Calendar Resources
  259. //     collection of this Calendar control.
  260. // Returns:
  261. //     CXTPCalendarResources pointer.
  262. // See Also:
  263. //     CXTPCalendarResources overview
  264. //-----------------------------------------------------------------------
  265. CXTPCalendarResources* GetResources();
  266. //-----------------------------------------------------------------------
  267. // Summary:
  268. //     This member function sets the new Resources collection for the control.
  269. // Parameters:
  270. //     pResources - A pointer to the CXTPCalendarResources collection object.
  271. //     pOptionsDataProvider - A pointer to the Data Provider object for
  272. //                            using on Calendar Options.
  273. // Remarks:
  274. //     Call this member function to programmatically set the new
  275. //     Resources collection for the control.
  276. //-----------------------------------------------------------------------
  277. void SetResources(CXTPCalendarResources* pResources,
  278.   CXTPCalendarData* pOptionsDataProvider = NULL);
  279. /////////////////////////////////////////////////////////////////////////
  280. // data provider related
  281. //-----------------------------------------------------------------------
  282. // Summary:
  283. //     This member function sets the custom data provider for the control.
  284. // Parameters:
  285. //     pDataProvider - Pointer to the custom data provider object.
  286. //     bCloseDataProviderWhenDestroy - BOOL value shows whether data
  287. //                                     provider should be closed with the
  288. //                                     control's destruction.
  289. // Remarks:
  290. //     Call this member function to set the custom data provider
  291. //     that is currently used by this calendar control. Note that
  292. //     custom data provider must be a descendant of CXTPCalendarData.
  293. // See Also: CXTPCalendarData overview, GetDataProvider
  294. //-----------------------------------------------------------------------
  295. void SetDataProvider(CXTPCalendarData* pDataProvider,
  296.  BOOL bCloseDataProviderWhenDestroy = TRUE);
  297. //-----------------------------------------------------------------------
  298. // Summary:
  299. //     This member function sets a predefined data provider for the control.
  300. // Parameters:
  301. //     eDataProvider - Data provider type.
  302. //     lpszConnectionString - A text Calendar connection string.
  303. // Remarks:
  304. //     Call this member function to set the predefined data provider
  305. //     that is currently used by this calendar control.
  306. // See Also: CXTPCalendarData overview, XTPCalendarDataProvider, GetDataProvider
  307. //-----------------------------------------------------------------------
  308. void SetDataProvider(LPCTSTR lpszConnectionString);
  309. void SetDataProvider(XTPCalendarDataProvider eDataProvider, LPCTSTR lpszConnectionString = NULL); // <COMBINE CXTPCalendarControl::SetDataProvider@LPCTSTR>
  310. //-----------------------------------------------------------------------
  311. // Summary:
  312. //     Returns common data provider if it was previously set.
  313. // Returns:
  314. //     A pointer to the common data provider if it was previously set;
  315. //     otherwise, returns NULL.
  316. //-----------------------------------------------------------------------
  317. CXTPCalendarData* GetDataProvider();
  318. /////////////////////////////////////////////////////////////////////////
  319. // view related
  320. //-----------------------------------------------------------------------
  321. // Summary:
  322. //     This member function obtains a pointer to the current calendar view.
  323. // Remarks:
  324. //     Call this member function to obtain the calendar view object
  325. //     currently used in this calendar control.
  326. // Returns:
  327. //     A CXTPCalendarView pointer to the associated calendar view object.
  328. // See Also:
  329. //     CXTPCalendarView overview, SetActiveView,
  330. //     GetViewDay, GetWeekView, GetMonthView
  331. //-----------------------------------------------------------------------
  332. virtual CXTPCalendarView* GetActiveView();
  333. //-----------------------------------------------------------------------
  334. // Summary:
  335. //     This member function obtains a pointer to the Day calendar view.
  336. // Remarks:
  337. //     Call this member function to obtain Day calendar view object
  338. //     regardless of its visibility.
  339. // Returns:
  340. //     A CXTPCalendarView pointer to the associated calendar view object.
  341. // See Also:
  342. //     CXTPCalendarView overview, GetActiveView, GetWeekView, GetMonthView
  343. //-----------------------------------------------------------------------
  344. virtual CXTPCalendarView* GetDayView();
  345. //-----------------------------------------------------------------------
  346. // Summary:
  347. //     This member function obtains a pointer to the Week calendar view.
  348. // Remarks:
  349. //     Call this member function to obtain Week calendar view object
  350. //     regardless of its visibility.
  351. // Returns:
  352. //     A CXTPCalendarView pointer to the associated calendar view object.
  353. // See Also:
  354. //     CXTPCalendarView overview, GetActiveView, GetDayView, GetMonthView
  355. //-----------------------------------------------------------------------
  356. virtual CXTPCalendarView* GetWeekView();
  357. //-----------------------------------------------------------------------
  358. // Summary:
  359. //     This member function obtains a pointer to the Month calendar view.
  360. // Remarks:
  361. //     Call this member function to obtain Month calendar view object
  362. //     regardless of its visibility.
  363. // Returns:
  364. //     A CXTPCalendarView pointer to the associated calendar view object.
  365. // See Also:
  366. //     CXTPCalendarView overview, GetActiveView, GetWeekView, GetDayView
  367. //-----------------------------------------------------------------------
  368. virtual CXTPCalendarView* GetMonthView();
  369. //-----------------------------------------------------------------------
  370. // Summary:
  371. //     This member function sets a predefined calendar view for the control.
  372. // Parameters:
  373. //     eView - Calendar view type.
  374. // Remarks:
  375. //     Call this member function to set the predefined calendar view
  376. //     that is currently used by this calendar control.
  377. // See Also: CXTPCalendarView overview, XTPCalendarViewType, GetAvtiveView
  378. //-----------------------------------------------------------------------
  379. virtual void SwitchActiveView(XTPCalendarViewType eView);
  380. // Implementation
  381. public:
  382. /////////////////////////////////////////////////////////////////////////
  383. // drawing related
  384. //-----------------------------------------------------------------------
  385. // Summary:
  386. //     Call this member to set right-to-left mode.
  387. // Parameters:
  388. //     bRightToLeft - TRUE to set right-to-left reading-order properties.
  389. //-----------------------------------------------------------------------
  390. void SetLayoutRTL(BOOL bRightToLeft);
  391. //-----------------------------------------------------------------------
  392. // Summary:
  393. //     This member function initiates the Calendar control's redrawing.
  394. // Parameters:
  395. //     bForce : Set this parameter to TRUE if you'd like to force
  396. //              control's redrawing even if update is locked.
  397. // Remarks:
  398. //     Call this member function if you want to force the control's
  399. //     redrawing. The control will be redrawn to reflect its latest state.
  400. // See Also: CXTPCalendarControl::CUpdateContext, AdjustLayout, AdjustScrollBar,
  401. //           LockUpdate, UnlockUpdate.
  402. //-----------------------------------------------------------------------
  403. virtual void RedrawControl(BOOL bForce = FALSE);
  404. //-----------------------------------------------------------------------
  405. // Summary:
  406. //     This member function adjusts the main control parts depending
  407. //     on the current control's size.
  408. // Parameters:
  409. //     pDC      - Pointer to a valid device context.
  410. //     rcView   - A rectangle for calendar control.
  411. // See Also:
  412. //     CXTPCalendarControl::CUpdateContext, AdjustScrollBar, RedrawControl
  413. //-----------------------------------------------------------------------
  414. virtual void AdjustLayout();
  415. virtual void AdjustLayout(CDC* pDC, const CRect& rcView); // <COMBINE CXTPCalendarControl::AdjustLayout>
  416. //-----------------------------------------------------------------------
  417. // Summary:
  418. //     This member function adjusts the scroll bar to reflect the current
  419. //     control's state.
  420. // See Also:
  421. //     CXTPCalendarControl::CUpdateContext, AdjustLayout, RedrawControl
  422. // Parameters:
  423. //     nSBType : Specifies the scroll bar type to be adjusted.
  424. //               This parameter can be either of the following:
  425. //               * SB_HORZ - Horizontal scroll bar.
  426. //               * SB_VERT - Vertical scroll bar.
  427. // ----------------------------------------------------------------------
  428. virtual void AdjustScrollBar(int nSBType = -1);
  429. private:
  430. //{{AFX_CODEJOCK_PRIVATE
  431. // Always updates the screen on exit block
  432. void BeginUpdate();
  433. void EndUpdate();
  434. // Update the screen on exit block only when something has changed
  435. void LockUpdate();
  436. void UnlockUpdate();
  437. // Adjusts layout on exit block
  438. void BeginAdjust(BOOL bWithScrollBar = FALSE);
  439. void EndAdjust(BOOL bWithScrollBar = FALSE);
  440. //}}AFX_CODEJOCK_PRIVATE
  441. public:
  442. /////////////////////////////////////////////////////////////////////////
  443. // managing calendar settings
  444. //-----------------------------------------------------------------------
  445. // Summary:
  446. //     This member function obtains the bitwise mask of the work week.
  447. // Returns:
  448. //     An integer containing the bitwise day mask.
  449. // See Also: SetWorkWeekMask, XTPCalendarWeekDay
  450. //-----------------------------------------------------------------------
  451. int GetWorkWeekMask() const;
  452. //-----------------------------------------------------------------------
  453. // Summary:
  454. //     This member function sets the bitwise mask for the work week.
  455. // Parameters:
  456. //     nMask - An int that contains the new bitwise mask for the work week.
  457. // See Also: GetWorkWeekMask, XTPCalendarWeekDay
  458. //-----------------------------------------------------------------------
  459. void SetWorkWeekMask(const int nMask);
  460. //-----------------------------------------------------------------------
  461. // Summary:
  462. //     This member function obtains the first day of the week.
  463. // Returns:
  464. //     First day of the week represented by an integer from
  465. //     range between 1 and 7, where 1 = Sunday, 2 = Monday, and so on.
  466. // See Also: SetFirstDayOfWeek, XTPCalendarWeekDay
  467. //-----------------------------------------------------------------------
  468. int GetFirstDayOfWeek() const;
  469. //-----------------------------------------------------------------------
  470. // Summary:
  471. //     This member function sets the first day of the week.
  472. // Parameters:
  473. //     nFirstDayOfWeek - An int that contains the new first day of the
  474. //                       week. An integer from range between 1 and 7,
  475. //                       where 1 = Sunday, 2 = Monday, and so on.
  476. // See Also: GetFirstDayOfWeek, XTPCalendarWeekDay
  477. //-----------------------------------------------------------------------
  478. void SetFirstDayOfWeek(const int nFirstDayOfWeek);
  479. //-----------------------------------------------------------------------
  480. // Summary:
  481. //     This member function obtains the begin time of the working day.
  482. // Parameters:
  483. //     nHour - An int. A reference to the hour part of the result.
  484. //     nMin  - An int. A reference to the minutes part of the result.
  485. //     nSec  - An int. A reference to the seconds part of the result.
  486. //     dtTime - A reference to the COleDateTime value to store the result.
  487. // See Also: SetWorkDayStartTime, GetWorkDayEndTime, SetWorkDayEndTime
  488. //-----------------------------------------------------------------------
  489. void GetWorkDayStartTime(COleDateTime& dtTime);
  490. void GetWorkDayStartTime(int& nHour, int& nMin, int& nSec); // <COMBINE CXTPCalendarControl::GetWorkDayStartTime@COleDateTime&>
  491. //-----------------------------------------------------------------------
  492. // Summary:
  493. //     This member function obtains the end time of the working day.
  494. // Parameters:
  495. //     nHour - An int. A reference to the hour part of the result.
  496. //     nMin  - An int. A reference to the minutes part of the result.
  497. //     nSec  - An int. A reference to the seconds part of the result.
  498. //     dtTime - A reference to the COleDateTime value to store the result.
  499. // See Also: SetWorkDayEndTime, GetWorkDayStartTime, SetWorkDayStartTime
  500. //-----------------------------------------------------------------------
  501. void GetWorkDayEndTime(COleDateTime& dtTime);
  502. void GetWorkDayEndTime(int& nHour, int& nMin, int& nSec); // <COMBINE CXTPCalendarControl::GetWorkDayEndTime@COleDateTime&>
  503. //-----------------------------------------------------------------------
  504. // Summary:
  505. //     This member function sets the begin time for the working day.
  506. // Parameters:
  507. //     nHour - An int. The hour part of the new time value.
  508. //     nMin  - An int. The minutes part of the new time value.
  509. //     nSec  - An int. The seconds part of the new time value.
  510. //     dtTime - A new begin time value.
  511. // See Also: GetWorkDayStartTime, GetWorkDayEndTime, SetWorkDayEndTime
  512. //-----------------------------------------------------------------------
  513. void SetWorkDayStartTime(const COleDateTime& dtTime);
  514. void SetWorkDayStartTime(int nHour, int nMin, int nSec); // <COMBINE CXTPCalendarControl::SetWorkDayStartTime@const COleDateTime&>
  515. //-----------------------------------------------------------------------
  516. // Summary:
  517. //     This member function sets an end time for the working day.
  518. // Parameters:
  519. //     nHour - An int. The hour part of the new time value.
  520. //     nMin  - An int. The minutes part of the new time value.
  521. //     nSec  - An int. The seconds part of the new time value.
  522. //     dtTime - A new end time value.
  523. // See Also: GetWorkDayEndTime, GetWorkDayStartTime, SetWorkDayStartTime
  524. //-----------------------------------------------------------------------
  525. void SetWorkDayEndTime(const COleDateTime& dtTime);
  526. void SetWorkDayEndTime(int nHour, int nMin, int nSec); // <COMBINE CXTPCalendarControl::SetWorkDayEndTime@const COleDateTime&>
  527. //-----------------------------------------------------------------------
  528. // Summary:
  529. //     Call this method to determine if the AutoResetBusyFlag is set.
  530. // Returns:
  531. //     Value of AutoResetBusyFlag.
  532. // See Also: MonthView_SetCompressWeekendDays
  533. //-----------------------------------------------------------------------
  534. BOOL DayView_IsAutoResetBusyFlag() const;
  535. //-----------------------------------------------------------------------
  536. // Summary:
  537. //     Call this method to set the AutoResetBusyFlag.
  538. // Parameters:
  539. //     bAutoResetBusyFlag - A BOOL.
  540. //                          TRUE to set the AutoResetBusyFlag.
  541. //                          FALSE otherwise.
  542. // Returns:
  543. //     Value of AutoResetBusyFlag.
  544. // See Also: MonthView_SetCompressWeekendDays
  545. //-----------------------------------------------------------------------
  546. void DayView_SetAutoResetBusyFlag(BOOL bAutoResetBusyFlag = TRUE);
  547. //-----------------------------------------------------------------------
  548. // Summary:
  549. //     Call this method to determine whether weekend days are
  550. //     drawn compressed in month view or not.
  551. // Returns:
  552. //     TRUE if weekend days are drawn compressed. FALSE otherwise.
  553. // See Also: MonthView_SetCompressWeekendDays
  554. //-----------------------------------------------------------------------
  555. BOOL MonthView_IsCompressWeekendDays() const;
  556. //-----------------------------------------------------------------------
  557. // Summary:
  558. //     Call this method to specify whether weekend days are
  559. //     drawn compressed in the month view.
  560. // Parameters:
  561. //     bCompress - A BOOL. TRUE if weekend days are drawn compressed.
  562. //                 FALSE otherwise.
  563. // See Also: MonthView_IsCompressWeekendDays
  564. //-----------------------------------------------------------------------
  565. void MonthView_SetCompressWeekendDays(BOOL bCompress = TRUE);
  566. //-----------------------------------------------------------------------
  567. // Summary:
  568. //     Call this method to determine whether the end date is
  569. //     shown for events in the month view.
  570. // Returns:
  571. //     TRUE if the end date is shown. FALSE otherwise.
  572. // See Also: MonthView_SetShowEndDate
  573. //-----------------------------------------------------------------------
  574. BOOL MonthView_IsShowEndDate() const;
  575. //-----------------------------------------------------------------------
  576. // Summary:
  577. //     Call this method to specify whether the end date is
  578. //     shown in the month view.
  579. // Parameters:
  580. //     bShowEnd - A BOOL. TRUE if the end date is shown in month view.
  581. //                FALSE otherwise.
  582. // See Also: MonthView_IsShowEndDate
  583. //-----------------------------------------------------------------------
  584. void MonthView_SetShowEndDate(BOOL bShowEnd = TRUE);
  585. //-----------------------------------------------------------------------
  586. // Summary:
  587. //     Call this method to determine if the time is
  588. //     shown as a graphical clock for events in the month view.
  589. // Returns:
  590. //     TRUE for time shown as graphical clock. FALSE otherwise.
  591. // See Also: MonthView_SetShowTimeAsClocks
  592. //-----------------------------------------------------------------------
  593. BOOL MonthView_IsShowTimeAsClocks() const;
  594. // --------------------------------------------------------------------------
  595. // Summary:
  596. //     Call this method to specify if the events start and end time is
  597. //     shown as a graphical clock in the month view.
  598. // Parameters:
  599. //     bShowClocks :  A BOOL. TRUE if the time is shown as a graphical clock.
  600. //                    FALSE otherwise.
  601. // See Also:
  602. //     MonthView_IsShowTimeAsClocks
  603. // --------------------------------------------------------------------------
  604. void MonthView_SetShowTimeAsClocks(BOOL bShowClocks= TRUE);
  605. //-----------------------------------------------------------------------
  606. // Summary:
  607. //     Call this method to determine if the end date is
  608. //     shown for events in the week view.
  609. // Returns:
  610. //     TRUE if the end date is shown. FALSE otherwise.
  611. // See Also: WeekView_SetShowEndDate
  612. //-----------------------------------------------------------------------
  613. BOOL WeekView_IsShowEndDate() const;
  614. //-----------------------------------------------------------------------
  615. // Summary:
  616. //     Call this method to specify if the end date is
  617. //     shown in week view.
  618. // Parameters:
  619. //     bShowEnd - A BOOL. TRUE if the end date is shown in week view.
  620. //                FALSE otherwise.
  621. // See Also: WeekView_IsShowEndDate
  622. //-----------------------------------------------------------------------
  623. void WeekView_SetShowEndDate(BOOL bShowEnd);
  624. //-----------------------------------------------------------------------
  625. // Summary:
  626. //     Call this method to determine if the time is
  627. //     shown as a graphical clock for events in the week view.
  628. // Returns:
  629. //     TRUE for time shown as graphical clocks, FALSE otherwise.
  630. // See Also: WeekView_SetShowTimeAsClocks
  631. //-----------------------------------------------------------------------
  632. BOOL WeekView_IsShowTimeAsClocks() const;
  633. // -------------------------------------------------------------------------------
  634. // Summary:
  635. //     Call this method to specify if the events start and end time is
  636. //     shown as a graphical clock in week view.
  637. // Parameters:
  638. //     bShowClocks :  A BOOL. TRUE for time to be shown as graphical clocks, FALSE
  639. //                    otherwise.
  640. // See Also:
  641. //     WeekView_IsShowTimeAsClocks
  642. // -------------------------------------------------------------------------------
  643. void WeekView_SetShowTimeAsClocks(BOOL bShowClocks);
  644. //-----------------------------------------------------------------------
  645. // Summary:
  646. //     This member function sets the new control drawing PaintManager.
  647. // Parameters:
  648. //     pPaintManager - A CXTPCalendarPaintManager pointer to the
  649. //     new paint manager object.
  650. // Remarks:
  651. //     Call this member function to set the paint manager object used
  652. //     for drawing a calendar control window.
  653. // See Also: GetPaintManager
  654. //-----------------------------------------------------------------------
  655. void SetPaintManager(CXTPCalendarPaintManager* pPaintManager);
  656. //-----------------------------------------------------------------------
  657. // Summary:
  658. //     This member function updates the mouse cursor in relation with
  659. //     the control's state.
  660. // Returns:
  661. //     A BOOL. TRUE if the mouse cursor was updated to one of the known modes,
  662. //     FALSE if the mode is unknown and the cursor was set to default arrow.
  663. //-----------------------------------------------------------------------
  664. virtual BOOL UpdateMouseCursor();
  665. public:
  666. //{{AFX_CODEJOCK_PRIVATE
  667. // for compatibility with previous versions
  668. // use xtp_wm_UserAction for the feature
  669. //
  670. //-----------------------------------------------------------------------
  671. // Summary:
  672. //     This member function queues the calendar view while changing
  673. //     to the day view for the specified day.
  674. // Parameters:
  675. //     dtDate - A specified date to change to.
  676. // Remarks:
  677. //     Call this member function for changing calendar view
  678. //     to the day view for the specified day.
  679. // See Also: CXTPCalendarDayView overview, XTPCalendarViewType,
  680. //          GetAvtiveView, SetAvtiveView
  681. //-----------------------------------------------------------------------
  682. virtual void QueueDayViewSwitch(DATE dtDate);
  683. //}}AFX_CODEJOCK_PRIVATE
  684. //-----------------------------------------------------------------------
  685. // Summary:
  686. //     Register the window class if it has not already been registered.
  687. // Parameters:
  688. //     hInstance - Instance of resource where control is located
  689. // Returns:
  690. //     TRUE if the window class was successfully registered.  FALSE otherwise.
  691. //-----------------------------------------------------------------------
  692. virtual BOOL RegisterWindowClass(HINSTANCE hInstance = NULL);
  693. protected:
  694. //-----------------------------------------------------------------------
  695. // Summary:
  696. //     This member function performs all of the drawing logic of the
  697. //     calendar control window.
  698. // Parameters:
  699. //     pDC - Pointer to a valid device context.
  700. // See Also: OnPaint
  701. //-----------------------------------------------------------------------
  702. virtual void OnDraw(CDC* pDC);
  703. //-----------------------------------------------------------------------
  704. // Summary:
  705. //     This member function sets the custom calendar view for the control.
  706. // Parameters:
  707. //     pView - Pointer to the custom calendar view object.
  708. // Remarks:
  709. //     Call this member function to set the custom calendar view
  710. //     currently used by the calendar control. Note that
  711. //     custom calendar view must be descendant of CXTPCalendarView.
  712. // See Also: CXTPCalendarView overview, GetAvtiveView
  713. //-----------------------------------------------------------------------
  714. virtual void SetActiveView(CXTPCalendarView* pView);
  715. //-----------------------------------------------------------------------
  716. // Summary:
  717. //     This member function creates a timer event.
  718. // Parameters:
  719. //     uTimeOut_ms - Duration of timer in milliseconds.
  720. // Returns:
  721. //     The identifier of the timer.
  722. //-----------------------------------------------------------------------
  723. virtual UINT SetTimer(UINT uTimeOut_ms);
  724. //-----------------------------------------------------------------------
  725. // Summary:
  726. //     This member function is called by the framework before the
  727. //     view is destroyed.
  728. //-----------------------------------------------------------------------
  729. virtual void OnBeforeDestroy();
  730. //-----------------------------------------------------------------------
  731. // Summary:
  732. //     This member function adjusts the scroll bar to reflect the current
  733. //     control's state.
  734. // See Also:
  735. //     CXTPCalendarControl::CUpdateContext, AdjustLayout, RedrawControl
  736. // Parameters:
  737. //     nSBType : Specifies the scroll bar type to be adjusted.
  738. //               This parameter can be either of the following:
  739. //               * SB_HORZ - Horizontal scroll bar.
  740. //               * SB_VERT - Vertical scroll bar.
  741. // ----------------------------------------------------------------------
  742. virtual void AdjustScrollBarEx(int nSBType);
  743. //-----------------------------------------------------------------------
  744. // Summary:
  745. //     This member function internally sets the custom data provider
  746. //     for the control.
  747. // Parameters:
  748. //     pDataProvider - Pointer to the custom data provider object.
  749. //     bCloseDataProviderWhenDestroy - BOOL value shows whether data
  750. //                                     provider should be closed with the
  751. //                                     control's destruction.
  752. // Remarks:
  753. //     This method is used by SetDataProvider().
  754. // See Also:
  755. //     SetDataProvider
  756. //-----------------------------------------------------------------------
  757. virtual void _SetDataProvider(CXTPCalendarData* pDataProvider,
  758.   BOOL bCloseDataProviderWhenDestroy = TRUE);
  759. public:
  760. //-----------------------------------------------------------------------
  761. // Summary:
  762. //     Obtain a pointer to the notification connection object.
  763. // Remarks:
  764. //     Used to subscribe (Advice) for notification events from the
  765. //     control.
  766. // Returns:
  767. //     Connection object pointer.
  768. // See Also: CXTPNotifyConnection overview,
  769. //           IXTPNotificationSink overview
  770. //-----------------------------------------------------------------------
  771. virtual CXTPNotifyConnection* GetConnection();
  772. //-----------------------------------------------------------------------
  773. // Summary:
  774. //     This member function sends a notification to all control's
  775. //     event subscribers.
  776. // Parameters:
  777. //     EventCode - A specific code identifying the event.
  778. //     wParam - First custom parameter. Depends on the event type.
  779. //               See specific event description for details.
  780. //     lParam - Second custom parameter. Depends on the event type.
  781. //               See specific event description for details.
  782. // Remarks:
  783. //     This member function is called internally from inside the
  784. //     control when a notification is sent to all notification
  785. //     listeners.
  786. //     SendNotification depends on EnableSendNotifications flag.
  787. //     SendNotificationAlways - Performs send in any case.
  788. // See Also: XTP_NOTIFY_CODE, GetConnection
  789. //-----------------------------------------------------------------------
  790. virtual void SendNotification(XTP_NOTIFY_CODE EventCode, WPARAM wParam , LPARAM lParam);
  791. virtual void SendNotificationAlways(XTP_NOTIFY_CODE EventCode, WPARAM wParam , LPARAM lParam); // <COMBINE SendNotification>
  792. //-----------------------------------------------------------------------
  793. // Summary:
  794. //     This member function enables or disables sending a notification
  795. //     to all control's event subscribers.
  796. // Parameters:
  797. //     bEnable - TRUE to allow sending notifications,
  798. //               FALSE to disallow.
  799. // See Also:
  800. //     SendNotification
  801. //-----------------------------------------------------------------------
  802. virtual void EnableSendNotifications(BOOL bEnable = TRUE);
  803. //-----------------------------------------------------------------------
  804. // Summary:
  805. //     Obtain an associated Reminders Manager object.
  806. // Remarks:
  807. //     Use this method to retrieve a pointer to the Reminders Manager
  808. //     object associated to this Calendar control..
  809. // Returns:
  810. //     Calendar Reminders Manager.
  811. // See Also:
  812. //     CXTPCalendarRemindersManager overview
  813. //-----------------------------------------------------------------------
  814. virtual CXTPCalendarRemindersManager* GetRemindersManager();
  815. public:
  816. //-----------------------------------------------------------------------
  817. // Summary:
  818. //     This member function is used to process the command with
  819. //     specified ID.
  820. // Parameters:
  821. //     uCommandID - Command ID.  Specifies which command to process.
  822. // See Also: OnUndo, OnCut, OnCopy, OnPaste
  823. //-----------------------------------------------------------------------
  824. virtual void OnEditCommand(UINT uCommandID);
  825. //-----------------------------------------------------------------------
  826. // Summary:
  827. //     This member function is used to process undo commands.
  828. // See Also: OnCommand, OnCut, OnCopy, OnPaste
  829. //-----------------------------------------------------------------------
  830. afx_msg virtual void OnUndo();
  831. //-----------------------------------------------------------------------
  832. // Summary:
  833. //     This member function is used to process the "Cut" command.
  834. // See Also: OnCommand, OnUndo, OnCopy, OnPaste
  835. //-----------------------------------------------------------------------
  836. afx_msg virtual void OnCut();
  837. //-----------------------------------------------------------------------
  838. // Summary:
  839. //     This member function is used to process the "Copy" command.
  840. // See Also: OnCommand, OnUndo, OnCut, OnPaste
  841. //-----------------------------------------------------------------------
  842. afx_msg virtual void OnCopy();
  843. //-----------------------------------------------------------------------
  844. // Summary:
  845. //     This member function is used to process the "Paste" command.
  846. // See Also: OnCommand, OnUndo, OnCut, OnCopy
  847. //-----------------------------------------------------------------------
  848. afx_msg virtual void OnPaste();
  849. //-----------------------------------------------------------------------
  850. // Summary:
  851. //     This member function is used to update the user interface
  852. //     object represented by pCmdUI.
  853. // Parameters:
  854. //     pCmdUI - pointer to the CCmdUI object.
  855. // See Also: OnUpdateUndo, OnUpdateCut, OnUpdateCopy, OnUpdatePaste
  856. //-----------------------------------------------------------------------
  857. afx_msg virtual void OnUpdateCmdUI(CCmdUI* pCmdUI);
  858. //-----------------------------------------------------------------------
  859. // Summary:
  860. //     This member function is used to update the user interface
  861. //     object represented by pCmdUI for the "Undo" command only.
  862. // Parameters:
  863. //     pCmdUI - pointer to the CCmdUI object.
  864. // See Also: OnUpdateUndo, OnUpdateCut, OnUpdateCopy, OnUpdatePaste
  865. //-----------------------------------------------------------------------
  866. afx_msg virtual void OnUpdateUndo(CCmdUI* pCmdUI);
  867. //-----------------------------------------------------------------------
  868. // Summary:
  869. //     This member function is used to update the user interface object
  870. //     represented by pCmdUI for the "Cut" command only.
  871. // Parameters:
  872. //     pCmdUI - pointer to the CCmdUI object.
  873. // See Also: OnUpdateUndo, OnUpdateUndo, OnUpdateCopy, OnUpdatePaste
  874. //-----------------------------------------------------------------------
  875. afx_msg virtual void OnUpdateCut(CCmdUI* pCmdUI);
  876. //-----------------------------------------------------------------------
  877. // Summary:
  878. //     This member function is used to update the user interface object
  879. //     represented by pCmdUI for the "Copy" command only.
  880. // Parameters:
  881. //     pCmdUI - pointer to the CCmdUI object.
  882. // See Also: OnUpdateUndo, OnUpdateUndo, OnUpdateCut, OnUpdatePaste
  883. //-----------------------------------------------------------------------
  884. afx_msg virtual void OnUpdateCopy(CCmdUI* pCmdUI);
  885. //-----------------------------------------------------------------------
  886. // Summary:
  887. //     This member function is used to update the user interface
  888. //     object represented by pCmdUI for the "Paste" command only.
  889. // Parameters:
  890. //     pCmdUI - pointer to the CCmdUI object.
  891. // See Also: OnUpdateUndo, OnUpdateUndo, OnUpdateCut, OnUpdateCopy
  892. //-----------------------------------------------------------------------
  893. afx_msg virtual void OnUpdatePaste(CCmdUI* pCmdUI);
  894. //-----------------------------------------------------------------------
  895. // Summary:
  896. //     This member function is used to catch messages before children
  897. //     windows (like Subject editor).
  898. // Remarks:
  899. //     The children windows must call OnWndMsg_Children() for the messages
  900. //     which are interesting for other calendar control parts (main control
  901. //     window, view, day view, event view). The OnWndMsg() method may be
  902. //     overridden for this purposes. This mechanism is used instead of
  903. //     PreTranslateMessage() for ActiveX builds.
  904. // Parameters:
  905. //      message - Specifies the message to be sent.
  906. //      wParam  - Specifies additional message-dependent information.
  907. //      lParam  - Specifies additional message-dependent information.
  908. //      pResult - The return value of WindowProc. Depends on the message;
  909. //                may be NULL.
  910. // Returns:
  911. //      TRUE if message was handled; otherwise FALSE.
  912. // See Also: CXTPCalendarViewEventSubjectEditor, OnWndMsg().
  913. //-----------------------------------------------------------------------
  914. virtual BOOL OnWndMsg_Children(UINT message, WPARAM wParam, LPARAM lParam,
  915. LRESULT* pResult);
  916. //-----------------------------------------------------------------------
  917. // Summary:
  918. //     This member function deletes specified event from the calendar.
  919. // Parameters:
  920. //      pViewEvent  - View of the event to delete.
  921. // Remarks:
  922. //     Call member function if you want to delete an event basing
  923. //     on its View object.
  924. // Returns:
  925. //      TRUE if event was deleted successfully; otherwise FALSE.
  926. // See Also:
  927. //-----------------------------------------------------------------------
  928. virtual BOOL DoDeleteEvent(CXTPCalendarViewEvent* pViewEvent);
  929. //-----------------------------------------------------------------------
  930. // Summary:
  931. //     This member function deletes selected events from the calendar.
  932. // Parameters:
  933. //      pViewEvent  - View of the last event to delete.
  934. // Remarks:
  935. //     Call member function if you want to delete all selected events.
  936. // Returns:
  937. //      TRUE if events were deleted successfully; otherwise FALSE.
  938. // See Also:
  939. //-----------------------------------------------------------------------
  940. virtual BOOL DoDeleteSelectedEvents(CXTPCalendarViewEvent* pViewEvent);
  941. //-----------------------------------------------------------------------
  942. // Summary:
  943. //      Call this member function to get direct access to calendar options
  944. //      data.
  945. // Remarks:
  946. //      This member function wraps CXTPCalendarData::GetCalendarOptions()
  947. //      method. If you read or change returned structure members
  948. //      no additional checks are made and no notifications are sent.
  949. //      The preferred way is to use CXTPCalendarControl options methods
  950. //      like GetWorkWeekMask(), SetWorkWeekMask(), GetFirstDayOfWeek(),
  951. //      SetFirstDayOfWeek(), ... etc.
  952. // Returns:
  953. //      A pointer to calendar options data class CXTPCalendarOptions.
  954. // See Also:
  955. //      CXTPCalendarOptions,  CXTPCalendarData::GetCalendarOptions().
  956. //-----------------------------------------------------------------------
  957. virtual CXTPCalendarOptions* GetCalendarOptions() const;
  958. protected:
  959. //{{AFX_CODEJOCK_PRIVATE
  960. DECLARE_MESSAGE_MAP()
  961. //## Generated message map functions
  962. //{{AFX_MSG(CXTPCalendarControl)
  963. afx_msg void OnPaint();
  964. afx_msg LRESULT OnPrintClient(WPARAM wParam, LPARAM /*lParam*/);
  965. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  966. afx_msg void OnSize(UINT nType, int cx, int cy);
  967. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  968. afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
  969. afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  970. afx_msg void OnContextMenu(CWnd* pWnd, CPoint pos);
  971. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  972. afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
  973. afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
  974. afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
  975. afx_msg void OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
  976. afx_msg void OnCaptureChanged(CWnd* pWnd);
  977. afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
  978. afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
  979. afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
  980. afx_msg void OnTimer(UINT_PTR uTimerID);
  981. afx_msg void OnDestroy();
  982. afx_msg UINT OnGetDlgCode();
  983. afx_msg void OnSysColorChange();
  984. afx_msg void OnTimeChange();
  985. afx_msg LRESULT OnTimeZoneChanged(WPARAM wParam, LPARAM lParam);
  986. afx_msg LRESULT OnSwitchView(WPARAM nDate, LPARAM); // for compatibility with previous versions
  987. afx_msg LRESULT OnUserAction(WPARAM dwParam1, LPARAM dwParam2);
  988. afx_msg void OnSetFocus(CWnd* pOldWnd);
  989. afx_msg void OnKillFocus (CWnd* pNewWnd);
  990. afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
  991. afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
  992. afx_msg void OnEnable(BOOL bEnable);
  993. //}}AFX_MSG
  994. //}}AFX_CODEJOCK_PRIVATE
  995. //{{AFX_CODEJOCK_PRIVATE
  996. DECLARE_XTP_SINK(CXTPCalendarControl, m_Sink_DP)
  997. virtual void OnEvent_FromDataProvider(XTP_NOTIFY_CODE Event, WPARAM wParam , LPARAM lParam);
  998. virtual void OnEvent_Reminders(XTP_NOTIFY_CODE Event, WPARAM wParam , LPARAM lParam);
  999. virtual void OnFinalRelease();
  1000. virtual CScrollBar* GetScrollBarCtrl(int nBar) const;
  1001. virtual void PreSubclassWindow();
  1002. virtual void _InitCalendarView();
  1003. //}}AFX_CODEJOCK_PRIVATE
  1004. //-----------------------------------------------------------------------
  1005. // Summary:
  1006. //      This member function is called by the calendar control when calendar
  1007. //      option was changed.
  1008. // Remarks:
  1009. //      It is called from the set option methods like SetWorkWeekMask(),
  1010. //      SetFirstDayOfWeek(), SetWorkDayStartTime(), SetWorkDayEndTime(),
  1011. //      DayView_SetAutoResetBusyFlag(), ... etc.
  1012. //      See CXTPCalendarOptions for details.
  1013. //      Default implementation sends XTP_NC_CALENDAROPTIONSWASCHANGED
  1014. //      notification.
  1015. // Parameters:
  1016. //      nOptionRelation - Changed option relation (or kind).
  1017. //                        Value -1 specify global or common option.
  1018. //                        Value from XTPCalendarViewType enum specify
  1019. //                        which kind of view changed option is related.
  1020. // Returns:
  1021. //      TRUE if events were deleted successfully; otherwise FALSE.
  1022. // See Also:
  1023. //      CXTPCalendarOptions,  CXTPCalendarData::GetCalendarOptions(),
  1024. //      XTP_NC_CALENDAROPTIONSWASCHANGED,
  1025. //-----------------------------------------------------------------------
  1026. virtual void OnOptionsChanged(int nOptionRelation);
  1027. protected:
  1028. //{{AFX_CODEJOCK_PRIVATE
  1029. virtual void AdviseToDataProvider();
  1030. virtual void _AdviseToReminders_StartMonitoring();
  1031. //}}AFX_CODEJOCK_PRIVATE
  1032. public:
  1033. //-----------------------------------------------------------------------
  1034. // Summary:
  1035. //      This member function is used to show a ToolTip rectangle.
  1036. // Parameters:
  1037. //      strText     - A text to be shown inside a tooltip rectangle.
  1038. //      rcToolTip   - A rect for a tooltip window.
  1039. //      pFont       - Font for to draw tooltip text.
  1040. //      bAdvanced   - TRUE for advanced processing (Office2007 theme "add new appt")
  1041. //-----------------------------------------------------------------------
  1042. virtual void ShowToolTip(const CString& strText, const CRect rcToolTip,
  1043. CFont* pFont, BOOL bAdvanced = FALSE);
  1044. //-----------------------------------------------------------------------
  1045. // Summary:
  1046. //     This member function is used to hide the ToolTip rectangle.
  1047. // See Also:
  1048. //     IsToolTipVisible
  1049. //-----------------------------------------------------------------------
  1050. virtual void HideToolTip();
  1051. //-----------------------------------------------------------------------
  1052. // Summary:
  1053. //     This member function is the ToolTip rectangle visible on the screen.
  1054. // Returns:
  1055. //     TRUE if ToolTip rectangle visible, FALSE otherwise.
  1056. // See Also:
  1057. //     HideToolTip
  1058. //-----------------------------------------------------------------------
  1059. virtual BOOL IsToolTipVisible() const;
  1060. //-----------------------------------------------------------------------
  1061. // Summary:
  1062. //     This member function returns TRUE if the ToolTips enabled,
  1063. //     FALSE otherwise.
  1064. // Returns:
  1065. //     TRUE if the ToolTips enabled, FALSE otherwise.
  1066. // See Also:
  1067. //     EnableToolTips
  1068. //-----------------------------------------------------------------------
  1069. BOOL IsToolTipsEnabled() const;
  1070. // ---------------------------------------------------------------
  1071. // Summary:
  1072. //     This member function is used to enable or disable ToolTips
  1073. //     for the control.
  1074. // See Also:
  1075. //     IsToolTipsEnabled
  1076. // Parameters:
  1077. //     bEnable : A BOOL. Specifies whether ToolTips should be
  1078. //               enabled (TRUE) or disabled (FALSE).
  1079. // ---------------------------------------------------------------
  1080. void EnableToolTips(BOOL bEnable = TRUE);
  1081. //-----------------------------------------------------------------------
  1082. // Summary:
  1083. //     This member function returns TRUE if the Reminders functionality
  1084. //     is enabled for this Calendar control and FALSE otherwise.
  1085. // Returns:
  1086. //     TRUE if reminders are enabled, FALSE otherwise.
  1087. // See Also:
  1088. //     EnableReminders()
  1089. //-----------------------------------------------------------------------
  1090. BOOL IsRemindersEnabled() const;
  1091. // ---------------------------------------------------------------
  1092. // Summary:
  1093. //     This member function is used to enable or disable Reminders
  1094. //     functionality for the control.
  1095. // Parameters:
  1096. //     bEnable : A BOOL. Specifies whether Reminders functionality
  1097. //               should be enabled (TRUE) or disabled (FALSE).
  1098. // See Also:
  1099. //     IsRemindersEnabled
  1100. // ---------------------------------------------------------------
  1101. void EnableReminders(BOOL bEnable = TRUE);
  1102. //-----------------------------------------------------------------------
  1103. // Summary:
  1104. //     This member function returns set of flags which define calendar items
  1105. //     to send XTP_NC_CALENDAR_GETITEMTEXT notification.
  1106. //     If Calendar theme is set - return value is got from the theme object,
  1107. //     otherwise it is got from the paint manager object.
  1108. // Returns:
  1109. //     Set of flags from enums XTPCalendarGetItemText, XTPCalendarGetItemTextEx.
  1110. // See Also:
  1111. //     XTPCalendarGetItemText, XTPCalendarGetItemTextEx,
  1112. //     CXTPCalendarControlPaintManager::GetAskItemTextFlags,
  1113. //     CXTPCalendarControlPaintManager::SetAskItemTextFlags,
  1114. //     CXTPCalendarTheme::GetAskItemTextFlags,
  1115. //     CXTPCalendarTheme::SetAskItemTextFlags, XTP_NC_CALENDAR_GETITEMTEXT
  1116. //-----------------------------------------------------------------------
  1117. virtual DWORD GetAskItemTextFlags();
  1118. //-----------------------------------------------------------------------
  1119. // Summary:
  1120. //     This member function returns TRUE if Markup functionality
  1121. //     is enabled for this Calendar control and FALSE otherwise.
  1122. //     In enabled state is automatically process static Markup text for
  1123. //     events, and enables processing of dynamic Markup text customization
  1124. //     using XTP_NC_CALENDAR_GETITEMTEXT notification.
  1125. // Returns:
  1126. //     TRUE if Markup feature is enabled, FALSE otherwise.
  1127. // See Also:
  1128. //     EnableMarkup(),
  1129. //     CXTPCalendarViewEvent::GetMarkupText()
  1130. //-----------------------------------------------------------------------
  1131. BOOL IsMarkupEnabled() const;
  1132. //-----------------------------------------------------------------------
  1133. // Summary:
  1134. //     This member function is used to enable or disable Markup
  1135. //     functionality for the control.
  1136. //     Enabling this functionality allows a control to process customized
  1137. //     special property xtpMarkupTemplate which could be set for each event.
  1138. //     If this property exists and contains text with Markup information,
  1139. //     it will be drawn inside the Event rectangle (instead of Subject and Body).
  1140. // Parameters:
  1141. //     bEnable : A BOOL. Specifies whether Markup functionality
  1142. //               should be enabled (TRUE) or disabled (FALSE).
  1143. // See Also:
  1144. //     IsMarkupEnabled
  1145. //     CXTPCalendarViewEvent::GetMarkupText()
  1146. //-----------------------------------------------------------------------
  1147. void EnableMarkup(BOOL bEnableMarkup = TRUE);
  1148. //-----------------------------------------------------------------------
  1149. // Summary:
  1150. //     Returns markup context
  1151. //-----------------------------------------------------------------------
  1152. CXTPMarkupContext* GetMarkupContext();
  1153. private:
  1154. //{{AFX_CODEJOCK_PRIVATE
  1155. BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
  1156. //}}AFX_CODEJOCK_PRIVATE
  1157. public:
  1158. //=======================================================================
  1159. // Summary:
  1160. //     Class CUpdateContext updates context and redraws control parts
  1161. //     depending on input parameters.
  1162. // See Also: XTPCalendarUpdateOptions,
  1163. //          AdjustLayout, AdjustScrollBar, RedrawControl
  1164. //=======================================================================
  1165. class _XTP_EXT_CLASS CUpdateContext
  1166. {
  1167. public:
  1168. //-------------------------------------------------------------------
  1169. // Summary:
  1170. //     Constructs a CUpdateContext object.
  1171. // Parameters:
  1172. //     pControl - Pointer to the CXTPCalendarControl to adjust.
  1173. //     nOptions - A bitwise combination of the adjusting
  1174. //                 parameters.
  1175. // Remarks:
  1176. //     When constructing a CUpdateContext object, specify
  1177. //     if the control's layout needs adjustment and/or
  1178. //     redrawing.
  1179. // See Also: XTPCalendarUpdateOptions
  1180. //-------------------------------------------------------------------
  1181. CUpdateContext(CXTPCalendarControl* pControl, int nOptions = xtpCalendarUpdateLayout | xtpCalendarUpdateRedraw) :
  1182. m_pControl(pControl)
  1183. {
  1184. // WARNING. (no error)
  1185. // There is no need to use xtpCalendarUpdateRedraw and xtpCalendarUpdateRedrawIfNeed together
  1186. ASSERT(!((nOptions & xtpCalendarUpdateRedraw) && (nOptions & xtpCalendarUpdateRedrawIfNeed)));
  1187. m_nOptions = nOptions;
  1188. if (!m_pControl) {
  1189. ASSERT(FALSE);
  1190. return;
  1191. }
  1192. if (m_nOptions & (xtpCalendarUpdateLayout | xtpCalendarUpdateScrollBar))
  1193. m_pControl->BeginAdjust(nOptions & xtpCalendarUpdateScrollBar);
  1194. if (m_nOptions & xtpCalendarUpdateRedraw)
  1195. m_pControl->BeginUpdate();
  1196. if (m_nOptions & xtpCalendarUpdateRedrawIfNeed)
  1197. m_pControl->LockUpdate();
  1198. }
  1199. //-------------------------------------------------------------------
  1200. // Summary:
  1201. //     Destroys a CUpdateContext object and calls all the required
  1202. //     Calendar Control adjusting and redrawing functions.
  1203. // See Also: XTPCalendarUpdateOptions
  1204. //-------------------------------------------------------------------
  1205. ~CUpdateContext()
  1206. {
  1207. if (!m_pControl) {
  1208. return;
  1209. }
  1210. if (m_nOptions & (xtpCalendarUpdateLayout | xtpCalendarUpdateScrollBar))
  1211. m_pControl->EndAdjust(m_nOptions & xtpCalendarUpdateScrollBar);
  1212. if (m_nOptions & xtpCalendarUpdateRedraw)
  1213. m_pControl->EndUpdate();
  1214. if (m_nOptions & xtpCalendarUpdateRedrawIfNeed)
  1215. m_pControl->UnlockUpdate();
  1216. }
  1217. private:
  1218. CXTPCalendarControl* m_pControl;
  1219. int m_nOptions;
  1220. };
  1221. //=======================================================================
  1222. // Summary:
  1223. //      Class CViewChangedContext used to avoid multiple sending of
  1224. //      XTP_NC_CALENDARVIEWWASCHANGED notification for one action.
  1225. //=======================================================================
  1226. class CViewChangedContext
  1227. {
  1228. public:
  1229. //-------------------------------------------------------------------
  1230. // Summary:
  1231. //     Constructs a CViewChangedContext object.
  1232. // Parameters:
  1233. //      pView    - Pointer to parent CXTPCalendarView object.
  1234. //      pControl - Pointer to parent CXTPCalendarControl object.
  1235. //      eType    - Value from enum XTPCalendarViewChangedUpdateOptions.
  1236. // See Also: XTP_NC_CALENDARVIEWWASCHANGED
  1237. //-------------------------------------------------------------------
  1238. CViewChangedContext(CXTPCalendarView* pView, int eType = xtpCalendarViewChangedSend);
  1239. CViewChangedContext(CXTPCalendarControl* pControl, int eType = xtpCalendarViewChangedSend); //<COMBINE CXTPCalendarControl::CViewChangedContext::CViewChangedContext@CXTPCalendarView*@int>
  1240. //-------------------------------------------------------------------
  1241. // Summary:
  1242. //      Destroys a CViewChangedContext object and send notification
  1243. //      if this is last locker object.
  1244. //-------------------------------------------------------------------
  1245. virtual ~CViewChangedContext();
  1246. private:
  1247. void Init(CXTPCalendarControl* pControl, int eType);
  1248. CXTPCalendarControl* m_pControl;
  1249. int m_eType;
  1250. };
  1251. //{{AFX_CODEJOCK_PRIVATE
  1252. friend class CUpdateContext;
  1253. friend class CViewChangedContext;
  1254. //}}AFX_CODEJOCK_PRIVATE
  1255. protected:
  1256. //=======================================================================
  1257. // Summary:
  1258. //      Class CViewChanged_ContextData is used as locker context for
  1259. //      CViewChangedContext.
  1260. //=======================================================================
  1261. class CViewChanged_ContextData
  1262. {
  1263. public:
  1264. //-------------------------------------------------------------------
  1265. // Summary:
  1266. //      Default object constructor.
  1267. //-------------------------------------------------------------------
  1268. CViewChanged_ContextData();
  1269. int m_nLockCount;     // View change notification lock counter.
  1270. BOOL m_bRequest;      // View change send notification request.
  1271. };
  1272. CViewChanged_ContextData    m_cntViewChanged; // Locker context for CViewChangedContext.
  1273. int m_nRowsPerWheel;                       // Amount of rows to scroll when using the mouse wheel.
  1274. CString m_strUndoUIText;                   // Text label for the Undo UI command.
  1275. CString m_strRedoUIText;                   // Text label for the Redo UI command.
  1276. BOOL m_bUpdateWhenEventChangedNotify; // Whether to update control when notification comes about an event change.
  1277. CXTPCalendarRemindersManager*   m_pRemindersManager; // Stores reminders manager object.
  1278. CXTPMarkupContext* m_pMarkupContext;
  1279. private:
  1280. //{{AFX_CODEJOCK_PRIVATE
  1281. BOOL m_bChanged;
  1282. int m_nLockUpdateCount;
  1283. int m_nLockAdjustCount;
  1284. BOOL m_bAdjustScrollBar;
  1285. CXTPCalendarView*       m_pActiveView;
  1286. CXTPCalendarDayView*    m_pDayView;
  1287. CXTPCalendarMonthView*  m_pMonthView;
  1288. CXTPCalendarWeekView*   m_pWeekView;
  1289. CXTPCalendarResourcesNf*    m_pResourcesNf; // Resources array
  1290. CXTPCalendarTheme*              m_pTheme;
  1291. CXTPCalendarPaintManager*       m_pPaintManager;
  1292. CXTPNotifyConnection*           m_pConnect;
  1293. CXTPCalendarOptions* m_pOptions;    // This member stores user's calendar view options.
  1294. CBitmap m_bmpCache; // Current view cached picture
  1295. CXTPCalendarTip m_wndTip;
  1296. UINT m_uNextTimerID;
  1297. BOOL m_bEnableToolTips;
  1298. BOOL m_bEnableSendNotifications;
  1299. UINT m_uPopulateRequest_TimerID;
  1300. UINT m_uRedrawRequest_TimerID;
  1301. XTP_CONNECTION_ID m_cnidOnReminders;
  1302. COleDateTimeSpan m_spRemindersUpdatePeriod;
  1303. LCID    m_lcidActiveLocale;
  1304. //}}AFX_CODEJOCK_PRIVATE
  1305. public:
  1306. XTPCalendarMouseMode m_mouseMode;          // Current mouse operation mode.
  1307. BOOL m_bDeleteOnFinalRelease;   // If TRUE - Delete self OnFinalRelease() call.
  1308. BOOL m_bDisableRedraw;  // If TRUE - control window is not redraw, it is draw last window content (draw cached bitmap). FALSE by default.
  1309. public:
  1310. //-----------------------------------------------------------------------
  1311. // Summary:
  1312. //     Call this method to retrieve a type of the data provider from
  1313. //     its connection string.
  1314. // Parameters:
  1315. //     lpszConnectionString - A text Calendar connection string.
  1316. //     eDPDefault           - Default data provider type to be returned if
  1317. //                            it can't be determined from the string.
  1318. // Remarks:
  1319. //     This is a helper method which parses a connection string and
  1320. //     identifies a type of the data provider which is specified there.
  1321. // Returns:
  1322. //     One of the values from XTPCalendarDataProvider enumeration.
  1323. // See Also:
  1324. //     DataSourceFromConStr(), CreateDataProvider()
  1325. //-----------------------------------------------------------------------
  1326. static XTPCalendarDataProvider AFX_CDECL DataProviderTypeFromConStr(
  1327. LPCTSTR lpszConnectionString,
  1328. XTPCalendarDataProvider eDPDefault = xtpCalendarDataProviderUnknown);
  1329. //-----------------------------------------------------------------------
  1330. // Summary:
  1331. //     Call this method to retrieve a data source connection string from
  1332. //     a regular Calendar connection string.
  1333. // Parameters:
  1334. //     lpszConnectionString - A text Calendar connection string.
  1335. // Remarks:
  1336. //     This is a helper method which parses a connection string and
  1337. //     identifies a data source connection string there.
  1338. // Returns:
  1339. //     Identified data source connection string.
  1340. // See Also:
  1341. //     DataProviderTypeFromConStr(), CreateDataProvider()
  1342. //-----------------------------------------------------------------------
  1343. static CString AFX_CDECL DataSourceFromConStr(LPCTSTR lpszConnectionString);
  1344. //-----------------------------------------------------------------------
  1345. // Summary:
  1346. //     Call this method to create a data provider from
  1347. //     a specified Calendar connection string.
  1348. // Parameters:
  1349. //     lpszConnectionString - A text Calendar connection string.
  1350. // Remarks:
  1351. //     This is a helper method which creates calendar's data provider of
  1352. //     the specified type with settings taken from the connection string.
  1353. // Returns:
  1354. //     Pointer to the created Calendar Data Provider object.
  1355. //-----------------------------------------------------------------------
  1356. static CXTPCalendarData* AFX_CDECL CreateDataProvider(LPCTSTR lpszConnectionString);
  1357. //-----------------------------------------------------------------------
  1358. // Summary:
  1359. //     Call this method to create a data provider of the
  1360. //     specified type.
  1361. // Parameters:
  1362. //     eDataProvider - A member of XTPCalendarDataProvider enumeration,
  1363. //                     which specifies a type of the Data Provider to create.
  1364. // Remarks:
  1365. //     This is a helper method which creates calendar's data provider of
  1366. //     the specified type.
  1367. // Returns:
  1368. //     Pointer to the created Calendar Data Provider object.
  1369. //-----------------------------------------------------------------------
  1370. static CXTPCalendarData* AFX_CDECL CreateDataProvider(XTPCalendarDataProvider eDataProvider);
  1371. };
  1372. /////////////////////////////////////////////////////////////////////////////
  1373. AFX_INLINE BOOL CXTPCalendarControl::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) {
  1374. return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
  1375. }
  1376. AFX_INLINE CXTPCalendarPaintManager* CXTPCalendarControl::GetPaintManager() {
  1377. ASSERT(this);
  1378. return this ? m_pPaintManager : NULL;
  1379. }
  1380. AFX_INLINE CXTPCalendarTheme* CXTPCalendarControl::GetTheme() {
  1381. ASSERT(this);
  1382. return this ? m_pTheme : NULL;
  1383. }
  1384. AFX_INLINE CXTPNotifyConnection* CXTPCalendarControl::GetConnection() {
  1385. ASSERT(this);
  1386. return this ? m_pConnect : NULL;
  1387. }
  1388. AFX_INLINE CXTPCalendarRemindersManager* CXTPCalendarControl::GetRemindersManager() {
  1389. ASSERT(this);
  1390. return this ? m_pRemindersManager : NULL;
  1391. }
  1392. AFX_INLINE BOOL CXTPCalendarControl::IsToolTipsEnabled() const {
  1393. return m_bEnableToolTips;
  1394. }
  1395. AFX_INLINE void CXTPCalendarControl::EnableToolTips(BOOL bEnable) {
  1396. if (!bEnable && IsToolTipVisible()) {
  1397. HideToolTip();
  1398. }
  1399. m_bEnableToolTips = bEnable;
  1400. }
  1401. AFX_INLINE void CXTPCalendarControl::EnableSendNotifications(BOOL bEnable) {
  1402. m_bEnableSendNotifications = bEnable;
  1403. }
  1404. AFX_INLINE BOOL CXTPCalendarControl::IsMarkupEnabled() const {
  1405. return m_pMarkupContext != NULL;
  1406. }
  1407. AFX_INLINE CXTPMarkupContext* CXTPCalendarControl::GetMarkupContext() {
  1408. return m_pMarkupContext;
  1409. }
  1410. #endif // !defined(_XTPCALENDARCONTROL_H__)