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

📄 mminwsimulatordlg.cpp

📁 mtk simulator v2 new source code
💻 CPP
📖 第 1 页 / 共 5 页
字号:
/*****************************************************************************
*  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	: MMINWSimulatorDlg.cpp

  	PURPOSE		: It is the main UI file.

	REMARKS		: nil

	AUTHOR		:  Kuldeep

	DATE		: Oct 10,03

**************************************************************/
// MMINWSimulatorDlg.cpp : implementation file
//
#include "Afx.h"
#include "stdafx.h"
#include "GlobalDefines.h"
#include "AsyncSendMessage.h"
#include "NSRThread.h"
#include "NSWThread.h"
#include "ProtocolEvents.h"
#include "PopSelectMsgDlg.h"
#include "protocolevents.h"
#include "MMINWSimulatorDlg.h"
#include "TaskInit.h"
#include "DisplayType.h"
#include "MMSYSTEM.h"
#include "MsgAttributeChange.h"
#include "MessageSearch.h"
#include "AddEditDialog.h"
#include "mminwsimulatordlg.h"
#include "RespModeChg.h"
#include "Afxpriv.h"
#include "GlobalFrequencyTimerChange.h" 
#include "BootUpMsg.h"
#include "FreqUsedMsg.h"
#include "GenericInput.h"
#include "GCMLGenerator.h"
#include "AboutDialog.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#define RSP_MANUAL 1
#define RSP_AUTO   2

void* MyMallocDataPtr(U32 size);
extern CNSWThread *myNSWThread;
extern CNSRThread *myNSRThread;

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
/////////////////////////////////////////////////////////////////////////////


static UINT BASED_CODE buttons[] = 
{
	ID_BUTTON_MSG1,
	ID_BUTTON_MSG2,
	ID_BUTTON_MSG3,
	ID_BUTTON_MSG4,
	ID_BUTTON_MSG5,
    ID_BUTTON_MSG6,
	ID_BUTTON_MSG7,
	ID_BUTTON_MSG8,
	ID_BUTTON_MSG9,
	ID_BUTTON_MSG10,
};

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)	
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMMINWSimulatorDlg dialog

CMMINWSimulatorDlg::CMMINWSimulatorDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CMMINWSimulatorDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CMMINWSimulatorDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	IsClickOnIncomingMsgList=0;
}

void CMMINWSimulatorDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMMINWSimulatorDlg)
	DDX_Control(pDX, IDC_LIST_OUTGOING_MESSAGES, m_lstOutGoingMessages);
	DDX_Control(pDX, IDC_LIST_INCOMING_MESSAGES, m_lstIncomingMessages);
	//}}AFX_DATA_MAP
	DDX_Control(pDX, IDC_STATIC_OUTGOING_MSGS, outgoing_msg_grp_box);
	DDX_Control(pDX, IDC_STATIC_INC_MSGS, incoming_msg_grp_box);
}

BEGIN_MESSAGE_MAP(CMMINWSimulatorDlg, CDialog)
	//{{AFX_MSG_MAP(CMMINWSimulatorDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_WM_WINDOWPOSCHANGING()
	ON_MESSAGE(WM_SEND_MSG_SIM,OnMessageRecieve)
	ON_MESSAGE(WM_WRITE_MSG_SIM,OnMessageSend)
	ON_MESSAGE(WM_SEND_POP_MSG,OnPopUpSendMessage)
	ON_MESSAGE(WM_SEND_ASYNC_EVENT_MSG,OnSendAsyncMessage)
	ON_MESSAGE(WM_QUIT,OnPostQuitMessage)
	ON_NOTIFY(NM_CLICK, IDC_LIST_INCOMING_MESSAGES, OnClickListIncomingMessages)
	ON_WM_CLOSE()
	ON_MESSAGE(MM_MCINOTIFY,OnMciNotify)
	ON_COMMAND(ID_MENU_ASYNC_MESSAGES, OnMenuAsyncmsg)
	ON_COMMAND(ID_MENU_CHANGE_ATTRIBUTES, OnMenuChangeAttributes)
	ON_MESSAGE(WM_SEND_MSG_FROM_ADDEDIT,SendMsgWithPlugInFromAddEditDlg)
	
	//}}AFX_MSG_MAP	
	ON_COMMAND(ID_MENU_EDIT_ADD_DATA, OnMenuEditAddData)
	ON_COMMAND(ID_MENU_ASYNC_MESSAGES, OnMenuAsyncMessages)
	
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_INCOMING_MESSAGES, OnLvnItemchangedListIncomingMessages)
	ON_COMMAND(ID_MENU_EXIT, OnMenuExit)
	ON_COMMAND(ID_ABOUT_NWSSIMEDITOR, OnAboutNwssimeditor)
	ON_COMMAND(ID_VIEW_DISPLAYTYPE, OnViewDisplaytype)
	ON_COMMAND(ID_LANGUAGE_ENGLISH, OnLanguageEnglish)
	ON_COMMAND(ID_LANGUAGE_CHINESE, OnLanguageChinese)
