X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/09884325fc1f1d582402d736ee33e66fb0e98211..3cbe51d09405849cc89b185b90aaa8880365e3dd:/samples/nettest/nettest.cpp diff --git a/samples/nettest/nettest.cpp b/samples/nettest/nettest.cpp index b8f8335191..d292dd6b54 100644 --- a/samples/nettest/nettest.cpp +++ b/samples/nettest/nettest.cpp @@ -35,7 +35,7 @@ #include "wx/wx.h" #endif -#include "wx/net.h" +#include "wx/dialup.h" // ---------------------------------------------------------------------------- // private classes @@ -53,10 +53,18 @@ public: // 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(); }; @@ -72,6 +80,9 @@ public: void OnAbout(wxCommandEvent& event); void OnHangUp(wxCommandEvent& event); void OnDial(wxCommandEvent& event); + void OnEnumISPs(wxCommandEvent& event); + + void OnUpdateUI(wxUpdateUIEvent& event); void OnIdle(wxIdleEvent& event); @@ -91,7 +102,9 @@ enum NetTest_Quit = 1, NetTest_About, NetTest_HangUp, - NetTest_Dial + NetTest_Dial, + NetTest_EnumISP, + NetTest_Max }; // ---------------------------------------------------------------------------- @@ -111,6 +124,9 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) 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() @@ -134,26 +150,58 @@ IMPLEMENT_APP(MyApp) 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); } // ---------------------------------------------------------------------------- @@ -164,15 +212,14 @@ void MyApp::OnConnected(wxDialUpEvent& event) 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"); @@ -184,7 +231,10 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) // ... 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); } @@ -207,7 +257,7 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnHangUp(wxCommandEvent& WXUNUSED(event)) { - if ( wxDialUpManager::Get()->HangUp() ) + if ( wxGetApp().GetDialer()->HangUp() ) { wxLogStatus(this, "Connection was succesfully terminated."); } @@ -219,14 +269,13 @@ void MyFrame::OnHangUp(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnDial(wxCommandEvent& WXUNUSED(event)) { - wxLogStatus(this, "Dialing..."); + wxLogStatus(this, "Preparing to dial..."); wxYield(); wxBeginBusyCursor(); - if ( wxDialUpManager::Get()->Dial("Free", - "zeitlin", "2ecj86ij") ) + if ( wxGetApp().GetDialer()->Dial() ) { - wxLogStatus(this, "Connection was succesfully established."); + wxLogStatus(this, "Dialing..."); } else { @@ -236,11 +285,37 @@ void MyFrame::OnDial(wxCommandEvent& WXUNUSED(event)) 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;