connectionMgr/inc/editScreenWireless.h File Reference

connectionMgr - "Wireless Configuration" screen. More...

#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#include <glib.h>
#include <liberregxml/erregapi.h>

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

GtkWidget * edit_wireless_create (void)
void edit_wireless_enable_save_button (gboolean enable)
void edit_wireless_set_text (void)
void edit_wireless_determine_status (void)
void delay_edit_wireless_determine_status (void)
void edit_wireless_set_network_settings (const regNetworkProfile_t *setting)
void edit_wireless_get_network_settings (regNetworkProfile_t *settings)
gboolean edit_wireless_check_network_settings (void)
void edit_wireless_backup_network_settings (void)
void edit_wireless_restore_network_settings (void)
void edit_wireless_set_ssid (const char *ssid)
void edit_wireless_set_profilename (const gchar *profilename)
void edit_wireless_set_encrtype (wireless_encr_type_t encrtype)
void edit_wireless_set_encrkey (const char *encrkey)
const char * edit_wireless_get_ssid (void)
wireless_encr_type_t edit_wireless_get_encrtype (void)
const char * edit_wireless_get_profilename (void)
const char * edit_wireless_get_encrkey (void)
gboolean on_edit_wireless_keypress (GdkEventKey *event)


Detailed Description

connectionMgr - "Wireless Configuration" screen.

Copyright (C) 2007 iRex Technologies BV.

Definition in file editScreenWireless.h.


Function Documentation

void delay_edit_wireless_determine_status ( void   ) 

Definition at line 530 of file editScreenWireless.c.

00531 {
00532     g_idle_add(on_delay_determine_status, NULL);
00533 }

Here is the call graph for this function:

void edit_wireless_backup_network_settings ( void   ) 

Definition at line 806 of file editScreenWireless.c.

00807 {
00808     const char *ssid, *encrkey, *profilename;
00809     
00810     CN_LOGPRINTF("entry");
00811 
00812     ssid = edit_wireless_get_ssid();
00813     encrkey = edit_wireless_get_encrkey();
00814     profilename = edit_wireless_get_profilename();
00815 
00816     if (g_old_settings)
00817     {
00818         g_free(g_old_settings->SSID);
00819         g_free(g_old_settings->encrKey);
00820         g_free(g_old_settings);
00821     }
00822 
00823     g_old_settings = g_new0(regWirelessSetting_t, 1);
00824     g_assert(g_old_settings != NULL);
00825     g_old_settings->SSID = g_strdup(ssid);
00826     g_old_settings->encrType = edit_wireless_get_encrtype();
00827     g_old_settings->encrKey = g_strdup(encrkey);
00828     
00829     g_free(g_old_profilename);
00830     g_old_profilename = g_strdup(profilename);
00831 }

Here is the call graph for this function:

gboolean edit_wireless_check_network_settings ( void   ) 

Definition at line 791 of file editScreenWireless.c.

00792 {
00793     wlanStatus_t status;
00794     gboolean valid = TRUE;
00795 
00796     status = edit_wireless_detect_status();
00797     if (status != undefWlanStatus_e)
00798     {
00799         valid = FALSE;
00800     }
00801     
00802     CN_LOGPRINTF("return valid=%d", valid);
00803     return valid;
00804 }

Here is the call graph for this function:

GtkWidget* edit_wireless_create ( void   ) 

Definition at line 140 of file editScreenWireless.c.

