Merge "Remove pin and add restrictions for Security settings."
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 059e9a0..c8362f0 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -130,8 +130,7 @@
<activity android:name="Settings$WifiSettingsActivity"
android:taskAffinity=""
android:label="@string/wifi_settings"
- android:configChanges="orientation|keyboardHidden|screenSize"
- android:excludeFromRecents="true">
+ android:configChanges="orientation|keyboardHidden|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.WIFI_SETTINGS" />
@@ -270,8 +269,7 @@
<activity android:name="Settings$BluetoothSettingsActivity"
android:label="@string/bluetooth_settings_title"
- android:taskAffinity=""
- android:excludeFromRecents="true">
+ android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.BLUETOOTH_SETTINGS" />
@@ -309,8 +307,7 @@
<activity android:name="Settings$TetherSettingsActivity"
android:label="@string/tether_settings_title_all"
- android:taskAffinity=""
- android:excludeFromRecents="true">
+ android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
@@ -352,8 +349,7 @@
<activity android:name="Settings$VpnSettingsActivity"
android:label="@string/vpn_settings_title"
- android:taskAffinity=""
- android:excludeFromRecents="true">
+ android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.net.vpn.SETTINGS" />
@@ -369,8 +365,7 @@
<activity android:name="Settings$DateTimeSettingsActivity"
android:label="@string/date_and_time"
- android:taskAffinity=""
- android:excludeFromRecents="true">
+ android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.DATE_SETTINGS" />
@@ -527,8 +522,7 @@
<activity android:name="Settings$ZenModeSettingsActivity"
android:label="@string/zen_mode_settings_title"
android:exported="true"
- android:taskAffinity=""
- android:excludeFromRecents="true">
+ android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.ZEN_MODE_SETTINGS" />
@@ -543,8 +537,7 @@
<activity android:name="Settings$DisplaySettingsActivity"
android:label="@string/display_settings"
- android:taskAffinity=""
- android:excludeFromRecents="true">
+ android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="com.android.settings.DISPLAY_SETTINGS" />
@@ -608,8 +601,7 @@
<activity android:name="Settings$ManageApplicationsActivity"
android:label="@string/applications_settings"
- android:taskAffinity=""
- android:excludeFromRecents="true">
+ android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.APPLICATION_SETTINGS" />
@@ -737,8 +729,7 @@
<activity android:name="Settings$NotificationStationActivity"
android:theme="@android:style/Theme.DeviceDefault"
android:label="@string/notification_log_title"
- android:taskAffinity=""
- android:excludeFromRecents="true">
+ android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
@@ -752,7 +743,6 @@
<activity android:name="Settings$AppOpsSummaryActivity"
android:label="@string/app_ops_settings"
android:taskAffinity=""
- android:excludeFromRecents="true"
android:enabled="false">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@@ -771,8 +761,7 @@
<activity android:name="Settings$LocationSettingsActivity"
android:label="@string/location_settings_title"
android:configChanges="orientation|keyboardHidden|screenSize"
- android:taskAffinity=""
- android:excludeFromRecents="true">
+ android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.LOCATION_SOURCE_SETTINGS" />
@@ -807,8 +796,7 @@
<activity android:name="MonitoringCertInfoActivity"
android:label="@string/ssl_ca_cert_dialog_title"
android:theme="@style/Transparent"
- android:taskAffinity=""
- android:excludeFromRecents="true">
+ android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="com.android.settings.MONITORING_CERT_INFO" />
@@ -818,8 +806,7 @@
<activity android:name="Settings$TrustedCredentialsSettingsActivity"
android:label="@string/trusted_credentials"
- android:taskAffinity=""
- android:excludeFromRecents="true">
+ android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="com.android.settings.TRUSTED_CREDENTIALS" />
@@ -930,8 +917,7 @@
<activity android:name="Settings$AccessibilitySettingsActivity"
android:label="@string/accessibility_settings"
android:configChanges="orientation|keyboardHidden|screenSize"
- android:taskAffinity=""
- android:excludeFromRecents="true">
+ android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.ACCESSIBILITY_SETTINGS" />
@@ -1308,8 +1294,7 @@
<activity android:name="Settings$WifiDisplaySettingsActivity"
android:label="@string/wifi_display_settings_title"
- android:taskAffinity=""
- android:excludeFromRecents="true">
+ android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.WIFI_DISPLAY_SETTINGS" />
@@ -1437,8 +1422,7 @@
<activity android:name="Settings$PowerUsageSummaryActivity"
android:label="@string/power_usage_summary_title"
- android:taskAffinity=""
- android:excludeFromRecents="true">
+ android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.POWER_USAGE_SUMMARY" />
@@ -1464,8 +1448,7 @@
<activity android:name="Settings$BatterySaverSettingsActivity"
android:label="@string/battery_saver"
- android:taskAffinity=""
- android:excludeFromRecents="true">
+ android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.BATTERY_SAVER_SETTINGS" />
@@ -1567,8 +1550,7 @@
<activity android:name="Settings$DataUsageSummaryActivity"
android:label="@string/data_usage_summary_title"
- android:taskAffinity=""
- android:excludeFromRecents="true">
+ android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
@@ -1582,8 +1564,7 @@
<activity android:name="Settings$DreamSettingsActivity"
android:label="@string/screensaver_settings_title"
- android:taskAffinity=""
- android:excludeFromRecents="true">
+ android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.DREAM_SETTINGS" />
@@ -1598,8 +1579,7 @@
<activity android:name="Settings$UserSettingsActivity"
android:label="@string/user_settings_title"
- android:taskAffinity=""
- android:excludeFromRecents="true">
+ android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.USER_SETTINGS" />
@@ -1613,8 +1593,7 @@
<activity android:name="Settings$PaymentSettingsActivity"
android:label="@string/nfc_payment_settings_title"
- android:taskAffinity=""
- android:excludeFromRecents="true">
+ android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.NFC_PAYMENT_SETTINGS" />
@@ -1657,8 +1636,7 @@
<activity android:name="Settings$NotificationAccessSettingsActivity"
android:label="@string/manage_notification_access"
- android:taskAffinity=""
- android:excludeFromRecents="true">
+ android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS" />
@@ -1672,8 +1650,7 @@
<activity android:name="Settings$ConditionProviderSettingsActivity"
android:label="@string/manage_condition_providers"
- android:taskAffinity=""
- android:excludeFromRecents="true">
+ android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.ACTION_CONDITION_PROVIDER_SETTINGS" />
@@ -1688,8 +1665,7 @@
<activity android:name="Settings$NotificationSettingsActivity"
android:label="@string/notification_settings"
android:exported="true"
- android:taskAffinity=""
- android:excludeFromRecents="true">
+ android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.NOTIFICATION_SETTINGS" />
@@ -1706,7 +1682,6 @@
<activity-alias android:name="Settings$SoundSettingsActivity"
android:label="@string/notification_settings"
android:taskAffinity=""
- android:excludeFromRecents="true"
android:targetActivity="Settings$NotificationSettingsActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@@ -1735,8 +1710,7 @@
<activity android:name="Settings$NotificationDisplaySettingsActivity"
android:label="@string/notification_display_settings"
android:exported="true"
- android:taskAffinity=""
- android:excludeFromRecents="true">
+ android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.ACTION_NOTIFICATION_DISPLAY_SETTINGS" />
@@ -1751,8 +1725,7 @@
<activity android:name="Settings$OtherSoundSettingsActivity"
android:label="@string/other_sound_settings"
android:exported="true"
- android:taskAffinity=""
- android:excludeFromRecents="true">
+ android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.ACTION_OTHER_SOUND_SETTINGS" />
@@ -1767,8 +1740,7 @@
<activity android:name="Settings$AppNotificationSettingsActivity"
android:label="@string/app_notifications_title"
android:exported="true"
- android:taskAffinity=""
- android:excludeFromRecents="true">
+ android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.ACTION_APP_NOTIFICATION_SETTINGS" />
@@ -1784,7 +1756,6 @@
<activity android:name="RegulatoryInfoDisplayActivity"
android:label="@string/regulatory_information"
android:taskAffinity=""
- android:excludeFromRecents="true"
android:enabled="@bool/config_show_regulatory_info">
<intent-filter>
<action android:name="android.settings.SHOW_REGULATORY_INFO" />
diff --git a/res/layout/battery_history_chart.xml b/res/layout/battery_history_chart.xml
index 0d3e185..48eb7ed 100644
--- a/res/layout/battery_history_chart.xml
+++ b/res/layout/battery_history_chart.xml
@@ -14,22 +14,29 @@
limitations under the License.
-->
-<com.android.settings.fuelgauge.BatteryHistoryChart
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res/com.android.settings"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center_vertical"
- android:id="@+android:id/battery_history_chart"
- android:paddingEnd="?android:attr/scrollbarSize"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="#ff000000"
- app:headerAppearance="?android:attr/textAppearanceMedium"
- android:shadowRadius="4"
- android:shadowColor="?android:attr/colorBackground"
- android:shadowDx="2"
- android:shadowDy="2"
- app:barPrimaryColor="?android:attr/colorControlActivated"
- app:barPredictionColor="@color/material_empty_color_light"
- app:chartMinHeight="@dimen/battery_history_chart_height">
-</com.android.settings.fuelgauge.BatteryHistoryChart>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+ android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
+
+ <com.android.settings.fuelgauge.BatteryHistoryChart
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res/com.android.settings"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="center_vertical"
+ android:id="@+android:id/battery_history_chart"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:textColor="#ff000000"
+ app:headerAppearance="?android:attr/textAppearanceMedium"
+ android:shadowRadius="4"
+ android:shadowColor="?android:attr/colorBackground"
+ android:shadowDx="2"
+ android:shadowDy="2"
+ app:barPrimaryColor="?android:attr/colorControlActivated"
+ app:barPredictionColor="@color/material_empty_color_light"
+ app:chartMinHeight="@dimen/battery_history_chart_height">
+ </com.android.settings.fuelgauge.BatteryHistoryChart>
+
+</FrameLayout>
\ No newline at end of file
diff --git a/res/layout/preference_batteryhistory.xml b/res/layout/preference_batteryhistory.xml
index 766ec51..723b0e1 100644
--- a/res/layout/preference_batteryhistory.xml
+++ b/res/layout/preference_batteryhistory.xml
@@ -18,11 +18,11 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
- android:minHeight="@dimen/battery_history_chart_height"
- android:paddingEnd="?android:attr/scrollbarSize">
+ android:minHeight="@dimen/battery_history_chart_height">
<include layout="@layout/battery_history_chart" />
<TextView android:id="@+id/labelsHeader"
- android:layout_width="match_parent" android:layout_height="48dp"
+ android:layout_width="match_parent"
+ android:layout_height="48dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textSize="14sp"
android:textColor="?android:attr/colorControlActivated"
diff --git a/res/layout/preference_progress_category.xml b/res/layout/preference_progress_category.xml
index 17d87d7..d0cf60c 100644
--- a/res/layout/preference_progress_category.xml
+++ b/res/layout/preference_progress_category.xml
@@ -22,7 +22,8 @@
<!-- This text view has the style of the list separator text view without the background and padding. -->
<TextView
- style="?android:attr/listSeparatorTextViewStyle"
+ android:textAppearance="@android:style/TextAppearance.Material.Body2"
+ android:textColor="?android:attr/colorAccent"
android:background="@null"
android:id="@+android:id/title"
android:paddingStart="0dp"
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 30516a1..b835add 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -47,27 +47,12 @@
<color name="lock_pattern_view_success_color">#ff009688</color>
<color name="lock_pattern_view_error_color">#fff4511e</color>
- <color name="material_blue_grey_50">#ffeceff1</color>
- <color name="material_blue_grey_100">#ffcfd8dc</color>
- <color name="material_blue_grey_300">#ff90a4ae</color>
- <color name="material_blue_grey_500">#ff607d8b</color>
- <color name="material_blue_grey_700">#ff455a64</color>
-
- <color name="material_orange_100">#ffffe0b2</color>
- <color name="material_orange_300">#ffffb74d</color>
- <color name="material_orange_500">#ffff9800</color>
- <color name="material_orange_700">#fff57c00</color>
- <color name="material_orange_A200">#ffffab40</color>
- <color name="material_orange_A400">#ffff9100</color>
-
- <color name="material_accent_color_light">#FF009688</color>
- <color name="material_accent_color_dark">#FF80CBC4</color>
<color name="material_empty_color_light">#FFCED7DB</color>
- <!-- Palette colors referenced by top-level themes and manually copied into base theme. -->
+ <!-- Palette colors referenced by top-level themes. -->
<color name="theme_primary">#ff263238</color>
- <color name="theme_primary_dark">@color/theme_primary</color>
- <color name="theme_accent">@color/material_accent_color_light</color>
+ <color name="theme_primary_dark">#ff21272b</color>
+ <color name="theme_accent">#ff009688</color>
<color name="dashboard_background_color">#ffe1e1e0</color>
<color name="switchbar_background_color">#ff384248</color>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index d3c4334..eef43a7 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -74,7 +74,7 @@
<dimen name="captioning_preview_height">200dp</dimen>
- <dimen name="settings_side_margin">@*android:dimen/preference_fragment_padding_side</dimen>
+ <dimen name="settings_side_margin">0dip</dimen>
<!-- Weight of the left pane in a multi-pane preference layout. -->
<integer name="preferences_left_pane_weight">4</integer>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 8281ee1..5e06432 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -3741,6 +3741,9 @@
<!-- [CHAR_LIMIT=40] Battery saver: Label for feature, title + menu item -->
<string name="battery_saver">Battery saver</string>
+ <!-- [CHAR_LIMIT=40] Battery saver: Title for always on option -->
+ <string name="battery_saver_always_on_title">Always on</string>
+
<!-- [CHAR_LIMIT=40] Battery saver: Title for automatic entry option -->
<string name="battery_saver_turn_on_automatically_title">Turn on automatically</string>
@@ -3751,7 +3754,7 @@
<string name="battery_saver_turn_on_automatically_pct">at %1$d%% battery</string>
<!-- [CHAR_LIMIT=NONE] Battery saver: Feature description -->
- <string name="battery_saver_description">To help improve battery life, Battery saver will reduce your device’s performance.\n\nBattery saver will turn off when your device is plugged in.</string>
+ <string name="battery_saver_description">To help improve battery life, Battery saver will reduce your device’s performance.\n\nBattery saver will be disabled when your device is plugged in.</string>
<!-- Process Stats strings -->
<skip />
diff --git a/res/values/themes.xml b/res/values/themes.xml
index 91685a2..e23b300 100644
--- a/res/values/themes.xml
+++ b/res/values/themes.xml
@@ -30,6 +30,8 @@
<item name="ic_wps">@drawable/ic_wps_dark</item>
<item name="setup_divider_color">@color/setup_divider_color_dark</item>
<item name="wifi_signal">@drawable/wifi_signal_dark</item>
+ <item name="switchBarMarginStart">0dip</item>
+ <item name="switchBarMarginEnd">0dip</item>
</style>
<style name="SetupWizardWifiTheme.Light" parent="android:Theme.Material.Light.NoActionBar">
@@ -41,6 +43,8 @@
<item name="ic_wps">@drawable/ic_wps_light</item>
<item name="setup_divider_color">@color/setup_divider_color_light</item>
<item name="wifi_signal">@drawable/wifi_signal_light</item>
+ <item name="switchBarMarginStart">0dip</item>
+ <item name="switchBarMarginEnd">0dip</item>
</style>
<style name="Theme.WifiDialog" parent="@*android:style/Theme.Material.Dialog.Alert">
@@ -63,14 +67,7 @@
layouts against a remote context using our local theme colors. Due to the implementation
details of Theme, we can't reference any local resources and MUST instead use the values
directly. So use #ff263238 instead of @color/theme_primary and so on. -->
- <style name="Theme.SettingsBase" parent="@android:style/Theme.Material.Light.DarkActionBar">
- <!-- Should match @color/theme_primary. -->
- <item name="android:colorPrimary">#ff263238</item>
- <!-- Should match @color/theme_primary_dark. -->
- <item name="android:colorPrimaryDark">#ff263238</item>
- <!-- Should match @color/theme_accent. -->
- <item name="android:colorAccent">#ff009688</item>
- </style>
+ <style name="Theme.SettingsBase" parent="@android:style/Theme.Material.Settings" />
<style name="Theme.Settings" parent="Theme.SettingsBase">
<item name="@*android:preferenceHeaderPanelStyle">@style/PreferenceHeaderPanelSinglePane</item>
@@ -115,7 +112,7 @@
<item name="android:contentInsetStart">@dimen/actionbar_subsettings_contentInsetStart</item>
</style>
- <style name="Theme.DialogWhenLarge" parent="android:style/Theme.Material.Light.DialogWhenLarge">
+ <style name="Theme.DialogWhenLarge" parent="@android:style/Theme.Material.Light.DialogWhenLarge">
<!-- Used by the ActionBar -->
<item name="android:colorPrimary">@color/theme_primary</item>
<!-- Used by the StatusBar -->
diff --git a/res/xml/battery_saver_settings.xml b/res/xml/battery_saver_settings.xml
index a3729c5..472586a 100644
--- a/res/xml/battery_saver_settings.xml
+++ b/res/xml/battery_saver_settings.xml
@@ -18,6 +18,14 @@
android:title="@string/battery_saver"
android:key="battery_saver">
+ <!-- Always on -->
+ <SwitchPreference
+ android:key="always_on"
+ android:title="@string/battery_saver_always_on_title"
+ android:switchTextOff=""
+ android:switchTextOn=""
+ android:persistent="false" />
+
<!-- Turn on automatically -->
<com.android.settings.notification.DropDownPreference
android:key="turn_on_automatically"
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index 93cb8c6..6d1cadc 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -167,7 +167,6 @@
private WifiManager mWifiManager;
private SwitchBar mSwitchBar;
- private Switch mEnabledSwitch;
private boolean mLastEnabledState;
private boolean mHaveDebugSettings;
private boolean mDontPokeProperties;
@@ -386,11 +385,12 @@
final SettingsActivity activity = (SettingsActivity) getActivity();
mSwitchBar = activity.getSwitchBar();
- mEnabledSwitch = mSwitchBar.getSwitch();
- if (mUnavailable) {
- mEnabledSwitch.setEnabled(false);
+ if (mUnavailable) {
+ mSwitchBar.setEnabled(false);
return;
}
+
+ mSwitchBar.addOnSwitchChangeListener(this);
}
private boolean removePreferenceForProduction(Preference preference) {
@@ -441,7 +441,7 @@
final ContentResolver cr = getActivity().getContentResolver();
mLastEnabledState = Settings.Global.getInt(cr,
Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) != 0;
- mEnabledSwitch.setChecked(mLastEnabledState);
+ mSwitchBar.setChecked(mLastEnabledState);
setPrefsEnabledState(mLastEnabledState);
if (mHaveDebugSettings && !mLastEnabledState) {
@@ -452,17 +452,15 @@
Settings.Global.putInt(getActivity().getContentResolver(),
Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
mLastEnabledState = true;
- mEnabledSwitch.setChecked(mLastEnabledState);
+ mSwitchBar.setChecked(mLastEnabledState);
setPrefsEnabledState(mLastEnabledState);
}
-
- mSwitchBar.addOnSwitchChangeListener(this);
mSwitchBar.show();
}
@Override
- public void onPause() {
- super.onPause();
+ public void onDestroyView() {
+ super.onDestroyView();
if (mUnavailable) {
return;
@@ -1213,7 +1211,7 @@
@Override
public void onSwitchChanged(Switch switchView, boolean isChecked) {
- if (switchView != mEnabledSwitch) {
+ if (switchView != mSwitchBar.getSwitch()) {
return;
}
if (isChecked != mLastEnabledState) {
@@ -1466,7 +1464,7 @@
setPrefsEnabledState(mLastEnabledState);
} else {
// Reset the toggle
- mEnabledSwitch.setChecked(false);
+ mSwitchBar.setChecked(false);
}
}
}
@@ -1480,7 +1478,7 @@
mAdbDialog = null;
} else if (dialog == mEnableDialog) {
if (!mDialogClicked) {
- mEnabledSwitch.setChecked(false);
+ mSwitchBar.setChecked(false);
}
mEnableDialog = null;
}
diff --git a/src/com/android/settings/DreamSettings.java b/src/com/android/settings/DreamSettings.java
index 1175639..38cba7a 100644
--- a/src/com/android/settings/DreamSettings.java
+++ b/src/com/android/settings/DreamSettings.java
@@ -61,7 +61,6 @@
private DreamBackend mBackend;
private DreamInfoAdapter mAdapter;
private SwitchBar mSwitchBar;
- private Switch mSwitch;
private MenuItem[] mMenuItemsWhenEnabled;
private boolean mRefreshing;
@@ -105,6 +104,9 @@
public void onDestroyView() {
logd("onDestroyView()");
super.onDestroyView();
+
+ mSwitchBar.removeOnSwitchChangeListener(this);
+ mSwitchBar.hide();
}
@Override
@@ -124,7 +126,8 @@
final SettingsActivity sa = (SettingsActivity) getActivity();
mSwitchBar = sa.getSwitchBar();
- mSwitch = mSwitchBar.getSwitch();
+ mSwitchBar.addOnSwitchChangeListener(this);
+ mSwitchBar.show();
}
@Override
@@ -212,9 +215,6 @@
super.onPause();
mContext.unregisterReceiver(mPackageReceiver);
-
- mSwitchBar.removeOnSwitchChangeListener(this);
- mSwitchBar.hide();
}
@Override
@@ -231,9 +231,6 @@
filter.addAction(Intent.ACTION_PACKAGE_REPLACED);
filter.addDataScheme(PACKAGE_SCHEME);
mContext.registerReceiver(mPackageReceiver , filter);
-
- mSwitchBar.addOnSwitchChangeListener(this);
- mSwitchBar.show();
}
public static int getSummaryResource(Context context) {
@@ -263,8 +260,8 @@
logd("refreshFromBackend()");
mRefreshing = true;
boolean dreamsEnabled = mBackend.isEnabled();
- if (mSwitch.isChecked() != dreamsEnabled)
- mSwitch.setChecked(dreamsEnabled);
+ if (mSwitchBar.isChecked() != dreamsEnabled)
+ mSwitchBar.setChecked(dreamsEnabled);
mAdapter.clear();
if (dreamsEnabled) {
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index 5b3a61d..60a086a 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -22,6 +22,7 @@
import android.app.Activity;
import android.app.AlertDialog;
import android.app.admin.DevicePolicyManager;
+import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
@@ -43,6 +44,7 @@
import android.security.KeyStore;
import android.service.trust.TrustAgentService;
import android.telephony.TelephonyManager;
+import android.text.TextUtils;
import android.util.Log;
import com.android.internal.widget.LockPatternUtils;
@@ -311,27 +313,30 @@
PackageManager pm = getPackageManager();
List<ResolveInfo> resolveInfos = pm.queryIntentServices(TRUST_AGENT_INTENT,
PackageManager.GET_META_DATA);
- for (ResolveInfo resolveInfo : resolveInfos) {
- if (resolveInfo.serviceInfo == null) continue;
- if (!TrustAgentUtils.checkProvidePermission(resolveInfo, pm)) continue;
- TrustAgentUtils.TrustAgentComponentInfo trustAgentComponentInfo =
- TrustAgentUtils.getSettingsComponent(pm, resolveInfo);
- if (trustAgentComponentInfo.componentName == null ||
- trustAgentComponentInfo.title == null ||
- trustAgentComponentInfo.title == "") continue;
- Preference trustAgentPreference =
- new Preference(securityCategory.getContext());
- trustAgentPreference.setKey(KEY_TRUST_AGENT);
- trustAgentPreference.setTitle(trustAgentComponentInfo.title);
- trustAgentPreference.setSummary(trustAgentComponentInfo.summary);
- // Create intent for this preference.
- Intent intent = new Intent();
- intent.setComponent(trustAgentComponentInfo.componentName);
- intent.setAction(Intent.ACTION_MAIN);
- trustAgentPreference.setIntent(intent);
- // Add preference to the settings menu.
- securityCategory.addPreference(trustAgentPreference);
- break; // Only render the first one.
+ List<ComponentName> enabledTrustAgents = mLockPatternUtils.getEnabledTrustAgents();
+ if (enabledTrustAgents != null && !enabledTrustAgents.isEmpty()) {
+ for (ResolveInfo resolveInfo : resolveInfos) {
+ if (resolveInfo.serviceInfo == null) continue;
+ if (!TrustAgentUtils.checkProvidePermission(resolveInfo, pm)) continue;
+ TrustAgentUtils.TrustAgentComponentInfo trustAgentComponentInfo =
+ TrustAgentUtils.getSettingsComponent(pm, resolveInfo);
+ if (trustAgentComponentInfo.componentName == null ||
+ !enabledTrustAgents.contains(trustAgentComponentInfo.componentName) ||
+ TextUtils.isEmpty(trustAgentComponentInfo.title)) continue;
+ Preference trustAgentPreference =
+ new Preference(securityCategory.getContext());
+ trustAgentPreference.setKey(KEY_TRUST_AGENT);
+ trustAgentPreference.setTitle(trustAgentComponentInfo.title);
+ trustAgentPreference.setSummary(trustAgentComponentInfo.summary);
+ // Create intent for this preference.
+ Intent intent = new Intent();
+ intent.setComponent(trustAgentComponentInfo.componentName);
+ intent.setAction(Intent.ACTION_MAIN);
+ trustAgentPreference.setIntent(intent);
+ // Add preference to the settings menu.
+ securityCategory.addPreference(trustAgentPreference);
+ break; // Only render the first one.
+ }
}
}
diff --git a/src/com/android/settings/accessibility/CaptionPropertiesFragment.java b/src/com/android/settings/accessibility/CaptionPropertiesFragment.java
index 41c80ae..53d614d 100644
--- a/src/com/android/settings/accessibility/CaptionPropertiesFragment.java
+++ b/src/com/android/settings/accessibility/CaptionPropertiesFragment.java
@@ -142,27 +142,30 @@
refreshPreviewText();
}
});
+ }
+ @Override
+ public void onActivityCreated(Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+
+ final boolean enabled = mCaptioningManager.isEnabled();
SettingsActivity activity = (SettingsActivity) getActivity();
mSwitchBar = activity.getSwitchBar();
+ mSwitchBar.setTextViewLabel(enabled);
mToggleSwitch = mSwitchBar.getSwitch();
mToggleSwitch.setCheckedInternal(enabled);
getPreferenceScreen().setEnabled(enabled);
refreshPreviewText();
- }
- @Override
- public void onResume() {
- super.onResume();
installSwitchBarToggleSwitch();
}
@Override
- public void onPause() {
+ public void onDestroyView() {
+ super.onDestroyView();
removeSwitchBarToggleSwitch();
- super.onPause();
}
private void refreshPreviewText() {
diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
index 331c0e3..bc21759 100644
--- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
@@ -95,17 +95,17 @@
}
@Override
- public void onResume() {
- super.onResume();
+ public void onActivityCreated(Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
installActionBarToggleSwitch();
}
@Override
- public void onPause() {
- removeActionBarToggleSwitch();
+ public void onDestroyView() {
+ super.onDestroyView();
- super.onPause();
+ removeActionBarToggleSwitch();
}
protected abstract void onPreferenceToggled(String preferenceKey, boolean enabled);
diff --git a/src/com/android/settings/bluetooth/BluetoothEnabler.java b/src/com/android/settings/bluetooth/BluetoothEnabler.java
index be03b63..45f3d06 100644
--- a/src/com/android/settings/bluetooth/BluetoothEnabler.java
+++ b/src/com/android/settings/bluetooth/BluetoothEnabler.java
@@ -89,6 +89,16 @@
mIntentFilter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
}
+ public void setupSwitchBar() {
+ mSwitchBar.addOnSwitchChangeListener(this);
+ mSwitchBar.show();
+ }
+
+ public void teardownSwitchBar() {
+ mSwitchBar.removeOnSwitchChangeListener(this);
+ mSwitchBar.hide();
+ }
+
public void resume(Context context) {
if (mLocalAdapter == null) {
mSwitch.setEnabled(false);
@@ -103,8 +113,6 @@
handleStateChanged(mLocalAdapter.getBluetoothState());
mContext.registerReceiver(mReceiver, mIntentFilter);
- mSwitchBar.addOnSwitchChangeListener(this);
- mSwitchBar.show();
mValidListener = true;
}
@@ -114,8 +122,6 @@
}
mContext.unregisterReceiver(mReceiver);
- mSwitchBar.removeOnSwitchChangeListener(this);
- mSwitchBar.hide();
mValidListener = false;
}
diff --git a/src/com/android/settings/bluetooth/BluetoothSettings.java b/src/com/android/settings/bluetooth/BluetoothSettings.java
index dd4edff..eb318cd 100755
--- a/src/com/android/settings/bluetooth/BluetoothSettings.java
+++ b/src/com/android/settings/bluetooth/BluetoothSettings.java
@@ -119,6 +119,14 @@
mSwitchBar = activity.getSwitchBar();
mBluetoothEnabler = new BluetoothEnabler(activity, mSwitchBar);
+ mBluetoothEnabler.setupSwitchBar();
+ }
+
+ @Override
+ public void onDestroyView() {
+ super.onDestroyView();
+
+ mBluetoothEnabler.teardownSwitchBar();
}
@Override
diff --git a/src/com/android/settings/fuelgauge/BatteryHistoryChart.java b/src/com/android/settings/fuelgauge/BatteryHistoryChart.java
index 04f4050..85047ce 100644
--- a/src/com/android/settings/fuelgauge/BatteryHistoryChart.java
+++ b/src/com/android/settings/fuelgauge/BatteryHistoryChart.java
@@ -201,10 +201,7 @@
int mLevelBottom;
int mLevelLeft;
int mLevelRight;
- static final int PHONE_SIGNAL_X_MASK = CHART_DATA_X_MASK;
- static final int PHONE_SIGNAL_BIN_MASK = CHART_DATA_BIN_MASK;
- static final int PHONE_SIGNAL_BIN_SHIFT = CHART_DATA_BIN_SHIFT;
-
+
int mNumHist;
long mHistStart;
long mHistDataEnd;
@@ -360,18 +357,22 @@
mBatteryCriticalPaint.setStyle(Paint.Style.STROKE);
mTimeRemainPaint.setColor(0xFFCED7BB);
mTimeRemainPaint.setStyle(Paint.Style.FILL);
- mChargingPaint.setARGB(255, 0, 128, 0);
mChargingPaint.setStyle(Paint.Style.STROKE);
mScreenOnPaint.setStyle(Paint.Style.STROKE);
mGpsOnPaint.setStyle(Paint.Style.STROKE);
mWifiRunningPaint.setStyle(Paint.Style.STROKE);
mCpuRunningPaint.setStyle(Paint.Style.STROKE);
mPhoneSignalChart.setColors(new int[] {
- 0x00000000, 0xffa00000, 0xffa07000, 0xffa0a000,
- 0xff80a000, 0xff409000, 0xff008000
+ 0x00000000, 0xffc43828, 0xffe54918, 0xfff47b00,
+ 0xfffabf2c, 0xff679e37, 0xff0a7f42
});
mDebugRectPaint.setARGB(255, 255, 0, 0);
mDebugRectPaint.setStyle(Paint.Style.STROKE);
+ mScreenOnPaint.setColor(0xFF009688);
+ mGpsOnPaint.setColor(0xFF009688);
+ mWifiRunningPaint.setColor(0xFF009688);
+ mCpuRunningPaint.setColor(0xFF009688);
+ mChargingPaint.setColor(0xFF009688);
TypedArray a =
context.obtainStyledAttributes(
@@ -428,6 +429,11 @@
case R.styleable.BatteryHistoryChart_barPrimaryColor:
mBatteryBackgroundPaint.setColor(a.getInt(attr, 0));
+ mScreenOnPaint.setColor(a.getInt(attr, 0));
+ mGpsOnPaint.setColor(a.getInt(attr, 0));
+ mWifiRunningPaint.setColor(a.getInt(attr, 0));
+ mCpuRunningPaint.setColor(a.getInt(attr, 0));
+ mChargingPaint.setColor(a.getInt(attr, 0));
break;
case R.styleable.BatteryHistoryChart_barPredictionColor:
@@ -483,11 +489,9 @@
R.string.percentage, 0);
int batteryLevel = com.android.settings.Utils.getBatteryLevel(mBatteryBroadcast);
- final int status = mBatteryBroadcast.getIntExtra(BatteryManager.EXTRA_STATUS,
- BatteryManager.BATTERY_STATUS_UNKNOWN);
long remainingTimeUs = 0;
mDischarging = true;
- if (status == BatteryManager.BATTERY_STATUS_DISCHARGING) {
+ if (mBatteryBroadcast.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0) == 0) {
final long drainTime = mStats.computeBatteryTimeRemaining(elapsedRealtimeUs);
if (drainTime > 0) {
remainingTimeUs = drainTime;
@@ -503,6 +507,8 @@
final long chargeTime = mStats.computeChargeTimeRemaining(elapsedRealtimeUs);
final String statusLabel = com.android.settings.Utils.getBatteryStatus(getResources(),
mBatteryBroadcast);
+ final int status = mBatteryBroadcast.getIntExtra(BatteryManager.EXTRA_STATUS,
+ BatteryManager.BATTERY_STATUS_UNKNOWN);
if (chargeTime > 0 && status != BatteryManager.BATTERY_STATUS_FULL) {
mDischarging = false;
remainingTimeUs = chargeTime;
@@ -692,17 +698,9 @@
// Compress lines to make more room for chart.
mLineWidth = textHeight/3;
}
- mScreenOnPaint.setARGB(255, 32, 64, 255);
- mGpsOnPaint.setARGB(255, 32, 64, 255);
- mWifiRunningPaint.setARGB(255, 32, 64, 255);
- mCpuRunningPaint.setARGB(255, 32, 64, 255);
} else {
mLargeMode = false;
mLineWidth = mThinLineWidth;
- mScreenOnPaint.setARGB(255, 0, 0, 255);
- mGpsOnPaint.setARGB(255, 0, 0, 255);
- mWifiRunningPaint.setARGB(255, 0, 0, 255);
- mCpuRunningPaint.setARGB(255, 0, 0, 255);
}
if (mLineWidth <= 0) mLineWidth = 1;
diff --git a/src/com/android/settings/fuelgauge/BatterySaverSettings.java b/src/com/android/settings/fuelgauge/BatterySaverSettings.java
index b62ddb7..808fb25 100644
--- a/src/com/android/settings/fuelgauge/BatterySaverSettings.java
+++ b/src/com/android/settings/fuelgauge/BatterySaverSettings.java
@@ -24,40 +24,50 @@
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
-import android.os.Message;
import android.provider.Settings.Global;
import android.util.Log;
-import android.widget.Switch;
import com.android.settings.R;
-import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.notification.SettingPref;
-import com.android.settings.widget.SwitchBar;
-public class BatterySaverSettings extends SettingsPreferenceFragment
- implements SwitchBar.OnSwitchChangeListener {
+public class BatterySaverSettings extends SettingsPreferenceFragment {
private static final String TAG = "BatterySaverSettings";
+ private static final String KEY_ALWAYS_ON = "always_on";
private static final String KEY_TURN_ON_AUTOMATICALLY = "turn_on_automatically";
private static final long WAIT_FOR_SWITCH_ANIM = 500;
- private final H mHandler = new H();
+ private final Handler mHandler = new Handler();
private final SettingsObserver mSettingsObserver = new SettingsObserver(mHandler);
private Context mContext;
- private SwitchBar mSwitchBar;
- private boolean mSwitchBarListenerAdded;
+ private boolean mCreated;
+ private SettingPref mAlwaysOnPref;
private SettingPref mTriggerPref;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
-
+ if (mCreated) return;
+ mCreated = true;
addPreferencesFromResource(R.xml.battery_saver_settings);
mContext = getActivity();
- mSwitchBar = ((SettingsActivity) mContext).getSwitchBar();
- updateSwitchBar();
+ mAlwaysOnPref = new SettingPref(SettingPref.TYPE_GLOBAL, KEY_ALWAYS_ON,
+ Global.LOW_POWER_MODE, 0) {
+ @Override
+ protected boolean setSetting(Context context, int value) {
+ mHandler.removeCallbacks(mStartMode);
+ if (value == 0) {
+ return super.setSetting(context, value);
+ } else {
+ // about lose animations, make sure we don't turn the mode on until the switch
+ // stops moving
+ mHandler.postDelayed(mStartMode, WAIT_FOR_SWITCH_ANIM);
+ return true;
+ }
+ }
+ };
mTriggerPref = new SettingPref(SettingPref.TYPE_GLOBAL, KEY_TURN_ON_AUTOMATICALLY,
Global.LOW_POWER_MODE_TRIGGER_LEVEL,
mContext.getResources().getInteger(
@@ -71,76 +81,34 @@
return res.getString(R.string.battery_saver_turn_on_automatically_never);
}
};
+ mAlwaysOnPref.init(this);
mTriggerPref.init(this);
}
- private void updateSwitchBar() {
- final boolean mode = Global.getInt(getContentResolver(), Global.LOW_POWER_MODE, 0) != 0;
- if (mSwitchBarListenerAdded) {
- mSwitchBar.removeOnSwitchChangeListener(this);
- }
- mSwitchBar.getSwitch().setChecked(mode);
- if (mSwitchBarListenerAdded) {
- mSwitchBar.addOnSwitchChangeListener(this);
- }
- }
-
- private void updateTriggerLevel() {
- mTriggerPref.update(mContext);
- }
-
@Override
public void onResume() {
super.onResume();
- updateSwitchBar();
mSettingsObserver.setListening(true);
- mSwitchBar.show();
- mSwitchBar.addOnSwitchChangeListener(this);
- mSwitchBarListenerAdded = true;
}
@Override
public void onPause() {
super.onPause();
mSettingsObserver.setListening(false);
- if (mSwitchBarListenerAdded) {
- mSwitchBar.removeOnSwitchChangeListener(this);
- mSwitchBarListenerAdded = false;
- }
- mSwitchBar.hide();
}
- @Override
- public void onSwitchChanged(Switch switchView, boolean isChecked) {
- mHandler.postSetMode(isChecked);
- }
-
- private void handleSetMode(final boolean mode) {
- AsyncTask.execute(new Runnable() {
- @Override
- public void run() {
- Log.d(TAG, "LOW_POWER_MODE from settings: " + mode);
- Global.putInt(getContentResolver(), Global.LOW_POWER_MODE, mode ? 1 : 0);
- }
- });
- }
-
- private final class H extends Handler {
- private static final int SET_MODE = 1;
-
- public void postSetMode(boolean mode) {
- removeMessages(SET_MODE);
- final Message m = obtainMessage(SET_MODE, mode ? 1 : 0, 0);
- sendMessageDelayed(m, mode ? WAIT_FOR_SWITCH_ANIM : 0);
- }
-
+ private final Runnable mStartMode = new Runnable() {
@Override
- public void handleMessage(Message msg) {
- if (msg.what == SET_MODE) {
- handleSetMode(msg.arg1 != 0);
- }
+ public void run() {
+ AsyncTask.execute(new Runnable() {
+ @Override
+ public void run() {
+ Log.d(TAG, "Starting LOW_POWER_MODE from settings");
+ Global.putInt(mContext.getContentResolver(), Global.LOW_POWER_MODE, 1);
+ }
+ });
}
- }
+ };
private final class SettingsObserver extends ContentObserver {
private final Uri LOW_POWER_MODE_URI = Global.getUriFor(Global.LOW_POWER_MODE);
@@ -154,10 +122,10 @@
@Override
public void onChange(boolean selfChange, Uri uri) {
if (LOW_POWER_MODE_URI.equals(uri)) {
- updateSwitchBar();
+ mAlwaysOnPref.update(mContext);
}
if (LOW_POWER_MODE_TRIGGER_LEVEL_URI.equals(uri)) {
- updateTriggerLevel();
+ mTriggerPref.update(mContext);
}
}
diff --git a/src/com/android/settings/location/LocationSettings.java b/src/com/android/settings/location/LocationSettings.java
index 8794a8d..b10d4b6 100644
--- a/src/com/android/settings/location/LocationSettings.java
+++ b/src/com/android/settings/location/LocationSettings.java
@@ -73,6 +73,16 @@
mSwitchBar = activity.getSwitchBar();
mSwitch = mSwitchBar.getSwitch();
+ mSwitchBar.addOnSwitchChangeListener(this);
+ mSwitchBar.show();
+ }
+
+ @Override
+ public void onDestroyView() {
+ super.onDestroyView();
+
+ mSwitchBar.removeOnSwitchChangeListener(this);
+ mSwitchBar.hide();
}
@Override
@@ -84,8 +94,6 @@
public void onResume() {
super.onResume();
createPreferenceHierarchy();
- mSwitchBar.addOnSwitchChangeListener(this);
- mSwitchBar.show();
mValidListener = true;
}
@@ -97,8 +105,6 @@
// Ignore exceptions caused by race condition
}
super.onPause();
- mSwitchBar.removeOnSwitchChangeListener(this);
- mSwitchBar.hide();
mValidListener = false;
}
diff --git a/src/com/android/settings/nfc/AndroidBeam.java b/src/com/android/settings/nfc/AndroidBeam.java
index eb3ff9b..add0fa7 100644
--- a/src/com/android/settings/nfc/AndroidBeam.java
+++ b/src/com/android/settings/nfc/AndroidBeam.java
@@ -33,7 +33,6 @@
private View mView;
private NfcAdapter mNfcAdapter;
private SwitchBar mSwitchBar;
- private Switch mSwitch;
private CharSequence mOldActivityTitle;
@Override
@@ -63,46 +62,33 @@
SettingsActivity activity = (SettingsActivity) getActivity();
mSwitchBar = activity.getSwitchBar();
- mSwitch = mSwitchBar.getSwitch();
- mSwitch.setChecked(mNfcAdapter.isNdefPushEnabled());
- }
-
- @Override
- public void onResume() {
- super.onResume();
-
+ mSwitchBar.setChecked(mNfcAdapter.isNdefPushEnabled());
mSwitchBar.addOnSwitchChangeListener(this);
mSwitchBar.show();
}
@Override
- public void onPause() {
- super.onPause();
-
- mSwitchBar.removeOnSwitchChangeListener(this);
- mSwitchBar.hide();
- }
-
- @Override
public void onDestroyView() {
super.onDestroyView();
if (mOldActivityTitle != null) {
getActivity().getActionBar().setTitle(mOldActivityTitle);
}
+ mSwitchBar.removeOnSwitchChangeListener(this);
+ mSwitchBar.hide();
}
@Override
public void onSwitchChanged(Switch switchView, boolean desiredState) {
boolean success = false;
- mSwitch.setEnabled(false);
+ mSwitchBar.setEnabled(false);
if (desiredState) {
success = mNfcAdapter.enableNdefPush();
} else {
success = mNfcAdapter.disableNdefPush();
}
if (success) {
- mSwitch.setChecked(desiredState);
+ mSwitchBar.setChecked(desiredState);
}
- mSwitch.setEnabled(true);
+ mSwitchBar.setEnabled(true);
}
}
diff --git a/src/com/android/settings/notification/ZenModeSettings.java b/src/com/android/settings/notification/ZenModeSettings.java
index e9323d8..40e2c55 100644
--- a/src/com/android/settings/notification/ZenModeSettings.java
+++ b/src/com/android/settings/notification/ZenModeSettings.java
@@ -107,7 +107,6 @@
private final SettingsObserver mSettingsObserver = new SettingsObserver();
private SwitchBar mSwitchBar;
- private Switch mSwitch;
private Context mContext;
private PackageManager mPM;
private ZenModeConfig mConfig;
@@ -159,7 +158,8 @@
if (DEBUG) Log.d(TAG, "Loaded mConfig=" + mConfig);
mSwitchBar = ((SettingsActivity) mContext).getSwitchBar();
- mSwitch = mSwitchBar.getSwitch();
+ mSwitchBar.addOnSwitchChangeListener(this);
+ mSwitchBar.show();
final PreferenceCategory general = (PreferenceCategory) root.findPreference(KEY_GENERAL);
@@ -400,14 +400,17 @@
updateControls();
updateZenMode();
mSettingsObserver.register();
- mSwitchBar.addOnSwitchChangeListener(this);
- mSwitchBar.show();
}
@Override
public void onPause() {
super.onPause();
mSettingsObserver.unregister();
+ }
+
+ @Override
+ public void onDestroyView() {
+ super.onDestroyView();
mSwitchBar.removeOnSwitchChangeListener(this);
mSwitchBar.hide();
}
@@ -415,8 +418,8 @@
private void updateZenMode() {
final boolean zenMode = Global.getInt(getContentResolver(),
Global.ZEN_MODE, Global.ZEN_MODE_OFF) != Global.ZEN_MODE_OFF;
- if (mSwitch.isChecked() != zenMode) {
- mSwitch.setChecked(zenMode);
+ if (mSwitchBar.isChecked() != zenMode) {
+ mSwitchBar.setChecked(zenMode);
mIgnoreNext = true;
}
}
diff --git a/src/com/android/settings/print/PrintServiceSettingsFragment.java b/src/com/android/settings/print/PrintServiceSettingsFragment.java
index 08b1a64..7af6338 100644
--- a/src/com/android/settings/print/PrintServiceSettingsFragment.java
+++ b/src/com/android/settings/print/PrintServiceSettingsFragment.java
@@ -143,16 +143,12 @@
mSettingsContentObserver.register(getContentResolver());
updateEmptyView();
updateUiForServiceState();
- mSwitchBar.addOnSwitchChangeListener(this);
- mSwitchBar.show();
}
@Override
public void onPause() {
mSettingsContentObserver.unregister(getContentResolver());
super.onPause();
- mSwitchBar.removeOnSwitchChangeListener(this);
- mSwitchBar.hide();
}
@Override
@@ -168,6 +164,8 @@
getActivity().getActionBar().setTitle(mOldActivityTitle);
}
super.onDestroyView();
+ mSwitchBar.removeOnSwitchChangeListener(this);
+ mSwitchBar.hide();
}
private void onPreferenceToggled(String preferenceKey, boolean enabled) {
@@ -292,6 +290,8 @@
final SettingsActivity activity = (SettingsActivity) getActivity();
mSwitchBar = activity.getSwitchBar();
+ mSwitchBar.addOnSwitchChangeListener(this);
+ mSwitchBar.show();
mToggleSwitch = mSwitchBar.getSwitch();
mToggleSwitch.setOnBeforeCheckedChangeListener(new ToggleSwitch.OnBeforeCheckedChangeListener() {
diff --git a/src/com/android/settings/tts/TtsEngineSettingsFragment.java b/src/com/android/settings/tts/TtsEngineSettingsFragment.java
index 47493fb..15824cf 100644
--- a/src/com/android/settings/tts/TtsEngineSettingsFragment.java
+++ b/src/com/android/settings/tts/TtsEngineSettingsFragment.java
@@ -233,34 +233,25 @@
mLocalePreference.setEnabled(false);
return;
}
- String currentLocale = "";
+ Locale currentLocale = null;
if (!mEnginesHelper.isLocaleSetToDefaultForEngine(getEngineName())) {
currentLocale = mEnginesHelper.getLocalePrefForEngine(getEngineName());
}
- ArrayList<Pair<String, String>> entryPairs =
- new ArrayList<Pair<String, String>>(availableLangs.size());
+ ArrayList<Pair<String, Locale>> entryPairs =
+ new ArrayList<Pair<String, Locale>>(availableLangs.size());
for (int i = 0; i < availableLangs.size(); i++) {
- String[] langCountryVariant = availableLangs.get(i).split("-");
- Locale loc = null;
- if (langCountryVariant.length == 1){
- loc = new Locale(langCountryVariant[0]);
- } else if (langCountryVariant.length == 2){
- loc = new Locale(langCountryVariant[0], langCountryVariant[1]);
- } else if (langCountryVariant.length == 3){
- loc = new Locale(langCountryVariant[0], langCountryVariant[1],
- langCountryVariant[2]);
- }
- if (loc != null){
- entryPairs.add(new Pair<String, String>(
- loc.getDisplayName(), availableLangs.get(i)));
+ Locale locale = mEnginesHelper.parseLocaleString(availableLangs.get(i));
+ if (locale != null){
+ entryPairs.add(new Pair<String, Locale>(
+ locale.getDisplayName(), locale));
}
}
// Sort it
- Collections.sort(entryPairs, new Comparator<Pair<String, String>>() {
+ Collections.sort(entryPairs, new Comparator<Pair<String, Locale>>() {
@Override
- public int compare(Pair<String, String> lhs, Pair<String, String> rhs) {
+ public int compare(Pair<String, Locale> lhs, Pair<String, Locale> rhs) {
return lhs.first.compareToIgnoreCase(rhs.first);
}
});
@@ -274,12 +265,12 @@
entryValues[0] = "";
int i = 1;
- for (Pair<String, String> entry : entryPairs) {
- if (entry.second.equalsIgnoreCase(currentLocale)) {
+ for (Pair<String, Locale> entry : entryPairs) {
+ if (entry.second.equals(currentLocale)) {
mSelectedLocaleIndex = i;
}
entries[i] = entry.first;
- entryValues[i++] = entry.second;
+ entryValues[i++] = entry.second.toString();
}
mLocalePreference.setEntries(entries);
@@ -332,16 +323,19 @@
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (preference == mLocalePreference) {
- updateLanguageTo((String) newValue);
+ String localeString = (String) newValue;
+ updateLanguageTo((!TextUtils.isEmpty(localeString) ?
+ mEnginesHelper.parseLocaleString(localeString) : null));
return true;
}
return false;
}
- private void updateLanguageTo(String locale) {
+ private void updateLanguageTo(Locale locale) {
int selectedLocaleIndex = -1;
+ String localeString = (locale != null) ? locale.toString() : "";
for (int i=0; i < mLocalePreference.getEntryValues().length; i++) {
- if (locale.equalsIgnoreCase(mLocalePreference.getEntryValues()[i].toString())) {
+ if (localeString.equalsIgnoreCase(mLocalePreference.getEntryValues()[i].toString())) {
selectedLocaleIndex = i;
break;
}
@@ -357,15 +351,8 @@
mEnginesHelper.updateLocalePrefForEngine(getEngineName(), locale);
if (getEngineName().equals(mTts.getCurrentEngine())) {
- if (!locale.isEmpty()) {
- String[] localeArray = TtsEngines.parseLocalePref(locale);
- if (localeArray != null) {
- mTts.setLanguage(new Locale(localeArray[0], localeArray[1], localeArray[2]));
- }
- } else {
- // Empty locale means "use system default"
- mTts.setLanguage(Locale.getDefault());
- }
+ // Null locale means "use system default"
+ mTts.setLanguage((locale != null) ? locale : Locale.getDefault());
}
}
diff --git a/src/com/android/settings/widget/SwitchBar.java b/src/com/android/settings/widget/SwitchBar.java
index bc06d87..b503cf6 100644
--- a/src/com/android/settings/widget/SwitchBar.java
+++ b/src/com/android/settings/widget/SwitchBar.java
@@ -17,10 +17,11 @@
package com.android.settings.widget;
import android.content.Context;
+import android.os.Parcel;
+import android.os.Parcelable;
import android.transition.TransitionManager;
import android.util.AttributeSet;
import android.view.LayoutInflater;
-import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CompoundButton;
@@ -72,12 +73,11 @@
mTextView.setText(R.string.switch_off_text);
mSwitch = (ToggleSwitch) findViewById(R.id.switch_widget);
- mSwitch.setOnCheckedChangeListener(this);
addOnSwitchChangeListener(new OnSwitchChangeListener() {
@Override
public void onSwitchChanged(Switch switchView, boolean isChecked) {
- mTextView.setText(isChecked ? R.string.switch_on_text : R.string.switch_off_text);
+ setTextViewLabel(isChecked);
}
});
@@ -90,18 +90,41 @@
setVisibility(View.GONE);
}
- public ToggleSwitch getSwitch() {
+ public void setTextViewLabel(boolean isChecked) {
+ mTextView.setText(isChecked ? R.string.switch_on_text : R.string.switch_off_text);
+ }
+
+ public void setChecked(boolean checked) {
+ setTextViewLabel(checked);
+ mSwitch.setChecked(checked);
+ }
+
+ public boolean isChecked() {
+ return mSwitch.isChecked();
+ }
+
+ public void setEnabled(boolean enabled) {
+ super.setEnabled(enabled);
+ mTextView.setEnabled(enabled);
+ mSwitch.setEnabled(false);
+ }
+
+ public final ToggleSwitch getSwitch() {
return mSwitch;
}
public void show() {
- TransitionManager.beginDelayedTransition((ViewGroup) getParent());
- setVisibility(View.VISIBLE);
+ if (!isShowing()) {
+ setVisibility(View.VISIBLE);
+ mSwitch.setOnCheckedChangeListener(this);
+ }
}
public void hide() {
- TransitionManager.beginDelayedTransition((ViewGroup) getParent());
- setVisibility(View.GONE);
+ if (isShowing()) {
+ setVisibility(View.GONE);
+ mSwitch.setOnCheckedChangeListener(null);
+ }
}
public boolean isShowing() {
@@ -139,4 +162,69 @@
}
mSwitchChangeListeners.remove(listener);
}
+
+ static class SavedState extends BaseSavedState {
+ boolean checked;
+ boolean visible;
+
+ SavedState(Parcelable superState) {
+ super(superState);
+ }
+
+ /**
+ * Constructor called from {@link #CREATOR}
+ */
+ private SavedState(Parcel in) {
+ super(in);
+ checked = (Boolean)in.readValue(null);
+ visible = (Boolean)in.readValue(null);
+ }
+
+ @Override
+ public void writeToParcel(Parcel out, int flags) {
+ super.writeToParcel(out, flags);
+ out.writeValue(checked);
+ out.writeValue(visible);
+ }
+
+ @Override
+ public String toString() {
+ return "SwitchBar.SavedState{"
+ + Integer.toHexString(System.identityHashCode(this))
+ + " checked=" + checked
+ + " visible=" + visible + "}";
+ }
+
+ public static final Parcelable.Creator<SavedState> CREATOR
+ = new Parcelable.Creator<SavedState>() {
+ public SavedState createFromParcel(Parcel in) {
+ return new SavedState(in);
+ }
+
+ public SavedState[] newArray(int size) {
+ return new SavedState[size];
+ }
+ };
+ }
+
+ @Override
+ public Parcelable onSaveInstanceState() {
+ Parcelable superState = super.onSaveInstanceState();
+
+ SavedState ss = new SavedState(superState);
+ ss.checked = mSwitch.isChecked();
+ ss.visible = isShowing();
+ return ss;
+ }
+
+ @Override
+ public void onRestoreInstanceState(Parcelable state) {
+ SavedState ss = (SavedState) state;
+
+ super.onRestoreInstanceState(ss.getSuperState());
+ mSwitch.setChecked(ss.checked);
+ setTextViewLabel(ss.checked);
+ setVisibility(ss.visible ? View.VISIBLE : View.GONE);
+ requestLayout();
+ }
}
diff --git a/src/com/android/settings/wifi/AccessPoint.java b/src/com/android/settings/wifi/AccessPoint.java
index b8765bb..cd08565 100644
--- a/src/com/android/settings/wifi/AccessPoint.java
+++ b/src/com/android/settings/wifi/AccessPoint.java
@@ -19,6 +19,7 @@
import com.android.settings.R;
import android.content.Context;
+import android.graphics.drawable.Drawable;
import android.net.NetworkInfo.DetailedState;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
@@ -48,6 +49,8 @@
};
private static final int[] STATE_NONE = {};
+ private static int[] wifi_signal_attributes = { R.attr.wifi_signal };
+
/** These values are matched in string arrays -- changes must be kept in sync */
static final int SECURITY_NONE = 0;
static final int SECURITY_WEP = 1;
@@ -163,21 +166,18 @@
AccessPoint(Context context, WifiConfiguration config) {
super(context);
- setWidgetLayoutResource(R.layout.preference_widget_wifi_signal);
loadConfig(config);
refresh();
}
AccessPoint(Context context, ScanResult result) {
super(context);
- setWidgetLayoutResource(R.layout.preference_widget_wifi_signal);
loadResult(result);
refresh();
}
AccessPoint(Context context, Bundle savedState) {
super(context);
- setWidgetLayoutResource(R.layout.preference_widget_wifi_signal);
mConfig = savedState.getParcelable(KEY_CONFIG);
if (mConfig != null) {
@@ -228,18 +228,28 @@
@Override
protected void onBindView(View view) {
super.onBindView(view);
- ImageView signal = (ImageView) view.findViewById(R.id.signal);
- if (mRssi == Integer.MAX_VALUE) {
- signal.setImageDrawable(null);
+ updateIcon(getLevel());
+ notifyChanged();
+ }
+
+ protected void updateIcon(int level) {
+ if (level == -1) {
+ setIcon(null);
} else {
- signal.setImageLevel(getLevel());
- signal.setImageDrawable(getContext().getTheme().obtainStyledAttributes(
- new int[] {R.attr.wifi_signal}).getDrawable(0));
- signal.setImageState((security != SECURITY_NONE) ?
- STATE_SECURED : STATE_NONE, true);
+ Drawable drawable = getIcon();
+
+ if (drawable == null) {
+ drawable = getContext().getTheme().obtainStyledAttributes(
+ wifi_signal_attributes).getDrawable(0);
+ setIcon(drawable);
+ }
+
+ drawable.setLevel(level);
+ drawable.setState((security != SECURITY_NONE) ? STATE_SECURED : STATE_NONE);
}
}
+
@Override
public int compareTo(Preference preference) {
if (!(preference instanceof AccessPoint)) {
@@ -253,6 +263,7 @@
// Reachable one goes before unreachable one.
if (mRssi != Integer.MAX_VALUE && other.mRssi == Integer.MAX_VALUE) return -1;
if (mRssi == Integer.MAX_VALUE && other.mRssi != Integer.MAX_VALUE) return 1;
+ if (mRssi == Integer.MAX_VALUE && other.mRssi != Integer.MAX_VALUE) return 1;
// Configured one goes before unconfigured one.
if (networkId != WifiConfiguration.INVALID_NETWORK_ID
@@ -463,6 +474,8 @@
/** Updates the title and summary; may indirectly call notifyChanged() */
private void refresh() {
setTitle(ssid);
+ updateIcon(getLevel());
+
StringBuilder summary = new StringBuilder();
Context context = getContext();
@@ -517,6 +530,9 @@
if (WifiSettings.mVerboseLogging > 0) {
//add RSSI/band information for this config, what was seen up to 6 seconds ago
//verbose WiFi Logging is only turned on thru developers settings
+ if (mInfo != null && mState != null) { // This is the active connection
+ summary.append(" (f=" + Integer.toString(mInfo.getFrequency()) + ")");
+ }
summary.append(" " + getVisibilityStatus());
if (mConfig != null && mConfig.autoJoinStatus > 0) {
summary.append(" (" + mConfig.autoJoinStatus);
diff --git a/src/com/android/settings/wifi/WifiEnabler.java b/src/com/android/settings/wifi/WifiEnabler.java
index d190045..dc3974e 100644
--- a/src/com/android/settings/wifi/WifiEnabler.java
+++ b/src/com/android/settings/wifi/WifiEnabler.java
@@ -100,20 +100,27 @@
// The order matters! We really should not depend on this. :(
mIntentFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
mIntentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
+ setupSwitchBar();
+ }
+
+ public void setupSwitchBar() {
+ mSwitchBar.addOnSwitchChangeListener(this);
+ mSwitchBar.show();
+ }
+
+ public void teardownSwitchBar() {
+ mSwitchBar.removeOnSwitchChangeListener(this);
+ mSwitchBar.hide();
}
public void resume(Context context) {
mContext = context;
// Wi-Fi state is sticky, so just let the receiver update UI
mContext.registerReceiver(mReceiver, mIntentFilter);
- mSwitchBar.addOnSwitchChangeListener(this);
- mSwitchBar.show();
}
public void pause() {
mContext.unregisterReceiver(mReceiver);
- mSwitchBar.removeOnSwitchChangeListener(this);
- mSwitchBar.hide();
}
private void handleWifiStateChanged(int state) {
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index 3420f36..ec77937 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -136,8 +136,6 @@
private AccessPoint mDlgAccessPoint;
private Bundle mAccessPointSavedState;
- private SwitchBar mSwitchBar;
-
/** verbose logging flag. this flag is set thru developer debugging options
* and used so as to assist with in-the-field WiFi connectivity debugging */
public static int mVerboseLogging = 0;
@@ -233,6 +231,15 @@
}
@Override
+ public void onDestroyView() {
+ super.onDestroyView();
+
+ if (mWifiEnabler != null) {
+ mWifiEnabler.teardownSwitchBar();
+ }
+ }
+
+ @Override
public void onStart() {
super.onStart();