// 3GModemConnectDlg.cpp : implementation file
//
#include "stdafx.h"
#include "3GModemConnect.h"
#include "3GModemConnectDlg.h"
#include "ModemFactory.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#define WND_SMALL_SIZE_X 440
#define WND_SMALL_SIZE_Y 180
#define WND_LARGE_SIZE_X 440
#define WND_LARGE_SIZE_Y 430
static UINT BASED_CODE statuspanes[] =
{
ID_STATUSBAR_CONSTATUS,
ID_STATUSBAR_MODE,
ID_STATUSBAR_SIGNAL
};
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
// Implementation
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
// CMy3GModemConnectDlg dialog
CMy3GModemConnectDlg::CMy3GModemConnectDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMy3GModemConnectDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_modem = NULL;
m_pTrafficDlg = NULL;
m_pTrayIcon = NULL;
}
void CMy3GModemConnectDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_BUTTON_EXPAND, m_btnExpand);
DDX_Control(pDX, IDC_COMBO_PROFILES, m_comboProfiles);
DDX_Control(pDX, IDC_STATIC_LOGIN, m_stcLogin);
DDX_Control(pDX, IDC_EDIT_USER, m_edtUser);
DDX_Control(pDX, IDC_EDIT_PASSWORD, m_edtPassword);
DDX_Control(pDX, IDC_EDIT_APN, m_edtAPN);
DDX_Control(pDX, IDC_STATIC_USER, m_stcUser);
DDX_Control(pDX, IDC_STATIC_PASSWORD, m_stcPassword);
DDX_Control(pDX, IDC_STATIC_APN, m_stcAPN);
DDX_Control(pDX, IDC_BUTTON_CONNECT, m_btnConnect);
DDX_Control(pDX, IDC_STATIC_DURATION, m_stcDuration);
DDX_Control(pDX, IDC_STATIC_DOWNLOAD, m_stcDownload);
DDX_Control(pDX, IDC_STATIC_UPLOAD, m_stcUpload);
DDX_Control(pDX, IDC_STATIC_DOWNLOADED, m_stcDownloaded);
DDX_Control(pDX, IDC_STATIC_UPLOADED, m_stcUploaded);
DDX_Control(pDX, IDC_STATIC_MODE, m_stcMode);
DDX_Control(pDX, IDC_STATIC_SIGNAL, m_stcSignal);
DDX_Control(pDX, IDC_STATIC_PROVIDER, m_stcProvider);
DDX_Control(pDX, IDC_BUTTON_APN_APPLY, m_btnAPNApply);
DDX_Control(pDX, IDC_STATIC_MANUFACTURER, m_stcManufacturer);
DDX_Control(pDX, IDC_STATIC_MODEL, m_stcModel);
DDX_Control(pDX, IDC_STATIC_HARDWARE, m_stcHardware);
DDX_Control(pDX, IDC_STATIC_FIRMWARE, m_stcFirmware);
DDX_Control(pDX, IDC_STATIC_IMEI, m_stcIMEI);
DDX_Control(pDX, IDC_STATIC_PORT, m_stcPort);
DDX_Control(pDX, IDC_COMBO_CON_MODE, m_comboModeType);
}
BEGIN_MESSAGE_MAP(CMy3GModemConnectDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BUTTON_EXPAND, &CMy3GModemConnectDlg::OnBnClickedButtonExpand)
ON_BN_CLICKED(IDC_BUTTON_CONNECT, &CMy3GModemConnectDlg::OnBnClickedButtonConnect)
ON_MESSAGE(WM_DIAL_EVNT, &CMy3GModemConnectDlg::OnRasDialEvent)
ON_MESSAGE(WM_MODEM_READ_EVNT, &CMy3GModemConnectDlg::OnModemReadEvent)
ON_WM_DESTROY()
ON_WM_CLOSE()
ON_BN_CLICKED(IDC_BUTTON_APPLY_SIGNAL_MODE, &CMy3GModemConnectDlg::OnBnClickedButtonApplySignalMode)
ON_BN_CLICKED(IDC_BUTTON_APN_APPLY, &CMy3GModemConnectDlg::OnBnClickedButtonApnApply)
END_MESSAGE_MAP()
// CMy3GModemConnectDlg message handlers
BOOL CMy3GModemConnectDlg::OnInitDialog()
{
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)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
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
// TODO: Add extra initialization here
CreateStatusBar();
SetDlgSizeToSmall();
//Traffic Modeless Dialog
if (!m_pTrafficDlg)
{
m_pTrafficDlg = new CTrafficDlg;
}
if (!::IsWindow(m_pTrafficDlg->GetSafeHwnd()))
{
m_pTrafficDlg->Create(IDD_DIALOG_TRAFFIC, GetDesktopWindow());
}
CRect rectTrafic, rectTaskbar;
int iScreenWidth = ::GetSystemMetrics(SM_CXSCREEN);
int iScreenHeight = ::GetSystemMetrics(SM_CYSCREEN);
CWnd *pWndTaskbar = CWnd::FindWindow(L"Shell_TrayWnd", NULL);
pWndTaskbar->GetWindowRect(rectTaskbar);
m_pTrafficDlg->GetWindowRect(&rectTrafic);
m_pTrafficDlg->SetWindowPos(NULL, iScreenWidth - rectTrafic.Width(), iScreenHeight - rectTrafic.Height() - rectTaskbar.Height(), 0,0, SWP_NOZORDER | SWP_NOSIZE );
//TODO: Needs performance improvements
//m_pTrafficDlg->ShowWindow(SW_SHOW);
m_pTrayIcon = new CTrayIcon();
m_pTrayIcon->Create(this);
CModemFactory modemfactory;
//TODO: FIX MEMORY LEAK
m_modem = modemfactory.SearchForModem();
if(m_modem == NULL)
{
MessageBox(L"No Modem Found!!", L"Error", MB_OK);
return TRUE;
}
m_stcPort.SetWindowText(m_modem->GetPort());
if(m_modem->Initialize(this))
{
//m_modem->CheckIfAnyExistingConnection();
//Need to fill the profile box
m_comboProfiles.ResetContent();
FillComboWithProfiles();
}
else
{
//Something is wrong
//Maybe Should show the create profile dialog
}
return TRUE; // return TRUE unless you set the focus to a control
}
void CMy3GModemConnectDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CMy3GModemConnectDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this function to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CMy3GModemConnectDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CMy3GModemConnectDlg::CreateStatusBar(void)
{
m_statusbar.Create(this);
m_statusbar.SetIndicators(statuspanes,3);
CRect rect;
GetClientRect(&rect);
m_statusbar.SetPaneInfo(0,ID_STATUSBAR_CONSTATUS, SBPS_NORMAL, rect.Width()-100);
m_statusbar.SetPaneInfo(1,ID_STATUSBAR_MODE, SBPS_STRETCH, 0);
m_statusbar.SetPaneInfo(2,ID_STATUSBAR_SIGNAL, SBPS_STRETCH, 0);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST,ID_STATUSBAR_SIGNAL);
}
void CMy3GModemConnectDlg::SetDlgSizeToSmall(void)
{
SetWindowPos(NULL, 0, 0, WND_SMALL_SIZE_X, WND_SMALL_SIZE_Y, SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
CRect rect;
GetClientRect(&rect);
m_statusbar.SetPaneInfo(0,ID_STATUSBAR_CONSTATUS, SBPS_NORMAL, rect.Width()-100);
m_statusbar.SetPaneInfo(1,ID_STATUSBAR_MODE, SBPS_STRETCH, 0);
m_statusbar.SetPaneInfo(2,ID_STATUSBAR_SIGNAL, SBPS_STRETCH, 0);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST,ID_STATUSBAR_SIGNAL);
HideLogin();
m_btnExpand.SetWindowText(L"More v");
}
void CMy3GModemConnectDlg::OnBnClickedButtonExpand()
{
CString sbtnTxt;
m_btnExpand.GetWindowText(sbtnTxt);
if(sbtnTxt == "Less")
{
SetDlgSizeToSmall();
}
else
{
SetDlgSizeToLarge();
}
}
void CMy3GModemConnectDlg::SetDlgSizeToLarge(void)
{
SetWindowPos(NULL, 0, 0, WND_LARGE_SIZE_X, WND_LARGE_SIZE_Y, SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
CRect rect;
GetClientRect(&rect);
m_statusbar.SetPaneInfo(0,ID_STATUSBAR_CONSTATUS, SBPS_NORMAL, rect.Width()-100);
m_statusbar.SetPaneInfo(1,ID_STATUSBAR_MODE, SBPS_STRETCH, 0);
m_statusbar.SetPaneInfo(2,ID_STATUSBAR_SIGNAL, SBPS_STRETCH, 0);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST,ID_STATUSBAR_SIGNAL);
ShowLogin();
m_btnExpand.SetWindowText(L"Less");
}
void CMy3GModemConnectDlg::OnBnClickedButtonConnect()
{
if(m_modem->isConnected())
{
m_modem->HangUp();
return;
}
CString sEntry, sUser, sPassword;
//TODO: m_modem->SetAPN
m_comboProfiles.GetWindowText(sEntry);
m_edtUser.GetWindowText(sUser);
m_edtPassword.GetWindowText(sPassword);
if(!m_modem->isConnected() && !m_modem->isDialing())
{
if(m_modem->Dial(sEntry, sUser, sPassword))
{
m_btnConnect.EnableWindow(FALSE);
}
else
{
//Error
//MessageBox( L"Error", L"Error" , MB_OK);
}
}
}
void CMy3GModemConnectDlg::OnDestroy()
{
CDialog::OnDestroy();
if (m_pTrafficDlg)
{
if (::IsWindow(m_pTrafficDlg->GetSafeHwnd()))
{
m_pTrafficDlg->EndDialog(IDCANCEL);
}
delete m_pTrafficDlg;
}
if (m_pTrayIcon)
{
delete m_pTrayIcon;
}
if(m_modem != NULL)
{
delete m_modem;
}
}
void CMy3GModemConnectDlg::FillComboWithProfiles(void)
{
int iCount = m_modem->GetEntriesCount();
for(int i = 0; i < iCount; i++)
{
m_comboProfiles.InsertString(i, m_modem->GetEntry(i));
}
//I should select the default value for the combo box
if(iCount > 0)
{
m_comboProfiles.SetCurSel(0);
}
}
void CMy3GModemConnectDlg::HideLogin(void)
{
m_stcLogin.ShowWindow(SW_HIDE);
m_stcUser.ShowWindow(SW_HIDE);
m_stcPassword.ShowWindow(SW_HIDE);
m_stcAPN.ShowWindow(SW_HIDE);
m_edtUser.ShowWindow(SW_HIDE);
m_edtPassword.ShowWindow(SW_HIDE);
m_edtAPN.ShowWindow(SW_HIDE);
}
void CMy3GModemConnectDlg::ShowLogin(void)
{
m_stcLogin.ShowWindow(SW_SHOW);
m_stcUser.ShowWindow(SW_SHOW);
m_stcPassword.ShowWindow(SW_SHOW);
m_stcAPN.ShowWindow(SW_SHOW);
m_edtUser.ShowWindow(SW_SHOW);
m_edtPassword.ShowWindow(SW_SHOW);
m_edtAPN.ShowWindow(SW_SHOW);
}
LRESULT CMy3GModemConnectDlg::OnModemReadEvent(WPARAM wparam, LPARAM lparam)
{
switch(wparam)
{
case m_modem->EModemEvent::eMODEM_DURATION:
SetDuration((int)lparam);
break;
case m_modem->EModemEvent::eMODEM_DOWNLOAD_SPEED:
SetDownloadSpeed((int)lparam);
break;
case m_modem->EModemEvent::eMODEM_UPLOAD_SPEED:
SetUploadSpeed((int)lparam);
break;
case m_modem->EModemEvent::eMODEM_UPLOADED_DATA:
SetUploadedData((int)lparam);
break;
case m_modem->EModemEvent::eMODEM_DOWNLOADED_DATA:
SetDownloadedData((int)lparam);
break;
case m_modem->EModemEvent::eMODEM_SYS_MODE:
SetMode((int)lparam);
break;
case m_modem->EModemEvent::eMODEM_RSSI:
SetRSSI((int)lparam);
break;
case m_modem->EModemEvent::eMODEM_PROVIDER:
SetProvider((char*)lparam);
break;
case m_modem->EModemEvent::eMODEM_APN:
SetAPN((char*)lparam);
break;
case m_modem->EModemEvent::eMODEM_MANUFACTURER:
SetManufacturer((char*)lparam);
break;
case m_modem->EModemEvent::eMODEM_PORT:
SetPort((char*)lparam);
break;
case m_modem->EModemEvent::eMODEM_MODEL:
SetModel((char*)lparam);
break;
case m_modem->EModemEvent::eMODEM_IMEI:
SetIMEI((char*)lparam);
break;
case m_modem->EModemEvent::eMODEM_FIRMWARE:
SetFirmware((char*)lparam);
break;
case m_modem->EModemEvent::eMODEM_HARDWARE:
SetHardware((char*)lparam);
break;
}
return 0;
}
LRESULT CMy3GModemConnectDlg::OnRasDialEvent (WPARAM wparam, LPARAM lparam)
{
//WM_RASDIALEVENT
RASCONNSTATE rasconnstate;
DWORD dwError;
rasconnstate = (RASCONNSTATE) wparam;
dwError = (DWORD) lparam;
switch(rasconnstate)
{
case RASCS_OpenPort:
TRACE("RASCS_OpenPort\n");
m_statusbar.SetPaneText(0, L"Opening port");
break;
case RASCS_PortOpened:
TRACE("RASCS_PortOpened\n");
m_statusbar.SetPaneText(0, L"Port opened");
break;
case RASCS_ConnectDevice:
TRACE("RASCS_ConnectDevice\n");
m_statusbar.SetPaneText(0, L"Device is about to be connected");
break;
case RASCS_DeviceConnected:
TRACE("RASCS_DeviceConnected\n");
m_statusbar.SetPaneText(0, L"Device connected");
break;
case RASCS_AllDevicesConnected:
TRACE("RASCS_AllDevicesConnected\n");
m_statusbar.SetPaneText(0, L"Link established");
break;
case RASCS_Authenticate:
TRACE("RASCS_Authenticate\n");
m_statusbar.SetPaneText(0, L"Starting authentication");
break;
case RASCS_AuthNotify:
//check dwError to know why
TRACE("RASCS_AuthNotify\n");
m_statusbar.SetPaneText(0, L"Authenticated");
break;
case RASCS_AuthRetry:
TRACE("RASCS_AuthRetry\n");
m_statusbar.SetPaneText(0, L"Retry authentication");
break;
case RASCS_AuthCallback:
TRACE("RASCS_AuthCallback\n");
//m_statusbar.SetPaneText(0, L"RASCS_AuthCallback");
break;
case RASCS_AuthChangePassword:
TRACE("RASCS_AuthChangePassword\n");
//m_statusbar.SetPaneText(0, L"RASCS_AuthChangePassword");
break;
case RASCS_AuthProject:
TRACE("RASCS_AuthProject\n");
//m_statusbar.SetPaneText(0, L"Projection starting");
break;
case RASCS_AuthLinkSpeed:
TRACE("RASCS_AuthLinkSpeed\n");
m_statusbar.SetPaneText(0, L"Link-speed calculation starting");
break;
case RASCS_AuthAck:
TRACE("RASCS_AuthAck\n");
m_statusbar.SetPaneText(0, L"Authentication acknowledged.");
break;
case RASCS_ReAuthenticate:
TRACE("RASCS_ReAuthenticate\n");
//m_statusbar.SetPaneText(0, L"RASCS_ReAuthenticate");
break;
case RASCS_Authenticated:
TRACE("RASCS_Authenticated\n");
m_statusbar.SetPaneText(0, L"Authenticated");
break;
case RASCS_PrepareForCallback:
TRACE("RASCS_PrepareForCallback\n");
//m_statusbar.SetPaneText(0, L"RASCS_PrepareForCallback");
break;
case RASCS_WaitForModemReset:
TRACE("RASCS_WaitForModemReset\n");
//m_statusbar.SetPaneText(0, L"RASCS_WaitForModemReset");
break;
case RASCS_WaitForCallback:
TRACE("RASCS_WaitForCallback\n");
//m_statusbar.SetPaneText(0, L"RASCS_WaitForCallback");
break;
case RASCS_Projected:
TRACE("RASCS_Projected\n");
//m_statusbar.SetPaneText(0, L"Projected");
break;
case RASCS_Interactive:
TRACE("RASCS_Interactive\n");
//m_statusbar.SetPaneText(0, L"RASCS_Interactive");
break;
case RASCS_RetryAuthentication:
TRACE("RASCS_RetryAuthentication\n");
m_statusbar.SetPaneText(0, L"Retry authentication");
break;
case RASCS_CallbackSetByCaller:
TRACE("RASCS_CallbackSetByCaller\n");
//m_statusbar.SetPaneText(0, L"RASCS_CallbackSetByCaller");
break;
case RASCS_PasswordExpired:
TRACE("RASCS_PasswordExpired\n");
//m_statusbar.SetPaneText(0, L"RASCS_PasswordExpired");
break;
case RASCS_Connected:
TRACE("RASCS_Connected\n");
m_btnConnect.SetWindowText(L"Disconnect");
m_statusbar.SetPaneText(0, L"Connected");
m_btnConnect.EnableWindow(TRUE);
break;
case RASCS_Disconnected:
TRACE("RASCS_Disconnected\n");
m_btnConnect.SetWindowText(L"Connect");
m_statusbar.SetPaneText(0, L"Disconnected");
m_btnConnect.EnableWindow(TRUE);
break;
default:
TRACE("default\n");
//m_statusbar.SetPaneText(0, L"default");
break;
}
return 0;
}
void CMy3GModemConnectDlg::SetDuration(int iTimeInSec)
{
CString sString;
int iHours=iTimeInSec /3600;
iTimeInSec =iTimeInSec %3600;
int iMin=iTimeInSec /60;
iTimeInSec =iTimeInSec %60;
int iSec =iTimeInSec;
sString.Format(L"%02d:%02d:%02d", iHours,iMin,iSec);
m_stcDuration.SetWindowText((LPCTSTR)sString);
}
void CMy3GModemConnectDlg::SetDownloadSpeed(int iSpeedInBits)
{
float iDownloadSpeed = iSpeedInBits;
CString sString;
if(iDownloadSpeed >= 0)
{
iDownloadSpeed = iDownloadSpeed / 1024;
sString.Format(L"%.2f kb/s", iDownloadSpeed );
}
else
{
sString = "0 kb/s";
}
m_stcDownload.SetWindowText((LPCTSTR)sString);
m_pTrafficDlg->AddDownload(iDownloadSpeed);
}
void CMy3GModemConnectDlg::SetUploadSpeed(int iSpeedInBits)
{
float iUploadSpeed = iSpeedInBits;
CString sString;
if(iUploadSpeed >= 0)
{
iUploadSpeed = iUploadSpeed / 1024;
sString.Format(L"%.2f kb/s", iUploadSpeed );
}
else
{
sString = "0 kb/s";
}
m_stcUpload.SetWindowText((LPCTSTR)sString);
m_pTrafficDlg->AddUpload(iUploadSpeed);
}
void CMy3GModemConnectDlg::SetUploadedData(int iSizeInBits)
{
CString sString;
float iDataReceived = iSizeInBits; //Hex to decimal
if(iDataReceived >= 0)
{
iDataReceived = iDataReceived / 1024 / 1024;
sString.Format(L"%.2f MB", iDataReceived );
m_stcUploaded.SetWindowText((LPCTSTR)sString);
}
}
void CMy3GModemConnectDlg::SetProvider(char* szProvider)
{
CString sString;
sString = szProvider;
sString.Remove('\"');
sString.Trim();
m_stcProvider.SetWindowText((LPCTSTR)sString);
}
void CMy3GModemConnectDlg::SetManufacturer(char* szManufacturer)
{
CString sString;
sString = szManufacturer;
sString.Trim();
m_stcManufacturer.SetWindowText((LPCTSTR)sString);
}
void CMy3GModemConnectDlg::SetModel(char* szModel)
{
CString sString;
sString = szModel;
sString.Trim();
m_stcModel.SetWindowText((LPCTSTR)sString);
}
void CMy3GModemConnectDlg::SetPort(char* szPort)
{
CString sString;
sString = szPort;
sString.Trim();
m_stcPort.SetWindowText((LPCTSTR)sString);
}
void CMy3GModemConnectDlg::SetIMEI(char* szIMEI)
{
CString sString;
sString = szIMEI;
sString.Trim();
m_stcIMEI.SetWindowText((LPCTSTR)sString);
}
void CMy3GModemConnectDlg::SetFirmware(char* szFirmware)
{
CString sString;
sString = szFirmware;
sString.Trim();
m_stcFirmware.SetWindowText((LPCTSTR)sString);
}
void CMy3GModemConnectDlg::SetHardware(char* szHardware)
{
CString sString;
sString = szHardware;
sString.Remove('\"');
sString.Trim();
m_stcHardware.SetWindowText((LPCTSTR)sString);
}
void CMy3GModemConnectDlg::SetAPN(char* szAPN)
{
CString sString;
sString = szAPN;
sString.Remove('\"');
sString.Trim();
m_edtAPN.SetWindowText((LPCTSTR)sString);
}
void CMy3GModemConnectDlg::SetRSSI(int iRSSI)
{
if(iRSSI <= 31 && iRSSI >= 26 )
{
m_stcSignal.SetWindowText(L"Excellent");
}
else if(iRSSI <= 25 && iRSSI >= 20 )
{
m_stcSignal.SetWindowText(L"Good");
}
else if(iRSSI <= 19 && iRSSI >= 14 )
{
m_stcSignal.SetWindowText(L"Fair");
}
else if(iRSSI <= 13 && iRSSI >= 8 )
{
m_stcSignal.SetWindowText(L"Poor");
}
else if(iRSSI <= 7 && iRSSI >= 2 )
{
m_stcSignal.SetWindowText(L"Very Poor");
}
else
{
m_stcSignal.SetWindowText(L"No Signal");
}
CString sString;
int iVal = iRSSI * 100 / 32;
m_pTrayIcon->SetSignalStrength(iVal);
sString.Format(L"%d%%", iVal);
m_statusbar.SetPaneText(2, (LPCTSTR)sString);
}
void CMy3GModemConnectDlg::SetMode(int iMode)
{
CString sString;
switch(iMode)
{
case 0:
sString = "NA";
break;
case 1:
sString = "GSM";
break;
case 2:
sString = "GPRS";
break;
case 3:
sString = "EDEG";
break;
case 4:
sString = "WCDMA";
break;
case 5:
sString = "HSDPA";
break;
case 6:
sString = "HSUPA";
break;
case 7:
sString = "HSPA";
break;
default:
sString = "NA";
break;
}
m_pTrayIcon->SetNetworkMode(iMode);
m_stcMode.SetWindowText((LPCTSTR)sString);
m_statusbar.SetPaneText(1, (LPCTSTR)sString);
}
void CMy3GModemConnectDlg::SetDownloadedData(int iSizeInBits)
{
CString sString;
float iDataSent = iSizeInBits;
if(iDataSent >=0)
{
iDataSent = iDataSent / 1024 / 1024;
sString.Format(L"%.2f MB", iDataSent );
m_stcDownloaded.SetWindowText((LPCTSTR)sString);
}
}
void CMy3GModemConnectDlg::OnClose()
{
//TODO: DO any cleaning
if(m_modem)
{
m_modem->ShutDown();
}
CDialog::OnClose();
}
void CMy3GModemConnectDlg::OnBnClickedButtonApplySignalMode()
{
if(m_modem)
{
int iModeType = m_comboModeType.GetCurSel();
switch(iModeType)
{
case 0:
m_modem->SetMode(CModem::EModemMode::eMODE2GONLY);
break;
case 1:
m_modem->SetMode(CModem::EModemMode::eMODE2GPREF);
break;
case 2:
m_modem->SetMode(CModem::EModemMode::eMODE3GONLY);
break;
case 3:
m_modem->SetMode(CModem::EModemMode::eMODE3GPREF);
break;
}
}
}
void CMy3GModemConnectDlg::OnBnClickedButtonApnApply()
{
CString sAPN;
m_edtAPN.GetWindowText(sAPN);
if(!sAPN.IsEmpty() && m_modem)
{
m_modem->SetAPN(sAPN);
}
}