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

对话框与窗口

开发平台:

Visual C++

  1. // TaskListView.h : header file
  2. //
  3. // This file is a part of the XTREME TOOLKIT PRO 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. #if !defined(AFX_TASKLISTVIEW_H__5E52F174_9488_44B0_B8E7_48BC345422A2__INCLUDED_)
  21. #define AFX_TASKLISTVIEW_H__5E52F174_9488_44B0_B8E7_48BC345422A2__INCLUDED_
  22. #if _MSC_VER > 1000
  23. #pragma once
  24. #endif // _MSC_VER > 1000
  25. #include "MainFrm.h"
  26. enum TaskImportance
  27. {
  28. taskImportanceNormal,
  29. taskImportanceHigh,
  30. taskImportanceLow
  31. };
  32. enum TaskStatus
  33. {
  34. taskStatusNotStarted,
  35. taskStatusInProgress,
  36. taskStatusCompleted,
  37. taskStatusWaiting,
  38. taskStatusDeferred,
  39. };
  40. class CTaskRecord : public CXTPReportRecord
  41. {
  42. protected:
  43. class CTaskItemType : public CXTPReportRecordItem
  44. {
  45. public:
  46. CTaskItemType(BOOL /*bSharedTask*/)
  47. {
  48. SetFocusable(FALSE);
  49. }
  50. };
  51. class CTaskItemImportance : public CXTPReportRecordItem
  52. {
  53. public:
  54. CTaskItemImportance(TaskImportance taskImportance)
  55. {
  56. SetImportance(taskImportance);
  57. }
  58. void OnConstraintChanged(XTP_REPORTRECORDITEM_ARGS* /*pItemArgs*/, CXTPReportRecordItemConstraint* pConstraint)
  59. {
  60. SetImportance((TaskImportance)pConstraint->m_dwData);
  61. }
  62. DWORD GetSelectedConstraintData(XTP_REPORTRECORDITEM_ARGS* /*pItemArgs*/)
  63. {
  64. return m_taskImportance;
  65. }
  66. void SetImportance(TaskImportance taskImportance )
  67. {
  68. m_taskImportance = taskImportance;
  69. SetIconIndex(taskImportance == taskImportanceHigh ? 6 :
  70. taskImportance == taskImportanceLow ? 9: -1);
  71. SetGroupPriority(
  72. taskImportance == taskImportanceHigh? IDS_GROUP_IMPOPRTANCE_HIGH:
  73. taskImportance == taskImportanceLow?    IDS_GROUP_IMPOPRTANCE_LOW: IDS_GROUP_IMPOPRTANCE_NORMAL);
  74. SetSortPriority(GetGroupPriority());
  75. }
  76. public:
  77. TaskImportance m_taskImportance;
  78. };
  79. class CTaskItemAttachment : public  CXTPReportRecordItem
  80. {
  81. public:
  82. CTaskItemAttachment::CTaskItemAttachment(BOOL bHasAttachment)
  83. {
  84. SetIconIndex(bHasAttachment ? 8 : -1);
  85. SetGroupPriority(bHasAttachment? IDS_GROUP_ATTACHMENTS_TRUE: IDS_GROUP_ATTACHMENTS_FALSE);
  86. SetSortPriority(GetGroupPriority());
  87. SetFocusable(FALSE);
  88. }
  89. };
  90. class CTaskItemDueDate : public CXTPReportRecordItemDateTime
  91. {
  92. public:
  93. CTaskItemDueDate(COleDateTime dtDateTime)
  94. : CXTPReportRecordItemDateTime(dtDateTime)
  95. {
  96. m_strFormatString = _T("%a %m/%d/%Y");
  97. }
  98. CString GetCaption(CXTPReportColumn* /*pColumn*/)
  99. {
  100. if ((DATE)m_odtValue == 0)
  101. return _T("None");
  102. return m_odtValue.Format(m_strFormatString);
  103. }
  104. };
  105. class CTaskItemStatus : public CXTPReportRecordItem
  106. {
  107. public:
  108. CTaskItemStatus(TaskStatus taskStatus)
  109. {
  110. m_taskStatus = taskStatus;
  111. }
  112. CString GetCaption(CXTPReportColumn* pColumn)
  113. {
  114. CXTPReportRecordItemConstraint* pConstraint = pColumn->GetEditOptions()->FindConstraint(m_taskStatus);
  115. ASSERT(pConstraint);
  116. return pConstraint->m_strConstraint;
  117. }
  118. void OnEditChanged(XTP_REPORTRECORDITEM_ARGS* pItemArgs, LPCTSTR szText)
  119. {
  120. CXTPReportRecordItemConstraint* pConstraint = pItemArgs->pColumn->GetEditOptions()->FindConstraint(szText);
  121. if (pConstraint)
  122. {
  123. m_taskStatus = (TaskStatus)pConstraint->m_dwData;
  124. CXTPReportRecordItem* pItemComplete = ((CTaskRecord*)GetRecord())->GetItem(6);
  125. if (m_taskStatus == taskStatusCompleted &&
  126. ((CTaskItemComplete*)pItemComplete)->GetValue() != 100)
  127. {
  128. ((CTaskItemComplete*)pItemComplete)->SetValue(100);
  129. }
  130. if (m_taskStatus != taskStatusCompleted &&
  131. ((CTaskItemComplete*)pItemComplete)->GetValue() == 100)
  132. {
  133. ((CTaskItemComplete*)pItemComplete)->SetValue(0);
  134. }
  135. }
  136. }
  137. TaskStatus m_taskStatus;
  138. };
  139. class CTaskItemComplete : public CXTPReportRecordItemNumber
  140. {
  141. public:
  142. CTaskItemComplete(int nComplete)
  143. : CXTPReportRecordItemNumber(nComplete, _T("%2.0f%%"))
  144. {
  145. }
  146. void OnEditChanged(XTP_REPORTRECORDITEM_ARGS* pItemArgs, LPCTSTR szText)
  147. {
  148. CXTPReportRecordItemNumber::OnEditChanged(pItemArgs, szText);
  149. if (m_dValue > 100)
  150. m_dValue = 100;
  151. int nStatus = (int)GetValue();
  152. CXTPReportRecordItem* pItemStatus = ((CTaskRecord*)GetRecord())->GetItem(3);
  153. if (nStatus == 100 &&
  154. ((CTaskItemStatus*)pItemStatus)->m_taskStatus !=taskStatusCompleted)
  155. {
  156. ((CTaskItemStatus*)pItemStatus)->m_taskStatus = taskStatusCompleted;
  157. }
  158. if (nStatus != 100 &&
  159. ((CTaskItemStatus*)pItemStatus)->m_taskStatus ==taskStatusCompleted)
  160. {
  161. ((CTaskItemStatus*)pItemStatus)->m_taskStatus = taskStatusInProgress;
  162. }
  163. }
  164. };
  165. public:
  166. CTaskRecord(
  167. BOOL bSharedTask, TaskImportance taskImportance, BOOL bHasAttachment,
  168. TaskStatus taskStatus, CString strSubject,
  169. COleDateTime odtDueDate, int nComplete, CString strCategories);
  170. virtual void GetItemMetrics(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs, XTP_REPORTRECORDITEM_METRICS* pItemMetrics);
  171. };
  172. class CTaskListFrame : public CXTPFrameWnd
  173. {
  174. public:
  175. CTaskListFrame(CView* pView)
  176. {
  177. m_pOwnerView = pView;
  178. }
  179. protected:  // control bar embedded members
  180. CStatusBar  m_wndStatusBar;
  181. CToolBar    m_wndToolBar;
  182. CView* m_pOwnerView;
  183. // Generated message map functions
  184. protected:
  185. //{{AFX_MSG(CTaskListFrame)
  186. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  187. afx_msg void OnDestroy();
  188. //}}AFX_MSG
  189. DECLARE_MESSAGE_MAP()
  190. };
  191. /////////////////////////////////////////////////////////////////////////////
  192. // CTaskListView view
  193. class CTaskListView : public CXTPReportView
  194. {
  195. protected:
  196. CTaskListView();           // protected constructor used by dynamic creation
  197. DECLARE_DYNCREATE(CTaskListView)
  198. // Attributes
  199. // Operations
  200. public:
  201. // Overrides
  202. // ClassWizard generated virtual function overrides
  203. //{{AFX_VIRTUAL(CTaskListView)
  204. protected:
  205. //}}AFX_VIRTUAL
  206. // Implementation
  207. protected:
  208. virtual ~CTaskListView();
  209. #ifdef _DEBUG
  210. virtual void AssertValid() const;
  211. virtual void Dump(CDumpContext& dc) const;
  212. #endif
  213. // Generated message map functions
  214. protected:
  215. //{{AFX_MSG(CTaskListView)
  216. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  217. afx_msg void OnReportcontrolAllowedit();
  218. afx_msg void OnUpdateReportcontrolAllowedit(CCmdUI* pCmdUI);
  219. afx_msg void OnReportcontrolEditonclick();
  220. afx_msg void OnUpdateReportcontrolEditonclick(CCmdUI* pCmdUI);
  221. afx_msg void OnReportcontrolFocussubitems();
  222. afx_msg void OnUpdateReportcontrolFocussubitems(CCmdUI* pCmdUI);
  223. afx_msg void OnAddTask();
  224. afx_msg void OnReportButtonClick(NMHDR * pNotifyStruct, LRESULT *result);
  225. //}}AFX_MSG
  226. BOOL Show_XTPDatePicker(CXTPReportControl* pControl, const CRect& rcItem, COleDateTime& rdtDate);
  227. BOOL Show_MFCDatePicker(CXTPReportControl* pControl, const CRect& rcItem, COleDateTime& rdtDate);
  228. DECLARE_MESSAGE_MAP()
  229. };
  230. /////////////////////////////////////////////////////////////////////////////
  231. //{{AFX_INSERT_LOCATION}}
  232. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  233. #endif // !defined(AFX_TASKLISTVIEW_H__5E52F174_9488_44B0_B8E7_48BC345422A2__INCLUDED_)