#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#include <glib.h>
#include <liberregxml/erregapi.h>
Go to the source code of this file.
Copyright (C) 2007 iRex Technologies BV.
Definition in file editScreenWireless.h.
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }