📄 mminwsimulatordlg.cpp
字号:
/*****************************************************************************
* 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 + -