]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/nettest/nettest.cpp
removed pnghand from MSW sources - obsoleted
[wxWidgets.git] / samples / nettest / nettest.cpp
index dfba604328380f25a80487a04997a0ee93759ffe..d292dd6b54bbc2fef949c97f5efb108c14d52613 100644 (file)
@@ -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", "") )
+    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;