Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

214 lines
8.8 KiB

  1. // RriXMLFile.h: interface for the CRriXMLFile class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_RRIXMLFILE_H__6AEA6863_68FC_11D2_879C_00C04F8DA632__INCLUDED_)
  5. #define AFX_RRIXMLFILE_H__6AEA6863_68FC_11D2_879C_00C04F8DA632__INCLUDED_
  6. #include "LtaStd.h" // Added by ClassView
  7. #include "ProcessFileName.h"
  8. #include "XMLBase.h"
  9. #include "RaidDataStructs.h"
  10. using namespace MSXML;
  11. const LPTSTR STR_ALLITEMS = _T("All");
  12. const LPTSTR STR_NESTEDDIALOG = _T("<nested dialog>");
  13. const _bstr_t BSTR_ROOTTAGTEXT = _T("RRI");
  14. const _bstr_t BSTR_ROOTTAGSTART = _T("<RRI>");
  15. const _bstr_t BSTR_ROOTTAGEND = _T("</RRI>");
  16. const _bstr_t BSTR_TAG_DIALOGINFOSEC = _T("DIALOGINFOSEC");
  17. const _bstr_t BSTR_TAG_MENUINFOSEC = _T("MENUINFOSEC");
  18. // RRI tags
  19. const _bstr_t BSTR_RRITAG_CRCKEY = _T("STR_CRC");
  20. const _bstr_t BSTR_RRITAG_DIALOGINFO = _T("DIALOGINFO");
  21. const _bstr_t BSTR_RRITAG_MENUINFO = _T("MENUINFO");
  22. const _bstr_t BSTR_RRITAG_APP_NAME = _T("APP_NAME");
  23. const _bstr_t BSTR_RRITAG_RES_MODULE = _T("RES_MODULE");
  24. const _bstr_t BSTR_RRITAG_CAPTION = _T("CAPTION");
  25. const _bstr_t BSTR_RRITAG_RES_ID = _T("RES_ID");
  26. const _bstr_t BSTR_RRITAG_CONTROL = _T("CONTROL");
  27. const _bstr_t BSTR_RRITAG_CTRLCLASSNAME = _T("CTRL_CLASS");
  28. const _bstr_t BSTR_RRITAG_CTRLID = _T("CTRL_ID");
  29. const _bstr_t BSTR_QUERY_DIALOGINFO = _T("./DIALOGINFO");
  30. const _bstr_t BSTR_QUERY_DIALOGINFOSEC = _T("./DIALOGINFOSEC");
  31. const _bstr_t BSTR_QUERY_MENUINFO = _T("./MENUINFO");
  32. const _bstr_t BSTR_QUERY_MENUINFOSEC = _T("./MENUINFOSEC");
  33. const _bstr_t BSTR_QUERY_WINDOWINFO = _T("./WINDOWINFO");
  34. const _bstr_t BSTR_QUERY_DIALOG_CRCKEY = _T("DIALOGINFO/STR_CRC");
  35. const _bstr_t BSTR_QUERY_MENU_CRCKEY = _T("MENUINFO/STR_CRC");
  36. const _bstr_t BSTR_QUERY_GET_DIALOGINFO= _T("./DIALOGINFOSEC/DIALOGINFO");
  37. const _bstr_t BSTR_QUERY_GET_MENUINFO = _T("./MENUINFOSEC/MENUINFO");
  38. typedef class CRriXMLTags
  39. {
  40. public:
  41. static _bstr_t GetRootTextXMLTag() { return BSTR_ROOTTAGTEXT ;}
  42. static _bstr_t GetRootStartXMLTag() { return BSTR_ROOTTAGSTART ;}
  43. static _bstr_t GetRootEndXMLTag() { return BSTR_ROOTTAGEND ;}
  44. static _bstr_t GetDialoginfosecXMLTag() { return BSTR_TAG_DIALOGINFOSEC;}
  45. static _bstr_t GetMenuinfosecXMLTag() { return BSTR_TAG_MENUINFOSEC ;}
  46. // RRI Tags
  47. static _bstr_t GetRriCrckeyXMLTag() { return BSTR_RRITAG_CRCKEY ;}
  48. static _bstr_t GetRriDialoginfoXMLTag() { return BSTR_RRITAG_DIALOGINFO ;}
  49. static _bstr_t GetRriMenuinfoXMLTag() { return BSTR_RRITAG_MENUINFO ;}
  50. static _bstr_t GetRriAppNameXMLTag() { return BSTR_RRITAG_APP_NAME ;}
  51. static _bstr_t GetRriResModuleXMLTag() { return BSTR_RRITAG_RES_MODULE ;}
  52. static _bstr_t GetRriCaptionXMLTag() { return BSTR_RRITAG_CAPTION ;}
  53. static _bstr_t GetRriResIdXMLTag() { return BSTR_RRITAG_RES_ID ;}
  54. static _bstr_t GetRriControlXMLTag() { return BSTR_RRITAG_CONTROL ;}
  55. static _bstr_t GetRriCtrlClassNameXMLTag() { return BSTR_RRITAG_CTRLCLASSNAME ;}
  56. static _bstr_t GetRriCtrlIDXMLTag() { return BSTR_RRITAG_CTRLID ;}
  57. // RRI queries
  58. static _bstr_t GetQueryDialoginfoXMLTag() { return BSTR_QUERY_DIALOGINFO ;}
  59. static _bstr_t GetQueryDialoginfosecXMLTag() { return BSTR_QUERY_DIALOGINFOSEC ;}
  60. static _bstr_t GetQueryMenuinfoXMLTag() { return BSTR_QUERY_MENUINFO ;}
  61. static _bstr_t GetQueryMenuinfosecXMLTag() { return BSTR_QUERY_MENUINFOSEC ;}
  62. static _bstr_t GetQueryWindowinfoXMLTag() { return BSTR_QUERY_WINDOWINFO ;}
  63. static _bstr_t GetQueryDialogCrckeyXMLTag() { return BSTR_QUERY_DIALOG_CRCKEY ;}
  64. static _bstr_t GetQueryMenuCrckeyXMLTag() { return BSTR_QUERY_MENU_CRCKEY ;}
  65. static _bstr_t GetQueryGetDialoginfoXMLTag() { return BSTR_QUERY_GET_DIALOGINFO;}
  66. static _bstr_t GetQueryGetMenuinfoXMLTag() { return BSTR_QUERY_GET_MENUINFO ;}
  67. // _bstr_t GetXMLTag() { return ; }
  68. } CRRIXMLTAGS, FAR* LPCRRIXMLTAGS;
  69. typedef CRRIXMLTAGS RXT; //********
  70. //////////////////////////////////////////////////////////////////
  71. //////////////////////////////////////////////////////////////////
  72. typedef class LTAPIENTRY CRriNodeInfo
  73. {
  74. public:
  75. CRriNodeInfo();
  76. virtual ~CRriNodeInfo();
  77. IXMLDOMNodePtr GetRriXMLNodePtr();
  78. CLString GetCurRriModuleInfo(CLString& strOutPut);
  79. CLString GetCurRriModuleInfo();
  80. public:
  81. CLString m_strCRC;
  82. CLString m_strAppPath;
  83. CLString m_strID;
  84. CLString m_strCaption;
  85. CLString m_strModule;
  86. _bstr_t m_bstrNodeTag;
  87. LPARAM m_lParam;
  88. IXMLDOMNodePtr m_spRriNode;
  89. } CRRINODEINFO, FAR* LPCRRINODEINFO;
  90. //////////////////////////////////////////////////////////////////
  91. //////////////////////////////////////////////////////////////////
  92. typedef std::map<CLString, LPCRRINODEINFO, std::less<CLString> > CRriNodeMap;
  93. typedef CRriNodeMap::iterator iterNodeMap;
  94. typedef CRriNodeMap::value_type valueNode;
  95. //////////////////////////////////////////////////////////////////
  96. //////////////////////////////////////////////////////////////////
  97. typedef std::list<LPCRRINODEINFO> CRriNodeList;
  98. typedef CRriNodeList::iterator iterNodeList;
  99. typedef CRriNodeList::value_type valueListNode;
  100. #pragma warning(disable : 4275)
  101. //////////////////////////////////////////////////////////////////
  102. typedef class LTAPIENTRY CRriNodeListEx : public CRriNodeList
  103. {
  104. public:
  105. CRriNodeListEx();
  106. virtual ~CRriNodeListEx();
  107. public:
  108. } CRRINODELISTEX, FAR* LPCRRINODELISTEX;
  109. //////////////////////////////////////////////////////////////////
  110. typedef class LTAPIENTRY CRriNodeMapEx : public CRriNodeMap
  111. {
  112. public:
  113. CRriNodeMapEx();
  114. virtual ~CRriNodeMapEx();
  115. virtual void CleanUp();
  116. bool InsertRriNode(LPCRRINODEINFO pItem);
  117. bool RemoveRriNode(LPCRRINODEINFO pItem);
  118. bool RemoveRriNode(CLString strCRC);
  119. iterNodeMap Find(CLString strCRC);
  120. bool Erase(CLString strCRC);
  121. bool RemoveAppRriNodes(const CLString& strAppPath);
  122. bool GetAppRriNodes(const CLString& strAppPath, CRriNodeListEx& refRriNodeList, _bstr_t bstrNodeTag = RXT::GetRriDialoginfoXMLTag());
  123. bool GetRriNodeList(const CLString& strID, const CLString& strCaption, const CLString& strAppPath, const CLString& strModule, CRriNodeListEx& refRriNodeList, _bstr_t bstrNodeTag = RXT::GetRriDialoginfoXMLTag());
  124. bool GetRriNodeList(CRriNodeListEx& refRriNodeList, _bstr_t bstrNodeTag = RXT::GetRriDialoginfoXMLTag());
  125. bool IsNodeTag(_bstr_t& bstrNodeTag, LPCRRINODEINFO pItem);
  126. } CRRINODEMAPEX, FAR* LPCRRINODEMAPEX;
  127. #pragma warning(default : 4275)
  128. //////////////////////////////////////////////////////////////////
  129. //////////////////////////////////////////////////////////////////
  130. class LTAPIENTRY CRriXMLFile : public CXMLBase
  131. {
  132. public:
  133. CRriXMLFile();
  134. virtual ~CRriXMLFile();
  135. public:
  136. void Close();
  137. bool RemoveRriDialogNode(LPCRRINODEINFO pNodeInfo);
  138. bool RemoveRriMenuNode(LPCRRINODEINFO pNodeInfo);
  139. bool Init();
  140. bool IsInitialized();
  141. bool IsLogging();
  142. bool IsFileAlreadyOpen(const CLString& strFileName);
  143. bool RemoveAppNodes(const CLString &strAppPath, _bstr_t bstrTagQuery);
  144. bool RemoveRriNode(LPCRRINODEINFO pNodeInfo, CLString strQuery);
  145. bool GetNodeData(LPCRRINODEINFO pNodeInfo, IXMLDOMNodePtr spXDN);
  146. bool GetDisplayID(CLString& strID, IXMLDOMNodePtr spXDN);
  147. bool RemoveAppNodes(const CLString& strAppPath);
  148. bool FillRriNodeMap(_bstr_t bstrQuery);
  149. bool Clear(bool bSaveDocFirst = true);
  150. bool SetXMLFileName(const CLString& strFileName, bool bCreate, bool& bAlreadyOpen);
  151. bool RemoveMenuInfo(IXMLDOMNodePtr spXDN);
  152. bool RemoveWindowInfo(IXMLDOMNodePtr spXDN);
  153. bool RemoveRriNodes();
  154. bool AddRriNode(IXMLDOMNodePtr spXDN, LPCRRINODEINFO* ppItem);
  155. void SetRaidReportData(CRaidReportData* pRaidReportData);
  156. bool SaveCurFile();
  157. bool SaveFile(const CLString& strFileName, bool bSetFileName = true);
  158. bool SaveFile(CStdioFile& stdioFile);
  159. bool GetRootNode(const _bstr_t &bstrRootNodeTag);
  160. bool CreateRootNode(const _bstr_t& bstrRootNodeTag);
  161. bool ReadFile(const CLString& strFileName, bool bSetFileName = true);
  162. bool CreateXMLFile(const CLString& strFileName);
  163. bool AddResource(const _bstr_t& bstrResource, LPCRRINODEINFO* ppItem );
  164. CRriNodeMapEx& GetRriNodeMap();
  165. private:
  166. bool m_bInitialized;
  167. CLString m_strXMLFileName;
  168. CRriNodeMapEx m_RriNodeMap;
  169. CRaidReportData* m_pGlobalRaidReportData;
  170. };
  171. #endif // !defined(AFX_RRIXMLFILE_H__6AEA6863_68FC_11D2_879C_00C04F8DA632__INCLUDED_)