00141 {
00142     GtkWidget *item;
00143     GtkWidget *vbox;
00144     bkWdtLabelEntry  *ssid;
00145     bkWdtLabelButton *encrtype;
00146     bkWdtLabelEntry  *encrkey;
00147     bkWdtLabelEntry  *profilename;
00148     bkWdtLabelButton *buttons;
00149     GtkWidget *info;
00150     GtkWidget *widget;
00151 
00152     CN_LOGPRINTF("entry");
00153 
00154     // item
00155     item = gtk_settingitem_new("");
00156 
00157     // vbox
00158     vbox = gtk_vbox_new(FALSE, VBOX_SPACING);
00159     gtk_settingitem_add_details(GTK_SETTINGITEM(item), vbox);
00160 
00161     // ssid
00162     ssid = bk_wdt_label_entry_new(string_e);
00163     gtk_box_pack_start(GTK_BOX(vbox), ssid->background, FALSE, FALSE, 0);
00164 
00165     // encrtype
00166     encrtype = bk_wdt_label_button_new(3, TRUE, 0, 1);
00167     gtk_box_pack_start(GTK_BOX(vbox), encrtype->background, 
00168                        FALSE, FALSE, 0);
00169 
00170     // encrkey
00171     encrkey = bk_wdt_label_entry_new(string_e);
00172     gtk_entry_set_visibility(GTK_ENTRY(encrkey->details->entry), FALSE); 
00173     gtk_box_pack_start(GTK_BOX(vbox), encrkey->background, 
00174                        FALSE, FALSE, 0);
00175 
00176     // profilename
00177     profilename = bk_wdt_label_entry_new(string_e);
00178     gtk_box_pack_start(GTK_BOX(vbox), profilename->background, 
00179                        FALSE, FALSE, 0);
00180 
00181     // buttons
00182     buttons = bk_wdt_label_button_new(3, FALSE, 0, 1);
00183     gtk_box_pack_start(GTK_BOX(vbox), buttons->background, 
00184                        FALSE, FALSE, 0);
00185 
00186     // info
00187     info = gtk_infoitem_new(FALSE);
00188     gtk_box_pack_start(GTK_BOX(vbox), info, FALSE, FALSE, 0);
00189 
00190     // signal handlers
00191     widget = ssid->details->entry;
00192     g_signal_connect_after(G_OBJECT(widget), "changed-stable", 
00193                            G_CALLBACK(on_ssid_changed), NULL);
00194     widget = ssid->details->button;
00195     g_signal_connect_after(G_OBJECT(widget), "toggled", 
00196                            G_CALLBACK(on_ssid_next), NULL);
00197 
00198     widget = GTK_WIDGET(encrtype->details->selection);
00199     g_signal_connect(G_OBJECT(widget), "selection-update",
00200                      G_CALLBACK(on_encrtype_update), NULL);
00201     
00202     widget = encrkey->details->entry;
00203     g_signal_connect_after(G_OBJECT(widget), "changed-stable", 
00204                            G_CALLBACK(on_encrkey_changed), NULL);
00205 
00206     widget = profilename->details->entry;
00207     g_signal_connect_after(G_OBJECT(widget), "changed-stable", 
00208                            G_CALLBACK(on_profilename_changed), NULL);
00209     widget = profilename->details->button;
00210     g_signal_connect_after(G_OBJECT(widget), "toggled", 
00211                            G_CALLBACK(on_profilename_next), NULL);
00212 
00213     widget = GTK_WIDGET(buttons->details->selection);
00214     g_signal_connect(G_OBJECT(widget), "selection-update",
00215                      G_CALLBACK(on_buttons_update), NULL);
00216 
00217     // show widgets
00218     gtk_widget_show(item);
00219     gtk_widget_show(vbox);
00220     gtk_widget_show(ssid->background);
00221     gtk_widget_show(encrtype->background);
00222     gtk_widget_show(encrkey->background);
00223     gtk_widget_hide(encrkey->details->button);
00224     gtk_widget_show(profilename->background);
00225     gtk_widget_show(buttons->background);
00226     gtk_widget_show(info);
00227 
00228     // global variables
00229     g_wireless = item;
00230     g_ssid = ssid;
00231     g_encrtype = encrtype;
00232     g_encrkey = encrkey;
00233     g_profilename = profilename;
00234     g_buttons = buttons;
00235     g_info = info;
00236 
00237     CN_LOGPRINTF("done");
00238 
00239     // return
00240     return item;
00241  }

Here is the call graph for this function:

void edit_wireless_determine_status ( void   ) 

Definition at line 514 of file editScreenWireless.c.

