SF.net SVN: mahogany: [7246] trunk/M

[email protected]
Newsgroups gmane.mail.mahogany.cvs
Message-ID <[email protected]>
Revision: 7246
          http://svn.sourceforge.net/mahogany/?rev=7246&view=rev
Author:   vadz
Date:     2007-04-26 09:30:37 -0700 (Thu, 26 Apr 2007)

Log Message:
-----------
don't create wxDialUpManager unless really necessary, this removes a very long delay when opening the preferences dialog under Windows

Modified Paths:
--------------
    trunk/M/include/gui/wxOptionsPage.h
    trunk/M/src/gui/wxOptionsDlg.cpp

Modified: trunk/M/include/gui/wxOptionsPage.h
===================================================================
--- trunk/M/include/gui/wxOptionsPage.h	2007-04-26 16:06:11 UTC (rev 7245)
+++ trunk/M/include/gui/wxOptionsPage.h	2007-04-26 16:30:37 UTC (rev 7246)
@@ -554,7 +554,16 @@
    {
    }
 
+#if defined(OS_WIN) && defined(USE_DIALUP)
+   // fill the choice control with the names of available dialup connections:
+   // this can take a relatively long time as it requires wxDialUpManager
+   // initialization, so we only do it when absolutely necessary
+   void FillDialupConnections();
 
+   // event handler to detect when the use of dialup manager is enabled
+   void OnDialUp(wxCommandEvent& event);
+#endif // USE_DIALUP
+
 #ifdef USE_OWN_CCLIENT
    wxString m_oldAuthsDisabled;
 #endif // USE_OWN_CCLIENT

Modified: trunk/M/src/gui/wxOptionsDlg.cpp
===================================================================
--- trunk/M/src/gui/wxOptionsDlg.cpp	2007-04-26 16:06:11 UTC (rev 7245)
+++ trunk/M/src/gui/wxOptionsDlg.cpp	2007-04-26 16:30:37 UTC (rev 7246)
@@ -3732,7 +3732,48 @@
 {
 }
 
-// dynamicially fill the RAS connections combo box under Windows
+#if defined(OS_WIN) && defined(USE_DIALUP)
+
+void wxOptionsPageNetwork::FillDialupConnections()
+{
+   wxControl *control = GetControl(ConfigField_NetConnection);
+   wxChoice *choice = control ? wxStaticCast(control, wxChoice) : NULL;
+
+   // may be NULL if we don't use dial up manager at all
+   if ( !choice )
+      return;
+
+   // we may have already filled it
+   if ( !choice->IsEmpty() )
+      return;
+
+   // this could take a long time
+   wxBusyCursor bc;
+
+   wxDialUpManager *dial = wxDialUpManager::Create();
+
+   if ( !dial )
+      return;
+
+   wxArrayString aConnections;
+   dial->GetISPNames(aConnections);
+
+   choice->Append(aConnections);
+
+   delete dial;
+}
+
+void wxOptionsPageNetwork::OnDialUp(wxCommandEvent& event)
+{
+   if ( event.IsChecked() )
+      FillDialupConnections();
+
+   event.Skip();
+}
+
+#endif // USE_DIALUP
+
+// dynamically fill the RAS connections combo box under Windows
 bool wxOptionsPageNetwork::TransferDataToWindow()
 {
 #ifdef USE_OWN_CCLIENT
@@ -3756,32 +3797,19 @@
 #if defined(OS_WIN) && defined(USE_DIALUP)
    if ( bRc )
    {
-      wxControl *control = GetControl(ConfigField_NetConnection);
-      wxChoice *choice = control ? wxStaticCast(control, wxChoice) : NULL;
-
-      if ( choice )
+      wxCheckBox *chkDialUp =
+         wxStaticCast(GetControl(ConfigField_DialUpSupport), wxCheckBox);
+      if ( chkDialUp )
       {
-         // may be NULL if we don't use dial up manager at all
-         wxDialUpManager *dial = wxDialUpManager::Create();
+         if ( chkDialUp->GetValue() )
+            FillDialupConnections();
 
-         if ( dial )
-         {
-            // wxDialUpManager can fail to enumerate the connections but we
-            // don't want to present the user with an error each time he opens
-            // the preferences dialog just because of this
-            wxLogNull noLog;
-
-            wxArrayString aConnections;
-            dial->GetISPNames(aConnections);
-
-            size_t count = aConnections.GetCount();
-            for ( size_t n = 0; n < count; n++ )
-            {
-               choice->Append(aConnections[n]);
-            }
-
-            delete dial;
-         }
+         Connect
+         (
+            chkDialUp->GetId(),
+            wxEVT_COMMAND_CHECKBOX_CLICKED,
+            wxCommandEventHandler(wxOptionsPageNetwork::OnDialUp)
+         );
       }
    }
 #endif // USE_DIALUP


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.