/**
   * This method initialize the default values for the UI <br>
   * objects in parallel to inflating the same on the screen
   *
   * @param savedInstanceState If the activity is being re-initialized after previously being shut
   *     down then this Bundle contains the data it most recently supplied in
   *     onSaveInstanceState(Bundle)
   */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.basic_wireless_settings);
    mainMenuStngs = MainMenu.mMainMenuRef;
    mSoftAPCfg = MainMenu.mSoftAPCfg;
    MainMenu.basicWirelessEvent = this;

    // Edit default and orgSharPref preference
    defSharPref = PreferenceManager.getDefaultSharedPreferences(this);
    orgSharPref = getSharedPreferences(L10NConstants.CONFIG_FILE_NAME, MODE_PRIVATE);
    defPrefEditor = defSharPref.edit();
    orgPrefEditor = orgSharPref.edit();

    // Get the reference to the preferences defined in the UI
    configLst = (CheckBoxPreference) findPreference("wpsstate");
    networkLst = (ListPreference) findPreference(L10NConstants.HW_MODE_KEY);
    freqLst = (ListPreference) findPreference(L10NConstants.CHNL_KEY);
    authLst = (ListPreference) findPreference(L10NConstants.AUTH_MODE_KEY);
    broadChk = (CheckBoxPreference) findPreference("broadcast_ssid");
    wpsEnrollLst = (ListPreference) findPreference(L10NConstants.CONFIG_KEY);
    wpsEnrollLst.setSummary(getString(R.string.str_bws_enroll));
    ssidEdit = (EditTextPreference) findPreference("ssid");
    sKeys = getResources().getStringArray(R.array.bws_keys);

    // set preference change listener to SSID Broadcast,WPS, WPS Enroll Method
    wpsEnrollLst.setOnPreferenceChangeListener(this);
    broadChk.setOnPreferenceChangeListener(this);
    configLst.setOnPreferenceChangeListener(this);

    prefLst = new ArrayList<Preference>();
    prefLst.add(networkLst);
    prefLst.add(ssidEdit);
    prefLst.add(freqLst);
    prefLst.add(authLst);

    // set WPS enroll method 'true' based on WPS check value in the preference
    String sWpsChk = defSharPref.getString(L10NConstants.WPS_KEY, "");
    if (sWpsChk.equals(L10NConstants.VAL_ONE)) {
      configLst.setChecked(true);
    } else {
      configLst.setChecked(false);
    }
    // set SSID broadcast check 'true' based on SSID Broadcast value in the preference
    String sBroadChk = defSharPref.getString(L10NConstants.IGNORE_BROAD_SSID_KEY, "");
    if (sBroadChk.equals(L10NConstants.VAL_ONE)) {
      broadChk.setChecked(false);
    } else broadChk.setChecked(true);

    String sCountryCode = defSharPref.getString(L10NConstants.COUNTRY_KEY, "");
    String cCode = sCountryCode;
    if (!sCountryCode.equals("")) {
      Log.d("Basic Wireless", "Country Code Settings :" + sCountryCode + ":");
      // Extract country code value(eg:US) and regulatory domain(eg: REGDOMAIN_FCC) from pref
      // file((eg: US,REGDOMAIN_FCC)
      if (sCountryCode.contains(",")) {
        Log.d("Basic Wireless", "Country Code Settings if Contains ,");
        sCountryCode = sCountryCode.substring(0, sCountryCode.indexOf(","));
        sRegulatoryDomain = cCode.substring(cCode.indexOf(",") + 1, cCode.length());
      }
      // Set the channel freqency based on the regulatory domain associated with the country code
      // eg. US->Channel's=11, JP->Channel's=14
      if (sRegulatoryDomain.equals("REGDOMAIN_FCC")
          || sRegulatoryDomain.equals("REGDOMAIN_WORLD")
          || sRegulatoryDomain.equals("REGDOMAIN_N_AMER_EXC_FCC")) {
        sFreqArray = getResources().getStringArray(R.array.freqeleven);
        sFreqArrayValues = getResources().getStringArray(R.array.freqelevenValues);
        freqLst.setEntries(sFreqArray);
        freqLst.setEntryValues(sFreqArrayValues);
        Log.d("Basic Wireless", "Country Code Settings Setting Channal Frequency");
      } else if (sRegulatoryDomain.equals("REGDOMAIN_ETSI")
          || sRegulatoryDomain.equals("REGDOMAIN_APAC")
          || sRegulatoryDomain.equals("REGDOMAIN_KOREA")
          || sRegulatoryDomain.equals("REGDOMAIN_HI_5GHZ")
          || sRegulatoryDomain.equals("REGDOMAIN_NO_5GHZ")) {
        sFreqArray = getResources().getStringArray(R.array.freqthirteen);
        sFreqArrayValues = getResources().getStringArray(R.array.freqthirteenValues);
        freqLst.setEntries(sFreqArray);
        freqLst.setEntryValues(sFreqArrayValues);
        Log.d("Basic Wireless", "Country Code Settings Setting Channal Frequency");
      } else if (sRegulatoryDomain.equals("REGDOMAIN_JAPAN")) {
        sFreqArray = getResources().getStringArray(R.array.freqfourteen);
        sFreqArrayValues = getResources().getStringArray(R.array.freqfourteenValues);
        freqLst.setEntries(sFreqArray);
        freqLst.setEntryValues(sFreqArrayValues);
        Log.d("Basic Wireless", "Country Code Settings Setting Channal Frequency");
      } else {
        sFreqArray[0] = "Auto";
        sFreqArrayValues[0] = "0";
      }
      freqLst.setEntries(sFreqArray);
      freqLst.setEntryValues(sFreqArrayValues);
    }
    // set the default value for Network mode, SSID, Channel, authentication mode
    Log.d(
        L10NConstants.TAG_BWS,
        "Channel After the change "
            + defSharPref.getString(L10NConstants.CHNL_KEY, L10NConstants.VAL_ZERO));
    int keyCt = 0;
    for (Preference pref : prefLst) {
      pref.setOnPreferenceChangeListener(this);
      Log.d("Basic Wireless", "Setting Preference Change Listener and Summary");
      String sGetMode = defSharPref.getString(sKeys[keyCt], L10NConstants.VAL_ZERO);

      if (pref instanceof ListPreference) {
        ListPreference lstPref = (ListPreference) pref;
        lstPref.setSummary(lstPref.getEntry());
        if (!sGetMode.equals("")) {
          if (sGetMode.equals(L10NConstants.VAL_ZERO)) {
            String sAutoChannel = defSharPref.getString("autoChannel", "");
            if (!sAutoChannel.equals("")) {
              pref.setSummary(lstPref.getEntry() + "-Current Channel " + sAutoChannel);
            } else {
              pref.setSummary(lstPref.getEntry());
            }
          } else if (sKeys[keyCt].equals(L10NConstants.CHNL_KEY)) pref.setSummary(sGetMode);
        }
      } else if (pref instanceof EditTextPreference) {
        Log.d("Basic Wireless", "Setting Summary For EditBox");
        pref.setSummary(sGetMode);
      }
      keyCt++;
    }

    // ssid editText is validated not to allow empty string
    final EditText editText = ssidEdit.getEditText();
    editText.setOnKeyListener(
        new View.OnKeyListener() {
          public boolean onKey(View v, int keyCode, KeyEvent event) {
            sSsidVal = editText.getText().toString();
            if (sSsidVal.equals("")) {
              editText.setError("Value cannot be null");
            }
            return false;
          }
        });
    ssidEdit.setOnPreferenceClickListener(
        new Preference.OnPreferenceClickListener() {
          public boolean onPreferenceClick(Preference preference) {
            ssidEdit.getEditText().setError(null);
            return true;
          }
        });
  }