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

对话框与窗口

开发平台:

Visual C++

  1. // XTPCalendarCustomProperties.h: interface for the CXTPCalendarCustomProperties 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(_XTP_CALENDAR_CUSTOM_PROPERTIES_H__)
  22. #define _XTP_CALENDAR_CUSTOM_PROPERTIES_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. //#include "Common/XTPPropExchange.h"
  25. #if _MSC_VER > 1000
  26. #pragma once
  27. #endif // _MSC_VER > 1000
  28. //////////////////////
  29. class CXTPPropExchange;
  30. //===========================================================================
  31. // Summary:
  32. //      This class is used to store properties collection.
  33. // Remarks:
  34. //      It contains methods to Get, Set, Remove and Iterate on properties.
  35. // See Also:
  36. //      CXTPCalendarEvent::GetCustomProperties().
  37. //===========================================================================
  38. class _XTP_EXT_CLASS CXTPCalendarCustomProperties : public CXTPCmdTarget
  39. {
  40. //{{AFX_CODEJOCK_PRIVATE
  41. DECLARE_DYNAMIC(CXTPCalendarCustomProperties)
  42. //}}AFX_CODEJOCK_PRIVATE
  43. public:
  44. //-----------------------------------------------------------------------
  45. // Summary:
  46. //     Default object constructor.
  47. // Parameters:
  48. //      bNameIgnoreCase - [in] if TRUE - properties names are not
  49. //                        case sensitive.
  50. //-----------------------------------------------------------------------
  51. CXTPCalendarCustomProperties(BOOL bNameIgnoreCase = TRUE);
  52. //-----------------------------------------------------------------------
  53. // Summary:
  54. //     Default object destructor.
  55. //-----------------------------------------------------------------------
  56. virtual ~CXTPCalendarCustomProperties();
  57. //-----------------------------------------------------------------------
  58. // Summary:
  59. //      This member function is used to get property value using the specified
  60. //      name.
  61. // Parameters:
  62. //      pcszName    - [in] A pointer to property name string.
  63. //      rVarValue   - [out] A reference to COleVariant object to receive
  64. //                    property value.
  65. // Remarks:
  66. //      The corresponding method for ActiveX returns VT_EMPTY variant value
  67. //      instead of FALSE.
  68. // Returns:
  69. //      TRUE if successful, FALSE if specified property is not present
  70. //      in the collection.
  71. // See Also:
  72. //      SetProperty, RemoveProperty.
  73. //-----------------------------------------------------------------------
  74. virtual BOOL GetProperty(LPCTSTR pcszName, COleVariant& rVarValue) const;
  75. //-----------------------------------------------------------------------
  76. // Summary:
  77. //      This member function is used to set property value with the specified
  78. //      name.
  79. // Parameters:
  80. //      pcszName    - [in] A pointer to property name string.
  81. //      varValue    - [in] A const reference to COleVariant object with a
  82. //                    property value.
  83. // Returns:
  84. //      TRUE if successful, FALSE otherwise.
  85. // See Also:
  86. //      GetProperty, RemoveProperty.
  87. //-----------------------------------------------------------------------
  88. virtual BOOL SetProperty(LPCTSTR pcszName, const COleVariant& varValue);
  89. //-----------------------------------------------------------------------
  90. // Summary:
  91. //      This member function is used to remove property with the specified
  92. //      name.
  93. // Parameters:
  94. //      pcszName    - [in] A pointer to property name string.
  95. // Returns:
  96. //      TRUE if successful, FALSE otherwise.
  97. // See Also:
  98. //      GetProperty, SetProperty.
  99. //-----------------------------------------------------------------------
  100. virtual BOOL RemoveProperty(LPCTSTR pcszName);
  101. //-----------------------------------------------------------------------
  102. // Summary:
  103. //      This member function is used to remove all properties.
  104. // See Also:
  105. //      RemoveProperty, GetProperty, SetProperty.
  106. //-----------------------------------------------------------------------
  107. virtual void RemoveAll();
  108. //-----------------------------------------------------------------------
  109. // Summary:
  110. //      This member function is to get properties count in the collection.
  111. // Returns:
  112. //      Properties amount in the collection.
  113. // See Also:
  114. //      GetProperty, SetProperty, RemoveProperty, RemoveAll.
  115. //-----------------------------------------------------------------------
  116. virtual int GetCount();
  117. //-----------------------------------------------------------------------
  118. // Summary:
  119. //      Starts a properties collection iteration by returning a POSITION
  120. //      value that can be passed to a GetNextProperty call.
  121. // Returns:
  122. //      A POSITION value with start position.
  123. // See Also:
  124. //      GetNextProperty, CMap.
  125. //-----------------------------------------------------------------------
  126. POSITION GetStartPosition() const;
  127. //-----------------------------------------------------------------------
  128. // Summary:
  129. //      Retrieves the properties collection element at rPos, then updates
  130. //      rPos to refer to the next element in the collection.
  131. // Parameters:
  132. //      rPos        - [in out] Specifies a reference to a POSITION value
  133. //                    returned by a previous GetNextProperty or
  134. //                    GetStartPosition call.
  135. //      rStrName    - [out] A reference to CString object to receive
  136. //                    property name value.
  137. //      rVarValue   - [out] A reference to COleVariant object to receive
  138. //                    property value.
  139. // See Also:
  140. //      GetStartPosition, CMap.
  141. //-----------------------------------------------------------------------
  142. void GetNextProperty(POSITION& rPos, CString& rStrName, COleVariant& rVarValue) const;
  143. //-----------------------------------------------------------------------
  144. // Summary:
  145. //     Call this member function to Store/Load a properties collection
  146. //     using the specified data object.
  147. // Parameters:
  148. //     pPX - Source or destination CXTPPropExchange data object reference.
  149. // Remarks:
  150. //     This member function is used to store or load properties collection
  151. //     data to or form an storage.
  152. //-----------------------------------------------------------------------
  153. virtual void DoPropExchange(CXTPPropExchange* pPX);
  154. public:
  155. //-----------------------------------------------------------------------
  156. // Summary:
  157. //      This helper function is used to load properties collection from XML
  158. //      string source.
  159. // Parameters:
  160. //      pcszXMLData - [in] A pointer to XML string data source.
  161. // Remarks:
  162. //      RemoveAll method is called for collection before loading.
  163. // Returns:
  164. //      TRUE if successful, FALSE otherwise.
  165. // See Also:
  166. //      SaveToXML.
  167. //-----------------------------------------------------------------------
  168. BOOL LoadFromXML(LPCTSTR pcszXMLData);
  169. //-----------------------------------------------------------------------
  170. // Summary:
  171. //      This helper function is used to store properties collection to XML
  172. //      string.
  173. // Parameters:
  174. //      rstrXMLData - [out] A XML string object reference.
  175. // Returns:
  176. //      TRUE if successful, FALSE otherwise.
  177. // See Also:
  178. //      LoadFromXML.
  179. //-----------------------------------------------------------------------
  180. BOOL SaveToXML(CString& rstrXMLData);
  181. //-----------------------------------------------------------------------
  182. // Summary:
  183. //      This helper function is used to copy properties from source collection
  184. //      object to destination collection.
  185. // Parameters:
  186. //      pDest   - [out] A pointer to destination properties collection object.
  187. // Remarks:
  188. //      RemoveAll method is called for destination collection before copying.
  189. // See Also:
  190. //      LoadFromXML, SaveToXML.
  191. //-----------------------------------------------------------------------
  192. void CopyTo(CXTPCalendarCustomProperties* pDest);
  193. protected:
  194. //-----------------------------------------------------------------------
  195. // Summary:
  196. //     Call this member function to Load a properties collection
  197. //     using the specified data object.
  198. // Parameters:
  199. //     pPX - Source CXTPPropExchange data object reference.
  200. //-----------------------------------------------------------------------
  201. void _Load(CXTPPropExchange* pPX);
  202. //-----------------------------------------------------------------------
  203. // Summary:
  204. //     Call this member function to Store a properties collection
  205. //     using the specified data object.
  206. // Parameters:
  207. //     pPX - Destination CXTPPropExchange data object reference.
  208. //-----------------------------------------------------------------------
  209. void _Save(CXTPPropExchange* pPX);
  210. //-----------------------------------------------------------------------
  211. // Summary:
  212. //      Call this member function to prepare property name before pass it
  213. //      in the map access functions.
  214. // Parameters:
  215. //      pcszName    - [in] A pointer to property name string.
  216. // Remarks:
  217. //      If m_bNameIgnoreCase is TRUE, properties names are converted to
  218. //      lower case.
  219. // Returns:
  220. //      Prepared property name string to pass it in the map access functions.
  221. //-----------------------------------------------------------------------
  222. CString PrepareName(LPCTSTR pcszName) const;
  223. //{{AFX_CODEJOCK_PRIVATE
  224. typedef CMap<CString, LPCTSTR, COleVariant, COleVariant&> CXTPOleVariantMap;
  225. //}}AFX_CODEJOCK_PRIVATE
  226. CXTPOleVariantMap   m_mapProperties;    // Properties storage map.
  227. BOOL                m_bNameIgnoreCase;  // if TRUE - properties names are not case sensitive.
  228. };
  229. #endif // !defined(_XTP_CALENDAR_CUSTOM_PROPERTIES_H__)