#include "StdAfx.h"
|
#include "MBAppMgr.h"
|
#include "MBAppInfo.h"
|
#include "MBPsnAppInfo.h"
|
#include "MBAreaAppInfo.h"
|
|
CMBAppMgr::CMBAppMgr(void)
|
{
|
|
}
|
|
|
CMBAppMgr::~CMBAppMgr(void)
|
{
|
|
}
|
|
bool CMBAppMgr::AddApp(CMBBaseAppObj *pAppObj)
|
{
|
return AddAppObj(pAppObj);
|
}
|
|
CMBBaseCatalogObj *CMBAppMgr::GetCatalogObj( CString strCabinetID,CString strCatalogID )
|
{
|
CMBBaseCabinetObj *pBaseCabinetObj = GetCabinetObj( strCabinetID );
|
if( NULL == pBaseCabinetObj )
|
return NULL;
|
|
if( strCatalogID.IsEmpty() )
|
return NULL;
|
|
CMBCabinetInfo *pCabinetInfo = (CMBCabinetInfo *)pBaseCabinetObj;
|
|
return pCabinetInfo->GetCatalogMgr()->DeepFindCatalogObj( strCatalogID );
|
}
|
|
CMBBaseCabinetObj *CMBAppMgr::GetCabinetObj( CString strCabinetID )
|
{
|
if( strCabinetID.IsEmpty() )
|
{
|
return NULL;
|
}
|
CMBBaseAppObjMap::iterator it;
|
CMBBaseAppObj *pBaseAppObj = NULL;
|
|
for( it = m_mapAppObj.begin();it != m_mapAppObj.end();it++ )
|
{
|
pBaseAppObj = it->second;
|
if( pBaseAppObj->IsKindOf(RUNTIME_CLASS(CMBAppInfo)) )
|
{
|
CMBAppInfo *pAppInfo = (CMBAppInfo *)pBaseAppObj;
|
CMBBaseCabinetObj *pCabinetObj = pAppInfo->GetCabinetObj(strCabinetID);
|
if( pCabinetObj != NULL )
|
return pCabinetObj;
|
}
|
}
|
return NULL;
|
}
|
|
CMBBaseCatalogObj *CMBAppMgr::GetPsnCatalogObj( CString strCatalogID )
|
{
|
CMBBaseCabinetObj *pCabinetObj = GetPsnCabinetObj();
|
if( NULL == pCabinetObj )
|
return NULL;
|
|
if( strCatalogID.IsEmpty() )
|
return NULL;
|
|
CMBPsnCabinetInfo * pCabinetInfo = (CMBPsnCabinetInfo*)pCabinetObj;
|
|
return pCabinetInfo->GetCatalogMgr()->DeepFindCatalogObj( strCatalogID );
|
}
|
|
CMBBaseCabinetObj *CMBAppMgr::GetPsnCabinetObj( )
|
{
|
CMBBaseAppObjMap::iterator it;
|
CMBBaseAppObj *pBaseAppObj = NULL;
|
|
for( it = m_mapAppObj.begin();it != m_mapAppObj.end();it++ )
|
{
|
pBaseAppObj = it->second;
|
if( pBaseAppObj->IsKindOf(RUNTIME_CLASS(CMBPsnAppInfo)) )
|
{
|
CMBPsnAppInfo *pAppInfo = (CMBPsnAppInfo *)pBaseAppObj;
|
return pAppInfo->m_pCabinetInfo;
|
}
|
}
|
return NULL;
|
}
|
|
// ²éÕÒÉî²ã¶ÔÏ󣬸ú¾Ýid
|
CMBBaseObj *CMBAppMgr::FindDeepObjByID( CStringArray &ar )
|
{
|
CMBBaseObj *pReturnObj = NULL;
|
if( ar.GetCount() <= 0 )
|
return pReturnObj;
|
|
CMBBaseAppObjMap::iterator it;
|
CMBBaseAppObj *pBaseAppObj = NULL;
|
|
for( it = m_mapAppObj.begin();it != m_mapAppObj.end();it++ )
|
{
|
pBaseAppObj = it->second;
|
if( pBaseAppObj->IsKindOf(RUNTIME_CLASS(CMBPsnAppInfo)) )
|
{
|
CMBPsnAppInfo *pAppInfo = (CMBPsnAppInfo *)pBaseAppObj;
|
CMBPsnCabinetInfo *pCabinetInfo = ( CMBPsnCabinetInfo * )pAppInfo->GetCabinetObj( ar[0] );
|
if( pCabinetInfo != NULL )
|
{
|
if( ar.GetCount() == 1 ){
|
pReturnObj = pCabinetInfo;
|
return pReturnObj;
|
}
|
|
CMBPsnCatalogMgr *pCatalogMgr = pCabinetInfo->GetCatalogMgr();
|
for( int i = 1;i < ar.GetCount();i++ )
|
{
|
CMBPsnCatalogInfo *pCatalogInfo = pCatalogMgr->GetCatalogInfo(ar[i]);
|
if( ar.GetCount() - 1 == i )
|
{
|
pReturnObj = pCatalogInfo;
|
return pReturnObj;
|
}
|
if( pCatalogInfo == NULL )
|
break;
|
pCatalogMgr = pCatalogInfo->GetCatalogMgr();
|
|
}
|
}
|
}
|
else if( pBaseAppObj->IsKindOf(RUNTIME_CLASS(CMBAppInfo)) )
|
{
|
CMBAppInfo *pAppInfo = (CMBAppInfo *)pBaseAppObj;
|
CMBCabinetInfo *pCabinetInfo = ( CMBCabinetInfo * )pAppInfo->GetCabinetObj( ar[0] );
|
if( pCabinetInfo != NULL )
|
{
|
if( ar.GetCount() == 1 ){
|
pReturnObj = pCabinetInfo;
|
return pReturnObj;
|
}
|
|
CMBCatalogMgr *pCatalogMgr = pCabinetInfo->GetCatalogMgr();
|
for( int i = 1;i < ar.GetCount();i++ )
|
{
|
CMBCatalogInfo *pCatalogInfo = pCatalogMgr->GetCatalogInfo(ar[i]);
|
if( ar.GetCount() - 1 == i )
|
{
|
pReturnObj = pCatalogInfo;
|
return pReturnObj;
|
}
|
if( pCatalogInfo == NULL )
|
break;
|
pCatalogMgr = pCatalogInfo->GetCatalogMgr();
|
}
|
}
|
}
|
}
|
|
return pReturnObj;
|
}
|
|
|
//<Body><App ID='{AFA3DB92-CB80-43A7-B522-85DED0ED773B}' Order='0' DefCode='9001' BkColor='#000000' TxtColor='#000000' FrameType='0' ImgFontStyle='fu-Function'><Name>Èí¼þÉÕÖÆ</Name><Param>{'mastercls':{'cls_id':'0031','cls_name':'µç¿Ø×ܳÉ','key_attr':'CODE','key_attrname':'ÎïÁϱàÂë','name_attr':'NAME','name_attrname':'Ãû³Æ'},'composecls':{'cls_id':'0032','cls_name':'Èí¼þ'},'datacls':{'cls_id':'0030','cls_name':'µç¿ØÈí¼þ'},'groupset':{'group':'1','attr':'TYPE','attr_name':'Èí¼þÀàÐÍ'},'qr_code_set':[{'clsid':'0031','attr':'CODE'},{'clsid':'0030','attr':'SOFT_CODE'}]}</Param></App></Body>
|
bool CMBAppMgr::ParseXml( CString strXml,CMBBaseAppObjVector &vectorAppObj,CString &strErrInfo )
|
{
|
vectorAppObj.clear();
|
|
pugi::xml_document xmlDoc;
|
|
if (!xmlDoc.load(strXml))
|
{
|
return false;
|
}
|
pugi::xml_node form = xmlDoc.child(_T("Body")).child(_T("App"));
|
for(pugi::xml_node node = form; node; node = node.next_sibling(_T("App")))
|
{
|
CMBAreaAppInfo *pAreaAppInfo = new CMBAreaAppInfo();
|
pAreaAppInfo->m_strID = node.attribute(_T("ID")).value();
|
pAreaAppInfo->m_strName = node.child_value(_T("Name"));
|
pAreaAppInfo->m_strDefCode = node.attribute(_T("DefCode")).value();
|
pAreaAppInfo->m_strBkColor = node.attribute(_T("BkColor")).value();
|
pAreaAppInfo->m_strOrder = node.attribute(_T("Order")).value();
|
pAreaAppInfo->m_strFolder = node.attribute(_T("Folder")).value();
|
pAreaAppInfo->m_strTxtColor = node.attribute(_T("TxtColor")).value();
|
pAreaAppInfo->m_strFrameType = node.attribute(_T("FrameType")).value();
|
pAreaAppInfo->m_strImgFontStyle = node.attribute(_T("ImgFontStyle")).value();
|
pAreaAppInfo->m_strParam = node.child_value(_T("Param"));
|
pAreaAppInfo->m_strParam.Replace(_T("\\"),_T(""));
|
|
if( !AddApp(pAreaAppInfo) )
|
{
|
delete pAreaAppInfo;
|
pAreaAppInfo = NULL;
|
continue;
|
}
|
vectorAppObj.push_back(pAreaAppInfo);
|
}
|
|
return true;
|
}
|