⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nwgcmlhandler.cpp

📁 mtk simulator v2 new source code
💻 CPP
📖 第 1 页 / 共 3 页
字号:
/*****************************************************************************
*  Copyright Statement:
*  --------------------
*  This software is protected by Copyright and the information contained
*  herein is confidential. The software may not be copied and the information
*  contained herein may not be used or disclosed except with the written
*  permission of MediaTek Inc. (C) 2005
*
*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
*
*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/
/**************************************************************

	FILENAME	: NWGCMLHandler.cpp

  	PURPOSE		: It is the middle layer between the XML layer and the MMI intyerface
					layer.

	REMARKS		: nil

	AUTHOR		:  Vikram

	DATE		: Oct 10,03

**************************************************************/

#include "stdafx.h"
#include "resource.h"
//#include "MMINWSimulator.h"
#include "NWGCMLHandler.h"
#include "ObjectSearch.h"
#include "GCMLGenerator.h"
//#ifdef _DEBUG
//#undef THIS_FILE
//static char THIS_FILE[]=__FILE__;
//#define new DEBUG_NEW
//#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

//void CNWGCMLHandler::FreeAll();

CNWGCMLHandler::CNWGCMLHandler()//:CDCMLHandler()
{
}

CNWGCMLHandler::CNWGCMLHandler(LPTSTR pFileName):CDCMLHandler(pFileName)
{
}

CNWGCMLHandler::~CNWGCMLHandler()
{

}

/**************************************************************

	FUNCTION NAME		: GetDataList

  	PURPOSE				: Return a list of all data objects to the upper layer

	INPUT PARAMETERS	: nil

	OUTPUT PARAMETERS	: nil

	RETURNS				: CPtrList*

	REMARKS				: This function looks for all data lists in the XML.
							Makes objects of these data lists and returns a list of 
							objects.

**************************************************************/
 

CPtrList* CNWGCMLHandler::GetDataList()
{
	MSXML::IXMLDOMNodeList*		pNodeList; 
	MSXML::IXMLDOMNode*			pNode; 
	UINT16	iCount	=	0;
	INT32	nTotalNodes			=	0;
	CPtrList*	pPtrList	=	NULL;
	CDataList*	pData	=	NULL;

	if(GetTotalNodesOfType(TAG_DATALIST,pNodeList,&nTotalNodes) == SUCCESS)
	{
		while(nTotalNodes)
		{
			if(!pPtrList)
				ALLOCATE_MEM_ARR(pPtrList,CPtrList,10);
			pNodeList->nextNode(&pNode);
			ALLOCATE_MEM(pData,CDataList);
			GetDataListDetails(pNode,*pData);
			pPtrList->AddTail(pData);
			--nTotalNodes;
		}
	}

	return pPtrList;
}

/**************************************************************

	FUNCTION NAME		: GetDataTypeList

  	PURPOSE				: Return a list of all datatype objects to the upper layer

	INPUT PARAMETERS	: nil

	OUTPUT PARAMETERS	: nil

	RETURNS				: CPtrList*

	REMARKS				: This function looks for all datatype lists in the XML.
							Makes objects of these datatype lists and returns a list of 
							objects.

**************************************************************/
 

