Loading packages/SystemUI/res/layout/volume_dialog.xml +16 −12 Original line number Diff line number Diff line Loading @@ -81,20 +81,24 @@ <!-- volume rows added and removed here! :-) --> </LinearLayout> <FrameLayout android:id="@+id/settings_container" android:id="@+id/expandable_indicator_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/rounded_bg_bottom_background"> <com.android.keyguard.AlphaOptimizedImageButton android:id="@+id/settings" android:src="@drawable/ic_settings_16dp" android:layout_width="@dimen/volume_dialog_tap_target_size" android:layout_height="@dimen/volume_dialog_tap_target_size" android:layout_gravity="center" android:contentDescription="@string/accessibility_volume_settings" android:background="@drawable/ripple_drawable_20dp" android:tint="?android:attr/textColorSecondary" android:soundEffectsEnabled="false" /> <com.android.systemui.statusbar.phone.ExpandableIndicator android:id="@+id/expandable_indicator" android:layout_width="48dp" android:layout_height="48dp" android:clipToPadding="false" android:clickable="true" android:focusable="true" android:layout_marginRight="8dp" android:layout_marginLeft="8dp" android:layout_gravity="right" android:background="?android:attr/selectableItemBackgroundBorderless" android:contentDescription="@string/accessibility_quick_settings_expand" android:padding="14dp" android:rotation="90" /> </FrameLayout> </LinearLayout> Loading packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java +57 −9 Original line number Diff line number Diff line Loading @@ -92,6 +92,7 @@ import com.android.systemui.plugins.VolumeDialog; import com.android.systemui.plugins.VolumeDialogController; import com.android.systemui.plugins.VolumeDialogController.State; import com.android.systemui.plugins.VolumeDialogController.StreamState; import com.android.systemui.statusbar.phone.ExpandableIndicator; import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper; import com.android.systemui.statusbar.policy.DeviceProvisionedController; Loading Loading @@ -124,8 +125,8 @@ public class VolumeDialogImpl implements VolumeDialog { private ViewGroup mDialogRowsView; private ViewGroup mRinger; private ImageButton mRingerIcon; private View mSettingsView; private ImageButton mSettingsIcon; private View mExpandRowsView; private ExpandableIndicator mExpandRows; private FrameLayout mZenIcon; private final List<VolumeRow> mRows = new ArrayList<>(); private ConfigurableTexts mConfigurableTexts; Loading @@ -149,6 +150,7 @@ public class VolumeDialogImpl implements VolumeDialog { private State mState; private SafetyWarningDialog mSafetyWarning; private boolean mHovering = false; private boolean mExpanded; public VolumeDialogImpl(Context context) { mContext = new ContextThemeWrapper(context, com.android.systemui.R.style.qs_theme); Loading Loading @@ -180,6 +182,7 @@ public class VolumeDialogImpl implements VolumeDialog { mConfigurableTexts = new ConfigurableTexts(mContext); mHovering = false; mShowing = false; mExpanded = false; mWindow = mDialog.getWindow(); mWindow.requestFeature(Window.FEATURE_NO_TITLE); mWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); Loading Loading @@ -237,8 +240,8 @@ public class VolumeDialogImpl implements VolumeDialog { mRinger = mDialog.findViewById(R.id.ringer); mRingerIcon = mRinger.findViewById(R.id.ringer_icon); mZenIcon = mRinger.findViewById(R.id.dnd_icon); mSettingsView = mDialog.findViewById(R.id.settings_container); mSettingsIcon = mDialog.findViewById(R.id.settings); mExpandRowsView = mDialog.findViewById(R.id.expandable_indicator_container); mExpandRows = mDialog.findViewById(R.id.expandable_indicator); if (mRows.isEmpty()) { if (!AudioSystem.isSingleVolume(mContext)) { Loading Loading @@ -310,8 +313,8 @@ public class VolumeDialogImpl implements VolumeDialog { if (D.BUG) Slog.d(TAG, "Adding row for stream " + stream); VolumeRow row = new VolumeRow(); initRow(row, stream, iconRes, iconMuteRes, important, defaultStream); mDialogRowsView.addView(row.view); mRows.add(row); mDialogRowsView.addView(row.view, 0); mRows.add(0, row); } private void addExistingRows() { Loading @@ -325,6 +328,27 @@ public class VolumeDialogImpl implements VolumeDialog { } } private void cleanExpandedRows() { for (int i = mRows.size() - 1; i >= 0; i--) { final VolumeRow row = mRows.get(i); if (row.stream == AudioManager.STREAM_RING || row.stream == AudioManager.STREAM_ALARM) { removeRow(row); } } } private void removeRow(VolumeRow volumeRow) { mRows.remove(volumeRow); mDialogRowsView.removeView(volumeRow.view); } private void updateAllActiveRows() { int N = mRows.size(); for (int i = 0; i < N; i++) { updateVolumeRowH(mRows.get(i)); } } private VolumeRow getActiveRow() { for (VolumeRow row : mRows) { if (row.stream == mActiveStream) { Loading Loading @@ -421,14 +445,29 @@ public class VolumeDialogImpl implements VolumeDialog { } public void initSettingsH() { mSettingsView.setVisibility( mExpandRowsView.setVisibility( mDeviceProvisionedController.isCurrentUserSetup() ? VISIBLE : GONE); mSettingsIcon.setOnClickListener(v -> { mExpandRows.setOnLongClickListener(v -> { Events.writeEvent(mContext, Events.EVENT_SETTINGS_CLICK); Intent intent = new Intent(Settings.ACTION_SOUND_SETTINGS); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); dismissH(DISMISS_REASON_SETTINGS_CLICKED); Dependency.get(ActivityStarter.class).startActivity(intent, true /* dismissShade */); return true; }); mExpandRows.setOnClickListener(v -> { if (!mExpanded) { addRow(AudioManager.STREAM_RING, R.drawable.ic_volume_ringer, R.drawable.ic_volume_ringer_mute, true, false); addRow(AudioManager.STREAM_ALARM, R.drawable.ic_volume_alarm, R.drawable.ic_volume_alarm_mute, true, false); updateAllActiveRows(); mExpanded = true; } else { cleanExpandedRows(); mExpanded = false; } mExpandRows.setExpanded(mExpanded); }); } Loading Loading @@ -560,6 +599,10 @@ public class VolumeDialogImpl implements VolumeDialog { } protected void dismissH(int reason) { if (!mShowing) { // This may happen when dismissing an expanded panel, don't animate again return; } mHandler.removeMessages(H.DISMISS); mHandler.removeMessages(H.SHOW); mDialogView.animate().cancel(); Loading @@ -574,6 +617,9 @@ public class VolumeDialogImpl implements VolumeDialog { .withEndAction(() -> mHandler.postDelayed(() -> { if (D.BUG) Log.d(TAG, "mDialog.dismiss()"); mDialog.dismiss(); cleanExpandedRows(); mExpanded = false; mExpandRows.setExpanded(mExpanded); }, 50)); if (!isLandscape()) animator.translationX(mDialogView.getWidth() / 2); animator.start(); Loading Loading @@ -625,7 +671,9 @@ public class VolumeDialogImpl implements VolumeDialog { for (final VolumeRow row : mRows) { final boolean isActive = row == activeRow; final boolean shouldBeVisible = shouldBeVisibleH(row, activeRow); if (!mExpanded) { Util.setVisOrGone(row.view, shouldBeVisible); } if (row.view.isShown()) { updateVolumeRowTintH(row, isActive); } Loading Loading
packages/SystemUI/res/layout/volume_dialog.xml +16 −12 Original line number Diff line number Diff line Loading @@ -81,20 +81,24 @@ <!-- volume rows added and removed here! :-) --> </LinearLayout> <FrameLayout android:id="@+id/settings_container" android:id="@+id/expandable_indicator_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/rounded_bg_bottom_background"> <com.android.keyguard.AlphaOptimizedImageButton android:id="@+id/settings" android:src="@drawable/ic_settings_16dp" android:layout_width="@dimen/volume_dialog_tap_target_size" android:layout_height="@dimen/volume_dialog_tap_target_size" android:layout_gravity="center" android:contentDescription="@string/accessibility_volume_settings" android:background="@drawable/ripple_drawable_20dp" android:tint="?android:attr/textColorSecondary" android:soundEffectsEnabled="false" /> <com.android.systemui.statusbar.phone.ExpandableIndicator android:id="@+id/expandable_indicator" android:layout_width="48dp" android:layout_height="48dp" android:clipToPadding="false" android:clickable="true" android:focusable="true" android:layout_marginRight="8dp" android:layout_marginLeft="8dp" android:layout_gravity="right" android:background="?android:attr/selectableItemBackgroundBorderless" android:contentDescription="@string/accessibility_quick_settings_expand" android:padding="14dp" android:rotation="90" /> </FrameLayout> </LinearLayout> Loading
packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java +57 −9 Original line number Diff line number Diff line Loading @@ -92,6 +92,7 @@ import com.android.systemui.plugins.VolumeDialog; import com.android.systemui.plugins.VolumeDialogController; import com.android.systemui.plugins.VolumeDialogController.State; import com.android.systemui.plugins.VolumeDialogController.StreamState; import com.android.systemui.statusbar.phone.ExpandableIndicator; import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper; import com.android.systemui.statusbar.policy.DeviceProvisionedController; Loading Loading @@ -124,8 +125,8 @@ public class VolumeDialogImpl implements VolumeDialog { private ViewGroup mDialogRowsView; private ViewGroup mRinger; private ImageButton mRingerIcon; private View mSettingsView; private ImageButton mSettingsIcon; private View mExpandRowsView; private ExpandableIndicator mExpandRows; private FrameLayout mZenIcon; private final List<VolumeRow> mRows = new ArrayList<>(); private ConfigurableTexts mConfigurableTexts; Loading @@ -149,6 +150,7 @@ public class VolumeDialogImpl implements VolumeDialog { private State mState; private SafetyWarningDialog mSafetyWarning; private boolean mHovering = false; private boolean mExpanded; public VolumeDialogImpl(Context context) { mContext = new ContextThemeWrapper(context, com.android.systemui.R.style.qs_theme); Loading Loading @@ -180,6 +182,7 @@ public class VolumeDialogImpl implements VolumeDialog { mConfigurableTexts = new ConfigurableTexts(mContext); mHovering = false; mShowing = false; mExpanded = false; mWindow = mDialog.getWindow(); mWindow.requestFeature(Window.FEATURE_NO_TITLE); mWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); Loading Loading @@ -237,8 +240,8 @@ public class VolumeDialogImpl implements VolumeDialog { mRinger = mDialog.findViewById(R.id.ringer); mRingerIcon = mRinger.findViewById(R.id.ringer_icon); mZenIcon = mRinger.findViewById(R.id.dnd_icon); mSettingsView = mDialog.findViewById(R.id.settings_container); mSettingsIcon = mDialog.findViewById(R.id.settings); mExpandRowsView = mDialog.findViewById(R.id.expandable_indicator_container); mExpandRows = mDialog.findViewById(R.id.expandable_indicator); if (mRows.isEmpty()) { if (!AudioSystem.isSingleVolume(mContext)) { Loading Loading @@ -310,8 +313,8 @@ public class VolumeDialogImpl implements VolumeDialog { if (D.BUG) Slog.d(TAG, "Adding row for stream " + stream); VolumeRow row = new VolumeRow(); initRow(row, stream, iconRes, iconMuteRes, important, defaultStream); mDialogRowsView.addView(row.view); mRows.add(row); mDialogRowsView.addView(row.view, 0); mRows.add(0, row); } private void addExistingRows() { Loading @@ -325,6 +328,27 @@ public class VolumeDialogImpl implements VolumeDialog { } } private void cleanExpandedRows() { for (int i = mRows.size() - 1; i >= 0; i--) { final VolumeRow row = mRows.get(i); if (row.stream == AudioManager.STREAM_RING || row.stream == AudioManager.STREAM_ALARM) { removeRow(row); } } } private void removeRow(VolumeRow volumeRow) { mRows.remove(volumeRow); mDialogRowsView.removeView(volumeRow.view); } private void updateAllActiveRows() { int N = mRows.size(); for (int i = 0; i < N; i++) { updateVolumeRowH(mRows.get(i)); } } private VolumeRow getActiveRow() { for (VolumeRow row : mRows) { if (row.stream == mActiveStream) { Loading Loading @@ -421,14 +445,29 @@ public class VolumeDialogImpl implements VolumeDialog { } public void initSettingsH() { mSettingsView.setVisibility( mExpandRowsView.setVisibility( mDeviceProvisionedController.isCurrentUserSetup() ? VISIBLE : GONE); mSettingsIcon.setOnClickListener(v -> { mExpandRows.setOnLongClickListener(v -> { Events.writeEvent(mContext, Events.EVENT_SETTINGS_CLICK); Intent intent = new Intent(Settings.ACTION_SOUND_SETTINGS); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); dismissH(DISMISS_REASON_SETTINGS_CLICKED); Dependency.get(ActivityStarter.class).startActivity(intent, true /* dismissShade */); return true; }); mExpandRows.setOnClickListener(v -> { if (!mExpanded) { addRow(AudioManager.STREAM_RING, R.drawable.ic_volume_ringer, R.drawable.ic_volume_ringer_mute, true, false); addRow(AudioManager.STREAM_ALARM, R.drawable.ic_volume_alarm, R.drawable.ic_volume_alarm_mute, true, false); updateAllActiveRows(); mExpanded = true; } else { cleanExpandedRows(); mExpanded = false; } mExpandRows.setExpanded(mExpanded); }); } Loading Loading @@ -560,6 +599,10 @@ public class VolumeDialogImpl implements VolumeDialog { } protected void dismissH(int reason) { if (!mShowing) { // This may happen when dismissing an expanded panel, don't animate again return; } mHandler.removeMessages(H.DISMISS); mHandler.removeMessages(H.SHOW); mDialogView.animate().cancel(); Loading @@ -574,6 +617,9 @@ public class VolumeDialogImpl implements VolumeDialog { .withEndAction(() -> mHandler.postDelayed(() -> { if (D.BUG) Log.d(TAG, "mDialog.dismiss()"); mDialog.dismiss(); cleanExpandedRows(); mExpanded = false; mExpandRows.setExpanded(mExpanded); }, 50)); if (!isLandscape()) animator.translationX(mDialogView.getWidth() / 2); animator.start(); Loading Loading @@ -625,7 +671,9 @@ public class VolumeDialogImpl implements VolumeDialog { for (final VolumeRow row : mRows) { final boolean isActive = row == activeRow; final boolean shouldBeVisible = shouldBeVisibleH(row, activeRow); if (!mExpanded) { Util.setVisOrGone(row.view, shouldBeVisible); } if (row.view.isShown()) { updateVolumeRowTintH(row, isActive); } Loading