diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/settings/CryptKeeper.java | 30 | ||||
-rw-r--r-- | src/com/android/settings/DataUsageSummary.java | 39 | ||||
-rw-r--r-- | src/com/android/settings/net/DataUsageMeteredSettings.java | 9 | ||||
-rw-r--r-- | src/com/android/settings/wifi/WifiSettings.java | 11 |
4 files changed, 62 insertions, 27 deletions
diff --git a/src/com/android/settings/CryptKeeper.java b/src/com/android/settings/CryptKeeper.java index 2739d91..10c067d 100644 --- a/src/com/android/settings/CryptKeeper.java +++ b/src/com/android/settings/CryptKeeper.java @@ -33,6 +33,7 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemProperties; import android.os.storage.IMountService; +import android.provider.Settings; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.Log; @@ -49,6 +50,7 @@ import android.widget.ProgressBar; import android.widget.TextView; import com.android.internal.telephony.ITelephony; +import com.android.internal.telephony.Phone; import java.util.List; @@ -296,6 +298,7 @@ public class CryptKeeper extends Activity implements TextView.OnEditorActionList | StatusBarManager.DISABLE_HOME | StatusBarManager.DISABLE_RECENT); + setAirplaneModeIfNecessary(); mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); // Check for (and recover) retained instance data final Object lastInstance = getLastNonConfigurationInstance(); @@ -607,6 +610,33 @@ public class CryptKeeper extends Activity implements TextView.OnEditorActionList } /** + * Set airplane mode on the device if it isn't an LTE device. + * Full story: In minimal boot mode, we cannot save any state. In particular, we cannot save + * any incoming SMS's. So SMSs that are received here will be silently dropped to the floor. + * That is bad. Also, we cannot receive any telephone calls in this state. So to avoid + * both these problems, we turn the radio off. However, on certain networks turning on and + * off the radio takes a long time. In such cases, we are better off leaving the radio + * running so the latency of an E911 call is short. + * The behavior after this is: + * 1. Emergency dialing: the emergency dialer has logic to force the device out of + * airplane mode and restart the radio. + * 2. Full boot: we read the persistent settings from the previous boot and restore the + * radio to whatever it was before it restarted. This also happens when rebooting a + * phone that has no encryption. + */ + private final void setAirplaneModeIfNecessary() { + final boolean isLteDevice = + TelephonyManager.getDefault().getLteOnCdmaMode() == Phone.LTE_ON_CDMA_TRUE; + if (!isLteDevice) { + Log.d(TAG, "Going into airplane mode."); + Settings.System.putInt(getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 1); + final Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED); + intent.putExtra("state", true); + sendBroadcast(intent); + } + } + + /** * Code to update the state of, and handle clicks from, the "Emergency call" button. * * This code is mostly duplicated from the corresponding code in diff --git a/src/com/android/settings/DataUsageSummary.java b/src/com/android/settings/DataUsageSummary.java index 1255b6b..3b0ce59 100644 --- a/src/com/android/settings/DataUsageSummary.java +++ b/src/com/android/settings/DataUsageSummary.java @@ -394,9 +394,6 @@ public class DataUsageSummary extends Fragment { mUsageSummary = (TextView) mHeader.findViewById(R.id.usage_summary); mEmpty = (TextView) mHeader.findViewById(android.R.id.empty); - // only assign layout transitions once first layout is finished - mListView.getViewTreeObserver().addOnGlobalLayoutListener(mFirstLayoutListener); - mAdapter = new DataUsageAdapter(mUidDetailProvider, mInsetSide); mListView.setOnItemClickListener(mListListener); mListView.setAdapter(mAdapter); @@ -574,25 +571,22 @@ public class DataUsageSummary extends Fragment { } /** - * Listener to setup {@link LayoutTransition} after first layout pass. + * Build and assign {@link LayoutTransition} to various containers. Should + * only be assigned after initial layout is complete. */ - private OnGlobalLayoutListener mFirstLayoutListener = new OnGlobalLayoutListener() { - @Override - public void onGlobalLayout() { - mListView.getViewTreeObserver().removeOnGlobalLayoutListener(mFirstLayoutListener); - - mTabsContainer.setLayoutTransition(buildLayoutTransition()); - mHeader.setLayoutTransition(buildLayoutTransition()); - mNetworkSwitchesContainer.setLayoutTransition(buildLayoutTransition()); - - final LayoutTransition chartTransition = buildLayoutTransition(); - chartTransition.setStartDelay(LayoutTransition.APPEARING, 0); - chartTransition.setStartDelay(LayoutTransition.DISAPPEARING, 0); - chartTransition.setAnimator(LayoutTransition.APPEARING, null); - chartTransition.setAnimator(LayoutTransition.DISAPPEARING, null); - mChart.setLayoutTransition(chartTransition); - } - }; + private void ensureLayoutTransitions() { + // skip when already setup + if (mChart.getLayoutTransition() != null) return; + + mTabsContainer.setLayoutTransition(buildLayoutTransition()); + mHeader.setLayoutTransition(buildLayoutTransition()); + mNetworkSwitchesContainer.setLayoutTransition(buildLayoutTransition()); + + final LayoutTransition chartTransition = buildLayoutTransition(); + chartTransition.disableTransitionType(LayoutTransition.APPEARING); + chartTransition.disableTransitionType(LayoutTransition.DISAPPEARING); + mChart.setLayoutTransition(chartTransition); + } private static LayoutTransition buildLayoutTransition() { final LayoutTransition transition = new LayoutTransition(); @@ -1176,6 +1170,9 @@ public class DataUsageSummary extends Fragment { } mUsageSummary.setText(getString(summaryRes, totalPhrase, rangePhrase)); + + // initial layout is finished above, ensure we have transitions + ensureLayoutTransitions(); } private final LoaderCallbacks<ChartData> mChartDataCallbacks = new LoaderCallbacks< diff --git a/src/com/android/settings/net/DataUsageMeteredSettings.java b/src/com/android/settings/net/DataUsageMeteredSettings.java index fea8a12..69326bc 100644 --- a/src/com/android/settings/net/DataUsageMeteredSettings.java +++ b/src/com/android/settings/net/DataUsageMeteredSettings.java @@ -48,6 +48,7 @@ public class DataUsageMeteredSettings extends SettingsPreferenceFragment { private PreferenceCategory mMobileCategory; private PreferenceCategory mWifiCategory; + private Preference mWifiDisabled; @Override public void onCreate(Bundle icicle) { @@ -63,9 +64,9 @@ public class DataUsageMeteredSettings extends SettingsPreferenceFragment { addPreferencesFromResource(R.xml.data_usage_metered_prefs); mMobileCategory = (PreferenceCategory) findPreference("mobile"); mWifiCategory = (PreferenceCategory) findPreference("wifi"); + mWifiDisabled = findPreference("wifi_disabled"); updateNetworks(context); - } private void updateNetworks(Context context) { @@ -76,15 +77,15 @@ public class DataUsageMeteredSettings extends SettingsPreferenceFragment { getPreferenceScreen().removePreference(mMobileCategory); } - if (hasWifiRadio(context)) { - mWifiCategory.removeAll(); + mWifiCategory.removeAll(); + if (hasWifiRadio(context) && mWifiManager.isWifiEnabled()) { for (WifiConfiguration config : mWifiManager.getConfiguredNetworks()) { if (config.SSID != null) { mWifiCategory.addPreference(buildWifiPref(context, config)); } } } else { - getPreferenceScreen().removePreference(mWifiCategory); + mWifiCategory.addPreference(mWifiDisabled); } } diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java index a50b3cf..8772f53 100644 --- a/src/com/android/settings/wifi/WifiSettings.java +++ b/src/com/android/settings/wifi/WifiSettings.java @@ -269,7 +269,9 @@ public class WifiSettings extends SettingsPreferenceFragment if (mShowMenu) { registerForContextMenu(getListView()); } - setHasOptionsMenu(mShowMenu); + // FIXME: When WPS image button is implemented, use mShowMenu instead of always showing + // the options menu + setHasOptionsMenu(true); // After confirming PreferenceScreen is available, we call super. super.onActivityCreated(savedInstanceState); @@ -304,8 +306,8 @@ public class WifiSettings extends SettingsPreferenceFragment @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + final boolean wifiIsEnabled = mWifiManager.isWifiEnabled(); if (mShowMenu) { - final boolean wifiIsEnabled = mWifiManager.isWifiEnabled(); menu.add(Menu.NONE, MENU_ID_WPS_PBC, 0, R.string.wifi_menu_wps_pbc) .setEnabled(wifiIsEnabled) .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); @@ -327,6 +329,11 @@ public class WifiSettings extends SettingsPreferenceFragment menu.add(Menu.NONE, MENU_ID_ADVANCED, 0, R.string.wifi_menu_advanced) //.setIcon(android.R.drawable.ic_menu_manage) .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); + } else { + // FIXME: Interim support for WPS, until ImageButton is available + menu.add(Menu.NONE, MENU_ID_WPS_PBC, 0, R.string.wifi_menu_wps_pbc) + .setEnabled(wifiIsEnabled) + .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); } super.onCreateOptionsMenu(menu, inflater); } |