diff options
Diffstat (limited to 'packages/SystemUI/src/com/android/systemui/power/PowerDialogWarnings.java')
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/power/PowerDialogWarnings.java | 68 |
1 files changed, 40 insertions, 28 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/power/PowerDialogWarnings.java b/packages/SystemUI/src/com/android/systemui/power/PowerDialogWarnings.java index feec87c..2943494 100644 --- a/packages/SystemUI/src/com/android/systemui/power/PowerDialogWarnings.java +++ b/packages/SystemUI/src/com/android/systemui/power/PowerDialogWarnings.java @@ -16,6 +16,7 @@ package com.android.systemui.power; +import android.app.ActivityManagerNative; import android.app.AlertDialog; import android.content.ContentResolver; import android.content.Context; @@ -25,13 +26,13 @@ import android.media.AudioManager; import android.media.Ringtone; import android.media.RingtoneManager; import android.net.Uri; +import android.os.RemoteException; import android.os.SystemClock; import android.os.UserHandle; import android.provider.Settings; import android.util.Slog; -import android.view.View; +import android.view.ContextThemeWrapper; import android.view.WindowManager; -import android.widget.TextView; import com.android.systemui.R; @@ -46,13 +47,14 @@ public class PowerDialogWarnings implements PowerUI.WarningsUI { private int mBatteryLevel; private int mBucket; private long mScreenOffTime; + private boolean mSaver; + private int mSaverTriggerLevel; private AlertDialog mInvalidChargerDialog; private AlertDialog mLowBatteryDialog; - private TextView mBatteryLevelTextView; public PowerDialogWarnings(Context context) { - mContext = context; + mContext = new ContextThemeWrapper(context, android.R.style.Theme_DeviceDefault_Light); } @Override @@ -77,7 +79,7 @@ public class PowerDialogWarnings implements PowerUI.WarningsUI { @Override public void updateLowBatteryWarning() { - if (mBatteryLevelTextView != null) { + if (mLowBatteryDialog != null) { showLowBatteryWarning(false /*playSound*/); } } @@ -93,27 +95,22 @@ public class PowerDialogWarnings implements PowerUI.WarningsUI { @Override public void showLowBatteryWarning(boolean playSound) { Slog.i(TAG, - ((mBatteryLevelTextView == null) ? "showing" : "updating") + ((mLowBatteryDialog == null) ? "showing" : "updating") + " low battery warning: level=" + mBatteryLevel + " [" + mBucket + "]"); - CharSequence levelText = mContext.getString( - R.string.battery_low_percent_format, mBatteryLevel); + final int textRes = mSaver ? R.string.battery_low_percent_format_saver_started + : R.string.battery_low_percent_format; + final CharSequence levelText = mContext.getString(textRes, mBatteryLevel); - if (mBatteryLevelTextView != null) { - mBatteryLevelTextView.setText(levelText); + if (mLowBatteryDialog != null) { + mLowBatteryDialog.setMessage(levelText); } else { - View v = View.inflate(mContext, R.layout.battery_low, null); - mBatteryLevelTextView = (TextView)v.findViewById(R.id.level_percent); - - mBatteryLevelTextView.setText(levelText); - AlertDialog.Builder b = new AlertDialog.Builder(mContext); - b.setCancelable(true); - b.setTitle(R.string.battery_low_title); - b.setView(v); - b.setIconAttribute(android.R.attr.alertDialogIcon); - b.setPositiveButton(android.R.string.ok, null); + b.setCancelable(true); + b.setTitle(R.string.battery_low_title); + b.setMessage(levelText); + b.setPositiveButton(android.R.string.ok, null); final Intent intent = new Intent(Intent.ACTION_POWER_USAGE_SUMMARY); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK @@ -125,6 +122,11 @@ public class PowerDialogWarnings implements PowerUI.WarningsUI { new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { + try { + ActivityManagerNative.getDefault().dismissKeyguardOnNextActivity(); + } catch (RemoteException e) { + // we tried + } mContext.startActivityAsUser(intent, UserHandle.CURRENT); dismissLowBatteryWarning(); } @@ -136,10 +138,9 @@ public class PowerDialogWarnings implements PowerUI.WarningsUI { @Override public void onDismiss(DialogInterface dialog) { mLowBatteryDialog = null; - mBatteryLevelTextView = null; } }); - d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); + d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ERROR); d.getWindow().getAttributes().privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_SHOW_FOR_ALL_USERS; d.show(); @@ -198,21 +199,32 @@ public class PowerDialogWarnings implements PowerUI.WarningsUI { dismissLowBatteryWarning(); AlertDialog.Builder b = new AlertDialog.Builder(mContext); - b.setCancelable(true); - b.setMessage(R.string.invalid_charger); - b.setIconAttribute(android.R.attr.alertDialogIcon); - b.setPositiveButton(android.R.string.ok, null); + b.setCancelable(true); + b.setTitle(R.string.invalid_charger_title); + b.setMessage(R.string.invalid_charger_text); + b.setPositiveButton(android.R.string.ok, null); AlertDialog d = b.create(); d.setOnDismissListener(new DialogInterface.OnDismissListener() { public void onDismiss(DialogInterface dialog) { mInvalidChargerDialog = null; - mBatteryLevelTextView = null; } }); - d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); + d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ERROR); + d.getWindow().getAttributes().privateFlags |= + WindowManager.LayoutParams.PRIVATE_FLAG_SHOW_FOR_ALL_USERS; d.show(); mInvalidChargerDialog = d; } + + @Override + public void showSaverMode(boolean mode) { + mSaver = mode; + } + + @Override + public void setSaverTrigger(int level) { + mSaverTriggerLevel = level; + } } |