00515 {
00516     wlanStatus_t status;
00517 
00518     status = edit_wireless_detect_status();
00519     edit_wireless_set_status(status);
00520 }

Here is the call graph for this function:

void edit_wireless_enable_save_button ( gboolean  enable  ) 

Definition at line 300 of file editScreenWireless.c.

00301 {
00302     GtkWidget *widget;
00303 
00304     CN_LOGPRINTF("entry %d", enable);
00305     
00306     if (g_buttons)
00307     {
00308         widget = GTK_WIDGET(g_buttons->details->buttonList[1]);
00309         gtk_widget_set_sensitive(widget, enable);
00310     }
00311 }

const char* edit_wireless_get_encrkey ( void   ) 

Definition at line 757 of file editScreenWireless.c.

00758 {
00759     GtkWidget  *widget;
00760     const char *encrkey = NULL;
00761 
00762     CN_LOGPRINTF("entry");
00763 
00764     if (g_encrkey)
00765     {
00766         widget =  g_encrkey->details->entry;
00767         encrkey = gtk_entry_get_text(GTK_ENTRY(widget)); 
00768     }
00769 
00770     CN_LOGPRINTF("return encrkey=%s", encrkey);
00771     return encrkey;
00772 }

wireless_encr_type_t edit_wireless_get_encrtype ( void   ) 

Definition at line 722 of file editScreenWireless.c.

00723 {
00724     GtkWidget *widget;
00725     erGtkSelectionGroup *sel;
00726     int        nsel;
00727     wireless_encr_type_t encrType;
00728  
00729     CN_LOGPRINTF("entry");
00730 
00731     g_return_val_if_fail(g_encrtype != NULL, encr_undefined_t);
00732 
00733     // get current value from screen object
00734     widget =  g_encrtype->details->selection;
00735     sel = ERGTK_SELECTION_GROUP(widget);
00736     ergtk_selection_group_get_selected_buttons(sel, &nsel, 1);
00737     switch (nsel)
00738     {
00739         case 0:
00740             encrType = encr_none_t;
00741             break;
00742         case 1:
00743             encrType = encr_wep_t;
00744             break;
00745         case 2:
00746             encrType = encr_wpa_t;
00747             break;
00748         default:
00749             encrType = encr_undefined_t;
00750             break;
00751     }
00752 
00753     CN_LOGPRINTF("return encrType=%d", encrType);
00754     return encrType;
00755 }

Here is the call graph for this function:

void edit_wireless_get_network_settings ( regNetworkProfile_t settings  ) 

Definition at line 663 of file editScreenWireless.c.

00664 {
00665     const char *ssid = NULL;
00666     const char *encrkey = NULL;
00667     const char *profilename = NULL;
00668     regWirelessSetting_t *wirelessSettings;
00669 
00670     CN_LOGPRINTF("entry");
00671 
00672     g_return_if_fail(settings != NULL);
00673     g_return_if_fail(settings->connection == wireless_t);
00674    
00675     // clear wireless wirelessSettings
00676     wirelessSettings = settings->wirelessSettings;
00677     if (wirelessSettings)
00678     {
00679         g_free(wirelessSettings->SSID);
00680         g_free(wirelessSettings->encrKey);
00681         g_free(wirelessSettings);
00682         wirelessSettings = NULL;
00683         settings->wirelessSettings = NULL;
00684     }
00685 
00686     // store new settings, if wireless selected
00687     if (settings->connection == wireless_t)
00688     {
00689         ssid = edit_wireless_get_ssid();
00690         encrkey = edit_wireless_get_encrkey();
00691         profilename = edit_wireless_get_profilename();
00692         
00693         g_free(settings->name);
00694         settings->name = g_strdup(profilename);
00695 
00696         wirelessSettings = g_new0(regWirelessSetting_t, 1);
00697         g_assert(wirelessSettings != NULL);
00698         wirelessSettings->SSID     = g_strdup(ssid);
00699         wirelessSettings->encrType = edit_wireless_get_encrtype();
00700         wirelessSettings->encrKey  = g_strdup(encrkey);
00701         // always treat it as non-broadcast access point
00702         wirelessSettings->broadcast = FALSE;
00703         settings->wirelessSettings = wirelessSettings;
00704     }
00705 }

