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

对话框与窗口

开发平台:

Visual C++

  1. // XTPCalendarDayViewTimeScale.h: interface for the CXTPCalendarDayViewTimeScale 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(_XTPCALENDARDAYVIEWTIMESCALE_H__)
  22. #define _XTPCALENDARDAYVIEWTIMESCALE_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #include "Resource.h"
  25. #include "XTPCalendarTimeZoneHelper.h"
  26. #if _MSC_VER > 1000
  27. #pragma once
  28. #endif // _MSC_VER > 1000
  29. struct XTP_CALENDAR_HITTESTINFO_DAY_VIEW;
  30. class CXTPCalendarDayView;
  31. //===========================================================================
  32. // Summary:
  33. //     This class implements a specific view portion of the Calendar
  34. //     Day view - called <b>Time scale</b>.
  35. // Remarks:
  36. //     The Day view contains two time scales defining those intervals
  37. //     at the left of the view, which is represented by the
  38. //     CXTPCalendarDayViewTimeScale class. One time scale is the main and
  39. //     is visible by default, second one is the alternative and could be
  40. //     enabled programmatically. Time scale interval could be changed
  41. //     using SetScaleInterval member function.
  42. //
  43. // See Also: CXTPCalendarDayViewDay
  44. //===========================================================================
  45. class _XTP_EXT_CLASS CXTPCalendarDayViewTimeScale : public CXTPCmdTarget
  46. {
  47. //{{AFX_CODEJOCK_PRIVATE
  48. DECLARE_DYNAMIC(CXTPCalendarDayViewTimeScale)
  49. friend class CXTPCalendarDayView;
  50. friend class CXTPCalendarTheme;
  51. //}}AFX_CODEJOCK_PRIVATE
  52. public:
  53. // ---------------------------------------------------------------------
  54. // Summary:
  55. //     Default object constructor.
  56. // Parameters:
  57. //      pDayView :      Pointer to associated CXTPCalendarDayView object.
  58. //      bVisible :      Specifies initial visibility mode for the time
  59. //                      scale.
  60. //      bDrawNowLine :  If TRUE current time mark is drawn.
  61. // See Also:
  62. //     ~CXTPCalendarDayViewTimeScale()
  63. // ---------------------------------------------------------------------
  64. CXTPCalendarDayViewTimeScale(CXTPCalendarDayView* pDayView, BOOL bVisible = TRUE, BOOL bDrawNowLine = TRUE);
  65. //-----------------------------------------------------------------------
  66. // Summary:
  67. //     Default class destructor.
  68. // Remarks:
  69. //     Handles member items deallocation.
  70. // See Also: CXTPCalendarDayViewTimeScale
  71. //-----------------------------------------------------------------------
  72. virtual ~CXTPCalendarDayViewTimeScale();
  73. //-----------------------------------------------------------------------
  74. // Summary:
  75. //     This member function is used to obtain the time scale width in pixels.
  76. // Parameters:
  77. //     pDC     - Pointer to a valid device context.
  78. // Returns:
  79. //     An int that contains the time scale width in pixels.
  80. //-----------------------------------------------------------------------
  81. int CalcWidth(CDC* pDC);
  82. //-----------------------------------------------------------------------
  83. // Summary:
  84. //     This member function is used to get the time scale width.
  85. // Returns:
  86. //     An int that contains the time scale width in pixels.
  87. //-----------------------------------------------------------------------
  88. int GetWidth() const;
  89. //-----------------------------------------------------------------------
  90. // Summary:
  91. //     This member function is used to perform all drawing logic of
  92. //     the time scale.
  93. // Parameters:
  94. //     pDC - A pointer to a valid device context.
  95. //-----------------------------------------------------------------------
  96. void Draw(CDC* pDC);
  97. //-----------------------------------------------------------------------
  98. // Summary:
  99. //     This function is used to adjust the time scale layout.
  100. // Parameters:
  101. //     pDC - Pointer to a valid device context.
  102. //-----------------------------------------------------------------------
  103. virtual void AdjustLayout(CDC* pDC);
  104. //-----------------------------------------------------------------------
  105. // Summary:
  106. //     This member function is used to format the time scale text.
  107. // Parameters:
  108. //     dtTime   - A COleDateTime object that contains the time to format to text.
  109. //     bTopCell - If TRUE and minutes value is 0 the minutes
  110. //                value is replaced on am/pm value. This valid only for
  111. //                AM/PM 12-hour time format. If this parameter FALSE, the
  112. //                minutes value 0 is replace only if hour value is 12.
  113. //     pHour    - A pointer to the CString object to write the hour part of the value.
  114. //     pMin     - A pointer to the CString object to write the minutes part of the value.
  115. // Returns:
  116. //     A string containing formatted text.
  117. //-----------------------------------------------------------------------
  118. virtual CString Format(COleDateTime dtTime, BOOL bTopCell,
  119. CString* pHour = NULL, CString* pMin = NULL);
  120. //-----------------------------------------------------------------------
  121. // Summary:
  122. //     This member function is used to determine is Current Time Mark
  123. //     can be drawn for this time scale.
  124. // Remarks:
  125. //     By default it returns TRUE for primary time scale and
  126. //     FALSE for secondary.
  127. // Returns:
  128. //     Returns TRUE if Current Time Mark may be drawn for this time scale,
  129. //     FALSE otherwise.
  130. //-----------------------------------------------------------------------
  131. virtual BOOL IsDrawNowLine() const;
  132. public:
  133. //-----------------------------------------------------------------------
  134. // Summary:
  135. //     This member function obtains the time scale cell interval.
  136. // Remarks:
  137. //     Use this member function to retrieve the current time scale
  138. //     cell interval.
  139. // Returns:
  140. //     A COleDateTimeSpan object that contains the cell interval for
  141. //     the time scale.
  142. //-----------------------------------------------------------------------
  143. COleDateTimeSpan GetScaleInterval() const;
  144. //-----------------------------------------------------------------------
  145. // Summary:
  146. //     This member function is used to set the text caption for the
  147. //     time scale.
  148. // Parameters:
  149. //     strCaption - A CString object that contains the new text
  150. //                  caption for the time scale.
  151. // Remarks:
  152. //     Use this function to set the current time scale caption.
  153. // See Also: GetCaption
  154. //-----------------------------------------------------------------------
  155. void SetCaption(LPCTSTR strCaption);
  156. //-----------------------------------------------------------------------
  157. // Summary:
  158. //     This member function is used to obtain the text caption for
  159. //     the time scale.
  160. // Remarks:
  161. //     Use GetCaption() to get the current time scale caption.
  162. // Returns:
  163. //     A CString object that contains the text caption for the time scale.
  164. // See Also: SetCaption
  165. //-----------------------------------------------------------------------
  166. CString GetCaption();
  167. //-----------------------------------------------------------------------
  168. // Summary:
  169. //     This member function is used to set the new time shift in
  170. //     hours for the time scale.
  171. // Parameters:
  172. //     nMinutes - An int that contains the new time shift for the
  173. //                time scale in minutes.
  174. // Remarks:
  175. //     Use this member function to set the new time shift for
  176. //     the time scale.
  177. // See Also: GetTimeshift
  178. //-----------------------------------------------------------------------
  179. void SetTimeshift(int nMinutes);
  180. //-----------------------------------------------------------------------
  181. // Summary:
  182. //     This member function is used to obtain the time shift in
  183. //     hours for the time scale.
  184. // Remarks:
  185. //     Use this member function to retrieve current time shift for
  186. //     the time scale.
  187. // Returns:
  188. //     An int that contains the time shift for the time scale in minutes.
  189. // See Also: SetTimeshift
  190. //-----------------------------------------------------------------------
  191. int GetTimeshift();
  192. //-----------------------------------------------------------------------
  193. // Summary:
  194. //     This member function is used to set the time scale visible
  195. //     mode (TRUE - visible, FALSE - invisible).
  196. // Parameters:
  197. //     bVisible - A BOOL that contains the new time scale visible state.
  198. //                TRUE -  Visible.
  199. //                FALSE - Invisible.
  200. // See Also: GetVisible()
  201. //-----------------------------------------------------------------------
  202. void SetVisible(BOOL bVisible);
  203. //-----------------------------------------------------------------------
  204. // Summary:
  205. //     This member function is used to obtain the current time scale
  206. //     visibility mode.
  207. // Returns:
  208. //     A BOOL that contains the time scale visibility scale value.
  209. //     TRUE if the time scale is visible.
  210. //     FALSE otherwise.
  211. // See Also: SetVisible(BOOL)
  212. //-----------------------------------------------------------------------
  213. BOOL GetVisible();
  214. public:
  215. //-----------------------------------------------------------------------
  216. // Summary:
  217. //     This member function is used to fill an
  218. //     XTP_CALENDAR_HITTESTINFO_DAY_VIEW structure.
  219. // Parameters:
  220. //     pHitTest - A pointer to an XTP_CALENDAR_HITTESTINFO_DAY_VIEW structure.
  221. // Remarks:
  222. //     Call this member function to gather hit test information from
  223. //     the day view.
  224. //     It uses pHitTest->pt point for gathering hit test information.
  225. // See Also: XTP_CALENDAR_HITTESTINFO_DAY_VIEW
  226. //-----------------------------------------------------------------------
  227. BOOL HitTestDateTime(XTP_CALENDAR_HITTESTINFO_DAY_VIEW* pHitTest);
  228. //-----------------------------------------------------------------------
  229. // Summary:
  230. //     This member function obtains the time scale owner view.
  231. // Remarks:
  232. //     Use this member function to get day view object which owns the time
  233. //     scale.
  234. // Returns:
  235. //     A pointer to CXTPCalendarDayView object.
  236. //-----------------------------------------------------------------------
  237. CXTPCalendarDayView* GetDayView();
  238. //-----------------------------------------------------------------------
  239. // Summary:
  240. //     This member function shift the time scale object.
  241. // Parameters:
  242. //     nXPos - Offset from base position.
  243. // Remarks:
  244. //     Used by horizontal scrolling to place timescale always visible
  245. //     on the left border.
  246. //-----------------------------------------------------------------------
  247. void MoveTo(int nXPos);
  248. public:
  249. //{{AFX_CODEJOCK_PRIVATE
  250. struct XTP_TIMESCALE_LAYOUT
  251. {
  252. CRect m_rcHeader;                // Time scale header rectangle.
  253. CRect m_rcTimeZone;              // Time zone rectangle.
  254. int   m_nXPosBase;
  255. };
  256. //}}AFX_CODEJOCK_PRIVATE
  257. protected:
  258. //{{AFX_CODEJOCK_PRIVATE
  259. virtual XTP_TIMESCALE_LAYOUT& GetLayout();
  260. //}}AFX_CODEJOCK_PRIVATE
  261. protected:
  262. XTP_TIMESCALE_LAYOUT m_Layout; // Store time scale layout.
  263. CXTPCalendarDayView* m_pDayView; // Pointer to the parent Calendar Day view object.
  264. BOOL m_bDrawNowLine;             // Specifies whether we should draw the "Now" line on the time scale.
  265. CString m_strCaption;               // Caption under time scale.
  266. int m_nTimeshift_min;               // Time zone time shift in minutes.
  267. BOOL m_bVisible;                    // Show this timescale or not.
  268. private:
  269. int m_nWidth;            // Calculated time scale width.
  270. BOOL m_bDrawNowLineDyn;  // DrawNowLine attribute dynamically calculated on AdjustLayout.
  271. };
  272. /////////////////////////////////////////////////////////////////////////////
  273. // CXTPCalendarTimeScalePropertiesDlg dialog
  274. //
  275. // This dialog allows to customize Calendar Time Scale part, set a proper
  276. // time zone and it's description.
  277. // It is a simplified version of similar Outlook dialog.
  278. //
  279. /////////////////////////////////////////////////////////////////////////////
  280. class _XTP_EXT_CLASS CXTPCalendarTimeScalePropertiesDlg : public CDialog
  281. {
  282. public:
  283. //{{AFX_CODEJOCK_PRIVATE
  284. enum { IDD = XTP_IDD_CALENDAR_TIMESCALE_PROPERTIES };
  285. //}}AFX_CODEJOCK_PRIVATE
  286. //-----------------------------------------------------------------------
  287. // Summary:
  288. //     Dialog class constructor.
  289. // Parameters:
  290. //     pParent       - [in] Pointer to parent window. Can be NULL.
  291. //     nIDTemplate   - [in] Contains the ID number of a dialog-box template resource.
  292. //-----------------------------------------------------------------------
  293. CXTPCalendarTimeScalePropertiesDlg(CWnd* pParent = NULL,
  294.    UINT nIDTemplate = CXTPCalendarTimeScalePropertiesDlg::IDD);
  295. public:
  296. CString m_strCaption1;  // [in, out] Store Caption string for main timescale.
  297. BOOL m_bShowScale2;     // [in, out] Store is additional timescale used or not.
  298. CString m_strCaption2;  // [in, out] Store Caption string for additional timescale.
  299. TIME_ZONE_INFORMATION m_tziScale2; // [in, out] Store additional timescale data.
  300. protected:
  301. // Generated message map functions
  302. //{{AFX_CODEJOCK_PRIVATE
  303. virtual void DoDataExchange(CDataExchange* pDX);
  304. virtual BOOL OnInitDialog();
  305. virtual void OnOK();
  306. afx_msg void OnSelchangeZones2();
  307. afx_msg void OnBnClickedScale2();
  308. //}}AFX_CODEJOCK_PRIVATE
  309. DECLARE_MESSAGE_MAP()
  310. protected:
  311. CEdit       m_edtCaption1;          // An edit control for main time zone caption
  312. CComboBox   m_cmbZones1;            // A combobox to display main time zone
  313. CButton     m_btnAutoAdjustDayLight1;   // A check box control to show 'Auto Adjust Day Light' option for main timezone
  314. CEdit       m_edtCaption2;          // An edit control for additional time zone caption
  315. CComboBox   m_cmbZones2;            // A combobox to edit additional time zone
  316. CButton     m_btnAutoAdjustDayLight2;   // A check box control to edit 'Auto Adjust Day Light' option for additional timezone
  317. BOOL m_bAutoAdjustDayLight2;            // A BOOL member which used to edit 'Auto Adjust Day Light' option for additional timezone
  318. CXTPCalendarTimeZones m_arTimeZones;    // A collection of timezones.
  319. };
  320. /////////////////////////////////////////////////////////////////////////////
  321. AFX_INLINE void CXTPCalendarDayViewTimeScale::SetCaption(LPCTSTR strCaption) {
  322. m_strCaption = strCaption;
  323. }
  324. AFX_INLINE CString CXTPCalendarDayViewTimeScale::GetCaption() {
  325. return m_strCaption;
  326. }
  327. AFX_INLINE void CXTPCalendarDayViewTimeScale::SetTimeshift(int nMinutes) {
  328. m_nTimeshift_min = nMinutes;
  329. }
  330. AFX_INLINE int CXTPCalendarDayViewTimeScale::GetTimeshift() {
  331. return m_nTimeshift_min;
  332. }
  333. AFX_INLINE void CXTPCalendarDayViewTimeScale::SetVisible(BOOL bVisible) {
  334. m_bVisible = bVisible;
  335. }
  336. AFX_INLINE BOOL CXTPCalendarDayViewTimeScale::GetVisible() {
  337. return m_bVisible;
  338. }
  339. AFX_INLINE CXTPCalendarDayView* CXTPCalendarDayViewTimeScale::GetDayView() {
  340. return m_pDayView;
  341. }
  342. AFX_INLINE CXTPCalendarDayViewTimeScale::XTP_TIMESCALE_LAYOUT&
  343. CXTPCalendarDayViewTimeScale::GetLayout() {
  344. return m_Layout;
  345. }
  346. AFX_INLINE BOOL CXTPCalendarDayViewTimeScale::IsDrawNowLine() const {
  347. return m_bDrawNowLine;
  348. }
  349. AFX_INLINE int CXTPCalendarDayViewTimeScale::GetWidth() const {
  350. return m_Layout.m_rcHeader.Width();
  351. }
  352. #endif // !defined(_XTPCALENDARDAYVIEWTIMESCALE_H__)