Merge "Set quantum pattern for crypt dialogs"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 0677482..d3eb49d 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -3581,16 +3581,6 @@
     <string name="battery_stats_phone_signal_label">Mobile network signal</string>
     <!-- Battery usage during last unplugged period -->
     <string name="battery_stats_last_duration">@string/menu_stats_last_unplugged</string>
-    <!-- [CHAR_LIMIT=5] Label for an hour time when using 24 hour mode -->
-    <string name="battery_stats_hour_24_label"><xliff:g id="time">%1$d</xliff:g>:00</string>
-    <!-- [CHAR_LIMIT=5] Label for an hour time when using 12 hour mode in the AM -->
-    <string name="battery_stats_hour_am_label"><xliff:g id="time">%1$d</xliff:g> AM</string>
-    <!-- [CHAR_LIMIT=5] Label for an hour time when using 12 hour mode in the PM -->
-    <string name="battery_stats_hour_pm_label"><xliff:g id="time">%1$d</xliff:g> PM</string>
-    <!-- [CHAR_LIMIT=3] Label for date of day and month (not year) when the day is shown first -->
-    <string name="battery_stats_date_day_first_label"><xliff:g id="day">%1$d</xliff:g>/<xliff:g id="month">%2$d</xliff:g></string>
-    <!-- [CHAR_LIMIT=3] Label for date of day and month (not year) when the month is shown first -->
-    <string name="battery_stats_date_month_first_label"><xliff:g id="month">%2$d</xliff:g>/<xliff:g id="day">%1$d</xliff:g></string>
     <!-- CPU awake time title -->
     <string name="awake">Device awake time</string>
     <!-- Wifi on time -->
diff --git a/src/com/android/settings/TrustAgentUtils.java b/src/com/android/settings/TrustAgentUtils.java
index 31a073c..b08feff 100644
--- a/src/com/android/settings/TrustAgentUtils.java
+++ b/src/com/android/settings/TrustAgentUtils.java
@@ -43,6 +43,8 @@
      * @return true, if the service in resolveInfo has the permission to provide a trust agent.
      */
     public static boolean checkProvidePermission(ResolveInfo resolveInfo, PackageManager pm) {
+        // STOPSHIP Reenable this check once the GMS Core prebuild library has the permission.
+        /*
         String packageName = resolveInfo.serviceInfo.packageName;
         if (pm.checkPermission(PERMISSION_PROVIDE_AGENT, packageName)
                 != PackageManager.PERMISSION_GRANTED) {
@@ -50,6 +52,7 @@
                     + " does not have permission " + PERMISSION_PROVIDE_AGENT + ".");
             return false;
         }
+        */
         return true;
     }
 
diff --git a/src/com/android/settings/fuelgauge/BatteryHistoryChart.java b/src/com/android/settings/fuelgauge/BatteryHistoryChart.java
index 4c6a503..04f4050 100644
--- a/src/com/android/settings/fuelgauge/BatteryHistoryChart.java
+++ b/src/com/android/settings/fuelgauge/BatteryHistoryChart.java
@@ -45,6 +45,7 @@
 
 import java.util.ArrayList;
 import java.util.Calendar;
