#include "wx/wx.h"
#endif
-#include "wx/net.h"
+#include "wx/dialup.h"
// ----------------------------------------------------------------------------
// private classes
// return: if OnInit() returns false, the application terminates)
virtual bool OnInit();
+ // called before the application termination
+ virtual int OnExit();
+
// event handlers
void OnConnected(wxDialUpEvent& event);
+ // accessor to dial up manager
+ wxDialUpManager *GetDialer() const { return m_dial; }
+
private:
+ wxDialUpManager *m_dial;
+
DECLARE_EVENT_TABLE();
};
void OnAbout(wxCommandEvent& event);
void OnHangUp(wxCommandEvent& event);
void OnDial(wxCommandEvent& event);
+ void OnEnumISPs(wxCommandEvent& event);
+
+ void OnUpdateUI(wxUpdateUIEvent& event);
void OnIdle(wxIdleEvent& event);
NetTest_Quit = 1,
NetTest_About,
NetTest_HangUp,
- NetTest_Dial
+ NetTest_Dial,
+ NetTest_EnumISP,
+ NetTest_Max
};
// ----------------------------------------------------------------------------
EVT_MENU(NetTest_About, MyFrame::OnAbout)
EVT_MENU(NetTest_HangUp, MyFrame::OnHangUp)
EVT_MENU(NetTest_Dial, MyFrame::OnDial)
+ EVT_MENU(NetTest_EnumISP, MyFrame::OnEnumISPs)
+
+ EVT_UPDATE_UI(NetTest_Dial, MyFrame::OnUpdateUI)
EVT_IDLE(MyFrame::OnIdle)
END_EVENT_TABLE()
bool MyApp::OnInit()
{
// Create the main application window
- MyFrame *frame = new MyFrame("Minimal wxWindows App",
+ MyFrame *frame = new MyFrame("Dial-up wxWindows demo",
wxPoint(50, 50), wxSize(450, 340));
// Show it and tell the application that it's our main window
frame->Show(TRUE);
SetTopWindow(frame);
- // success: wxApp::OnRun() will be called which will enter the main message
- // loop and the application will run. If we returned FALSE here, the
- // application would exit immediately.
+ // Init dial up manager
+ m_dial = wxDialUpManager::Create();
+
+ if ( !m_dial->IsOk() )
+ {
+ wxLogError("The sample can't run on this system.");
+
+ wxLog::GetActiveTarget()->Flush();
+
+ // do it here, OnExit() won't be called
+ delete m_dial;
+
+ return FALSE;
+ }
+
+ frame->SetStatusText(GetDialer()->IsAlwaysOnline() ? "LAN" : "No LAN", 2);
+
return TRUE;
}
+int MyApp::OnExit()
+{
+ delete m_dial;
+
+ // exit code is 0, everything is ok
+ return 0;
+}
+
void MyApp::OnConnected(wxDialUpEvent& event)
{
- wxMessageBox(event.IsConnectedEvent() ? "Just connected!"
- : "Disconnected",
- "Dial Up Manager Notification",
- wxOK | wxICON_INFORMATION,
- GetTopWindow());
+ const char *msg;
+ if ( event.IsOwnEvent() )
+ {
+ msg = event.IsConnectedEvent() ? "Successfully connected"
+ : "Dialing failed";
+
+ wxLogStatus("");
+ }
+ else
+ {
+ msg = event.IsConnectedEvent() ? "Just connected!"
+ : "Disconnected";
+ }
+
+ wxLogMessage(msg);
}
// ----------------------------------------------------------------------------
MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
: wxFrame((wxFrame *)NULL, -1, title, pos, size)
{
- // set the frame icon
- SetIcon(wxICON(mondrian));
-
// create a menu bar
wxMenu *menuFile = new wxMenu;
menuFile->Append(NetTest_Dial, "&Dial\tCtrl-D", "Dial default ISP");
menuFile->Append(NetTest_HangUp, "&HangUp\tCtrl-H", "Hang up modem");
menuFile->AppendSeparator();
+ menuFile->Append(NetTest_EnumISP, "&Enumerate ISPs...\tCtrl-E");
+ menuFile->AppendSeparator();
menuFile->Append(NetTest_About, "&About...\tCtrl-A", "Show about dialog");
menuFile->AppendSeparator();
menuFile->Append(NetTest_Quit, "E&xit\tAlt-X", "Quit this program");
// ... and attach this menu bar to the frame
SetMenuBar(menuBar);
- CreateStatusBar(2);
+ // create status bar and fill the LAN field
+ CreateStatusBar(3);
+ static const int widths[3] = { -1, 100, 60 };
+ SetStatusWidths(3, widths);
}
void MyFrame::OnHangUp(wxCommandEvent& WXUNUSED(event))
{
- if ( wxDialUpManager::Get()->HangUp() )
+ if ( wxGetApp().GetDialer()->HangUp() )
{
wxLogStatus(this, "Connection was succesfully terminated.");
}
void MyFrame::OnDial(wxCommandEvent& WXUNUSED(event))
{
- wxLogStatus(this, "Dialing...");
+ wxLogStatus(this, "Preparing to dial...");
wxYield();
wxBeginBusyCursor();
- if ( wxDialUpManager::Get()->Dial("Free",
- "zeitlin", "") )
+ if ( wxGetApp().GetDialer()->Dial() )
{
- wxLogStatus(this, "Connection was succesfully established.");
+ wxLogStatus(this, "Dialing...");
}
else
{
wxEndBusyCursor();
}
+void MyFrame::OnEnumISPs(wxCommandEvent& WXUNUSED(event))
+{
+ wxArrayString names;
+ size_t nCount = wxGetApp().GetDialer()->GetISPNames(names);
+ if ( nCount == 0 )
+ {
+ wxLogWarning("No ISPs found.");
+ }
+ else
+ {
+ wxString msg = "Known ISPs:\n";
+ for ( size_t n = 0; n < nCount; n++ )
+ {
+ msg << names[n] << '\n';
+ }
+
+ wxLogMessage(msg);
+ }
+}
+
+void MyFrame::OnUpdateUI(wxUpdateUIEvent& event)
+{
+ // disable this item while dialing
+ event.Enable( !wxGetApp().GetDialer()->IsDialing() );
+}
+
void MyFrame::OnIdle(wxIdleEvent& WXUNUSED(event))
{
static int s_isOnline = -1; // not TRUE nor FALSE
- bool isOnline = wxDialUpManager::Get()->IsOnline();
+ bool isOnline = wxGetApp().GetDialer()->IsOnline();
if ( s_isOnline != (int)isOnline )
{
s_isOnline = isOnline;