CPtrList* CNWGCMLHandler::GetDataTypeList()
{
	MSXML::IXMLDOMNodeList*		pNodeList; 
	MSXML::IXMLDOMNode*			pNode; 
	MSXML::IXMLDOMNamedNodeMap*		pNodeMap	=	NULL;

	UINT16	iCount	=	0;
	INT32	nTotalNodes			=	0;
	LPTSTR	pVal	=	NULL;
	CPtrList*	pPtrList	=	NULL;
	CDataType*	pDataype	=	NULL;

	if(GetTotalNodesOfType(TAG_DATATYPE,pNodeList,&nTotalNodes) == SUCCESS)
	{
		while(nTotalNodes)
		{
			if(!pPtrList)
				ALLOCATE_MEM_ARR(pPtrList,CPtrList,10);
			pNodeList->nextNode(&pNode);
			pDataype = new CDataType;
			//ALLOCATE_MEM(pDataype,CDataType);
			pNodeMap = GetAllAttributes(pNode);
			if(pNodeMap)
			{
				GetAttributeValue(pNodeMap,TAG_NAME,pVal);
				if(pVal){
					pDataype->SetName(CString(pVal));
					DELETE_MEM_ARR(pVal);
				}
				GetAttributeValue(pNodeMap,TAG_SIZE,pVal);
				if(pVal){
					pDataype->SetSize(_ttoi(CString(pVal)));
					DELETE_MEM_ARR(pVal);
				}
			}
			pPtrList->AddTail(pDataype);
			--nTotalNodes;
		}//while(nTotalNodes)
	}
	return pPtrList;
}
///kmalik added the support for getting the application list from xml
CPtrList* CNWGCMLHandler::GetApplicationList()
{
	MSXML::IXMLDOMNodeList*		pNodeList; 
	MSXML::IXMLDOMNode*			pNode; 
	MSXML::IXMLDOMNamedNodeMap*		pNodeMap	=	NULL;

	UINT16	iCount	=	0;
	INT32	nTotalNodes			=	0;
	LPTSTR	pVal	=	NULL;
	CPtrList*	pPtrList	=	NULL;
	CApplication*	pApp	=	NULL;

	if(GetTotalNodesOfType(TAG_APPLICATION,pNodeList,&nTotalNodes) == SUCCESS)
	{
		while(nTotalNodes)
		{
			if(!pPtrList)
				ALLOCATE_MEM_ARR(pPtrList,CPtrList,10);
			pNodeList->nextNode(&pNode);
			pApp = new CApplication;
			//ALLOCATE_MEM(pDataype,CDataType);
			pNodeMap = GetAllAttributes(pNode);
			if(pNodeMap)
			{
				GetAttributeValue(pNodeMap,TAG_ID,pVal);
				if(pVal){
					pApp->SetAppId(_ttoi(CString(pVal)));
					DELETE_MEM_ARR(pVal);
				}
				GetAttributeValue(pNodeMap,TAG_NAME,pVal);
				if(pVal){
					pApp->SetApplicationName(CString(pVal));
					DELETE_MEM_ARR(pVal);
				}
			}
			pPtrList->AddTail(pApp);
			--nTotalNodes;
		}//while(nTotalNodes)
	}
	return pPtrList;
}

/**************************************************************

	FUNCTION NAME		: GetFormatsList

  	PURPOSE				: Return a list of all format objects to the upper layer

	INPUT PARAMETERS	: nil

	OUTPUT PARAMETERS	: nil

	RETURNS				: CPtrList*

	REMARKS				: This function looks for all format in the XML.
							Makes objects of these formats and returns a list of 
							objects.

**************************************************************/
 

CPtrList* CNWGCMLHandler::GetFormatsList()
{
	MSXML::IXMLDOMNodeList*		pNodeList; 
	MSXML::IXMLDOMNode*			pNode; 
	UINT16	iCount	=	0;
	INT32	nTotalNodes			=	0;
	CPtrList*	pPtrList	=	NULL;	
	CPtrList*	pDataList	=	NULL;
	CPtrList*	pDataTypeList	=	NULL;
	CFormat*	pFormat	=	NULL;

	if(GetTotalNodesOfType(TAG_FORMATS,pNodeList,&nTotalNodes) == SUCCESS)
	{
		pDataList = GetDataList();
		pDataTypeList = GetDataTypeList();
		while(nTotalNodes)
		{
			if(!pPtrList)
				ALLOCATE_MEM_ARR(pPtrList,CPtrList,10);
			pNodeList->nextNode(&pNode);
			ALLOCATE_MEM(pFormat,CFormat);
			GetFormatDetails(pNode,*pFormat,pDataList,pDataTypeList);
			pPtrList->AddTail(pFormat);
			--nTotalNodes;
		}
	}

	return pPtrList;
}

/**************************************************************

	FUNCTION NAME		: GetDataListDetails

  	PURPOSE				: Gets the Data list informationn object from DOM node

	INPUT PARAMETERS	: MSXML::IXMLDOMNode*

	OUTPUT PARAMETERS	: CDataList

	RETURNS				: ERR

	REMARKS				: This function creates a DataList object out of the DOM node 
							and passes the object as an output paramater

**************************************************************/

ERR CNWGCMLHandler::GetDataListDetails(MSXML::IXMLDOMNode* pNode, CDataList& data)
{
	MSXML::IXMLDOMNode*		pChildNode	=	NULL;
	MSXML::IXMLDOMNamedNodeMap*		pNodeMap	=	NULL;
	MSXML::IXMLDOMNodeList*		pChildNodeList; 
	LPTSTR		pVal	=	NULL;

	pNodeMap = GetAllAttributes(pNode);
	if(pNodeMap)
	{
		GetAttributeValue(pNodeMap,TAG_NAME,pVal);
		if(pVal){
			data.SetName(CString(pVal));
			DELETE_MEM_ARR(pVal);
		}
		//get default data set name
		GetAttributeValue(pNodeMap,TAG_DEFAULT,pVal);
		if(pVal){
			data.SetDefault(CString(pVal));
			DELETE_MEM_ARR(pVal);
		}
		
		RELEASE_OBJECT(pNodeMap)
	}

	if(GetAllChildren(pNode,pChildNodeList) == SUCCESS)
	{
		long iListSize = GetListSize(pChildNodeList);
		while(iListSize)
		{
			GetNextNode(pChildNodeList,pChildNode);
			CData	dataObj;

			dataObj.GetValueList().RemoveAll();
			if(GetDataDetails(pChildNode,dataObj) == SUCCESS)
			{
				data.AddValue(dataObj);
			}
			RELEASE_OBJECT(pChildNode);
			--iListSize;
		}
		RELEASE_OBJECT(pChildNodeList);
	}

	return SUCCESS;
}