+import java.util.Locale;
 
 public class BatteryHistoryChart extends View {
     static final boolean DEBUG = false;
@@ -315,22 +316,11 @@
         final String label;
         final int width;
 
-        TimeLabel(Context context, TextPaint paint, int x, Calendar cal, boolean use24hr) {
+        TimeLabel(TextPaint paint, int x, Calendar cal, boolean use24hr) {
             this.x = x;
-            if (use24hr) {
-                label = context.getString(R.string.battery_stats_hour_24_label,
-                        cal.get(Calendar.HOUR_OF_DAY));
-            } else {
-                int hour = cal.get(Calendar.HOUR);
-                if (hour == 0) {
-                    hour = 12;
-                }
-                if (cal.get(Calendar.AM_PM) == Calendar.AM) {
-                    label = context.getString(R.string.battery_stats_hour_am_label, hour);
-                } else {
-                    label = context.getString(R.string.battery_stats_hour_pm_label, hour);
-                }
-            }
+            final String bestFormat = DateFormat.getBestDateTimePattern(
+                    Locale.getDefault(), use24hr ? "km" : "ha");
+            label = DateFormat.format(bestFormat, cal).toString();
             width = (int)paint.measureText(label);
         }
     }
@@ -340,15 +330,11 @@
         final String label;
         final int width;
 
-        DateLabel(Context context, TextPaint paint, int x, Calendar cal, boolean dayFirst) {
+        DateLabel(TextPaint paint, int x, Calendar cal, boolean dayFirst) {
             this.x = x;
-            if (dayFirst) {
-                label = context.getString(R.string.battery_stats_date_day_first_label,
-                        cal.get(Calendar.DAY_OF_MONTH), cal.get(Calendar.MONTH));
-            } else {
-                label = context.getString(R.string.battery_stats_date_month_first_label,
-                        cal.get(Calendar.DAY_OF_MONTH), cal.get(Calendar.MONTH));
-            }
+            final String bestFormat = DateFormat.getBestDateTimePattern(
+                    Locale.getDefault(), dayFirst ? "dM" : "Md");
+            label = DateFormat.format(bestFormat, cal).toString();
             width = (int)paint.measureText(label);
         }
     }
@@ -1033,7 +1019,7 @@
     void addTimeLabel(Calendar cal, int levelLeft, int levelRight, boolean is24hr) {
         final long walltimeStart = mStartWallTime;
         final long walltimeChange = mEndWallTime-walltimeStart;
-        mTimeLabels.add(new TimeLabel(getContext(), mTextPaint,
+        mTimeLabels.add(new TimeLabel(mTextPaint,
                 levelLeft + (int)(((cal.getTimeInMillis()-walltimeStart)*(levelRight-levelLeft))
                         / walltimeChange),
                 cal, is24hr));
@@ -1042,7 +1028,7 @@
     void addDateLabel(Calendar cal, int levelLeft, int levelRight, boolean isDayFirst) {
         final long walltimeStart = mStartWallTime;
         final long walltimeChange = mEndWallTime-walltimeStart;
-        mDateLabels.add(new DateLabel(getContext(), mTextPaint,
+        mDateLabels.add(new DateLabel(mTextPaint,
                 levelLeft + (int)(((cal.getTimeInMillis()-walltimeStart)*(levelRight-levelLeft))
                         / walltimeChange),
                 cal, isDayFirst));
diff --git a/src/com/android/settings/fuelgauge/BatterySaverSettings.java b/src/com/android/settings/fuelgauge/BatterySaverSettings.java
index 1a7e892..b62ddb7 100644
--- a/src/com/android/settings/fuelgauge/BatterySaverSettings.java
+++ b/src/com/android/settings/fuelgauge/BatterySaverSettings.java
@@ -59,7 +59,9 @@
         mSwitchBar = ((SettingsActivity) mContext).getSwitchBar();
         updateSwitchBar();
         mTriggerPref = new SettingPref(SettingPref.TYPE_GLOBAL, KEY_TURN_ON_AUTOMATICALLY,
-                Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0,
+                Global.LOW_POWER_MODE_TRIGGER_LEVEL,
+                mContext.getResources().getInteger(
+                        com.android.internal.R.integer.config_lowBatteryWarningLevel),
                 getResources().getIntArray(R.array.battery_saver_trigger_values)) {
             @Override
             protected String getCaption(Resources res, int value) {
@@ -103,6 +105,7 @@
         mSettingsObserver.setListening(false);
         if (mSwitchBarListenerAdded) {
             mSwitchBar.removeOnSwitchChangeListener(this);
+            mSwitchBarListenerAdded = false;
         }
         mSwitchBar.hide();
     }
diff --git a/src/com/android/settings/wifi/AccessPoint.java b/src/com/android/settings/wifi/AccessPoint.java
index 5c6ea1c..b8765bb 100644
--- a/src/com/android/settings/wifi/AccessPoint.java
+++ b/src/com/android/settings/wifi/AccessPoint.java
@@ -469,7 +469,8 @@
 
         if (mState != null) { // This is the active connection
             summary.append(Summary.get(context, mState));
-        } else if (mConfig != null && (mConfig.status == WifiConfiguration.Status.DISABLED
+        } else if (mConfig != null && ((mConfig.status == WifiConfiguration.Status.DISABLED &&
+                mConfig.disableReason != WifiConfiguration.DISABLED_UNKNOWN_REASON)
                || mConfig.autoJoinStatus >= WifiConfiguration.AUTO_JOIN_DISABLED_ON_AUTH_FAILURE)) {
             if (mConfig.autoJoinStatus >= WifiConfiguration.AUTO_JOIN_DISABLED_ON_AUTH_FAILURE) {
                 summary.append(context.getString(R.string.wifi_disabled_password_failure));
@@ -483,6 +484,8 @@
                         summary.append(context.getString(R.string.wifi_disabled_network_failure));
                         break;
                     case WifiConfiguration.DISABLED_UNKNOWN_REASON:
+                        //this state is not useful anymore as auto-join may attempt joining
+                        //those networks
                         summary.append(context.getString(R.string.wifi_disabled_generic));
                 }
             }