Here is the call graph for this function:

const char* edit_wireless_get_profilename ( void   ) 

Definition at line 774 of file editScreenWireless.c.

00775 {
00776     GtkWidget  *widget;
00777     const char *profilename = NULL;
00778 
00779     CN_LOGPRINTF("entry");
00780 
00781     if (g_profilename)
00782     {
00783         widget = g_profilename->details->entry;
00784         profilename = gtk_entry_get_text(GTK_ENTRY(widget));
00785     }
00786 
00787     CN_LOGPRINTF("return profilename=%s", profilename);
00788     return profilename;
00789 }

const char* edit_wireless_get_ssid ( void   ) 

Definition at line 707 of file editScreenWireless.c.

00708 {
00709     GtkWidget *widget;
00710     const char *ssid = NULL;
00711 
00712     if (g_ssid)
00713     {
00714         widget = g_ssid->details->entry;
00715         ssid = gtk_entry_get_text(GTK_ENTRY(widget));
00716     }
00717 
00718     CN_LOGPRINTF("return ssid=%s", ssid);
00719     return ssid;
00720 }

void edit_wireless_restore_network_settings ( void   ) 

Definition at line 833 of file editScreenWireless.c.

00834 {
00835     char *ssid = NULL;
00836     char *encrkey = NULL;
00837     char *profilename = NULL; 
00838     
00839     CN_LOGPRINTF("entry");
00840      
00841     if (g_old_settings)
00842     {
00843        ssid = g_old_settings->SSID;
00844        encrkey = g_old_settings->encrKey;
00845     }
00846 
00847     if (g_old_profilename)
00848     {
00849         profilename = g_old_profilename;
00850     }
00851 
00852     edit_wireless_set_ssid(ssid);
00853     edit_wireless_set_encrtype(g_old_settings->encrType);
00854     edit_wireless_set_encrkey(encrkey);
00855     edit_wireless_set_profilename(profilename);
00856 }

Here is the call graph for this function:

void edit_wireless_set_encrkey ( const char *  encrkey  ) 

Definition at line 636 of file editScreenWireless.c.

00637 {
00638     GtkWidget *widget;
00639 
00640     CN_LOGPRINTF("entry encrkey[%s]", encrkey);
00641 
00642     if (g_encrkey)
00643     {
00644         widget = g_encrkey->details->entry;
00645         gtk_entry_set_text(GTK_ENTRY(widget), encrkey ? encrkey : "");
00646     }
00647 }

void edit_wireless_set_encrtype ( wireless_encr_type_t  encrtype  ) 

Definition at line 597 of file editScreenWireless.c.

00598 {
00599     GtkWidget *widget;
00600     erGtkSelectionGroup *sel;
00601     int        nsel;
00602 
00603     CN_LOGPRINTF("entry: encrType [%d]", encrType);
00604 
00605     // set screen objects
00606     switch (encrType)
00607     {
00608         case encr_undefined_t:
00609             widget = g_encrtype->details->selection;
00610             sel = ERGTK_SELECTION_GROUP(widget);
00611             ergtk_selection_group_get_selected_buttons(sel, &nsel, 1);
00612             if ((nsel >= 0) && (nsel <= 2))
00613             {
00614                 widget = GTK_WIDGET(g_encrtype->details->buttonList[nsel]);
00615                 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), FALSE);
00616             }
00617             break;
00618         case encr_none_t:
00619             widget = GTK_WIDGET(g_encrtype->details->buttonList[0]);
00620             gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), TRUE);
00621             break;
00622         case encr_wep_t:
00623             widget = GTK_WIDGET(g_encrtype->details->buttonList[1]);
00624             gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), TRUE);
00625             break;
00626         case encr_wpa_t:
00627             widget = GTK_WIDGET(g_encrtype->details->buttonList[2]);
00628             gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), TRUE);
00629             break;
00630         default:
00631             CN_ERRORPRINTF("Illegal encryption type [%d]", encrType);
00632             g_assert_not_reached();
00633     }
00634 }