ON_COMMAND(ID_GLOBAL_RESPONSES, OnGlobalResponses)
	ON_COMMAND_RANGE(ID_BUTTON_MSG1,ID_BUTTON_MSG10,SendMsgFromTBR)
//FX_MSG_MAP
//ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0xFFFF, OnToolTipText)
//ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, OnToolTipText)
	ON_NOTIFY_EX(TTN_NEEDTEXT,0,OnToolTipText)
//END_MESSAGE_MAP()
	ON_COMMAND(ID_GLOBAL_FREQUENCYANDTIMER, OnGlobalFrequencyandtimer)
	ON_WM_TIMER()
	ON_COMMAND(ID_HELP_CONTENTS, OnHelpContents)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMMINWSimulatorDlg message handlers

extern HWND PWHandle;//defined in hardwareplugin.cpp

BOOL CMMINWSimulatorDlg::OnInitDialog()
{	int  i;
	CString t1="Settings";
	CString t2="Sim Lock";
	CString t3="Phone Lock";
	CString t4="Gprs Type";
	CString t5="NW Band";

	CFile file;
	CDialog::OnInitDialog();
	// Add "About..." menu item to system menu.
	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);
	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	i=file.Open(INI_FILE_PATH,0);
	
	if (i==0)
	{	//itoa(22,ch,10);
		WritePrivateProfileString (t1,t2,_T("0"),INI_FILE_PATH);    
		WritePrivateProfileString (t1,t3,_T("0"),INI_FILE_PATH);    
		WritePrivateProfileString (t1,t4,_T("2"),INI_FILE_PATH);    
		WritePrivateProfileString (t1,t5,_T("2"),INI_FILE_PATH);    		
	}
	else
		file.Close();
	// TODO: Add extra initialization here
	m_IndexInIncomingMsgList = 0;
	m_IncomingMsgDataList = new CPtrList();
	
	
	//Get values for the library_identifier to know the right resource file for having strings
	SetTheLibraryIdentifier(AfxGetInstanceHandle());
	default_library_identifier = AfxGetInstanceHandle();
	
	//call the function to create the list 
	AMLOGINFO(_T("Inside the initDialog of MMISimulator Dialog routine"));
	InitializeControls();
	AMLOGINFO(_T("Initialization of the controls done in the main dialog"));
	StartSockets();
	AMLOGINFO(_T("Sockets started in the main dialog"));
	AMLOGINFO(_T("XML initialized in the main dialog"));
	/*creating an image list*/
	//m_ImageList = new CImageList();
	hNormalImageList = ImageList_Create(32, 
									32,
									ILC_MASK | ILC_COLOR32,
									100,
									50);
	//HIMAGELIST hList = m_ImageList.Create(16,16, ILC_COLOR8 |ILC_MASK , 1, 1);	
// Load the large icons
	CBitmap cBmpIn,cBmpOut;
	cBmpIn.DeleteObject();	
	cBmpOut.DeleteObject();	
	int n =ImageList_AddMasked(hNormalImageList, (HBITMAP)cBmpIn.operator HBITMAP(), RGB(0,0,0));
	n =ImageList_AddMasked(hNormalImageList, (HBITMAP)cBmpOut.operator HBITMAP(), RGB(0,0,0));
	//m_lstIncomingMessages.SetImageList((hNormalImageList,LVSIL_NORMAL)
	
    //ListView_SetImageList(m_lstIncomingMessages.m_hWnd,hNormalImageList,TVSIL_NORMAL);
	m_lstIncomingMessages.SendMessage(LVM_SETIMAGELIST,(WPARAM)(int) LVSIL_NORMAL ,(LPARAM)(HIMAGELIST) hNormalImageList);
    //m_lstIncomingMessages.SetImageList(m_ImageList,TVSIL_NORMAL); 
		//AMLOGINFO(_T("\"i\" is now: %d, Loglevel is: %s"), i, s);
		//AMLOGERROR(_T("\"i\" is now: %d, Loglevel is: %s"), i, s);
		//AMLOGDEVINFO(_T("\"i\" is now: %d, Loglevel is: %s"), i, s);
        m_pMessageManager = new CMessageManager();
	m_pMessageManager->InitializeXMLLists();
