am 71cc49e4: Airplane Mode in Emergency Callback Mode (ECM)

Merge commit '71cc49e480e7dfd5d0986d7600d0c73aecdbdf93'

* commit '71cc49e480e7dfd5d0986d7600d0c73aecdbdf93':
  Airplane Mode in Emergency Callback Mode (ECM)
This commit is contained in:
Chouting Zhang
2009-08-31 16:45:22 -07:00
committed by Android Git Automerger
2 changed files with 68 additions and 1 deletions

View File

@@ -22,11 +22,14 @@ import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.os.Message;
import android.os.SystemProperties;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.provider.Settings;
import android.telephony.ServiceState;
import com.android.internal.telephony.TelephonyProperties;
public class AirplaneModeEnabler implements Preference.OnPreferenceChangeListener {
private final Context mContext;
@@ -111,8 +114,23 @@ public class AirplaneModeEnabler implements Preference.OnPreferenceChangeListene
* Called when someone clicks on the checkbox preference.
*/
public boolean onPreferenceChange(Preference preference, Object newValue) {
setAirplaneModeOn((Boolean) newValue);
if (Boolean.parseBoolean(
SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE))) {
// In ECM mode, do not update database at this point
} else {
setAirplaneModeOn((Boolean) newValue);
}
return true;
}
public void setAirplaneModeInECM(boolean isECMExit, boolean isAirplaneModeOn) {
if (isECMExit) {
// update database based on the current checkbox state
setAirplaneModeOn(isAirplaneModeOn);
} else {
// update checkbox state based on database value
onAirplaneModeChanged();
}
}
}

View File

@@ -19,13 +19,19 @@ package com.android.settings;
import com.android.settings.bluetooth.BluetoothEnabler;
import com.android.settings.wifi.WifiEnabler;
import android.content.Intent;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.SystemProperties;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.PreferenceScreen;
import android.preference.PreferenceActivity;
import android.provider.Settings;
import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.telephony.TelephonyProperties;
public class WirelessSettings extends PreferenceActivity {
private static final String KEY_TOGGLE_AIRPLANE = "toggle_airplane";
@@ -33,10 +39,36 @@ public class WirelessSettings extends PreferenceActivity {
private static final String KEY_TOGGLE_WIFI = "toggle_wifi";
private static final String KEY_WIFI_SETTINGS = "wifi_settings";
private static final String KEY_VPN_SETTINGS = "vpn_settings";
public static final String EXIT_ECM_RESULT = "exit_ecm_result";
public static final int REQUEST_CODE_EXIT_ECM = 1;
private WifiEnabler mWifiEnabler;
private AirplaneModeEnabler mAirplaneModeEnabler;
private BluetoothEnabler mBtEnabler;
private CheckBoxPreference mAirplaneModePreference;
/**
* Invoked on each preference click in this hierarchy, overrides
* PreferenceActivity's implementation. Used to make sure we track the
* preference click events.
*/
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
if ( (preference == mAirplaneModePreference) &&
(Boolean.parseBoolean(
SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE))) ) {
// In ECM mode launch ECM app dialog
startActivityForResult(
new Intent(TelephonyIntents.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS, null),
REQUEST_CODE_EXIT_ECM);
return true;
}
else {
// Let the intents be launched by the Preference manager
return false;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -45,6 +77,7 @@ public class WirelessSettings extends PreferenceActivity {
addPreferencesFromResource(R.xml.wireless_settings);
initToggles();
mAirplaneModePreference = (CheckBoxPreference) findPreference(KEY_TOGGLE_AIRPLANE);
}
@Override
@@ -90,4 +123,20 @@ public class WirelessSettings extends PreferenceActivity {
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(requestCode) {
case REQUEST_CODE_EXIT_ECM:
Boolean isChoiceYes =
data.getBooleanExtra(EXIT_ECM_RESULT, false);
// Set Airplane mode based on the return value and checkbox state
mAirplaneModeEnabler.setAirplaneModeInECM(isChoiceYes,
mAirplaneModePreference.isChecked());
break;
default:
break;
}
}
}