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

对话框与窗口

开发平台:

Visual C++

  1. // MessageRecord.h: interface for the CMessageRecord class.
  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_MESSAGERECORD_H__A08F955C_1EA1_40B4_A18F_D2B7857FB244__INCLUDED_)
  21. #define AFX_MESSAGERECORD_H__A08F955C_1EA1_40B4_A18F_D2B7857FB244__INCLUDED_
  22. #if _MSC_VER > 1000
  23. #pragma once
  24. #endif // _MSC_VER > 1000
  25. class CReportSampleView;
  26. //////////////////////////////////////////////////////////////////////////
  27. // Customized record item, used for displaying prices.
  28. class CMessageRecordItemPrice : public CXTPReportRecordItemNumber
  29. {
  30. DECLARE_SERIAL(CMessageRecordItemPrice)
  31. public:
  32. // Constructs record item with the initial decimal price value.
  33. CMessageRecordItemPrice(double dValue = .0);
  34. // Provides custom group captions depending on the price.
  35. virtual CString GetGroupCaption(CXTPReportColumn* pColumn);
  36. // Provides custom group values comparison based on price value, 
  37. // instead of based on captions.
  38. virtual int CompareGroupCaption(CXTPReportColumn* pColumn, CXTPReportRecordItem* pItem);
  39. };
  40. //////////////////////////////////////////////////////////////////////////
  41. // Customized record item, used for displaying checkboxes.
  42. class CMessageRecordItemCheck : public CXTPReportRecordItem
  43. {
  44. DECLARE_SERIAL(CMessageRecordItemCheck)
  45. public:
  46. // Constructs record item with the initial checkbox value.
  47. CMessageRecordItemCheck(BOOL bCheck = FALSE);
  48. // Provides custom group captions depending on checkbox value.
  49. // Returns caption string ID to be read from application resources.
  50. virtual int GetGroupCaptionID(CXTPReportColumn* pColumn);
  51. // Provides custom records comparison by this item based on checkbox value, 
  52. // instead of based on captions.
  53. virtual int Compare(CXTPReportColumn* pColumn, CXTPReportRecordItem* pItem);
  54. };
  55. //////////////////////////////////////////////////////////////////////////
  56. // Enumerates possible Message Importance values for using by 
  57. // CMessageRecordItemImportance class
  58. typedef enum MESSAGE_IMPORTANCE
  59. {
  60. msgImportanceNormal,
  61. msgImportanceHigh,
  62. msgImportanceLow
  63. };
  64. //////////////////////////////////////////////////////////////////////////
  65. // Customized record item, used for displaying importance icons.
  66. class CMessageRecordItemImportance : public CXTPReportRecordItem
  67. {
  68. DECLARE_SERIAL(CMessageRecordItemImportance)
  69. public:
  70. // Constructs record item with the initial value.
  71. CMessageRecordItemImportance(MESSAGE_IMPORTANCE eImportance = msgImportanceNormal);
  72. virtual void DoPropExchange(CXTPPropExchange* pPX);
  73. protected:
  74. MESSAGE_IMPORTANCE m_eImportance;   // Message importance
  75. };
  76. //////////////////////////////////////////////////////////////////////////
  77. // Customized record item, used for displaying attachments icons.
  78. class CMessageRecordItemAttachment : public CXTPReportRecordItem
  79. {
  80. DECLARE_SERIAL(CMessageRecordItemAttachment)
  81. public:
  82. // Constructs record item with the initial value.
  83. CMessageRecordItemAttachment(BOOL bHasAttachment = FALSE);
  84. virtual void DoPropExchange(CXTPPropExchange* pPX);
  85. protected:
  86. BOOL m_bHasAttachment; // TRUE when message has attachments, FALSE otherwise.
  87. };
  88. //////////////////////////////////////////////////////////////////////////
  89. // Customized record item, used for displaying read/unread icons.
  90. class CMessageRecordItemIcon : public CXTPReportRecordItem
  91. {
  92. DECLARE_SERIAL(CMessageRecordItemIcon)
  93. public:
  94. // Constructs record item with the initial read/unread value.
  95. CMessageRecordItemIcon(BOOL bRead = FALSE);
  96. // Provides custom group captions depending on the read/unread value.
  97. virtual CString GetGroupCaption(CXTPReportColumn* pColumn);
  98. // Provides custom group values comparison based on read/unread value, 
  99. // instead of based on captions.
  100. virtual int CompareGroupCaption(CXTPReportColumn* pColumn, CXTPReportRecordItem* pItem);
  101. // Updates record item icon index depending on read/unread value.
  102. void UpdateReadIcon();
  103. // Provides custom records comparison by this item based on read/unread value, 
  104. // instead of based on captions.
  105. int Compare(CXTPReportColumn* pColumn, CXTPReportRecordItem* pItem);
  106. virtual void DoPropExchange(CXTPPropExchange* pPX);
  107. public:
  108. BOOL m_bRead; // TRUE for read, FALSE for unread.
  109. };
  110. //////////////////////////////////////////////////////////////////////////
  111. // Customized record Date/Time item.
  112. // Main customization purpose is overriding GetGroupCaptionID and providing
  113. // application-specific caption when Report control data is grouped via this item.
  114. class CMessageRecordItemDate : public CXTPReportRecordItemDateTime
  115. {
  116. DECLARE_SERIAL(CMessageRecordItemDate)
  117. public:
  118. // Construct record item from COleDateTime value.
  119. CMessageRecordItemDate(COleDateTime odtValue = COleDateTime::GetCurrentTime());
  120. // Provides custom group captions depending on the item date value.
  121. virtual int GetGroupCaptionID(CXTPReportColumn* pColumn);
  122. };
  123. //////////////////////////////////////////////////////////////////////////
  124. // This class is your main custom Record class which you'll manipulate with.
  125. // It contains any kind of specific methods like different types of constructors,
  126. // any additional custom data as class members, any data manipulation methods.
  127. class CMessageRecord : public CXTPReportRecord
  128. {
  129. DECLARE_SERIAL(CMessageRecord)
  130. public:
  131. // Construct record object using empty values on each field
  132. CMessageRecord();
  133. // Construct record object from detailed values on each field
  134. CMessageRecord(
  135. MESSAGE_IMPORTANCE eImportance, BOOL bChecked, int  nAttachmentBitmap,
  136. CString strFromName, CString strSubject,
  137. COleDateTime odtSent, int nMessageSize, BOOL bRead,
  138. double dPrice, COleDateTime odtReceived, COleDateTime odtCreated,
  139. CString strConversation, CString strContact, CString strMessage,
  140. CString strCC, CString strCategories, CString strAutoforward,
  141. CString strDoNotAutoarch, CString strDueBy,
  142. CString strPreview
  143. );
  144. // Clean up internal objects
  145. virtual ~CMessageRecord();
  146. // Create record fields using empty values
  147. virtual void CreateItems();
  148. // Set message as read
  149. BOOL SetRead();
  150. // Overridden callback method, where we can customize any drawing item metrics.
  151. virtual void GetItemMetrics(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs, XTP_REPORTRECORDITEM_METRICS* pItemMetrics);
  152. virtual void DoPropExchange(CXTPPropExchange* pPX);
  153. CMessageRecordItemIcon* m_pItemIcon; // Display read/unread icon.
  154. CMessageRecordItemDate* m_pItemReceived;// Contains message receive time.
  155. CXTPReportRecordItem* m_pItemSize; // Message size. 
  156. // We are storing pointer to this item for further use.
  157. };
  158. #endif // !defined(AFX_MESSAGERECORD_H__A08F955C_1EA1_40B4_A18F_D2B7857FB244__INCLUDED_)