//ToolBar Initialisation......
	InitialiseToolBar();
	//initialize PWHandle for use in notify by mci device
	PWHandle=GetSafeHwnd();
/*-------------------- Implementing Bootup sequence --------------------------*/
	SendBootupMessage();
	/*----------------------------------------------------------------------------*/
	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);
	return TRUE;  // return TRUE  unless you set the focus to a control
}


void CMMINWSimulatorDlg::SetTheLibraryIdentifier(HINSTANCE lib_id)
{
	 library_identifier = lib_id;
	
}

void CMMINWSimulatorDlg::InitialiseToolBar()
{
	
	MostFreqMsgSeqBar.Create(WS_CHILD  | TBSTYLE_TOOLTIPS , CRect(10,10,90,25),this,IDR_TOOLBAR_MOSTFREQ_MSG);
	RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
	MostFreqMsgSeqBar.EnableToolTips(1);
	int button_number;
	//Initialise The MsgId Array
	CPtrList* FreqMsgGroupList = m_pMessageManager->m_pFreqList;
	CFreqUsedMsg* FreqMsg;
	button_number = 0;
	if(FreqMsgGroupList)
	{
	if(FreqMsgGroupList->GetCount())
	{
		for(POSITION pos = FreqMsgGroupList->GetHeadPosition();pos!=NULL;)
		{
			FreqMsg = (CFreqUsedMsg*)FreqMsgGroupList->GetNext(pos);
			break;
		}
	}
	CList<UINT32,UINT32>& FreqMsgList = FreqMsg->GetFreqUsedMessageList();
	if( FreqMsgList.GetCount())
	{
		for(POSITION pos = FreqMsgList.GetHeadPosition();pos!=NULL && button_number < MAXBUTTONS;)
		{
				MsgIdArray[button_number] = (UINT32) FreqMsgList.GetNext(pos);
				//MostFreqMsgSeqBar.EnableButton(buttons[button_number],0);
				CAsyncMessageSeq *pAsyncMessage;
				if(m_pMessageManager->m_plstAsyncMsg->GetCount() > 0)//check if emtpy message list 
				{	
					for( POSITION pos = m_pMessageManager->m_plstAsyncMsg->GetHeadPosition(); pos != NULL;)
					{
						pAsyncMessage = (CAsyncMessageSeq*)(m_pMessageManager->m_plstAsyncMsg->GetNext( pos )) ;
						if(MsgIdArray[button_number] == pAsyncMessage->GetMessageId())
						{						//enable only when the id is in the asyncseq list
							TBBUTTON struct_button_info;
							struct_button_info.fsState = TBSTATE_ENABLED;
							struct_button_info.fsStyle = TBSTYLE_BUTTON;
							struct_button_info.iBitmap = MostFreqMsgSeqBar.AddBitmap(1,2042+MsgIdArray[button_number]);
							struct_button_info.idCommand = buttons[button_number];
							MostFreqMsgSeqBar.AddButtons(1,&struct_button_info);
							button_number++;
							break;
						}
					}
				}
		}
	}
	}
	while(button_number <= MAXBUTTONS)  //disable the rest of the buttons....
	{
		MostFreqMsgSeqBar.EnableButton(buttons[button_number],0);     
		button_number++;
	}
	MostFreqMsgSeqBar.ShowWindow(SW_SHOW);
	

}
void CMMINWSimulatorDlg::SendMsg(UINT32 MsgId)
{
	
	CString MsgName;	
	CMessage *msg;	
	msg = m_pMessageManager->LocateMessageInList(m_pMessageManager->m_plstOutGoingMsg,MsgId );
	if(msg)
	{
		SendMessageToMMI(msg,_T(""));
	}
	else
	{
		char *dummy = (char*) malloc(sizeof(char)*10);
		AfxMessageBox(CString("Invalid Message Id :")+CString(itoa(MsgId,dummy,10))+CString("\nPlease check for XML Definations"));
		free(dummy);
	}
}


⌨️ 快捷键说明

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