diff options
-rw-r--r-- | res/layout/wifi_ap_dialog.xml | 45 | ||||
-rw-r--r-- | res/values/arrays.xml | 11 | ||||
-rw-r--r-- | src/com/android/settings/WifiCallingSettings.java | 11 | ||||
-rw-r--r-- | src/com/android/settings/wifi/WifiApDialog.java | 66 |
4 files changed, 81 insertions, 52 deletions
diff --git a/res/layout/wifi_ap_dialog.xml b/res/layout/wifi_ap_dialog.xml index 7a038cb..5452cd0 100644 --- a/res/layout/wifi_ap_dialog.xml +++ b/res/layout/wifi_ap_dialog.xml @@ -67,30 +67,6 @@ android:prompt="@string/wifi_security" android:entries="@array/wifi_ap_security" /> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - style="@style/wifi_item_label" - android:layout_marginTop="8dip" - android:text="@string/wifi_ap_band_config" /> - - <RadioGroup android:id = "@+id/choose_channel" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="vertical"> - - <RadioButton android:id="@+id/ap_2G_band" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:text="@string/wifi_ap_choose_2G" - android:layout_marginTop="8dip"/> - - <RadioButton android:id="@+id/ap_5G_band" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:text="@string/wifi_ap_choose_5G" - android:layout_marginTop="8dip"/> - </RadioGroup> </LinearLayout> <LinearLayout android:id="@+id/fields" @@ -130,5 +106,26 @@ style="@style/wifi_item_content" android:text="@string/wifi_show_password" /> </LinearLayout> + + <LinearLayout android:id="@+id/fields" + android:layout_width="match_parent" + android:layout_height="wrap_content" + style="@style/wifi_item" + android:orientation="vertical"> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + style="@style/wifi_item_label" + android:layout_marginTop="8dip" + android:text="@string/wifi_ap_band_config" /> + + <Spinner android:id="@+id/choose_channel" + android:layout_width="match_parent" + android:layout_height="wrap_content" + style="@style/wifi_item_content" + android:prompt="@string/wifi_ap_band_config" /> + </LinearLayout> + </LinearLayout> </ScrollView> diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 16f1970..032382e 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -324,6 +324,17 @@ <item>AKA\'</item> </string-array> + <!-- Wi-Fi AP band settings. Either 2.4GHz or 5GHz. --> + <!-- Note that adding/removing/moving the items will need wifi settings code change. --> + <string-array name="wifi_ap_band_config_full"> + <item>@string/wifi_ap_choose_2G</item> + <item>@string/wifi_ap_choose_5G</item> + </string-array> + + <string-array name="wifi_ap_band_config_2G_only"> + <item>@string/wifi_ap_choose_2G</item> + </string-array> + <!-- Wi-Fi WPS setup for p2p connections. --> <!-- Note that adding/removing/moving the items will need wifi settings code change. --> <string-array name="wifi_p2p_wps_setup"> diff --git a/src/com/android/settings/WifiCallingSettings.java b/src/com/android/settings/WifiCallingSettings.java index c950949..24e2db4 100644 --- a/src/com/android/settings/WifiCallingSettings.java +++ b/src/com/android/settings/WifiCallingSettings.java @@ -178,10 +178,9 @@ public class WifiCallingSettings extends SettingsPreferenceFragment boolean wfcEnabled = ImsManager.isWfcEnabledByUser(context) && ImsManager.isNonTtyOrTtyOnVolteEnabled(context); mSwitch.setChecked(wfcEnabled); - int wfcMode = ImsManager.getWfcMode(context); mButtonWfcMode.setValue(Integer.toString(wfcMode)); - mButtonWfcMode.setSummary(getWfcModeSummary(context, wfcMode)); + updateButtonWfcMode(context, wfcEnabled, wfcMode); context.registerReceiver(mIntentReceiver, mIntentFilter); @@ -217,11 +216,15 @@ public class WifiCallingSettings extends SettingsPreferenceFragment ImsManager.setWfcSetting(context, isChecked); int wfcMode = ImsManager.getWfcMode(context); + updateButtonWfcMode(context, isChecked, wfcMode); + } + + private void updateButtonWfcMode(Context context, boolean wfcEnabled, int wfcMode) { mButtonWfcMode.setSummary(getWfcModeSummary(context, wfcMode)); - mButtonWfcMode.setEnabled(isChecked); + mButtonWfcMode.setEnabled(wfcEnabled); final PreferenceScreen preferenceScreen = getPreferenceScreen(); - if (isChecked) { + if (wfcEnabled) { preferenceScreen.addPreference(mButtonWfcMode); } else { preferenceScreen.removePreference(mButtonWfcMode); diff --git a/src/com/android/settings/wifi/WifiApDialog.java b/src/com/android/settings/wifi/WifiApDialog.java index 3c4d912..d30457b 100644 --- a/src/com/android/settings/wifi/WifiApDialog.java +++ b/src/com/android/settings/wifi/WifiApDialog.java @@ -29,12 +29,11 @@ import android.text.InputType; import android.text.TextWatcher; import android.view.View; import android.widget.AdapterView; +import android.widget.ArrayAdapter; import android.widget.CheckBox; import android.widget.EditText; import android.widget.Spinner; import android.widget.TextView; -import android.widget.RadioGroup; -import android.widget.RadioButton; import com.android.settings.R; @@ -58,12 +57,11 @@ public class WifiApDialog extends AlertDialog implements View.OnClickListener, private TextView mSsid; private int mSecurityTypeIndex = OPEN_INDEX; private EditText mPassword; - private RadioGroup mChannel; - private RadioButton mChannel2G; - private RadioButton mChannel5G; + private int mBandIndex = OPEN_INDEX; WifiConfiguration mWifiConfig; WifiManager mWifiManager; + private Context mContext; private static final String TAG = "WifiApDialog"; @@ -76,6 +74,7 @@ public class WifiApDialog extends AlertDialog implements View.OnClickListener, mSecurityTypeIndex = getSecurityTypeIndex(wifiConfig); } mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); + mContext = context; } public static int getSecurityTypeIndex(WifiConfiguration wifiConfig) { @@ -97,15 +96,7 @@ public class WifiApDialog extends AlertDialog implements View.OnClickListener, */ config.SSID = mSsid.getText().toString(); - //obtain the band configure - if (mChannel2G.isChecked()) { - config.apBand = 0; - } else if(mChannel5G.isChecked()) { - config.apBand = 1; - } else { - Log.e("TAG", "AP band configure error!"); - return null; - } + config.apBand = mBandIndex; switch (mSecurityTypeIndex) { case OPEN_INDEX: @@ -126,9 +117,10 @@ public class WifiApDialog extends AlertDialog implements View.OnClickListener, @Override protected void onCreate(Bundle savedInstanceState) { - + boolean mInit = true; mView = getLayoutInflater().inflate(R.layout.wifi_ap_dialog, null); Spinner mSecurity = ((Spinner) mView.findViewById(R.id.security)); + final Spinner mChannel = (Spinner) mView.findViewById(R.id.choose_channel); setView(mView); setInverseBackgroundForced(true); @@ -140,20 +132,20 @@ public class WifiApDialog extends AlertDialog implements View.OnClickListener, mSsid = (TextView) mView.findViewById(R.id.ssid); mPassword = (EditText) mView.findViewById(R.id.password); - mChannel = (RadioGroup) mView.findViewById(R.id.choose_channel); - mChannel2G = (RadioButton) mView.findViewById(R.id.ap_2G_band); - mChannel5G = (RadioButton) mView.findViewById(R.id.ap_5G_band); - + ArrayAdapter <CharSequence> channelAdapter; String countryCode = mWifiManager.getCountryCode(); if (!mWifiManager.is5GHzBandSupported() || countryCode == null) { //If no country code, 5GHz AP is forbidden - Log.e(TAG," NO country code, forbid 5GHz"); - mChannel5G.setVisibility(View.INVISIBLE); + Log.i(TAG," NO country code, forbid 5GHz"); + channelAdapter = ArrayAdapter.createFromResource(mContext, + R.array.wifi_ap_band_config_2G_only, android.R.layout.simple_spinner_item); mWifiConfig.apBand = 0; } else { - mChannel5G.setVisibility(View.VISIBLE); + channelAdapter = ArrayAdapter.createFromResource(mContext, + R.array.wifi_ap_band_config_full, android.R.layout.simple_spinner_item); } + channelAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); setButton(BUTTON_SUBMIT, context.getString(R.string.wifi_save), mListener); setButton(DialogInterface.BUTTON_NEGATIVE, @@ -162,9 +154,9 @@ public class WifiApDialog extends AlertDialog implements View.OnClickListener, if (mWifiConfig != null) { mSsid.setText(mWifiConfig.SSID); if (mWifiConfig.apBand == 0) { - mChannel2G.setChecked(true); + mBandIndex = 0; } else { - mChannel5G.setChecked(true); + mBandIndex = 1; } mSecurity.setSelection(mSecurityTypeIndex); @@ -173,6 +165,32 @@ public class WifiApDialog extends AlertDialog implements View.OnClickListener, } } + mChannel.setAdapter(channelAdapter); + mChannel.setOnItemSelectedListener( + new AdapterView.OnItemSelectedListener() { + boolean mInit = true; + @Override + public void onItemSelected(AdapterView<?> adapterView, View view, int position, + long id) { + if (!mInit) { + mBandIndex = position; + mWifiConfig.apBand = mBandIndex; + Log.i(TAG, "config on channelIndex : " + mBandIndex + " Band: " + + mWifiConfig.apBand); + } else { + mInit = false; + mChannel.setSelection(mBandIndex); + } + + } + + @Override + public void onNothingSelected(AdapterView<?> adapterView) { + + } + } + ); + mSsid.addTextChangedListener(this); mPassword.addTextChangedListener(this); ((CheckBox) mView.findViewById(R.id.show_password)).setOnClickListener(this); |