📄 globalfrequencytimerchange.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).
*
*****************************************************************************/
// GlobalFrequencyTimerChange.cpp : implementation file
//
#include "stdafx.h"
#include "QMMINWSimulator.h"
#include "GlobalFrequencyTimerChange.h"
#include "OutgoingMessage.h"
#include "NWGCMLHandler.h"
#include "GlobalConstants.h"
IMPLEMENT_DYNAMIC(CGlobalFrequencyTimerChange, CDialog)
CGlobalFrequencyTimerChange::CGlobalFrequencyTimerChange(CWnd* pParent /*=NULL*/)
: CDialog(CGlobalFrequencyTimerChange::IDD, pParent)
{
dummy = (char*) malloc(sizeof(char)*20); // Just for some char operations like itoa
messagemanager = new CMessageManager();
TreeCtrlForFreqTimer.SetCheckButtonOperatable(0); // to make check button unoperateable
m_DialogStateChange = 0;
}
CGlobalFrequencyTimerChange::~CGlobalFrequencyTimerChange()
{
free(dummy); // Dealocating dummy
free(messagemanager);
}
void CGlobalFrequencyTimerChange::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_COMBO_FREQUENCY, mFreq);
DDX_Control(pDX, IDC_COMBO_TIMER, mTimer);
DDX_Control(pDX, IDC_EDIT_FREQ_TMR, total);
DDX_Control(pDX, IDC_CMB_DEFAULT_DATASET, cmbDefaultDataSet);
DDX_Control(pDX, IDC_STATIC_FREQ_TIMER_MODI, static_freq_timer);
DDX_Control(pDX, IDC_STATIC_FREQ_TIMER_MODI2, static_freq_timer_details);
DDX_Control(pDX, IDC_STATIC_TOTAL_FT, static_total_ft);
DDX_Control(pDX, IDC_STATIC_FREQU, static_freq);
DDX_Control(pDX, IDC_STATIC_TIMR, static_timer);
DDX_Control(pDX, IDCANCEL, close_button);
DDX_Control(pDX, IDOK, save_button);
DDX_Control(pDX, IDC_STATIC_FREQU2, static_dataset);
}
BEGIN_MESSAGE_MAP(CGlobalFrequencyTimerChange, CDialog)
ON_WM_WINDOWPOSCHANGING()
ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)
ON_MESSAGE(WM_SENDVALUE,OnClickChangeCTreeCtrl)
ON_CBN_SELCHANGE(IDC_COMBO_FREQUENCY, OnCbnSelchangeComboFrequency)
ON_CBN_SELENDOK(IDC_COMBO_FREQUENCY, OnCbnSelendokComboFrequency)
ON_CBN_EDITCHANGE(IDC_COMBO_FREQUENCY, OnCbnEditchangeComboFrequency)
ON_BN_CLICKED(IDOK, OnBnClickedOk)
ON_CBN_KILLFOCUS(IDC_COMBO_TIMER, OnCbnKillfocusComboTimer)
ON_CBN_SELCHANGE(IDC_COMBO_TIMER, OnCbnSelchangeComboTimer)
ON_CBN_SELENDOK(IDC_COMBO_TIMER, OnCbnSelendokComboTimer)
ON_CBN_SETFOCUS(IDC_COMBO_FREQUENCY, OnCbnSetfocusComboFrequency)
ON_CBN_SETFOCUS(IDC_COMBO_TIMER, OnCbnSetfocusComboTimer)
END_MESSAGE_MAP()
LRESULT CGlobalFrequencyTimerChange::OnClickChangeCTreeCtrl(WPARAM a,LPARAM treeitem)
{
HTREEITEM *titem = (HTREEITEM*)treeitem;
int checkstate;
UINT32 freqvalue,timervalue,MessageId;
bool treeitemstate;
CString msg, strcontroltxt; // strcontroltxt is to set dynamically the text of Static text for datasset
CString defaultdatasetname;
int treelevel;
treelevel=0;
HTREEITEM temptreeitem = *titem;
while(temptreeitem )
{
treelevel++;
temptreeitem = TreeCtrlForFreqTimer.GetParentItem(temptreeitem );
}
switch(treelevel)
{
case 4:/*---Tree level 4 shows its a Dataset ----------------------------------*/
msg = TreeCtrlForFreqTimer.GetItemText(TreeCtrlForFreqTimer.GetParentItem(*titem));
MessageId = _ttoi(msg);
if(m_DialogStateChange==1) // ask for change of values
{
if( AfxMessageBox(IDS_STRING_DO_U_WANT_TO_SAVE_FT,MB_YESNO)==IDYES)
{
SaveFreqTimer();
}
else
{
m_DialogStateChange=0;
save_button.EnableWindow(0);
freqvalue = messagemanager->GetFreq(MessageId,m_Dataset);
checkstate = (freqvalue>1)?1:0;
TreeCtrlForFreqTimer.SetCheck(PrevTreeItem,checkstate);
TreeCtrlForFreqTimer.SetParentalCheckState(PrevTreeItem,checkstate);
}
}
msg = TreeCtrlForFreqTimer.GetItemText(TreeCtrlForFreqTimer.GetParentItem(*titem));
MessageId = _ttoi(msg);
m_MsgId = MessageId ;
m_Dataset = TreeCtrlForFreqTimer.GetItemText(*titem);
freqvalue = messagemanager->GetFreq (MessageId,TreeCtrlForFreqTimer.GetItemText(*titem));
timervalue= messagemanager->GetTimer(MessageId,TreeCtrlForFreqTimer.GetItemText(*titem));
mFreq.EnableWindow(1);
(freqvalue>1)?mTimer.EnableWindow(1):mTimer.EnableWindow(0);// if freq > 1 only then there is a use of timer
// if check box is checked, only then we have to show freq and timer
// other wise if uncheked the freq =1,timer =0
treeitemstate=TreeCtrlForFreqTimer.GetCheck(TreeCtrlForFreqTimer.GetSelectedItem());
if(freqvalue>1 &&timervalue ==0) timervalue =1;
if(freqvalue>MAXFREQ) freqvalue = MAXFREQ;
if(timervalue>MAXTIMER) timervalue = MAXTIMER;
if(freqvalue>1 && (treeitemstate== true))
{
mFreq.SetCurSel(freqvalue-1);
mTimer.SetCurSel(timervalue);
}
else
{
mFreq.SetCurSel(0);
mTimer.SetCurSel(0);
mTimer.EnableWindow(0);
}
LoadString(library_identifier,IDS_STRING_DS_INPUT_MODE,strcontroltxt.GetBuffer(MAX_LANG_RES_STRING_LEN+1),MAX_LANG_RES_STRING_LEN);
static_dataset.SetWindowText(strcontroltxt);
cmbDefaultDataSet.SetWindowText(TreeCtrlForFreqTimer.GetItemText(*titem));
break;
case 3:/*--Tree level 3 shows its a Message ----------------------------------*/
if(m_DialogStateChange==1)
{
if( AfxMessageBox(IDS_STRING_DO_U_WANT_TO_SAVE_FT,MB_YESNO)==IDYES)
{
SaveFreqTimer();
}
else
{
m_DialogStateChange=0;
save_button.EnableWindow(0);
msg = TreeCtrlForFreqTimer.GetItemText(TreeCtrlForFreqTimer.GetParentItem(PrevTreeItem));
MessageId = _ttoi(msg);
freqvalue = messagemanager->GetFreq(MessageId,m_Dataset);
checkstate = (freqvalue>1)?1:0;
TreeCtrlForFreqTimer.SetCheck(PrevTreeItem,checkstate);
TreeCtrlForFreqTimer.SetParentalCheckState(PrevTreeItem,checkstate);
}
}
save_button.EnableWindow(0);
mFreq.SetCurSel(-1); //if message have no dataset
mTimer.SetCurSel(-1);
mTimer.EnableWindow(0);
mFreq.EnableWindow (0);
msg = TreeCtrlForFreqTimer.GetItemText(TreeCtrlForFreqTimer.GetSelectedItem());
MessageId = _ttoi(msg);
m_MsgId = MessageId ;
freqvalue = messagemanager->GetFreq (MessageId,CString(""));
timervalue= messagemanager->GetTimer(MessageId,CString(""));
if(freqvalue>1 &&timervalue ==0) timervalue =1;
if(freqvalue>MAXFREQ) freqvalue = MAXFREQ; // it will preserve the combo from loading the value greater than MAXFREQ, or MAXTIMEr
if(timervalue>MAXTIMER) timervalue = MAXTIMER;
// mFreq.EnableWindow(1); // About enabling the freq and timer combos
//(freqvalue>1)?mTimer.EnableWindow(1):mTimer.EnableWindow(0);// if freq > 1 only then there is a use of timer
if(messagemanager->GetPluginStatusFromMsgId(MessageId)==1)//it shows message is having plugin
{
cmbDefaultDataSet.SetWindowText(CString("Plugin"));
}
else
{
if(freqvalue>1)
{
mFreq.SetCurSel(freqvalue-1);
mTimer.SetCurSel(timervalue);
}
else
{
mFreq.SetCurSel(0);
mTimer.SetCurSel(0);
}
defaultdatasetname = messagemanager->GetDefaultDataSetForMessage(MessageId);
LoadString(library_identifier,IDS_STRING_DEFAULT_DS,strcontroltxt.GetBuffer(MAX_LANG_RES_STRING_LEN+1),MAX_LANG_RES_STRING_LEN);
static_dataset.SetWindowText(strcontroltxt); //when message is selected then there should be Default Dataset in the static control
cmbDefaultDataSet.SetWindowText(defaultdatasetname);
}
// if message is selected, then its default dataset will be considered
// and displayed in default dataset
break;
case 2:/*--Tree level 2 shows its a Message Sequence -------------------------*/
if(m_DialogStateChange==1)
{
//CString resultant_string;
//AfxFormatString1(resultant_string,IDS_STRING_FT_SAVE_CONFIRMATION,m_Dataset);
if( AfxMessageBox(IDS_STRING_DO_U_WANT_TO_SAVE_FT,MB_YESNO)==IDYES)
{
SaveFreqTimer();
}
else
{
m_DialogStateChange=0;
save_button.EnableWindow(0);
msg = TreeCtrlForFreqTimer.GetItemText(TreeCtrlForFreqTimer.GetParentItem(PrevTreeItem));
MessageId = _ttoi(msg);
freqvalue = messagemanager->GetFreq(MessageId,m_Dataset);
checkstate = (freqvalue>1)?1:0;
TreeCtrlForFreqTimer.SetCheck(PrevTreeItem,checkstate);
TreeCtrlForFreqTimer.SetParentalCheckState(PrevTreeItem,checkstate);
}
}
save_button.EnableWindow(0);
mFreq.SetCurSel(-1); //nothing will appear in the combo boxes
mTimer.SetCurSel(-1);
mTimer.EnableWindow(0);
mFreq.EnableWindow (0);
LoadString(library_identifier,IDS_STRING_DEFAULT_DS,strcontroltxt.GetBuffer(MAX_LANG_RES_STRING_LEN+1),MAX_LANG_RES_STRING_LEN);
static_dataset.SetWindowText(strcontroltxt);
cmbDefaultDataSet.SetWindowText(CString("Not Applicable"));
break;
case 1:/*--Tree level 1 shows its root ----------------------------------------*/
if(m_DialogStateChange==1)
{
//CString resultant_string;
//AfxFormatString1(resultant_string,IDS_STRING_FT_SAVE_CONFIRMATION,m_Dataset);
if( AfxMessageBox(IDS_STRING_DO_U_WANT_TO_SAVE_FT,MB_YESNO)==IDYES)
{
SaveFreqTimer();
}
else
{
m_DialogStateChange=0;
save_button.EnableWindow(0);
msg = TreeCtrlForFreqTimer.GetItemText(TreeCtrlForFreqTimer.GetParentItem(PrevTreeItem));
MessageId = _ttoi(msg);
freqvalue = messagemanager->GetFreq(MessageId,m_Dataset);
checkstate = (freqvalue>1)?1:0;
TreeCtrlForFreqTimer.SetCheck(PrevTreeItem,checkstate);
TreeCtrlForFreqTimer.SetParentalCheckState(PrevTreeItem,checkstate);
}
}
save_button.EnableWindow(0);
mFreq.SetCurSel(-1); //nothing will appear in the combo boxes
mTimer.SetCurSel(-1);
mTimer.EnableWindow(0);
mFreq.EnableWindow (0);
LoadString(library_identifier,IDS_STRING_DEFAULT_DS,strcontroltxt.GetBuffer(MAX_LANG_RES_STRING_LEN+1),MAX_LANG_RES_STRING_LEN);
static_dataset.SetWindowText(strcontroltxt);
cmbDefaultDataSet.SetWindowText(CString("Not Applicable"));
break;
}
total.SetWindowText(CString(itoa( GetTotalNoFreqMsg(TreeCtrlForFreqTimer.GetRootItem()), dummy,10)));
PrevTreeItem = *titem;
return TRUE;
}
// CGlobalFrequencyTimerChange message handlers
BOOL CGlobalFrequencyTimerChange::OnInitDialog()
{
CDialog::OnInitDialog();
/*******************Text Initialisation*********************************/
InitText();
CString strXMLEvent;
UINT32 AppId;
int iCount=0;
CPtrList * p_lstAppLst;
CNWGCMLHandler tempobj;
CPtrList *ptrAyncEventsList;
char *dummy = (char*) malloc(20);
/*-----------------------------------------------------------------------------*/
TreeCtrlForFreqTimer.Create(WS_CHILD | WS_VISIBLE | WS_BORDER | TVS_HASBUTTONS |WS_TABSTOP|
TVS_LINESATROOT | TVS_HASLINES |TVS_CHECKBOXES | TVS_SHOWSELALWAYS,
CRect (25, 30, 350, 210), this, 101 ) ;
TreeCtrlForFreqTimer.ModifyStyle( TVS_CHECKBOXES, 0 );
TreeCtrlForFreqTimer.ModifyStyle( 0, TVS_CHECKBOXES );
HTREEITEM hRoot = TreeCtrlForFreqTimer.InsertItem(_T("Outgoing Messages"));
TreeCtrlForFreqTimer.SetItemData(hRoot, 0);
iCount = 0;
p_lstAppLst= tempobj.GetApplicationList() ;
if(p_lstAppLst && p_lstAppLst->GetCount()>0)//check if emtpy message list
{
for( POSITION pos = p_lstAppLst->GetHeadPosition(); pos != NULL;)
{
CApplication *pApplication = (CApplication *)p_lstAppLst->GetNext( pos ) ;
strXMLEvent = pApplication->GetApplicationName();
AppId = pApplication->GetAppId();
ptrAyncEventsList = GetAllOutMsgForApp(AppId);
HTREEITEM h1 =TreeCtrlForFreqTimer.InsertItem(CString(itoa(AppId,dummy,10))+CString(":") +strXMLEvent, hRoot);
TreeCtrlForFreqTimer.SetItemData(h1,1);
AddDataListInTree(ptrAyncEventsList,strXMLEvent,h1);
}
}
cmbDefaultDataSet.EnableWindow(FALSE);
TreeCtrlForFreqTimer.SetFocus();
InitFrequencyTimerCombo();
//Just to fill the total
OnClickChangeCTreeCtrl(0,(LPARAM)TreeCtrlForFreqTimer.GetSelectedItem());
return 1;
}
void CGlobalFrequencyTimerChange::SetLibraryIdentifier(HINSTANCE lib_id)
{
library_identifier = lib_id;
}
void CGlobalFrequencyTimerChange::InitText()
{
LoadString(library_identifier,IDS_STRING_FREQ_TMR_DETAILS,stringID_to_string.GetBuffer(MAX_LANG_RES_STRING_LEN+1),MAX_LANG_RES_STRING_LEN);
static_freq_timer_details.SetWindowText(stringID_to_string);
LoadString(library_identifier,IDS_STRING_CHK_UCHK_FREQ_TIMER,stringID_to_string.GetBuffer(MAX_LANG_RES_STRING_LEN+1),MAX_LANG_RES_STRING_LEN);
static_freq_timer.SetWindowText(stringID_to_string);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -