// ProjectDataStructs.h: interface for the ProjectDataStructs class. // // By: Saud A. Alshibani. (c) MS 1998. All rights reserved. ////////////////////////////////////////////////////////////////////// #if !defined(AFX_PROJECTDATASTRUCTS_H__A1B64483_53BD_11D2_8780_00C04F8DA632__INCLUDED_) #define AFX_PROJECTDATASTRUCTS_H__A1B64483_53BD_11D2_8780_00C04F8DA632__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "RaidDataStructs.h" //#pragma TODO(_T("Finish replacing XMLTAG_xxx with Getxxxxx()")) ////////////////////////////////////////////////////////////////////// const LPTSTR XMLTAG_PROJECT = _T("PROJECT"); const LPTSTR XMLTAG_PROJECT_DATA = _T("PROJDATA"); const LPTSTR XMLTAG_PROJECT_OPTIONS = _T("PROJOPTIONS"); const LPTSTR XMLTAG_PROJECT_NAME = _T("PROJNAME"); const LPTSTR XMLTAG_PROJECT_PATH = _T("PROJPATH"); const LPTSTR XMLTAG_PROJECT_RRIFILE = _T("RRIFILE"); const LPTSTR XMLTAG_PROJECT_LOGFILE = _T("LOGFILE"); const LPTSTR XMLTAG_PROJECT_USERRIFILE = _T("USERRIFILE"); const LPTSTR XMLTAG_PROJECT_USELOGFILE = _T("USELOGFILE"); const LPTSTR XMLTAG_NAVIGATIONOPTIONS = _T("NAVIGATIONOPTIONS"); const LPTSTR XMLTAG_NAVIGATION_MODESTR = _T("MODESTR"); const LPTSTR XMLTAG_NAVIGATION_MODE = _T("MODE"); const LPTSTR XMLTAG_NAVIGATION_DURATION = _T("DURATION"); const LPTSTR XMLTAG_NAVIGATION_MINUTES = _T("MINUTES"); const LPTSTR XMLTAG_NAVIGATION_ACTIONS = _T("ACTIONS"); const LPTSTR XMLTAG_NAVIGATION_DELAY = _T("DELAY"); const LPTSTR XMLTAG_ELEMENTNAVIGATION = _T("ELEMENTNAVIGATION"); const LPTSTR XMLTAG_ELEMENTNAVIGATION_LIST = _T("ELEMENTNAVIGATIONLIST"); const LPTSTR XMLTAG_ELEMENTNAVIGATION_ACTIVE = _T("ACTIVE"); const LPTSTR XMLTAG_ELEMENTNAVIGATION_NAME = _T("NAME"); const LPTSTR XMLTAG_ELEMENTNAVIGATION_ACTION = _T("ACTION"); const LPTSTR XMLTAG_ELEMENTNAVIGATION_CAPTION = _T("CAPTION"); const LPTSTR XMLTAG_ELEMENTNAVIGATION_ID = _T("ID"); const LPTSTR XMLTAG_ELEMENTNAVIGATION_LOCATION= _T("LOCATION"); const LPTSTR XMLTAG_ELEMENTNAVIGATION_FORMAT = _T("FORMAT"); const LPTSTR XMLTAG_ELEMENTNAVIGATION_USEAPPSETTING = _T("USEAPPSETTING"); const LPTSTR XMLTAG_APPLICATION_NAME = _T("APPNAME"); const LPTSTR XMLTAG_APPLICATION_PATH = _T("APPPATH"); const LPTSTR XMLTAG_APPLICATION_OPTIONS = _T("APPOPTIONS"); const LPTSTR XMLTAG_APPLICATION_MAPFILE = _T("MAPFILE"); const LPTSTR XMLTAG_APPLICATION_CMDLINE = _T("CMDLINE"); const LPTSTR XMLTAG_APPLICATION_USECMDLINE = _T("USECMDLINE"); const LPTSTR XMLTAG_APPLICATION_USENAVIGATION = _T("USENAVIGATION"); const LPTSTR XMLTAG_APPLICATION_CMDLINEITEM = _T("CMDLINEITEM"); const LPTSTR XMLTAG_APPLICATION_MENU = _T("APPMENU"); const LPTSTR XMLTAG_APPLICATION_DATA = _T("APPDATA"); const LPTSTR XMLTAG_APPLICATION_LIST = _T("APPLIST"); const LPTSTR XMLTAG_APPLICATION_ACTIVE = _T("ACTIVE"); const LPTSTR XMLTAG_GENERALOPTIONS = _T("GENERALOPTIONS"); const LPTSTR XMLTAG_GENERALOPTIONS_DRIVEAPP = _T("DRIVEAPP"); const LPTSTR XMLTAG_GENERALOPTIONS_CAPTURERRINFO = _T("CAPTURERRINFO"); const LPTSTR XMLTAG_GENERALOPTIONS_CAPTURERESID = _T("CAPTURERESID"); const LPTSTR XMLTAG_ELEMENT_DISABLEACTIONS = _T("disable-actions"); const LPTSTR XMLTAG_ELEMENT_ELEMENT = _T("element"); const LPTSTR XMLTAG_ELEMENT_ACTION = _T("action"); const LPTSTR XMLTAG_ELEMENT_CAPTION = _T("caption"); const LPTSTR XMLTAG_ELEMENT_RESOURCEID = _T("resource-id"); ////////////////////////////////////////////////////////////////////// typedef class ProjectXMLTags { public: static LPCTSTR GetProjectXMLTag() { return XMLTAG_PROJECT ; } static LPCTSTR GetProjDataXMLTag() { return XMLTAG_PROJECT_DATA ; } static LPCTSTR GetProjOptionsXMLTag() { return XMLTAG_PROJECT_OPTIONS ; } static LPCTSTR GetProjNameXMLTag() { return XMLTAG_PROJECT_NAME ; } static LPCTSTR GetProjPathXMLTag() { return XMLTAG_PROJECT_PATH ; } static LPCTSTR GetProjRrifileXMLTag() { return XMLTAG_PROJECT_RRIFILE ; } static LPCTSTR GetProjLogfileXMLTag() { return XMLTAG_PROJECT_LOGFILE ; } static LPCTSTR GetProjUserrifileXMLTag() { return XMLTAG_PROJECT_USERRIFILE ; } static LPCTSTR GetProjUselogfileXMLTag() { return XMLTAG_PROJECT_USELOGFILE ; } static LPCTSTR GetNavigationOptionsXMLTag() { return XMLTAG_NAVIGATIONOPTIONS ; } static LPCTSTR GetNavigationModeXMLTag() { return XMLTAG_NAVIGATION_MODE ; } static LPCTSTR GetNavigationModeStrXMLTag() { return XMLTAG_NAVIGATION_MODESTR ; } static LPCTSTR GetNavigationDurationXMLTag() { return XMLTAG_NAVIGATION_DURATION ; } static LPCTSTR GetNavigationMinutesXMLTag() { return XMLTAG_NAVIGATION_MINUTES ; } static LPCTSTR GetNavigationActionsXMLTag() { return XMLTAG_NAVIGATION_ACTIONS ; } static LPCTSTR GetNavigationDelayXMLTag() { return XMLTAG_NAVIGATION_DELAY ; } static LPCTSTR GetElementNavigationXMLTag() { return XMLTAG_ELEMENTNAVIGATION ; } static LPCTSTR GetElementNavigationListXMLTag() { return XMLTAG_ELEMENTNAVIGATION_LIST ; } static LPCTSTR GetElementNavigationActiveXMLTag() { return XMLTAG_ELEMENTNAVIGATION_ACTIVE ; } static LPCTSTR GetElementNavigationNameXMLTag() { return XMLTAG_ELEMENTNAVIGATION_NAME ; } static LPCTSTR GetElementNavigationActionXMLTag() { return XMLTAG_ELEMENTNAVIGATION_ACTION ; } static LPCTSTR GetElementNavigationCaptionXMLTag() { return XMLTAG_ELEMENTNAVIGATION_CAPTION ; } static LPCTSTR GetElementNavigationIdXMLTag() { return XMLTAG_ELEMENTNAVIGATION_ID ; } static LPCTSTR GetElementNavigationLocationXMLTag() { return XMLTAG_ELEMENTNAVIGATION_LOCATION; } static LPCTSTR GetElementNavigationFormatXMLTag() { return XMLTAG_ELEMENTNAVIGATION_FORMAT ; } static LPCTSTR GetElementNavigationUseAppSettingXMLTag() { return XMLTAG_ELEMENTNAVIGATION_USEAPPSETTING; } static LPCTSTR GetAppNameXMLTag() { return XMLTAG_APPLICATION_NAME ; } static LPCTSTR GetAppPathXMLTag() { return XMLTAG_APPLICATION_PATH ; } static LPCTSTR GetAppOptionsXMLTag() { return XMLTAG_APPLICATION_OPTIONS ; } static LPCTSTR GetAppMapfileXMLTag() { return XMLTAG_APPLICATION_MAPFILE ; } static LPCTSTR GetAppCmdlineXMLTag() { return XMLTAG_APPLICATION_CMDLINE ; } static LPCTSTR GetAppUsecmdlineXMLTag() { return XMLTAG_APPLICATION_USECMDLINE ; } static LPCTSTR GetAppUsenavigationXMLTag() { return XMLTAG_APPLICATION_USENAVIGATION; } static LPCTSTR GetAppCmdlineitemXMLTag() { return XMLTAG_APPLICATION_CMDLINEITEM ; } static LPCTSTR GetAppMenuXMLTag() { return XMLTAG_APPLICATION_MENU ; } static LPCTSTR GetAppDataXMLTag() { return XMLTAG_APPLICATION_DATA ; } static LPCTSTR GetAppListXMLTag() { return XMLTAG_APPLICATION_LIST ; } static LPCTSTR GetAppActiveXMLTag() { return XMLTAG_APPLICATION_ACTIVE ; } static LPCTSTR GetGeneralOptionsXMLTag() { return XMLTAG_GENERALOPTIONS ; } static LPCTSTR GetGeneralOptionsDriveAppXMLTag() { return XMLTAG_GENERALOPTIONS_DRIVEAPP ; } static LPCTSTR GetGeneralOptionsCaptureRRInfoXMLTag() { return XMLTAG_GENERALOPTIONS_CAPTURERRINFO ; } static LPCTSTR GetGeneralOptionsCaptureResIDXMLTag() { return XMLTAG_GENERALOPTIONS_CAPTURERESID ; } static LPCTSTR GetElementDisabeActionsXMLTag() { return XMLTAG_ELEMENT_DISABLEACTIONS; } static LPCTSTR GetElementXMLTag() { return XMLTAG_ELEMENT_ELEMENT ; } static LPCTSTR GetElementActionXMLTag() { return XMLTAG_ELEMENT_ACTION ; } static LPCTSTR GetElementCaptionXMLTag() { return XMLTAG_ELEMENT_CAPTION ; } static LPCTSTR GetElementResourceIDXMLTag() { return XMLTAG_ELEMENT_RESOURCEID ; } } PROJECTXMLTAGS, FAR* LPPROJECTXMLTAGS; typedef PROJECTXMLTAGS PXT; ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// enum enumNavigationDelay { NAVIGATIONDELAY_NONE = -1, NAVIGATIONDELAY_SLOW = 3000, NAVIGATIONDELAY_NORMAL = 1000, NAVIGATIONDELAY_FAST = 0, }; enum enumNavDelayIndex { NAVDELAYINDEX_NONE = -1, NAVDELAYINDEX_SLOW = 0, NAVDELAYINDEX_NORMAL, NAVDELAYINDEX_FAST , }; ///////////////////////////////////////////////////////////////////////////// typedef struct NavigationDelay { int m_nType; int m_nDelayMSec; } NAVIGATIONDELAY, FAR* LPNAVIGATIONDELAY; ////////////////////////////////////////////////////////////////////// typedef class CLParamBase { public: CLParamBase() : m_bChecked(true) { } virtual ~CLParamBase() { } public: bool m_bChecked; } CLPARAMBASE, FAR* LPCLPARAMBASE; ////////////////////////////////////////////////////////////////////// typedef class CGeneralOptions { CGeneralOptions(CGeneralOptions&); CGeneralOptions& operator=(CGeneralOptions&); public: ////////////////////////////////////////////// // Inline CGeneralOptions() : m_bCaptureResID(true), m_bCaptureRRInfo(true), m_bDriveApp(true) { } ////////////////////////////////////////////// // Inline virtual ~CGeneralOptions() { } ////////////////////////////////////////////// // Inline virtual void Clone(CGeneralOptions& refGeneralOptions) { refGeneralOptions.m_bCaptureResID = m_bCaptureResID ; refGeneralOptions.m_bCaptureRRInfo = m_bCaptureRRInfo; refGeneralOptions.m_bDriveApp = m_bDriveApp ; refGeneralOptions.m_strData = m_strData ; } ////////////////////////////////////////////// // Pure virtual function. virtual CLString& GetDataString() = 0; public: bool m_bCaptureResID; bool m_bCaptureRRInfo; bool m_bDriveApp; CLString m_strData; } CGENERALOPTIONS, FAR* LPCGENERALOPTIONS; ////////////////////////////////////////////////////////////////////// typedef class CXMLGeneralOptions : public CGeneralOptions { CXMLGeneralOptions(CXMLGeneralOptions&); CXMLGeneralOptions& operator=(CXMLGeneralOptions&); public: ////////////////////////////////////////////// // Inline CXMLGeneralOptions() : m_XMLTagInformation(PXT::GetGeneralOptionsXMLTag(), _T("\t\t\t")) { } ////////////////////////////////////////////// // Inline virtual ~CXMLGeneralOptions() { } ////////////////////////////////////////////// // Pure virtual function. virtual CLString& GetDataString() { CLString strTabs = _T("\t\t\t\t"); CXMLTagInformation XMLTagInfo(PXT::GetGeneralOptionsDriveAppXMLTag(), strTabs); CLString strTmp = XMLTagInfo.GetXMLString(m_bDriveApp); XMLTagInfo.Init(PXT::GetGeneralOptionsCaptureRRInfoXMLTag(), strTabs); strTmp += XMLTagInfo.GetXMLString(m_bCaptureRRInfo); XMLTagInfo.Init(PXT::GetGeneralOptionsCaptureResIDXMLTag(), strTabs); strTmp += XMLTagInfo.GetXMLString(m_bCaptureResID); m_strData = m_XMLTagInformation.GetTabbedStartTag(); m_strData += strTmp; m_strData += m_XMLTagInformation.GetTabbedEndTag(); return m_strData; } public: CXMLTagInformation m_XMLTagInformation; } CXMLGENERALOPTIONS, FAR* LPCXMLGENERALOPTIONS; ////////////////////////////////////////////////////////////////////// typedef class CNavigationMode { public: int m_nNavigationMode; CLString m_strNavigationMode; } CNAVIGATIONMODE, FAR* LPCNAVIGATIONMODE; ////////////////////////////////////////////////////////////////////// typedef class CDurationType { public: int m_nDurationType; CLString m_strDurationType; } CDURATIONTYPE, FAR* LPCDURATIONTYPE; ////////////////////////////////////////////////////////////////////// enum enumNavigationMode { NAVIGATIONMODE_RANDOM = 0X0001, }; enum enumDurationType { DURATIONTYPE_NOTDEFINED = 0X0000, DURATIONTYPE_INFINITE = 0X0000, DURATIONTYPE_MINUTES = 0X0002, DURATIONTYPE_ACTIONS = 0X0004, }; ////////////////////////////////////////////////////////////////////// typedef class CNavigationOptions { CNavigationOptions(CNavigationOptions&); CNavigationOptions& operator=(CNavigationOptions&); public: ////////////////////////////////////////////// // Inline CNavigationOptions() : m_nNavigationMode(NAVIGATIONMODE_RANDOM), m_nDurationType(DURATIONTYPE_INFINITE), m_nMinutes(60), m_nActions(100), m_nDelayMSec(NAVIGATIONDELAY_FAST) { } ////////////////////////////////////////////// // Inline virtual ~CNavigationOptions() { } ////////////////////////////////////////////// // Inline virtual void Clone(CNavigationOptions& refNavigationOptions) { refNavigationOptions.m_strNavigationMode = m_strNavigationMode; refNavigationOptions.m_nNavigationMode = m_nNavigationMode ; refNavigationOptions.m_nDurationType = m_nDurationType ; refNavigationOptions.m_nMinutes = m_nMinutes ; refNavigationOptions.m_nActions = m_nActions ; refNavigationOptions.m_nDelayMSec = m_nDelayMSec ; refNavigationOptions.m_strData = m_strData ; } ////////////////////////////////////////////// // Pure virtual function. virtual CLString& GetDataString() = 0; ////////////////////////////////////////////// public: CLString m_strNavigationMode; int m_nNavigationMode; int m_nDurationType; int m_nMinutes; int m_nActions; int m_nDelayMSec; CLString m_strData; } CNAVIGATIONOPTIONS, FAR* LPCNAVIGATIONOPTIONS; ////////////////////////////////////////////////////////////////////// typedef class CXMLNavigationOptions : public CNavigationOptions { CXMLNavigationOptions(CXMLNavigationOptions&); CXMLNavigationOptions& operator=(CXMLNavigationOptions&); public: ////////////////////////////////////////////// // Inline CXMLNavigationOptions() : m_XMLTagInformation(PXT::GetNavigationOptionsXMLTag(), _T("\t\t\t\t")) { } ////////////////////////////////////////////// // Inline virtual ~CXMLNavigationOptions() { } public: ////////////////////////////////////////////// virtual CLString& GetDataString() { CLString strTabs = _T("\t\t\t\t\t"); CXMLTagInformation XMLTagInfo(PXT::GetNavigationModeStrXMLTag(), strTabs); CLString strTmp = XMLTagInfo.GetXMLString(m_strNavigationMode); XMLTagInfo.Init(PXT::GetNavigationModeXMLTag(), strTabs); strTmp = XMLTagInfo.GetXMLString(m_nNavigationMode); XMLTagInfo.Init(PXT::GetNavigationDurationXMLTag(), strTabs); strTmp += XMLTagInfo.GetXMLString(m_nDurationType); XMLTagInfo.Init(PXT::GetNavigationMinutesXMLTag(), strTabs); strTmp += XMLTagInfo.GetXMLString(m_nMinutes); XMLTagInfo.Init(PXT::GetNavigationActionsXMLTag(), strTabs); strTmp += XMLTagInfo.GetXMLString(m_nActions); XMLTagInfo.Init(PXT::GetNavigationDelayXMLTag(), strTabs); strTmp += XMLTagInfo.GetXMLString(m_nDelayMSec); m_strData = m_XMLTagInformation.GetTabbedStartTag(); m_strData += strTmp; m_strData += m_XMLTagInformation.GetTabbedEndTag(); return m_strData; } public: CXMLTagInformation m_XMLTagInformation; } CXMLNAVIGATIONOPTIONS, FAR* LPCXMLNAVIGATIONOPTIONS; ///////////////////////////////////////////////////////////////// typedef class CElementNavigation { private: CElementNavigation(CElementNavigation&); CElementNavigation& operator=(CElementNavigation&); public: ////////////////////////////////////////////// // Inline CElementNavigation() : m_bChecked(true) { } ////////////////////////////////////////////// // Inline virtual ~CElementNavigation() { } ////////////////////////////////////////////// // Inline virtual void Clone(CElementNavigation& refElementNavigation) { refElementNavigation.m_bChecked = m_bChecked ; refElementNavigation.m_strAction = m_strAction ; refElementNavigation.m_strCaption = m_strCaption ; refElementNavigation.m_strElementName = m_strElementName; refElementNavigation.m_strFormat = m_strFormat ; refElementNavigation.m_strID = m_strID ; refElementNavigation.m_strLocation = m_strLocation ; refElementNavigation.m_strData = m_strData ; } ////////////////////////////////////////////// // Pure virtual function. virtual CLString& GetDataString() = 0; ////////////////////////////////////////////// public: CLString m_strElementName; CLString m_strAction; CLString m_strCaption; CLString m_strID; CLString m_strLocation; CLString m_strFormat; bool m_bChecked; CLString m_strData; } CELEMENTNAVIGATION, FAR* LPCELEMENTNAVIGATION; ///////////////////////////////////////////////////////////////// typedef class CXMLElementNavigation : public CElementNavigation { private: CXMLElementNavigation(CXMLElementNavigation&); CXMLElementNavigation& operator=(CXMLElementNavigation&); public: ////////////////////////////////////////////// // Inline CXMLElementNavigation() : m_XMLTagInformation(PXT::GetElementNavigationXMLTag(), _T("\t\t\t\t")) { } ////////////////////////////////////////////// // Inline virtual ~CXMLElementNavigation() { } ////////////////////////////////////////////// // virtual function. virtual CLString& GetDataString() { CLString strTabs = _T("\t\t\t\t\t"); CXMLTagInformation XMLTagInfo(PXT::GetElementNavigationNameXMLTag(), strTabs); CLString strTmp = XMLTagInfo.GetXMLString(m_strElementName); XMLTagInfo.Init(PXT::GetElementNavigationActionXMLTag(), strTabs); strTmp += XMLTagInfo.GetXMLString(m_strAction); XMLTagInfo.Init(PXT::GetElementNavigationCaptionXMLTag(), strTabs); strTmp += XMLTagInfo.GetXMLString(m_strCaption); XMLTagInfo.Init(PXT::GetElementNavigationIdXMLTag(), strTabs); strTmp += XMLTagInfo.GetXMLString(m_strID); XMLTagInfo.Init(PXT::GetElementNavigationLocationXMLTag(), strTabs); strTmp += XMLTagInfo.GetXMLString(m_strLocation); XMLTagInfo.Init(PXT::GetElementNavigationFormatXMLTag(), strTabs); strTmp += XMLTagInfo.GetXMLString(m_strFormat); XMLTagInfo.Init(PXT::GetElementNavigationActiveXMLTag(), strTabs); strTmp += XMLTagInfo.GetXMLString(m_bChecked); m_strData = m_XMLTagInformation.GetTabbedStartTag(); m_strData += strTmp; m_strData += m_XMLTagInformation.GetTabbedEndTag(); return m_strData; } ////////////////////////////////////////////// public: CXMLTagInformation m_XMLTagInformation; } CXMLELEMENTNAVIGATION, FAR* LPCXMLELEMENTNAVIGATION; ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// typedef class CApplicationOptions { private: CApplicationOptions(CApplicationOptions&); CApplicationOptions& operator=(CApplicationOptions&); public: ////////////////////////////////////////////// // Inline CApplicationOptions() : m_bUseCmdLineArg(TRUE), m_bUseNavigationOptions(FALSE), m_pGeneralOptions(NULL), m_pNavigationOptions(NULL) { } ////////////////////////////////////////////// // Inline virtual ~CApplicationOptions() { } ////////////////////////////////////////////// // Inline virtual void Clone(CApplicationOptions& refAppOptions) { refAppOptions.m_strMapFileName = m_strMapFileName ; refAppOptions.m_strCmdLineArg = m_strCmdLineArg ; refAppOptions.m_bUseCmdLineArg = m_bUseCmdLineArg ; refAppOptions.m_bUseNavigationOptions = m_bUseNavigationOptions ; refAppOptions.m_strCmdLineArgList.RemoveAll(); POSITION pos = m_strCmdLineArgList.GetHeadPosition(); while(pos) { CLString strTmp = m_strCmdLineArgList.GetNext(pos); refAppOptions.m_strCmdLineArgList.AddTail(strTmp); } // Clone the general and navigation option. ASSERT(m_pNavigationOptions); ASSERT(m_pGeneralOptions); m_pNavigationOptions->Clone(refAppOptions.GetNavigationOptions()); m_pGeneralOptions->Clone(refAppOptions.GetGeneralOptions()); } ////////////////////////////////////////////// CNavigationOptions& GetNavigationOptions() { ASSERT(m_pNavigationOptions); return *m_pNavigationOptions; } ////////////////////////////////////////////// CGeneralOptions& GetGeneralOptions() { ASSERT(m_pGeneralOptions); return *m_pGeneralOptions; } ////////////////////////////////////////////// // Pure virtual function. virtual CLString& GetDataString() = 0; public: CLString m_strMapFileName; CLString m_strCmdLineArg; CStringList m_strCmdLineArgList; BOOL m_bUseCmdLineArg; BOOL m_bUseNavigationOptions; CNavigationOptions* m_pNavigationOptions; // IMPORTANT: This must be allocated in the derived class CGeneralOptions* m_pGeneralOptions; // IMPORTANT: This must be allocated in the derived class CLString m_strData; } CAPPLICATIONOPTIONS, FAR* LPCAPPLICATIONOPTIONS; ////////////////////////////////////////////////////////////////////// typedef class CXMLApplicationOptions : public CApplicationOptions { private: CXMLApplicationOptions(CXMLApplicationOptions&); CXMLApplicationOptions& operator=(CXMLApplicationOptions&); public: ////////////////////////////////////////////// CXMLApplicationOptions() : m_XMLTagInformation(XMLTAG_APPLICATION_OPTIONS, _T("\t\t\t")) { m_pNavigationOptions = new CXMLNAVIGATIONOPTIONS(); m_pGeneralOptions = new CXMLGENERALOPTIONS; } ////////////////////////////////////////////// virtual ~CXMLApplicationOptions() { delete m_pNavigationOptions; delete m_pGeneralOptions; } public: ////////////////////////////////////////////// virtual CLString& GetDataString() { CLString strTabs = _T("\t\t\t\t"); CXMLTagInformation XMLTagInfo(XMLTAG_APPLICATION_MAPFILE, strTabs); CLString strTmp = XMLTagInfo.GetXMLString(m_strMapFileName); XMLTagInfo.Init(XMLTAG_APPLICATION_CMDLINE, strTabs); strTmp += XMLTagInfo.GetXMLString(m_strCmdLineArg); XMLTagInfo.Init(XMLTAG_APPLICATION_USECMDLINE, strTabs); strTmp += XMLTagInfo.GetXMLString(m_bUseCmdLineArg); XMLTagInfo.Init(XMLTAG_APPLICATION_USENAVIGATION, strTabs); strTmp += XMLTagInfo.GetXMLString(m_bUseNavigationOptions); // Now file the command line items. XMLTagInfo.Init(XMLTAG_APPLICATION_CMDLINEITEM, strTabs); POSITION pos = m_strCmdLineArgList.GetHeadPosition(); while(pos) { strTmp += XMLTagInfo.GetXMLString(CLString(m_strCmdLineArgList.GetNext(pos))); } m_strData = m_XMLTagInformation.GetTabbedStartTag(); m_strData += strTmp; m_strData += m_pNavigationOptions->GetDataString(); m_strData += m_pGeneralOptions->GetDataString(); m_strData += m_XMLTagInformation.GetTabbedEndTag(); return m_strData; } public: XMLTAGINFORMATION m_XMLTagInformation; } CXMLAPPLICATIONOPTIONS, FAR* LPCXMLAPPLICATIONOPTIONS; ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// typedef class CApplicationMenus { private: CApplicationMenus(CApplicationMenus&); CApplicationMenus& operator=(CApplicationMenus&); public: ////////////////////////////////////////////// // Inline CApplicationMenus() { } ////////////////////////////////////////////// // Inline virtual ~CApplicationMenus() { } ////////////////////////////////////////////// //Inline virtual void Clone(CApplicationMenus& refAppMenus) { UNREFERENCED_PARAMETER(refAppMenus); } // Pure virtual function. virtual CLString& GetDataString() = 0; public: CLString m_strData; } CAPPLICATIONMENUS, FAR* LPCAPPLICATIONMENUS; ////////////////////////////////////////////////////////////////////// typedef class CXMLApplicationMenus : public CApplicationMenus { private: CXMLApplicationMenus(CXMLApplicationMenus&); CXMLApplicationMenus& operator=(CXMLApplicationMenus&); public: ////////////////////////////////////////////// // Inline CXMLApplicationMenus() : m_XMLTagInformation(XMLTAG_APPLICATION_MENU, _T("\t\t\t")) { } ////////////////////////////////////////////// // Inline virtual ~CXMLApplicationMenus() { } public: ////////////////////////////////////////////// virtual CLString& GetDataString() { m_strData = m_XMLTagInformation.GetTabbedStartTag(); m_strData += m_XMLTagInformation.GetTabbedEndTag(); return m_strData; } public: XMLTAGINFORMATION m_XMLTagInformation; } CXMLAPPLICATIONMENUS, FAR* LPCXMLAPPLICATIONMENUS; ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// typedef std::map > CElementMap; typedef CElementMap::iterator iterElementMap; typedef CElementMap::value_type valueElement; ////////////////////////////////////////////////////////////////////// typedef class CElementNavMap : public CElementMap { public: CElementNavMap() : m_bUseAppSetting(false) { } virtual ~CElementNavMap() { CleanUp(); } ////////////////////////////////////////////// //Inline virtual void CleanUp() { if(size()) { iterElementMap iter = begin(); iterElementMap iterEnd = end(); while(iter != iterEnd) { LPCELEMENTNAVIGATION pElement = (*iter).second; ASSERT(pElement); delete pElement; iter++; } } clear(); } ////////////////////////////////////////////// //Inline virtual void Clone(CElementNavMap& refMapElement) { refMapElement.m_strData = m_strData; refMapElement.m_bUseAppSetting = m_bUseAppSetting; refMapElement.CleanUp(); if(size()) { iterElementMap iter = begin(); iterElementMap iterEnd = end(); while(iter != iterEnd) { LPCELEMENTNAVIGATION pElement = (*iter).second; ASSERT(pElement); iter++; // Now clone and insert the new item (if necessary) LPCELEMENTNAVIGATION pNewElement = GetNewElement(); ASSERT(pNewElement); pElement->Clone(*pNewElement); refMapElement.InsertElement(pNewElement); } } } ////////////////////////////////////////////// //Inline bool InsertElement(LPCELEMENTNAVIGATION pElement) { bool bInserted = false; CLString strKey; GetKey(pElement, strKey); if(Find(strKey) == end()) { insert(valueElement(strKey, pElement)); bInserted = true; } return bInserted; } ////////////////////////////////////////////// iterElementMap Find(CLString strKey) { ASSERT(!strKey.IsEmpty()); strKey.MakeLower(); return find(strKey); } ////////////////////////////////////////////// iterElementMap Find(LPCELEMENTNAVIGATION pElement) { CLString strKey; GetKey(pElement, strKey); ASSERT(!strKey.IsEmpty()); return find(strKey); } ////////////////////////////////////////////// void GetKey(LPCELEMENTNAVIGATION pElement, CLString& strKey) { strKey = pElement->m_strElementName + pElement->m_strAction + pElement->m_strCaption + pElement->m_strID + pElement->m_strFormat + pElement->m_strLocation; strKey.MakeLower(); ASSERT(!strKey.IsEmpty()); } public: ////////////////////////////////////////////// // Inline - Pure Virtual virtual CLString& GetDataString() = 0; ////////////////////////////////////////////// // Inline - Pure Virtual virtual LPCELEMENTNAVIGATION GetNewElement() = 0; ////////////////////////////////////////////// virtual CLString& GetDisableActionsDataString() = 0; public: CLString m_strData; bool m_bUseAppSetting; }CELEMENTNAVMAP, FAR* LPCELEMENTNAVMAP; ////////////////////////////////////////////////////////////////////// typedef class CXMLElementNavMap : public CElementNavMap { public: CXMLElementNavMap() : m_XMLTagInformation(PXT::GetElementNavigationListXMLTag(), _T("\t\t\t")) { } virtual ~CXMLElementNavMap() { } public: ////////////////////////////////////////////// virtual CLString& GetDataString() { CLString strTabs = _T("\t\t\t\t"); if(size()) { m_strData = m_XMLTagInformation.GetTabbedStartTag(); CXMLTagInformation XMLTagInfo(PXT::GetElementNavigationUseAppSettingXMLTag(), strTabs); m_strData += XMLTagInfo.GetXMLString(m_bUseAppSetting); iterElementMap iter = begin(); iterElementMap iterEnd = end(); while(iter != iterEnd) { LPCELEMENTNAVIGATION pElement = (*iter).second; ASSERT(pElement); m_strData += pElement->GetDataString(); iter++; } m_strData += m_XMLTagInformation.GetTabbedEndTag(); } return m_strData; } ////////////////////////////////////////////// virtual CLString& GetDisableActionsDataString() { m_strData.Empty(); if(size()) { CLString strTabs = _T("\t"); CXMLTagInformation ActionXMLTag(PXT::GetElementActionXMLTag(), strTabs); CXMLTagInformation ElementXMLTag(PXT::GetElementXMLTag(), strTabs); CXMLTagInformation ParentElementXMLTag(PXT::GetElementXMLTag(), strTabs); CXMLTagInformation CaptionXMLTag(PXT::GetElementCaptionXMLTag(), _T("\t\t")); CXMLTagInformation ResIDXMLTag(PXT::GetElementResourceIDXMLTag(), _T("\t\t")); iterElementMap iter = begin(); iterElementMap iterEnd = end(); CLString strElementsXML; while(iter != iterEnd) { LPCELEMENTNAVIGATION pElement = (*iter).second; ASSERT(pElement); iter++; // We only create a disable action iff: (1) checked, (2) element name is // not empty, and (3) action type not empty. if(pElement->m_bChecked && !pElement->m_strElementName.IsEmpty() && !pElement->m_strAction.IsEmpty()) { CLString strXML; CLString strTmp2; // Did the user specify a location? if(!pElement->m_strLocation.IsEmpty()) { strTmp2.Format(_T("type=\"%s\""), pElement->m_strLocation); strXML += ParentElementXMLTag.GetTabbedStartTag(strTmp2); ElementXMLTag.SetTabs(_T("\t\t")); } else { ElementXMLTag.SetTabs(strTabs); } // Now compose the Element. if(!pElement->m_strFormat.IsEmpty()) strTmp2.Format(_T("type=\"%s\" format=\"%s\""), pElement->m_strElementName, pElement->m_strFormat); else strTmp2.Format(_T("type=\"%s\""), pElement->m_strElementName); strXML += ElementXMLTag.GetTabbedStartTag(strTmp2); if(!pElement->m_strCaption.IsEmpty()) strXML += CaptionXMLTag.GetXMLString(pElement->m_strCaption); if(!pElement->m_strID.IsEmpty()) strXML += ResIDXMLTag.GetXMLString(pElement->m_strID); strXML += ElementXMLTag.GetTabbedEndTag(); // Add the closing element if a location has been specified. if(!pElement->m_strLocation.IsEmpty()) { strXML += ParentElementXMLTag.GetTabbedEndTag(); } strTmp2.Format(_T("type=\"%s\""), pElement->m_strAction); strXML += ActionXMLTag.GetTabbedStartTag(strTmp2); strXML += ActionXMLTag.GetTabbedEndTag(); // Now add it to the overall string. strElementsXML += strXML; } } if(!strElementsXML.IsEmpty()) { CXMLTagInformation DisableXMLTag(PXT::GetElementDisabeActionsXMLTag(), _T("")); m_strData = DisableXMLTag.GetTabbedStartTag(); m_strData += strElementsXML; m_strData += DisableXMLTag.GetTabbedEndTag(); } } return m_strData; } ////////////////////////////////////////////// // Inline virtual LPCELEMENTNAVIGATION GetNewElement() { return new CXMLELEMENTNAVIGATION; } public: XMLTAGINFORMATION m_XMLTagInformation; }CXMLELEMENTNAVMAP, FAR* LPCXMLELEMENTNAVMAP; ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// typedef class CApplicationData : public CLParamBase { private: CApplicationData(CApplicationData&); CApplicationData& operator=(CApplicationData&); public: ////////////////////////////////////////////// // Inline CApplicationData() : m_pApplicationOptions(NULL), m_pApplicationMenus(NULL), m_pElementNavMap(NULL) { } ////////////////////////////////////////////// // Inline virtual ~CApplicationData() { CleanUp(); } ////////////////////////////////////////////// //Inline void CleanUp() { } ////////////////////////////////////////////// //Inline virtual void Clone(CApplicationData& refApplicationData) { refApplicationData.m_strAppName = m_strAppName; refApplicationData.m_strPath = m_strPath ; refApplicationData.m_bChecked = m_bChecked ; ASSERT(m_pApplicationOptions); ASSERT(m_pApplicationMenus); ASSERT(m_pElementNavMap); m_pApplicationOptions->Clone(refApplicationData.GetApplicationOptions()); m_pApplicationMenus->Clone(refApplicationData.GetApplicationMenus()); m_pElementNavMap->Clone(refApplicationData.GetElementNavMap()); } ////////////////////////////////////////////// // Pure virtual function. virtual CLString& GetDataString() = 0; ////////////////////////////////////////////// // Inline CApplicationOptions& GetApplicationOptions() { ASSERT(m_pApplicationOptions); return *m_pApplicationOptions; } ////////////////////////////////////////////// // Inline CElementNavMap& GetElementNavMap() { ASSERT(m_pElementNavMap); return *m_pElementNavMap; } ////////////////////////////////////////////// // Inline CElementNavMap* GetElementNavMapPtr() { ASSERT(m_pElementNavMap); return m_pElementNavMap; } ////////////////////////////////////////////// // Inline CApplicationMenus& GetApplicationMenus() { ASSERT(m_pApplicationMenus); return *m_pApplicationMenus; } ////////////////////////////////////////////// public: CLString m_strAppName; CLString m_strPath; CApplicationOptions* m_pApplicationOptions; CApplicationMenus* m_pApplicationMenus; CElementNavMap* m_pElementNavMap; CLString m_strData; } CAPPLICATIONDATA, FAR* LPCAPPLICATIONDATA; ////////////////////////////////////////////////////////////////////// typedef class CXMLApplicationData : public CApplicationData { private: CXMLApplicationData(CXMLApplicationData&); CXMLApplicationData& operator=(CXMLApplicationData&); public: ////////////////////////////////////////////// CXMLApplicationData() : m_XMLTagInformation(XMLTAG_APPLICATION_DATA, _T("\t\t")) { m_pApplicationOptions = new CXMLAPPLICATIONOPTIONS(); m_pApplicationMenus = new CXMLAPPLICATIONMENUS(); m_pElementNavMap = new CXMLElementNavMap(); } ////////////////////////////////////////////// virtual ~CXMLApplicationData() { delete m_pApplicationOptions; delete m_pApplicationMenus; delete m_pElementNavMap; } public: ////////////////////////////////////////////// virtual CLString& GetDataString() { CLString strTabs = _T("\t\t\t"); CXMLTagInformation XMLTagInfo(PXT::GetAppNameXMLTag(), strTabs); CLString strTmp = XMLTagInfo.GetXMLString(m_strAppName); XMLTagInfo.Init(PXT::GetAppPathXMLTag(), strTabs); strTmp += XMLTagInfo.GetXMLString(m_strPath); XMLTagInfo.Init(PXT::GetAppActiveXMLTag(), strTabs); strTmp += XMLTagInfo.GetXMLString(m_bChecked); // Now create the entire application XML string m_strData = m_XMLTagInformation.GetTabbedStartTag(); m_strData += strTmp; m_strData += m_pApplicationOptions->GetDataString(); m_strData += m_pElementNavMap->GetDataString(); m_strData += m_pApplicationMenus->GetDataString(); m_strData += m_XMLTagInformation.GetTabbedEndTag(); return m_strData; } public: XMLTAGINFORMATION m_XMLTagInformation; } CXMLAPPLICATIONDATA, FAR* LPCXMLAPPLICATIONDATA; ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// //typedef CTypedPtrMap CAppList; typedef std::map > CAppMap; typedef CAppMap::iterator iterAppMap; typedef CAppMap::value_type valueApp; typedef class CAppMapEx : public CAppMap { public: CAppMapEx() { } virtual ~CAppMapEx() { CleanUp(); } ////////////////////////////////////////////// //Inline virtual void CleanUp() { if(size()) { iterAppMap iter = begin(); iterAppMap iterEnd = end(); while(iter != iterEnd) { LPCAPPLICATIONDATA pItem = (*iter).second; ASSERT(pItem); delete pItem; iter++; } } clear(); } ////////////////////////////////////////////// //Inline bool InsertItem(LPCAPPLICATIONDATA pAppData) { CLString strTmp = pAppData->m_strPath; strTmp.MakeLower(); insert(valueApp(strTmp, pAppData)); return true; } ////////////////////////////////////////////// //Inline iterAppMap Find(CLString strAppPath) { ASSERT(!strAppPath.IsEmpty()); strAppPath.MakeLower(); return find(strAppPath); } ////////////////////////////////////////////// //Inline bool Erase(CLString strAppPath) { ASSERT(!strAppPath.IsEmpty()); strAppPath.MakeLower(); erase(strAppPath); return true; } } CAPPMAPEX, FAR* LPCAPPMAPEX; ////////////////////////////////////////////////////////////////////// typedef class CProjectOptions { private: CProjectOptions(CProjectOptions&); CProjectOptions& operator=(CProjectOptions&); public: ////////////////////////////////////////////// // Inline CProjectOptions() : m_bUseRRIFile(1), m_bUseLogFile(1), m_pNavigationOptions(NULL), m_pGeneralOptions(NULL) { } ////////////////////////////////////////////// // Inline virtual ~CProjectOptions() { } ////////////////////////////////////////////// //Inline void CleanUp() { } ////////////////////////////////////////////// CNavigationOptions& GetNavigationOptions() { ASSERT(m_pNavigationOptions); return *m_pNavigationOptions; } ////////////////////////////////////////////// CGeneralOptions& GetGeneralOptions() { ASSERT(m_pGeneralOptions); return *m_pGeneralOptions; } ////////////////////////////////////////////// // Pure virtual function. virtual CLString& GetDataString() = 0; public: CLString m_strRRIFileName; CLString m_strLogFileName; BOOL m_bUseRRIFile; BOOL m_bUseLogFile; CNavigationOptions* m_pNavigationOptions; // IMPORTANT: This must be allocated in the derived class CGeneralOptions* m_pGeneralOptions; // IMPORTANT: This must be allocated in the derived class // Data String CLString m_strData; } CPROJECTOPTIONS, FAR* LPCPROJECTOPTIONS; ////////////////////////////////////////////////////////////////////// typedef class CXMLProjectOptions : public CProjectOptions { private: CXMLProjectOptions(CXMLProjectOptions&); CXMLProjectOptions& operator=(CXMLProjectOptions&); public: ////////////////////////////////////////////// // Constructor - Inline CXMLProjectOptions() : m_XMLTagInformation(PXT::GetProjOptionsXMLTag(), _T("\t\t")) { m_pNavigationOptions = new CXMLNAVIGATIONOPTIONS; m_pGeneralOptions = new CXMLGENERALOPTIONS; } ////////////////////////////////////////////// // Destructor - Inline virtual ~CXMLProjectOptions() { delete m_pNavigationOptions; delete m_pGeneralOptions; } public: ////////////////////////////////////////////// virtual CLString& GetDataString() { ASSERT(m_pNavigationOptions); ASSERT(m_pGeneralOptions); CLString strTabs = _T("\t\t\t"); CXMLTagInformation XMLTagInfo(PXT::GetProjRrifileXMLTag(), strTabs); CLString strTmp = XMLTagInfo.GetXMLString(m_strRRIFileName); XMLTagInfo.Init(PXT::GetProjLogfileXMLTag(), strTabs); strTmp += XMLTagInfo.GetXMLString(m_strLogFileName); XMLTagInfo.Init(PXT::GetProjUserrifileXMLTag(), strTabs); strTmp += XMLTagInfo.GetXMLString(m_bUseRRIFile); XMLTagInfo.Init(PXT::GetProjUselogfileXMLTag(), strTabs); strTmp += XMLTagInfo.GetXMLString(m_bUseLogFile); m_strData = m_XMLTagInformation.GetTabbedStartTag(); m_strData += strTmp; m_strData += m_pNavigationOptions->GetDataString(); m_strData += m_pGeneralOptions->GetDataString(); m_strData += m_XMLTagInformation.GetTabbedEndTag(); return m_strData; } public: XMLTAGINFORMATION m_XMLTagInformation; } CXMLPROJECTOPTIONS, FAR* LPCXMLPROJECTOPTIONS; ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// typedef class CProjectData : CLParamBase { private: CProjectData(CProjectData&); CProjectData& operator=(CProjectData&); public: ////////////////////////////////////////////// // Inline CProjectData() : m_pProjectOptions(NULL), m_pElementNavMap(NULL) { } ////////////////////////////////////////////// // Inline virtual ~CProjectData() { } ////////////////////////////////////////////// // Inline // Pure virtual function. virtual CLString& GetDataString() = 0; // Inline CPROJECTOPTIONS& GetProjectOptions() { ASSERT(m_pProjectOptions); return *m_pProjectOptions; } // Inline CPROJECTOPTIONS* GetProjectOptionsPtr() { ASSERT(m_pProjectOptions); return m_pProjectOptions; } ////////////////////////////////////////////// // Inline CElementNavMap& GetElementNavMap() { ASSERT(m_pElementNavMap); return *m_pElementNavMap; } ////////////////////////////////////////////// // Inline CElementNavMap* GetElementNavMapPtr() { ASSERT(m_pElementNavMap); return m_pElementNavMap; } ////////////////////////////////////////////// // Data public: CLString m_strProjectName; CLString m_strProjectFileName; CProjectOptions* m_pProjectOptions; CElementNavMap* m_pElementNavMap; CLString m_strData; } CPROJECTDATA, FAR* LPCPROJECTDATA; ////////////////////////////////////////////////////////////////////// typedef class CXMLProjectData : public CProjectData { private: CXMLProjectData(CXMLProjectData&); CXMLProjectData& operator=(CXMLProjectData&); public: ////////////////////////////////////////////// // Constructor CXMLProjectData() : m_XMLTagInformation(PXT::GetProjDataXMLTag(), _T("\t")) { m_pElementNavMap = new CXMLElementNavMap(); m_pProjectOptions = new CXMLPROJECTOPTIONS(); CLString strTmp; strTmp.Format(_T("%s/%s"), PXT::GetProjectXMLTag(),m_XMLTagInformation.GetTagName()); m_bstrXMLQuery = strTmp; } // Destructor virtual ~CXMLProjectData() { delete m_pProjectOptions; delete m_pElementNavMap; } public: ////////////////////////////////////////////// virtual CLString& GetDataString() { CLString strTabs = _T("\t\t"); CXMLTagInformation XMLTagInfo(PXT::GetProjNameXMLTag(), strTabs); CLString strTmp = XMLTagInfo.GetXMLString(m_strProjectName); XMLTagInfo.Init(PXT::GetProjPathXMLTag(), strTabs); strTmp += XMLTagInfo.GetXMLString(m_strProjectFileName); m_strData = m_XMLTagInformation.GetTabbedStartTag(); m_strData += strTmp; m_strData += m_pProjectOptions->GetDataString(); m_strData += m_pElementNavMap->GetDataString(); m_strData += m_XMLTagInformation.GetTabbedEndTag(); return m_strData; } ////////////////////////////////////////////// _bstr_t& GetProjectQueryXMLTag() { return m_bstrXMLQuery; } public: _bstr_t m_bstrXMLQuery; XMLTAGINFORMATION m_XMLTagInformation; } CXMLPROJECTDATA, FAR* LPCXMLPROJECTDATA; ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// typedef class CProjectInformation { private: CProjectInformation(CProjectInformation&); CProjectInformation& operator=(CProjectInformation&); public: ////////////////////////////////////////////// // Inline CProjectInformation(bool bAutoCleanUp = false) : m_pProjectData(NULL), m_XMLTagInformation(PXT::GetProjectXMLTag()), m_bAutoCleanUp(bAutoCleanUp) { } ////////////////////////////////////////////// // Inline CProjectInformation(LPCPROJECTDATA pProjectData, bool bAutoCleanUp = false) : m_pProjectData(pProjectData), m_XMLTagInformation(PXT::GetProjectXMLTag()), m_bAutoCleanUp(bAutoCleanUp) { } ////////////////////////////////////////////// // Inline virtual ~CProjectInformation() { if(m_bAutoCleanUp) { CleanUp(); } } ////////////////////////////////////////////// // IMPORTANT: Don't call this routine unless you're specifically // want this object to have absolute control of the memory allocated. void CleanUp() { if(m_pProjectData) { delete m_pProjectData; m_pProjectData = NULL; } } ////////////////////////////////////////////// // Inline void SetProjectInformation(LPCPROJECTDATA pProjectData) { ASSERT(pProjectData); m_pProjectData = pProjectData; } ////////////////////////////////////////////// // Inline CAppMapEx& GetAppMap() { return m_AppMap; } ////////////////////////////////////////////// // Inline CProjectData& GetProjectData() { return *m_pProjectData; } ////////////////////////////////////////////// // Inline CProjectData* GetProjectDataPtr() { return m_pProjectData; } ////////////////////////////////////////////// virtual CLString& GetDataString() { m_strData.Empty(); m_strData = _T("\n\n"); m_strData += m_XMLTagInformation.GetTabbedStartTag(); m_strData += m_pProjectData->GetDataString(); // Application List CLString strTabs = _T("\t"); CXMLTagInformation XMLTagInfo(XMLTAG_APPLICATION_LIST, strTabs); m_strData += XMLTagInfo.GetTabbedStartTag(); if(GetAppMap().size()) { iterAppMap iter = GetAppMap().begin(); iterAppMap iterEnd = GetAppMap().end(); while(iter != iterEnd) { LPCAPPLICATIONDATA pAppData = (*iter).second; ASSERT(pAppData); m_strData += pAppData->GetDataString(); iter++; } } m_strData += XMLTagInfo.GetTabbedEndTag(); m_strData += GetRaidReportDataPtr()->GetDataString(); // Add RAID information m_strData += m_XMLTagInformation.GetTabbedEndTag(); return m_strData; } // Inline bool IsModified() { return m_bModified; } // Inline CRAIDREPORTDATA& GetRaidReportData() { return m_RaidReportData; } // Inline LPCRAIDREPORTDATA GetRaidReportDataPtr() { return &m_RaidReportData; } // Inline void SetModified(bool bModified = true) { m_bModified = bModified; } ////////////////////////////////////////////// // Data public: LPCPROJECTDATA m_pProjectData; CXMLRAIDREPORTDATA m_RaidReportData; CAppMapEx m_AppMap; bool m_bAutoCleanUp; bool m_bModified; CLString m_strData; XMLTAGINFORMATION m_XMLTagInformation; } CPROJECTINFORMATION, FAR* LPCPROJECTINFORMATION; #endif // !defined(AFX_PROJECTDATASTRUCTS_H__A1B64483_53BD_11D2_8780_00C04F8DA632__INCLUDED_)