Here is the call graph for this function:

void edit_wireless_set_network_settings ( const regNetworkProfile_t setting  ) 

Definition at line 549 of file editScreenWireless.c.

00550 {   
00551     gchar                *ssid        = NULL;
00552     wireless_encr_type_t encrtype    = encr_none_t;
00553     gchar                *encrkey     = NULL;
00554     gchar                *profilename = NULL;
00555     regWirelessSetting_t *wirelessSettings = NULL;
00556  
00557     CN_LOGPRINTF("entry");
00558 
00559     g_return_if_fail(settings != NULL);
00560     g_return_if_fail(settings->connection == wireless_t);
00561     
00562     profilename = settings->name;
00563     
00564     wirelessSettings = settings->wirelessSettings;
00565     if (wirelessSettings)
00566     {
00567         ssid = wirelessSettings->SSID;
00568         encrtype = wirelessSettings->encrType;
00569         encrkey = wirelessSettings->encrKey;
00570     }
00571 
00572     // set screen objects
00573     edit_wireless_set_ssid(ssid);
00574     edit_wireless_set_encrtype(encrtype);
00575     edit_wireless_set_encrkey(encrkey);
00576     edit_wireless_set_profilename(profilename);
00577 
00578     delay_edit_wireless_determine_status();
00579 
00580     // make a backup copy of the settings
00581     edit_wireless_backup_network_settings();
00582 }

Here is the call graph for this function:

void edit_wireless_set_profilename ( const gchar *  profilename  ) 

Definition at line 649 of file editScreenWireless.c.

00650 {
00651     GtkWidget *widget;
00652 
00653     CN_LOGPRINTF("entry profilename[%s]", profilename);
00654 
00655     if (g_profilename)
00656     {
00657         widget = g_profilename->details->entry;
00658         gtk_entry_set_text(GTK_ENTRY(widget), 
00659                 profilename ? profilename : "");
00660     }
00661 }

void edit_wireless_set_ssid ( const char *  ssid  ) 

Definition at line 584 of file editScreenWireless.c.

00585 {
00586     GtkWidget* widget;
00587 
00588     CN_LOGPRINTF("entry ssid[%s]", ssid);
00589 
00590     if (g_ssid)
00591     {
00592         widget = g_ssid->details->entry;
00593         gtk_entry_set_text(GTK_ENTRY(widget), ssid ? ssid : "");
00594     }
00595 }

void edit_wireless_set_text ( void   ) 

Definition at line 313 of file editScreenWireless.c.