/**************************************************************

	FUNCTION NAME		: GetDataDetails

  	PURPOSE				: Gets the Data object informationn object from DOM node

	INPUT PARAMETERS	: MSXML::IXMLDOMNode*

	OUTPUT PARAMETERS	: CData

	RETURNS				: ERR

	REMARKS				: This function creates a Data object out of the DOM node 
							and passes the object as an output paramater

**************************************************************/


ERR CNWGCMLHandler::GetDataDetails(MSXML::IXMLDOMNode* pNode, CData& data)
{
	MSXML::IXMLDOMNamedNodeMap*		pNodeMap	=	NULL;
	MSXML::IXMLDOMNode*		pChildNode	=	NULL;
	MSXML::IXMLDOMNodeList*		pChildNodeList; 

	LPTSTR		pVal	=	NULL;
	pNodeMap = GetAllAttributes(pNode);
	if(pNodeMap)
	{
		GetAttributeValue(pNodeMap,TAG_NAME,pVal);
		if(pVal){
			data.SetName(CString(pVal));
			DELETE_MEM_ARR(pVal);
		}
		//added for description
		GetAttributeValue(pNodeMap,TAG_DESCRIPTION,pVal);
		if(pVal)
		{
			data.SetDescription(CString(pVal));
			DELETE_MEM_ARR(pVal);
		}
		//added for frequency
		GetAttributeValue(pNodeMap,TAG_FREQUENCY,pVal);
		if(pVal)
		{
			data.SetFrequency(_ttoi(CString(pVal)));
			DELETE_MEM_ARR(pVal);
		}
		//added for timer
		GetAttributeValue(pNodeMap,TAG_TIMER,pVal);
		if(pVal)
		{
			data.SetTimer(_ttoi(CString(pVal)));
			DELETE_MEM_ARR(pVal);
		}

		if(GetAllChildren(pNode,pChildNodeList) == SUCCESS)
		{
			long iListSize = GetListSize(pChildNodeList);
			while(iListSize)
			{
				CValue		val;

				GetNextNode(pChildNodeList,pChildNode);
				pVal = GetAttributeValue(pChildNode,TAG_NAME);
				if(pVal)
				{
					val.SetName(pVal);
					DELETE_MEM_ARR(pVal);
				}

				pVal = GetAttributeValue(pChildNode,TAG_DESCRIPTION);
				if(pVal)
				{
					val.SetDescription(pVal);
					DELETE_MEM_ARR(pVal);
				}

				pVal = GetAttributeValue(pChildNode,TAG_SOURCE);
				if(pVal)
				{
					CString csType(pVal);
					int	nPos=0;
					if( (nPos=csType.Find(_T("[ct]"))) != -1)
					{
						val.SetSourceType(CONSTANT);
						val.SetSourceValue(csType.Mid(nPos+4));
						
					}
					else if((nPos=csType.Find(_T("[dlg]"))) !=-1)
					{
						val.SetSourceType(DLG);
						val.SetSourceValue(csType.Mid(nPos+5));

					}
					else if((nPos=csType.Find(_T("[file]"))) !=-1)
					{
						val.SetSourceType(FL);
						val.SetSourceValue(csType.Mid(nPos+6));

					}
					else if((nPos=csType.Find(_T("[req]"))) !=-1)
					{
						val.SetSourceType(REQ);
						val.SetSourceValue(csType.Mid(nPos+5));

					}
					


					DELETE_MEM_ARR(pVal);
				}
				data.AddValue(val);
				RELEASE_OBJECT(pChildNode);
				--iListSize;
			}
			RELEASE_OBJECT(pChildNodeList);
		}

	}
	return SUCCESS;


}


/**************************************************************

	FUNCTION NAME		: GetFormatDetails

  	PURPOSE				: Gets the Format object informationn object from DOM node

	INPUT PARAMETERS	: MSXML::IXMLDOMNode*,CPtrList* pDataList,CPtrList* pDataTypeList)

	OUTPUT PARAMETERS	: CFormat

	RETURNS				: ERR

	REMARKS				: This function looks for the CFormat object inside the DOM by matching it
							with thr Data objects list.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -