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

📄 mminwsimulatordlg.cpp

📁 mtk simulator v2 new source code
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		}
	
		break;
		}
	default: break;
	}

	return CDialog::PreTranslateMessage(pMsg);
}




void CMMINWSimulatorDlg::OnMenuExit()
{
	ShowWindow(SW_HIDE);
}

void CMMINWSimulatorDlg::OnAboutNwssimeditor()
{
	// TODO: Add your command handler code here
	CAboutDialog cad;
	cad.SetTheLibraryIdentifier(library_identifier);
	cad.DoModal ();
}

void CMMINWSimulatorDlg::OnViewDisplaytype()
{
	// TODO: Add your command handler code here
	DisplayType disptype;
	disptype.DoModal ();
}
void CMMINWSimulatorDlg::OnGlobalResponses()
{
	CRespModeChg ChangeMode;
	ChangeMode.SetTheLibraryIdentifier(library_identifier);
	ChangeMode.DoModal();

	// TODO: Add your command handler code here
}

void CMMINWSimulatorDlg::OnGlobalFrequencyandtimer()
{
	CGlobalFrequencyTimerChange global_frequency_timer_change_object;
        global_frequency_timer_change_object.SetLibraryIdentifier(library_identifier);
	global_frequency_timer_change_object.DoModal();
}

/*--------------------- Send Message to MMI ------------------------------------*/
void CMMINWSimulatorDlg::SendMessageToMMI(CMessage *clMessage,CString strDataSet)
{
	//now finally send the message to socket for this message
	//check the plugin name if exist then call it straightway 
	UINT32 iSize = 0,freq,timer;
	int loopcounter;
	CString tempstr,strPlugin = clMessage->GetPluginName();
	MYQUEUE stMsgQueue;
	freq = m_pMessageManager->GetFreq(clMessage->GetMessageId(),strDataSet);  
	// Check if frequency is >1

	if (freq>1)
	{
		//get default timer
		timer= m_pMessageManager->GetTimer (clMessage->GetMessageId(),strDataSet);  
		SendMessageDetails *messagedetailpacket;
		messagedetailpacket = (SendMessageDetails*) malloc(sizeof(SendMessageDetails));
		
		messagedetailpacket->clMessage   = clMessage;
		messagedetailpacket->strDataList = (char *)malloc( sizeof(char)* strDataSet.GetLength());
		for(loopcounter=0;loopcounter<strDataSet.GetLength();loopcounter++)
		{
			messagedetailpacket->strDataList[loopcounter] = strDataSet.GetAt(loopcounter);
		}
		messagedetailpacket->strDataList[loopcounter]=0; // Null
		messagedetailpacket->Freq		 = freq-1; 
		messagedetailpacket->Timer		 = timer;
		messagedetailpacket->TimerId	 = NULL;
		SendMessageFreq(clMessage,strDataSet);
		CreateTimer(messagedetailpacket);
	}
	else
	{
		if(strPlugin ==_T("")) // frequency is 1 and no plugin
		{
			void *pData = NULL;
 			pData = GetDataMemoryForMessage(clMessage,&iSize,strDataSet);
			if(pData!=NULL)  
			{
				stMsgQueue.oslSrcId = MOD_L4C;
				stMsgQueue.oslDestId = PRT_EVENT;
				stMsgQueue.oslMsgId = clMessage->GetMessageId();
				stMsgQueue.oslDataPtr = pData;
				stMsgQueue.oslPeerBuffPtr = NULL;
				myNSRThread->WriteToSocket(&stMsgQueue);	
			}
			else
			AMLOGINFO(_T("Memory NULL Buffer error for Outgoing Message"));
		}				
		else
		{
		//call the pluggin straightaway
			void *pData = PluginFunctionForOutGoingMessage(strPlugin);		
			stMsgQueue.oslSrcId = MOD_L4C;
			stMsgQueue.oslDestId = PRT_EVENT;
			stMsgQueue.oslMsgId = clMessage->GetMessageId();
			stMsgQueue.oslDataPtr = pData;
			stMsgQueue.oslPeerBuffPtr = NULL;		
			myNSRThread->WriteToSocket(&stMsgQueue);		
		}
	}
	
}


void CMMINWSimulatorDlg::SendMessageFreq(CMessage *clMessage,CString strDataList)
{
	UINT32 iSize = 0;
	CString strPlugin = clMessage->GetPluginName();
	MYQUEUE stMsgQueue;
	
	
		if(strPlugin ==_T("")) // frequency is 1 and no plugin
		{
			void *pData = NULL;
			pData = GetDataMemoryForMessage(clMessage,&iSize,strDataList);
			if(pData!=NULL)  
			{
				stMsgQueue.oslSrcId = MOD_L4C;
				stMsgQueue.oslDestId = PRT_EVENT;
				stMsgQueue.oslMsgId = clMessage->GetMessageId();

				stMsgQueue.oslDataPtr = pData;
				stMsgQueue.oslPeerBuffPtr = NULL;
	
				myNSRThread->WriteToSocket(&stMsgQueue);	
			}
			else
			AMLOGINFO(_T("Memory NULL Buffer error for Outgoing Message"));
		}			
		else
		{
			//call the pluggin straightaway
			void *pData = PluginFunctionForOutGoingMessage(strPlugin);		
				stMsgQueue.oslSrcId = MOD_L4C;
				stMsgQueue.oslDestId = PRT_EVENT;
				stMsgQueue.oslMsgId = clMessage->GetMessageId();
				stMsgQueue.oslDataPtr = pData;
				stMsgQueue.oslPeerBuffPtr = NULL;
				myNSRThread->WriteToSocket(&stMsgQueue);	
			}
		
}  
 
void CMMINWSimulatorDlg::SendMessageFreq(CMessage *clMessage,CData* dataset)
{
	UINT32 iSize = 0;
	MYQUEUE stMsgQueue;
	void *pData = NULL;
	CFormat * format_for_msg_to_be_sent =m_pMessageManager->GetFormatForMessage(clMessage);
	CList<CVar,CVar&>& varlist_for_msg_to_be_sent = format_for_msg_to_be_sent->GetVarList();
	pData = m_pMessageManager->GetBufferForSocket(clMessage,*dataset,varlist_for_msg_to_be_sent,&iSize);
	if(pData!=NULL)  
	{
		stMsgQueue.oslSrcId = MOD_L4C;
		stMsgQueue.oslDestId = PRT_EVENT;
		stMsgQueue.oslMsgId = clMessage->GetMessageId();
		stMsgQueue.oslDataPtr = pData;
		stMsgQueue.oslPeerBuffPtr = NULL;
		myNSRThread->WriteToSocket(&stMsgQueue);	
	}
	else
	AMLOGINFO(_T("Memory NULL Buffer error for Outgoing Message"));	
}  

void CMMINWSimulatorDlg::CreateTimer(SendMessageDetails *messagedetailpacket)
{
	UINT32 Timer;
	messagedetailpacket->TimerId = m_pMessageManager->m_TimerList->GetCount()+1; 
	 m_pMessageManager->m_TimerList->AddTail(messagedetailpacket);
	Timer = messagedetailpacket->Timer;
	if (Timer ==0)// because timer can never be 0 for freq >1 
		Timer =1;
	SetTimer(messagedetailpacket->TimerId, Timer*1000,0); 
}

void CMMINWSimulatorDlg::OnTimer(UINT nIDEvent)
{
	// TODO: Add your message handler code here and/or call default
	CDialog::OnTimer(nIDEvent);
	SendMessageDetails *pSendMsgDetail;
	if(	 m_pMessageManager->m_TimerList->GetCount())
	{
		for(POSITION pos =  m_pMessageManager->m_TimerList->GetHeadPosition();pos!=NULL;)
		{
			pSendMsgDetail = (SendMessageDetails*)  m_pMessageManager->m_TimerList->GetAt(pos);
			if(pSendMsgDetail->TimerId == nIDEvent)
			{	
				if(strcmp("-1",pSendMsgDetail->strDataList))
				{
				SendMessageFreq(pSendMsgDetail->clMessage,CString(pSendMsgDetail->strDataList));//pSendMsgDetail->strDataList); 
				}
				else
				{
					SendMessageFreq(pSendMsgDetail->clMessage,pSendMsgDetail->dataset);//pSendMsgDetail->strDataList); 
				}
				pSendMsgDetail->Freq = pSendMsgDetail->Freq-1;
				if(pSendMsgDetail->Freq ==0)
				{
					m_pMessageManager->m_TimerList->RemoveAt(pos); 
					KillTimer(nIDEvent);

				}
				break;
			}
			 m_pMessageManager->m_TimerList->GetNext(pos);
		}
    }
}

void CMMINWSimulatorDlg::OnLanguageEnglish()
{
	library_identifier = default_library_identifier;
	AfxSetResourceHandle(library_identifier);
	LocaleChangeJobs();
	
}

void CMMINWSimulatorDlg::OnLanguageChinese()
{
	library_identifier = LoadLibrary(_T("ChineseLanguage.dll")); // You should change this to suit your project

	
	if (!library_identifier)
	{
		AfxMessageBox(IDS_STRING_CANT_OPEN_DLL);
		library_identifier = default_library_identifier;
	}
	else
	{
		AfxSetResourceHandle(library_identifier);
	LocaleChangeJobs();
	}
	
	
}

void CMMINWSimulatorDlg::LocaleChangeJobs()
{
	CString string_for_button;
	LoadString(library_identifier,IDS_STRING_OUTGOING_MSG_TO_MMI,string_for_button.GetBuffer(MAX_LANG_RES_STRING_LEN+1), MAX_LANG_RES_STRING_LEN);
	outgoing_msg_grp_box.SetWindowText(string_for_button);
	LoadString(library_identifier,IDS_STRING_INC_MSGS_FROM_MMI, string_for_button.GetBuffer(MAX_LANG_RES_STRING_LEN+1), MAX_LANG_RES_STRING_LEN);
	incoming_msg_grp_box.SetWindowText(string_for_button);
	//change of column header text......
	LVCOLUMN col_info;
	LoadString(library_identifier,IDS_STRING_MESSAGE_ID, stringID_to_string.GetBuffer(MAX_LANG_RES_STRING_LEN+1),MAX_LANG_RES_STRING_LEN);
	col_info.cchTextMax = 20;
	col_info.cx = 70;
	col_info.mask = LVCF_TEXT;
	col_info.fmt = LVCFMT_LEFT;
	col_info.iOrder = 0;
	col_info.iSubItem = 0;
	col_info.pszText = (PU16)(stringID_to_string.GetBuffer(0));
	m_lstIncomingMessages.SetColumn(0,&col_info);
	m_lstOutGoingMessages.SetColumn(0,&col_info);

	LoadString(library_identifier,IDS_STRING_MESSAGE_NAME,stringID_to_string.GetBuffer(MAX_LANG_RES_STRING_LEN+1),MAX_LANG_RES_STRING_LEN);
	col_info.cx = 300;
	col_info.iOrder = 1;
	col_info.iSubItem = 1;
	col_info.pszText = (PU16)(stringID_to_string.GetBuffer(0));
	m_lstIncomingMessages.SetColumn(1,&col_info);
	m_lstOutGoingMessages.SetColumn(1,&col_info);

	LoadString(library_identifier,IDS_STRING_MESSAGE_TIME,stringID_to_string.GetBuffer(MAX_LANG_RES_STRING_LEN+1),MAX_LANG_RES_STRING_LEN);
	col_info.iOrder = 2;
	col_info.iSubItem = 2;
	col_info.pszText =(PU16)(stringID_to_string.GetBuffer(0));	
	m_lstIncomingMessages.SetColumn(2,&col_info);
	m_lstOutGoingMessages.SetColumn(2,&col_info);	

	//title bar text
	LoadString(library_identifier,IDS_STRING_DLG_NWS,stringID_to_string.GetBuffer(MAX_LANG_RES_STRING_LEN+1),MAX_LANG_RES_STRING_LEN);
	SetWindowText(stringID_to_string);

		CMenu * m_pMenuNew;
	CMenu *pMenuCurrent = GetMenu();
	m_pMenuNew = new CMenu;
	pMenuCurrent->DestroyMenu();
	//delete pMenuCurrent;
		// Load our new resource menu
	m_pMenuNew->LoadMenu(IDR_MENU_DROP_DOWN);
		// Display the new menu
	SetMenu(m_pMenuNew);
	// TODO: Add your command handler code here
}

void* CMMINWSimulatorDlg::GetDataMemoryForMessage(CMessage *pMessage,UINT32 *iSize,CString strDataSet)
{
	void *vTempRet= NULL;
	//return the void * for the 
	CFormat *pFormat;// = new CFormat();	
	CDataList dataList;	
	CData dataObj;		
	pFormat = m_pMessageManager->GetFormatForMessage(pMessage);
	if(pFormat!=NULL)
	{
		if(!(pMessage->GetFormat().CompareNoCase(pFormat->GetName())))				
		{
			//the format is found 
			//now check if the input mode is dialog and also the dataset name is not there...then we 
			//have to pop up a generic dialog...
			
			//if input mode is dialog
			// Dialog will pop up
			if((IsClickOnIncomingMsgList==1)&&(RsponseMode==RSP_MANUAL)&& (!pFormat->GetInputMode().CompareNoCase(_T("Dialog"))))
			{
  				CGenericInput gen_input_dlg;
				INPTRLIST * IncomingMessagePtr = NULL;
				
				if(m_IncomingMsgDataList->GetCount())
				{

					INPTRLIST *IncomingMsg;

					for(POSITION pos = m_IncomingMsgDataList->GetHeadPosition();pos!=NULL;m_IncomingMsgDataList->GetNext(pos))
					{
						IncomingMsg = (INPTRLIST *) m_IncomingMsgDataList->GetAt(pos);
						if(IncomingMsg->stMessage.nMsgType==ClickedMsgId)
						{
							//IncomingMessagePtr = (INPTRLIST *) m_IncomingMsgDataList->GetTail() ;
							IncomingMessagePtr = (INPTRLIST *) m_IncomingMsgDataList->GetAt(pos);
							break;
						}	
					}
				}

  				gen_input_dlg.OutGoingMsgPtr = (COutgoingMessage *)pMessage; 
				if(IncomingMessagePtr)
  				gen_input_dlg.IncomingMsgID =  IncomingMessagePtr->stMessage.nMsgType;
				gen_input_dlg.SetLibraryIdentifier(library_identifier);
  				gen_input_dlg.DoModal();
				IsClickOnIncomingMsgList=0;
  				if(!gen_input_dlg.data_set_to_be_sent.GetName().CompareNoCase(_T("")))
  					return(NULL);
  				vTempRet = m_pMessageManager->GetBufferForSocket(pMessage,gen_input_dlg.data_set_to_be_sent,m_pMessageManager->GetFormatForMessage(gen_input_dlg.OutGoingMsgPtr)->GetVarList(),iSize);
  					return vTempRet;
			}
			else // if input mode is dataset
			{
				CList<CVar,CVar&>& varList = pFormat->GetVarList();
				dataList = pFormat->GetDataList();
				CList<CData,CData&>& data= dataList.GetData();				
				if((data.GetCount() > 0) && (varList.GetCount() > 0))
				{					
					for( POSITION datapos = data.GetHeadPosition(); datapos != NULL;)
					{
						dataObj = (data.GetNext( datapos ));
						if(strDataSet.GetLength())
						{
							if(!dataObj.GetName().CompareNoCase(strDataSet))
							{
								vTempRet = m_pMessageManager->GetBufferForSocket(pMessage,dataObj,varList,iSize);//matched the data list
								return vTempRet;
							}
						}
						else if(!dataObj.GetName().CompareNoCase(dataList.GetDefault()))
						{
							//default data object stuffing to be done
							vTempRet = m_pMessageManager->GetBufferForSocket(pMessage,dataObj,varList,iSize);
							return vTempRet;
						}
						
					}
					//handle the case in case both the above condition becomes false
					vTempRet = m_pMessageManager->GetBufferForSocket(pMessage,dataObj,varList,iSize);
					return vTempRet;
								
				}//end of type check
			}//end of check dialog
		}//		
	}
	else
		AMLOGERROR(_T("GetData Memory for  Message error"));
	return  vTempRet;
}

void CMMINWSimulatorDlg::OnHelpContents()
{
	system( "Notepad  ..\\..\\tool\\QMMINWSimulator\\help.txt");
}

LRESULT CMMINWSimulatorDlg::OnPostQuitMessage(WPARAM wParam, LPARAM lParam)
{
	PostQuitMessage(0);
	return TRUE;
	//send the postquitmessage to itself so as to close down
}

⌨️ 快捷键说明

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