00314 {
00315     GtkWidget *widget;
00316 
00317     CN_LOGPRINTF("entry");
00318 
00319     if (g_wireless)
00320     {
00321         gtk_settingitem_set_header_text(GTK_SETTINGITEM(g_wireless), 
00322                                         _("Network profile"));
00323     }
00324 
00325     if (g_ssid)
00326     {
00327         widget = g_ssid->details->label;
00328         gtk_label_set_text(GTK_LABEL(widget), 
00329                 _("Type the network name (SSID) and click 'Next'."));
00330     
00331         widget = g_ssid->details->button;
00332         gtk_button_set_label(GTK_BUTTON(widget), _("Next"));
00333     }
00334 
00335     if (g_encrtype)
00336     {
00337         widget = g_encrtype->details->label;
00338         gtk_label_set_text(GTK_LABEL(widget), 
00339                 _("Select the security type of this wireless network."));
00340 
00341         widget = GTK_WIDGET(g_encrtype->details->buttonList[0]);
00342         gtk_button_set_label(GTK_BUTTON(widget), _("Off"));
00343         
00344         widget = GTK_WIDGET(g_encrtype->details->buttonList[1]);
00345         gtk_button_set_label(GTK_BUTTON(widget), _("WEP"));
00346         
00347         widget = GTK_WIDGET(g_encrtype->details->buttonList[2]);
00348         gtk_button_set_label(GTK_BUTTON(widget), _("WPA"));
00349     }
00350 
00351     if (g_encrkey)
00352     {
00353         widget = g_encrkey->details->label;
00354         gtk_label_set_text(GTK_LABEL(widget),
00355                 _("Enter the security key / passphrase:"));
00356     }
00357 
00358     if (g_profilename)
00359     {
00360         widget = g_profilename->details->label;
00361         gtk_label_set_text(GTK_LABEL(widget),
00362                 _("You can personalize the profile name."));
00363 
00364         widget = g_profilename->details->button;
00365         gtk_button_set_label(GTK_BUTTON(widget), _("Next"));
00366     }
00367     
00368     if (g_buttons)
00369     {
00370         widget = g_buttons->details->label;
00371         gtk_label_set_text(GTK_LABEL(widget),
00372                 _("Select an action for this profile."));
00373 
00374         widget = GTK_WIDGET(g_buttons->details->buttonList[0]);
00375         gtk_button_set_label(GTK_BUTTON(widget), _("Test"));
00376 
00377         widget = GTK_WIDGET(g_buttons->details->buttonList[1]);
00378         gtk_button_set_label(GTK_BUTTON(widget), _("Save"));
00379 
00380         widget = GTK_WIDGET(g_buttons->details->buttonList[2]);
00381         gtk_button_set_label(GTK_BUTTON(widget), _("Save & Connect"));
00382     }    
00383 }

Here is the call graph for this function:

gboolean on_edit_wireless_keypress ( GdkEventKey *  event  ) 

Definition at line 1382 of file editScreenWireless.c.

01383 {
01384     pingContext_t *ctxt;
01385     const char *encrkey = NULL;
01386     gboolean ret = FALSE;
01387 
01388     CN_LOGPRINTF("entry");
01389 
01390     ctxt = cmgr_get_ping_ctxt();
01391     switch (event->keyval)
01392     {
01393         case GDK_Return:
01394             // 'Enter' key is pressed
01395             if (!connect_ping_in_pinging(ctxt))
01396             {
01397                 switch (g_wlan_status)
01398                 {
01399                     case inputSSID_e:
01400                         // simulate clicking the 'Next' button 
01401                         // of g_ssid
01402                         edit_wireless_click_ssid_next();
01403                         break;
01404                     case inputEncrType_e:
01405                         // simulate clicking the encr_none_t button
01406                         edit_wireless_click_encr_none();
01407                         break;
01408                     case inputEncrKeyWEP_e:
01409                     case inputEncrKeyWPA_e:
01410                         encrkey = edit_wireless_get_encrkey();
01411                         if (encrkey && (encrkey[0] != '\0'))
01412                         {
01413                             // move to the next field(profile name)
01414                             edit_wireless_set_status(wlanInputProfileName_e);
01415                             display_update_request_screen_refresh(STATUS_ITEM_CHANGE, 
01416                                                               WAVEFORM_TYPING);
01417 
01418                         }
01419                         break;
01420                     case wlanInputProfileName_e:
01421                     case undefWlanStatus_e:
01422                         // simulate clicking the 'Save & Connect' button
01423                         edit_wireless_click_saveconnect();
01424                         break;
01425                     default:
01426                         break;
01427                 }
01428                 ret = TRUE;
01429             }
01430             break;
01431 
01432         case GDK_F5:
01433             // 'UP' key is pressed
01434             // goto the one top level page
01435             connect_ping_abort(ctxt);
01436             cmgr_up_page();
01437             ret = TRUE;
01438             break;
01439         case GDK_Down:
01440         case GDK_Up:
01441             // avoid the standard GTK behaviour for GtkEntries
01442             erbusy_off();
01443             ret = TRUE;
01444         default:
01445             erbusy_off();
01446     }
01447     
01448     return ret;
01449 }

Here is the call graph for this function:


Generated on Sun Dec 14 17:15:44 2008 by  doxygen 1.5.6