summaryrefslogtreecommitdiffstats
path: root/packages
diff options
context:
space:
mode:
authorJohn Spurlock <jspurlock@google.com>2014-07-25 20:54:10 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-07-24 23:36:47 +0000
commit543650bb10b1104dd4ebb81e4a9bbebf9fb4c535 (patch)
treed592b4fad9c1e43949d0392d86a68bc4741249c5 /packages
parente4f53d65d1584b5ed47be2fbf4b66295210f26d8 (diff)
parent351346092acdfbfcc1d9ebf98d539d2a1196c5e8 (diff)
downloadframeworks_base-543650bb10b1104dd4ebb81e4a9bbebf9fb4c535.zip
frameworks_base-543650bb10b1104dd4ebb81e4a9bbebf9fb4c535.tar.gz
frameworks_base-543650bb10b1104dd4ebb81e4a9bbebf9fb4c535.tar.bz2
Merge "Volume: Show safe media warning in settings." into lmp-dev
Diffstat (limited to 'packages')
-rw-r--r--packages/SystemUI/res/values/styles.xml8
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialog.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/VolumePanel.java93
3 files changed, 56 insertions, 48 deletions
diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml
index 0b8f876..61e6121 100644
--- a/packages/SystemUI/res/values/styles.xml
+++ b/packages/SystemUI/res/values/styles.xml
@@ -249,6 +249,11 @@
<item name="android:colorControlActivated">@color/system_accent_color</item>
</style>
+ <style name="Theme.SystemUI.Dialog" parent="@android:style/Theme.DeviceDefault.Light.Dialog">
+ <item name="android:colorPrimary">@color/system_primary_color</item>
+ <item name="android:colorControlActivated">@color/system_accent_color</item>
+ </style>
+
<style name="NotificationsQuickSettings">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">match_parent</item>
@@ -275,7 +280,4 @@
<item name="android:textStyle">italic</item>
<item name="android:textColor">#60000000</item>
</style>
-
- <style name="Theme.SystemUI.Dialog" parent="@android:style/Theme.DeviceDefault.Light.Dialog">
- </style>
</resources>
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialog.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialog.java
index 7f27a0c..86a6622 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialog.java
@@ -29,12 +29,11 @@ public class SystemUIDialog extends AlertDialog {
public SystemUIDialog(Context context) {
super(context, R.style.Theme_SystemUI_Dialog);
-
getWindow().setType(WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
WindowManager.LayoutParams attrs = getWindow().getAttributes();
- attrs.setTitle("SystemUIDialog");
+ attrs.setTitle(getClass().getSimpleName());
getWindow().setAttributes(attrs);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumePanel.java b/packages/SystemUI/src/com/android/systemui/volume/VolumePanel.java
index b85fbf3..149d09a 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumePanel.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumePanel.java
@@ -58,6 +58,7 @@ import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import com.android.internal.R;
+import com.android.systemui.statusbar.phone.SystemUIDialog;
import com.android.systemui.statusbar.policy.ZenModeController;
import java.io.FileDescriptor;
@@ -89,6 +90,7 @@ public class VolumePanel extends Handler {
private static final int TIMEOUT_DELAY = 3000;
private static final int TIMEOUT_DELAY_SHORT = 1500;
private static final int TIMEOUT_DELAY_COLLAPSED = 4500;
+ private static final int TIMEOUT_DELAY_SAFETY_WARNING = 5000;
private static final int TIMEOUT_DELAY_EXPANDED = 10000;
private static final int MSG_VOLUME_CHANGED = 0;
@@ -238,42 +240,61 @@ public class VolumePanel extends Handler {
private ToneGenerator mToneGenerators[];
private Vibrator mVibrator;
- private static AlertDialog sConfirmSafeVolumeDialog;
- private static Object sConfirmSafeVolumeLock = new Object();
+ private static AlertDialog sSafetyWarning;
+ private static Object sSafetyWarningLock = new Object();
- private static class WarningDialogReceiver extends BroadcastReceiver
- implements DialogInterface.OnDismissListener {
+ private static class SafetyWarning extends SystemUIDialog
+ implements DialogInterface.OnDismissListener, DialogInterface.OnClickListener {
private final Context mContext;
- private final Dialog mDialog;
private final VolumePanel mVolumePanel;
+ private final AudioManager mAudioManager;
- WarningDialogReceiver(Context context, Dialog dialog, VolumePanel volumePanel) {
+ SafetyWarning(Context context, VolumePanel volumePanel, AudioManager audioManager) {
+ super(context);
mContext = context;
- mDialog = dialog;
mVolumePanel = volumePanel;
+ mAudioManager = audioManager;
+
+ setMessage(mContext.getString(com.android.internal.R.string.safe_media_volume_warning));
+ setButton(DialogInterface.BUTTON_POSITIVE,
+ mContext.getString(com.android.internal.R.string.yes), this);
+ setButton(DialogInterface.BUTTON_NEGATIVE,
+ mContext.getString(com.android.internal.R.string.no), (OnClickListener) null);
+ setOnDismissListener(this);
+
IntentFilter filter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
- context.registerReceiver(this, filter);
+ context.registerReceiver(mReceiver, filter);
}
@Override
- public void onReceive(Context context, Intent intent) {
- mDialog.cancel();
- cleanUp();
+ public void onClick(DialogInterface dialog, int which) {
+ mAudioManager.disableSafeMediaVolume();
}
@Override
public void onDismiss(DialogInterface unused) {
- mContext.unregisterReceiver(this);
+ mContext.unregisterReceiver(mReceiver);
cleanUp();
}
private void cleanUp() {
- synchronized (sConfirmSafeVolumeLock) {
- sConfirmSafeVolumeDialog = null;
+ synchronized (sSafetyWarningLock) {
+ sSafetyWarning = null;
}
mVolumePanel.forceTimeout(0);
mVolumePanel.updateStates();
}
+
+ private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(intent.getAction())) {
+ if (LOGD) Log.d(TAG, "Received ACTION_CLOSE_SYSTEM_DIALOGS");
+ cancel();
+ cleanUp();
+ }
+ }
+ };
}
public VolumePanel(Context context, ZenModeController zenController) {
@@ -305,7 +326,7 @@ public class VolumePanel extends Handler {
@Override
public boolean onTouchEvent(MotionEvent event) {
if (isShowing() && event.getAction() == MotionEvent.ACTION_OUTSIDE &&
- sConfirmSafeVolumeDialog == null) {
+ sSafetyWarning == null) {
forceTimeout(0);
return true;
}
@@ -389,7 +410,7 @@ public class VolumePanel extends Handler {
pw.print(" isShowing()="); pw.println(isShowing());
pw.print(" mCallback="); pw.println(mCallback);
pw.print(" sConfirmSafeVolumeDialog=");
- pw.println(sConfirmSafeVolumeDialog != null ? "<not null>" : null);
+ pw.println(sSafetyWarning != null ? "<not null>" : null);
pw.print(" mActiveStreamType="); pw.println(mActiveStreamType);
pw.print(" mStreamControls=");
if (mStreamControls == null) {
@@ -640,7 +661,7 @@ public class VolumePanel extends Handler {
sc.seekbarView.setEnabled(!fixedVolume);
} else if (fixedVolume ||
(sc.streamType != mAudioManager.getMasterStreamType() && muted) ||
- (sConfirmSafeVolumeDialog != null)) {
+ (sSafetyWarning != null)) {
sc.seekbarView.setEnabled(false);
} else if (isRinger && mAudioManager.getRingerMode() == AudioManager.RINGER_MODE_SILENT) {
sc.seekbarView.setEnabled(false);
@@ -687,7 +708,8 @@ public class VolumePanel extends Handler {
}
private void updateTimeoutDelay() {
- mTimeoutDelay = mActiveStreamType == AudioManager.STREAM_MUSIC ? TIMEOUT_DELAY_SHORT
+ mTimeoutDelay = sSafetyWarning != null ? TIMEOUT_DELAY_SAFETY_WARNING
+ : mActiveStreamType == AudioManager.STREAM_MUSIC ? TIMEOUT_DELAY_SHORT
: mZenPanelExpanded ? TIMEOUT_DELAY_EXPANDED
: isZenPanelVisible() ? TIMEOUT_DELAY_COLLAPSED
: TIMEOUT_DELAY;
@@ -1105,30 +1127,14 @@ public class VolumePanel extends Handler {
}
protected void onDisplaySafeVolumeWarning(int flags) {
- if ((flags & AudioManager.FLAG_SHOW_UI) != 0 || isShowing()) {
- synchronized (sConfirmSafeVolumeLock) {
- if (sConfirmSafeVolumeDialog != null) {
+ if ((flags & (AudioManager.FLAG_SHOW_UI | AudioManager.FLAG_SHOW_UI_WARNINGS)) != 0
+ || isShowing()) {
+ synchronized (sSafetyWarningLock) {
+ if (sSafetyWarning != null) {
return;
}
- sConfirmSafeVolumeDialog = new AlertDialog.Builder(mContext)
- .setMessage(com.android.internal.R.string.safe_media_volume_warning)
- .setPositiveButton(com.android.internal.R.string.yes,
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- mAudioManager.disableSafeMediaVolume();
- }
- })
- .setNegativeButton(com.android.internal.R.string.no, null)
- .setIconAttribute(android.R.attr.alertDialogIcon)
- .create();
- final WarningDialogReceiver warning = new WarningDialogReceiver(mContext,
- sConfirmSafeVolumeDialog, this);
-
- sConfirmSafeVolumeDialog.setOnDismissListener(warning);
- sConfirmSafeVolumeDialog.getWindow().setType(
- WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
- sConfirmSafeVolumeDialog.show();
+ sSafetyWarning = new SafetyWarning(mContext, this, mAudioManager);
+ sSafetyWarning.show();
}
updateStates();
}
@@ -1232,9 +1238,10 @@ public class VolumePanel extends Handler {
mCallback.onVisible(false);
}
}
- synchronized (sConfirmSafeVolumeLock) {
- if (sConfirmSafeVolumeDialog != null) {
- sConfirmSafeVolumeDialog.dismiss();
+ synchronized (sSafetyWarningLock) {
+ if (sSafetyWarning != null) {
+ if (LOGD) Log.d(mTag, "SafetyWarning timeout");
+ sSafetyWarning.dismiss();
}
}
break;