00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00033 #include <unistd.h>
00034 #include <string.h>
00035 
00036 #include <gtk/gtk.h>
00037 #include <gdk/gdkkeysyms.h>
00038 
00039 #include <liberregxml/erregapi.h>
00040 #include <libergtk/ergtk.h>
00041 
00042 #include "connectionMgrLog.h"
00043 #include "displayStatus.h"
00044 #include "commonData.h"
00045 #include "connectScreenData.h"
00046 #include "connectScan.h"
00047 #include "connectPing.h"
00048 #include "gtkSettingItem.h"
00049 #include "widgetUtils.h"
00050 #include "connectScreen.h"
00051 #include "connectScreenOptions.h"
00052 #include "connectScreenProfiles.h"
00053 #include "background.h"
00054 #include "connectionMgr.h"
00055 #include "languages.h"
00056 #include "erbusy.h"
00057 #include "pagebar.h"
00058 
00059 
00060 static GtkWidget *g_connect_options = NULL;
00061 
00062 
00063 static GtkWidget *g_connect_with = NULL;
00064 
00065 
00066 static bkWdtLabelButton *g_server_type = NULL;
00067 
00068 
00069 static bkWdtLabelButton *g_network_type = NULL;
00070 
00071 
00072 static GtkWidget *g_info = NULL;
00073 static GtkWidget *g_info_label = NULL;
00074 
00075 static guint      g_scan_timeout_id = 0; 
00076 
00077 static guint      g_scan_done_timeout_id = 0;
00078 
00079 static gboolean   g_first_display = TRUE; 
00080 
00081 
00082 static GtkWidget *create_connect_with (void);
00083 static GtkWidget *create_server_type (void);
00084 static GtkWidget *create_network_type (void);
00085 static GtkWidget *create_infomation (void);
00086 
00087 static gboolean on_button_press(GtkWidget* button, 
00088                                 GdkEventButton* event, 
00089                                 gpointer data);
00090 static void on_servertype_update (erGtkSelectionGroup * selection, 
00091                                   gpointer button, gpointer data);
00092 static void on_networktype_update (erGtkSelectionGroup * selection, 
00093                                    gpointer button, gpointer data);
00094 
00095 static void connect_options_update_info (scanStatus_t status);
00096 
00098 
00100 
00101 
00102 
00103 
00104 
00105 
00106 GtkWidget *connect_options_create (void)
00107 {
00108     CN_LOGPRINTF ("entry");
00109 
00110     GtkWidget *vbox;
00111     GtkWidget *itemConnectWith;
00112     GtkWidget *itemInfo;
00113 
00114     vbox = gtk_vbox_new (FALSE, VBOX_SPACING);
00115     gtk_widget_show(vbox);
00116     g_connect_options = vbox;
00117 
00118     itemConnectWith = create_connect_with ();
00119     gtk_box_pack_start (GTK_BOX (vbox), itemConnectWith, FALSE, FALSE, 0);
00120     gtk_widget_show(itemConnectWith);
00121 
00122     itemInfo = create_infomation ();
00123     gtk_box_pack_start (GTK_BOX (vbox), itemInfo, FALSE, FALSE, 0);
00124     gtk_widget_show(itemInfo);
00125 
00126     return vbox;
00127 }
00128 
00129 
00130 
00131 
00132 
00133 
00134 
00135 static GtkWidget *create_connect_with (void)
00136 {
00137     GtkWidget *item = NULL;
00138     GtkWidget *vbox = NULL;
00139     GtkWidget *server = NULL;
00140     GtkWidget *network = NULL;
00141 
00142     
00143     item = gtk_settingitem_new ("");
00144     gtk_widget_set_size_request (item, -1, -1);
00145     g_connect_with = item;
00146 
00147     
00148     vbox = gtk_vbox_new (FALSE, VBOX_SPACING);
00149     gtk_settingitem_add_details (GTK_SETTINGITEM (item), vbox);
00150     gtk_widget_show (vbox);
00151 
00152     
00153     server = create_server_type ();
00154     gtk_box_pack_start (GTK_BOX (vbox), server, FALSE, FALSE, 0);
00155     gtk_widget_show (server);
00156 
00157     
00158     network = create_network_type ();
00159     gtk_box_pack_start (GTK_BOX (vbox), network, FALSE, FALSE, 0);
00160     gtk_widget_show (network);
00161 
00162     return item;
00163 }
00164 
00165 
00166 
00167 
00168 static GtkWidget *create_server_type (void)
00169 {
00170     bkWdtLabelButton *item;
00171     GtkWidget *widget;
00172    
00173     item = bk_wdt_label_button_new(2, FALSE, 1, 1);
00174 
00175     
00176     widget = GTK_WIDGET(item->details->buttonList[0]);
00177     g_signal_connect(G_OBJECT(widget), "button-press-event", 
00178                      G_CALLBACK(on_button_press), NULL);
00179    
00180     widget = GTK_WIDGET(item->details->buttonList[1]);
00181     g_signal_connect(G_OBJECT(widget), "button-press-event", 
00182                      G_CALLBACK(on_button_press), NULL);
00183     
00184     widget = item->details->selection;
00185     g_signal_connect (G_OBJECT (widget), "selection-update", 
00186                       G_CALLBACK (on_servertype_update), NULL);
00187 
00188     
00189     g_server_type = item;
00190 
00191     
00192     return item->background;
00193 }
00194 
00195 
00196 
00197 
00198 static GtkWidget *create_network_type (void)
00199 {
00200     bkWdtLabelButton *item;
00201     GtkWidget *widget;
00202 
00203     item = bk_wdt_label_button_new(3, FALSE, 1, 1);
00204 
00205     
00206     widget = GTK_WIDGET(item->details->buttonList[0]);
00207     g_signal_connect(G_OBJECT(widget), "button-press-event", 
00208                      G_CALLBACK(on_button_press), NULL);
00209   
00210     widget = GTK_WIDGET(item->details->buttonList[1]);
00211     g_signal_connect(G_OBJECT(widget), "button-press-event", 
00212                      G_CALLBACK(on_button_press), NULL);
00213       
00214     widget = GTK_WIDGET(item->details->buttonList[2]);
00215     g_signal_connect(G_OBJECT(widget), "button-press-event", 
00216                      G_CALLBACK(on_button_press), NULL);
00217   
00218     widget = item->details->selection;
00219     g_signal_connect (G_OBJECT (widget), "selection-update",
00220             G_CALLBACK (on_networktype_update), NULL);
00221     
00222     
00223     g_network_type = item;
00224 
00225     return item->background;
00226 }
00227 
00228 
00229 
00230 
00231 
00232 
00233 
00234 
00235 static GtkWidget *create_infomation (void)
00236 {
00237     GtkWidget *item = NULL;
00238     GtkWidget *background = NULL;
00239     GtkWidget *alignment = NULL;
00240     GtkWidget *vbox = NULL;
00241     GtkWidget *label = NULL;
00242 
00243     
00244     item = gtk_settingitem_new ("");
00245     gtk_widget_set_size_request (item, -1, -1);
00246     gtk_widget_hide (item);
00247     g_info = item;
00248     
00249     
00250     background = gtk_event_box_new ();
00251     gtk_widget_set_name (background, "bk_grey_666_75");
00252     gtk_widget_set_size_request(background, 
00253             SITEM_BK_WIDTH, SITEM_BK_HEIGHT);
00254     gtk_settingitem_add_details (GTK_SETTINGITEM (item), background);
00255    
00256     
00257     alignment = gtk_alignment_new (0.0, 0.5, 0.0, 0.0);
00258     gtk_alignment_set_padding (GTK_ALIGNMENT (alignment),
00259             PADDING_TOP, PADDING_BOTTOM, PADDING_LEFT, PADDING_RIGHT);
00260     gtk_container_add (GTK_CONTAINER (background), alignment);
00261     
00262     
00263     vbox = gtk_vbox_new (FALSE, VBOX_SPACING);
00264     gtk_container_add (GTK_CONTAINER (alignment), vbox);
00265    
00266     
00267     label = gtk_label_new ("");
00268     gtk_widget_set_name (label, "info_label");
00269     gtk_widget_set_size_request(GTK_WIDGET(label), 
00270             SITEM_BK_WIDTH - PADDING_LEFT - PADDING_RIGHT, -1);
00271     gtk_label_set_single_line_mode(GTK_LABEL(label), FALSE);
00272     gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
00273     gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
00274     g_info_label = label;
00275 
00276     gtk_widget_show_all (background);
00277 
00278     return item;
00279 }
00280 
00282 
00284 void connect_options_set_text (void)
00285 {
00286     GtkWidget *widget;
00287 
00288     CN_LOGPRINTF ("entry");
00289 
00290     if (g_connect_with)
00291     {
00292         
00293         gtk_settingitem_set_header_text (GTK_SETTINGITEM (g_connect_with), 
00294                                          _("Connection settings"));
00295     }
00296 
00297     if (g_server_type)
00298     {
00299         widget = g_server_type->details->label;
00300         gtk_label_set_text (GTK_LABEL (widget),
00301                             _("Select to connect to the iDS "
00302                               "(iRex Delivery Service) or to "
00303                               "your computer."));
00304 
00305         widget = GTK_WIDGET(g_server_type->details->buttonList[0]);
00306         gtk_button_set_label (GTK_BUTTON (widget), _("iDS"));
00307        
00308         widget = GTK_WIDGET(g_server_type->details->buttonList[1]);
00309         gtk_button_set_label (GTK_BUTTON (widget), _("Computer"));
00310     }
00311 
00312     if (g_network_type)
00313     {
00314         widget = g_network_type->details->label;
00315         gtk_label_set_text (GTK_LABEL (widget),
00316                             _("Select a connection type or accept "
00317                               "the default."));
00318 
00319         widget = GTK_WIDGET(g_network_type->details->buttonList[0]);
00320         gtk_button_set_label (GTK_BUTTON (widget), _("Wired"));
00321         
00322         widget = GTK_WIDGET(g_network_type->details->buttonList[1]);
00323         gtk_button_set_label (GTK_BUTTON (widget), _("Wireless"));
00324 
00325         widget = GTK_WIDGET(g_network_type->details->buttonList[2]);
00326         gtk_button_set_label (GTK_BUTTON (widget), _("Dial-up"));
00327     }
00328 }
00329 
00331 
00332 
00333 
00335 void connect_options_display (void)
00336 {
00337     CN_LOGPRINTF ("entry");
00338 
00339     GtkWidget*       widget;
00340     GtkToggleButton* button;
00341   
00342     if (g_server_type)
00343     {
00344         
00345         
00346         switch (connect_data_get_connect_type())
00347         {
00348             case cmgrConnectIDS_e:
00349                 widget = GTK_WIDGET(g_server_type->details->buttonList[0]);
00350                 break;
00351             case cmgrConnectPCShare_e:
00352                 widget = GTK_WIDGET(g_server_type->details->buttonList[1]);
00353                 break;
00354             default:
00355                 
00356                 widget = GTK_WIDGET(g_server_type->details->buttonList[0]);
00357                 connect_data_set_connect_type(cmgrConnectIDS_e);
00358                 break;
00359         }
00360         
00361         
00362         
00363         
00364         
00365         button = GTK_TOGGLE_BUTTON(widget);
00366         if (g_first_display && gtk_toggle_button_get_active(button))
00367         {
00368             
00369             
00370             gtk_toggle_button_set_active(button, FALSE);
00371         }
00372         gtk_toggle_button_set_active(button, TRUE);
00373     }
00374 
00375     if (g_network_type)
00376     {
00377         
00378         switch (connect_data_get_network_type())
00379         {
00380             case wired_t:
00381                 widget = GTK_WIDGET(g_network_type->details->buttonList[0]);
00382                 break;
00383             case wireless_t:
00384                 widget = GTK_WIDGET(g_network_type->details->buttonList[1]);
00385                 break;
00386             case dialup_t:
00387                 widget = GTK_WIDGET(g_network_type->details->buttonList[2]);
00388                 break;
00389             default:
00390                 
00391                 
00392                 widget = GTK_WIDGET(g_network_type->details->buttonList[main_get_wifi_disabled() ? 0 : 1]);
00393                 connect_data_set_network_type (main_get_wifi_disabled() ? wired_t : wireless_t);
00394                 break;
00395         }
00396         
00397         
00398         
00399         
00400         
00401         button = GTK_TOGGLE_BUTTON(widget);
00402         if (g_first_display && gtk_toggle_button_get_active(button))
00403         {
00404             
00405             
00406             gtk_toggle_button_set_active(button, FALSE);
00407         }
00408         gtk_toggle_button_set_active(button, TRUE);
00409     }
00410 
00411     
00412     const regPCProfile_t *pcshare = NULL;
00413     pcshare = connect_data_get_pcsharedata();
00414     if (pcshare == NULL
00415       || (pcshare->pcname == NULL || pcshare->pcname[0] == '\0')
00416       || (pcshare->sharename == NULL || pcshare->sharename[0] == '\0'))
00417     {
00418         CN_WARNPRINTF ("no PC profile in registry: force connect to iDS");
00419        
00420         if (g_server_type)
00421         {
00422             widget = GTK_WIDGET(g_server_type->details->buttonList[1]);
00423             gtk_widget_set_sensitive(widget, FALSE);
00424             
00425             widget = GTK_WIDGET(g_server_type->details->buttonList[0]);
00426             gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(widget), TRUE);
00427         }
00428 
00429         connect_data_set_connect_type (cmgrConnectIDS_e);
00430     }
00431     
00432     if (main_get_wifi_disabled())
00433     {
00434         
00435         widget = GTK_WIDGET(g_network_type->details->buttonList[1]);
00436         gtk_widget_set_sensitive(widget, FALSE);
00437     }
00438 
00439     if (main_get_dialup_disabled())
00440     {
00441         
00442         widget = GTK_WIDGET(g_network_type->details->buttonList[2]);
00443         gtk_widget_set_sensitive(widget, FALSE);
00444     }
00445 
00446     connect_options_update_info(scanRunning_e);
00447 
00448     g_first_display = FALSE;
00449 }
00450 
00451 static void connect_options_update_info (scanStatus_t status)
00452 {
00453     CN_LOGPRINTF("entry");
00454 
00455     connection_t networkType;
00456     char* cpTitle = NULL, *cpDetails = NULL;
00457     
00458     networkType = connect_data_get_network_type();
00459     switch(networkType)
00460     {
00461         case wired_t:
00462             cpTitle = _("Available wired networks");
00463             if (status == rescanNeed_e)
00464             {
00465                 cpDetails = _("No wired networks found.\n"
00466                               "Click the Wired button above "
00467                               "to scan again.");
00468             }
00469             else if (status == scanRunning_e)
00470             {
00471                 cpDetails = _("Please wait while the iLiad scans for "
00472                               "wired networks ...");
00473             }
00474             else
00475             {
00476                 cpDetails = "";
00477             }
00478             break;
00479         case dialup_t:
00480             cpTitle = _("Available dial-up networks");
00481             if (status == rescanNeed_e)
00482             {
00483                 cpDetails = _("No dial-up networks found.\n"
00484                               "Click the Dial-up button above "
00485                               "to scan again.");
00486             }
00487             else if (status == scanRunning_e)
00488             {
00489                 cpDetails = _("Please wait while the iLiad scans for "
00490                               "dial-up networks ...");
00491             }
00492             else
00493             {
00494                 cpDetails = "";
00495             }
00496             break;
00497         case wireless_t:
00498             cpTitle = _("Available wireless networks");
00499             if (status == rescanNeed_e)
00500             {
00501                 cpDetails = _("No wireless networks found.\n"
00502                               "Click the Wireless button above "
00503                               "to scan again.");
00504             }
00505             else if (status == scanRunning_e)
00506             {
00507                 cpDetails = _("Please wait while the iLiad is scanning "
00508                               "for wireless networks ...");
00509             }
00510             else
00511             {
00512                 cpDetails = "";
00513             }
00514             break;
00515         default:
00516             CN_WARNPRINTF("Invalid network type[%d].", networkType);
00517             break;
00518     }
00519 
00520     
00521     if (g_info)
00522     {
00523         gtk_settingitem_set_header_text(GTK_SETTINGITEM(g_info), cpTitle);
00524         gtk_label_set_text(GTK_LABEL(g_info_label), cpDetails);
00525     }
00526 }
00527 
00529 
00531 static void remove_timeout_ids(void)
00532 {
00533     if (g_scan_timeout_id > 0)
00534     {
00535         CN_WARNPRINTF("remove the old timeout function for scanning");
00536         g_source_remove(g_scan_timeout_id);
00537         g_scan_timeout_id = 0;
00538     }
00539 
00540     if (g_scan_done_timeout_id)
00541     {
00542         CN_WARNPRINTF("remove the old timeout function for scanning done");
00543         g_source_remove(g_scan_done_timeout_id);
00544         g_scan_done_timeout_id = 0;
00545     }
00546 }
00547 
00548 static gboolean on_button_press(GtkWidget* button, 
00549                                 GdkEventButton* event, 
00550                                 gpointer data)
00551 {
00552     CN_LOGPRINTF("entry");
00553     
00554     if (connect_scan_freeze_ui(cmgr_get_scan_ctxt()))
00555     {
00556         CN_WARNPRINTF("Please wait when freezing UI ...");
00557         return TRUE;
00558     }
00559 
00560     return FALSE;
00561 }
00562 
00563 static gboolean delay_servertype_udpate(gpointer data)
00564 {
00565     int                  selectedId;
00566     erGtkSelectionGroup *selection;
00567     scanContext_t       *ctxt;
00568 
00569     if (connect_scan_freeze_ui(cmgr_get_scan_ctxt()))
00570     {
00571         CN_WARNPRINTF("call me later ...");
00572 
00573         connect_options_update_info(scanAborting_e);
00574         display_update_request_screen_refresh(SETTING_ITEM_CHANGE, 
00575                                               WAVEFORM_TYPING);
00576         return TRUE;  
00577     }
00578 
00579     selection = ERGTK_SELECTION_GROUP(data);
00580     ergtk_selection_group_get_selected_buttons(selection, &selectedId, 1);
00581     if (selectedId == 0)
00582     {
00583         
00584         connect_data_set_connect_type (cmgrConnectIDS_e);
00585     }
00586     else if (selectedId == 1)
00587     {
00588         
00589         connect_data_set_connect_type (cmgrConnectPCShare_e);
00590     }
00591  
00592     
00593     connect_options_update_info(scanRunning_e);
00594     display_update_request_screen_refresh(SETTING_ITEM_CHANGE, 
00595                                           WAVEFORM_TYPING);
00596   
00597     connect_options_restore_scan_ctxt();
00598     ctxt = cmgr_get_scan_ctxt();
00599     connect_scan(ctxt, FALSE);
00600     
00601     g_scan_timeout_id = 0;
00602 
00603     return FALSE;  
00604 }
00605 
00606 static void on_servertype_update (erGtkSelectionGroup * selection, 
00607                                   gpointer button, gpointer data)
00608 {
00609     CN_LOGPRINTF ("entry selection[%p], button[%p], data[%p]", 
00610                    selection, button, data);
00611  
00612     GtkToggleButton* btn = GTK_TOGGLE_BUTTON(button);
00613     gboolean active = gtk_toggle_button_get_active(btn);
00614 
00615     if (active)
00616     {
00617         remove_timeout_ids();
00618         
00619         g_timeout_add(1000, delay_erbusy_blink, NULL);
00620         connect_scan_abort(cmgr_get_scan_ctxt());
00621         
00622         
00623         g_scan_timeout_id = g_timeout_add(200,
00624                                 delay_servertype_udpate, 
00625                                 (gpointer)selection);
00626     }
00627 }
00628 
00629 static gboolean delay_networktype_udpate(gpointer data)
00630 {
00631     int                  selectedId;
00632     erGtkSelectionGroup *selection;
00633     scanContext_t       *ctxt;
00634 
00635     if (connect_scan_freeze_ui(cmgr_get_scan_ctxt()))
00636     {
00637         CN_WARNPRINTF("call me later ...");
00638         connect_options_update_info(scanAborting_e);
00639         display_update_request_screen_refresh(SETTING_ITEM_CHANGE, 
00640                                               WAVEFORM_TYPING);
00641         return TRUE;  
00642     }
00643 
00644     selection = ERGTK_SELECTION_GROUP(data);
00645     ergtk_selection_group_get_selected_buttons(selection, &selectedId, 1);
00646     if (selectedId == 0)
00647     {
00648         
00649         connect_data_set_network_type(wired_t);
00650     }
00651     else if (selectedId == 1)
00652     {
00653         
00654         connect_data_set_network_type (wireless_t);
00655     }
00656     else if (selectedId == 2)
00657     {
00658         
00659         connect_data_set_network_type(dialup_t);
00660     }
00661 
00662     
00663     connect_options_update_info(scanRunning_e);
00664     display_update_request_screen_refresh(SETTING_ITEM_CHANGE, 
00665                                           WAVEFORM_TYPING);
00666 
00667     connect_options_restore_scan_ctxt();
00668     ctxt = cmgr_get_scan_ctxt();
00669     connect_scan(ctxt, FALSE);
00670 
00671     g_scan_timeout_id = 0;
00672 
00673     return FALSE;  
00674 }
00675 
00676 static void on_networktype_update (erGtkSelectionGroup * selection, 
00677                                    gpointer button, gpointer data)
00678 {
00679     CN_LOGPRINTF ("entry selection[%p], button[%p], data[%p]", 
00680                    selection, button, data);
00681 
00682     GtkToggleButton* btn = GTK_TOGGLE_BUTTON(button);
00683     gboolean active = gtk_toggle_button_get_active(btn);
00684 
00685     if (active)
00686     {
00687         remove_timeout_ids();
00688 
00689         g_timeout_add(1000, delay_erbusy_blink, NULL);
00690         connect_scan_abort(cmgr_get_scan_ctxt());
00691 
00692         
00693         g_scan_timeout_id = g_timeout_add(200, 
00694                                        delay_networktype_udpate, 
00695                                        (gpointer)selection);
00696     }
00697 }
00698 
00699 static gboolean connect_ping_during_idle(gpointer data)
00700 {
00701     CN_LOGPRINTF("entry");
00702 
00703     pingContext_t *ctxt;
00704     gboolean delay = (gboolean)data;
00705     
00706     connect_profiles_restore_ping_ctxt();
00707     
00708     ctxt = cmgr_get_ping_ctxt();
00709     connect_ping_select_initial_profile(ctxt);
00710     connect_ping(ctxt, delay);
00711     
00712     return FALSE;
00713 }
00714 
00715 
00716 static gboolean on_delayed_scan_networks_done(gpointer data)
00717 {
00718     int          nProfiles;
00719     connection_t networkType;
00720     gboolean     nextPage = FALSE;
00721 
00722     nProfiles = connect_data_get_n_network_profiles();
00723     networkType = connect_data_get_network_type();
00724 
00725     switch (networkType)
00726     {
00727         case wireless_t:
00728             if (nProfiles > 0)
00729             {
00730                 nextPage = TRUE;
00731             }
00732             break;
00733         case dialup_t:
00734             nextPage = TRUE;
00735             break;
00736         case wired_t:
00737             nextPage = TRUE;
00738             break;
00739         default:
00740             break;
00741     }    
00742 
00743     if (nextPage)
00744     {
00745         display_update_increase_level(MAIN_WINDOW_EXPOSE_LEVEL);
00746    
00747         
00748         connect_profiles_display();
00749         connect_goto_page(connectScreenProfiles_e);
00750 
00751         if (nProfiles > 0)
00752         {
00753             
00754             
00755             
00756             gtk_idle_add(connect_ping_during_idle, (gpointer)TRUE);
00757         }
00758     }
00759     else
00760     {
00761         connect_options_update_info(rescanNeed_e);
00762         display_update_request_screen_refresh(SETTING_ITEM_CHANGE, 
00763                                               WAVEFORM_TYPING);
00764     }    
00765 
00766     g_scan_done_timeout_id = 0;
00767     return FALSE;
00768 }
00769 
00770 void connect_options_scan_networks_done(void)
00771 {
00772     CN_LOGPRINTF("entry");
00773 
00774     g_scan_done_timeout_id = g_timeout_add(5000, 
00775                             on_delayed_scan_networks_done, 
00776                             NULL);
00777 }
00778 
00779 void connect_options_restore_scan_ctxt(void)
00780 {
00781     scanContext_t *ctxt;
00782     connection_t networkType;
00783     char *ssidList;
00784 
00785     CN_LOGPRINTF("entry");
00786     
00787     ctxt = cmgr_get_scan_ctxt();
00788     if (ctxt)
00789     {
00790         connect_scan_ctxt_set_mode(ctxt, connectScan_e);
00791         
00792         networkType = connect_data_get_network_type();
00793         connect_scan_ctxt_set_network_type(ctxt, networkType);
00794         
00795         connect_scan_ctxt_set_done_callbacks(ctxt,
00796                     connect_data_init_network_profiles,
00797                     connect_options_scan_networks_done);
00798 
00799         ssidList = connect_data_get_hidden_ssid_list();
00800         connect_scan_ctxt_set_ssidlist(ctxt, ssidList);
00801         g_free(ssidList);
00802     }
00803 }
00804 
00805 gboolean on_connect_options_keypress(GdkEventKey *event)
00806 {
00807     scanContext_t *ctxt;
00808     gboolean ret = FALSE;
00809 
00810     CN_LOGPRINTF("entry");
00811 
00812     switch (event->keyval)
00813     {
00814         case GDK_Return:
00815             
00816             ret = TRUE;
00817             break;
00818 
00819         case GDK_F5:
00820             
00821             
00822             remove_timeout_ids();
00823 
00824             ctxt = cmgr_get_scan_ctxt();
00825             connect_scan_abort(ctxt);
00826             
00827             cmgr_up_page();
00828             
00829             ret = TRUE;
00830             break;
00831 
00832         default:
00833             erbusy_off();
00834     }
00835     
00836     return ret;
00837 }
00838