Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d610c7c4 authored by Beth Thibodeau's avatar Beth Thibodeau Committed by Android (Google) Code Review
Browse files

Merge "Add flag to control compact seekbar visibility."

parents 9423ec6e eab4ddeb
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -81,5 +81,13 @@ public final class SystemUiDeviceConfigFlags {
     */
    public static final String SSIN_MAX_NUM_ACTIONS = "ssin_max_num_actions";

    // Flags related to media notifications

    /**
     * (boolean) If {@code true}, enables the seekbar in compact media notifications.
     */
    public static final String COMPACT_MEDIA_SEEKBAR_ENABLED =
            "compact_media_notification_seekbar_enabled";

    private SystemUiDeviceConfigFlags() { }
}
+28 −0
Original line number Diff line number Diff line
@@ -38,10 +38,12 @@ import android.media.session.PlaybackState;
import android.os.Handler;
import android.os.Trace;
import android.os.UserHandle;
import android.provider.DeviceConfig;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;

import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
import com.android.internal.statusbar.NotificationVisibility;
import com.android.systemui.Dependency;
import com.android.systemui.Dumpable;
@@ -115,6 +117,20 @@ public class NotificationMediaManager implements Dumpable {
    private ImageView mBackdropFront;
    private ImageView mBackdropBack;

    private boolean mShowCompactMediaSeekbar;
    private final DeviceConfig.OnPropertyChangedListener mPropertyChangedListener =
            new DeviceConfig.OnPropertyChangedListener() {
        @Override
        public void onPropertyChanged(String namespace, String name, String value) {
            if (SystemUiDeviceConfigFlags.COMPACT_MEDIA_SEEKBAR_ENABLED.equals(name)) {
                if (DEBUG_MEDIA) {
                    Log.v(TAG, "DEBUG_MEDIA: compact media seekbar flag updated: " + value);
                }
                mShowCompactMediaSeekbar = "true".equals(value);
            }
        }
    };

    private final MediaController.Callback mMediaListener = new MediaController.Callback() {
        @Override
        public void onPlaybackStateChanged(PlaybackState state) {
@@ -168,6 +184,14 @@ public class NotificationMediaManager implements Dumpable {
                onNotificationRemoved(entry.key);
            }
        });

        mShowCompactMediaSeekbar = "true".equals(
                DeviceConfig.getProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
                    SystemUiDeviceConfigFlags.COMPACT_MEDIA_SEEKBAR_ENABLED));

        DeviceConfig.addOnPropertyChangedListener(DeviceConfig.NAMESPACE_SYSTEMUI,
                mContext.getMainExecutor(),
                mPropertyChangedListener);
    }

    public void setUpWithPresenter(NotificationPresenter presenter) {
@@ -189,6 +213,10 @@ public class NotificationMediaManager implements Dumpable {
        return mMediaMetadata;
    }

    public boolean getShowCompactMediaSeekbar() {
        return mShowCompactMediaSeekbar;
    }

    public Icon getMediaIcon() {
        if (mMediaNotificationKey == null) {
            return null;
+5 −2
Original line number Diff line number Diff line
@@ -81,6 +81,7 @@ import com.android.systemui.plugins.PluginListener;
import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin;
import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin.MenuItem;
import com.android.systemui.shared.plugins.PluginManager;
import com.android.systemui.statusbar.NotificationMediaManager;
import com.android.systemui.statusbar.RemoteInputController;
import com.android.systemui.statusbar.StatusBarIconView;
import com.android.systemui.statusbar.notification.AboveShelfChangedListener;
@@ -90,7 +91,6 @@ import com.android.systemui.statusbar.notification.VisualStabilityManager;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.logging.NotificationCounters;
import com.android.systemui.statusbar.notification.row.NotificationContentInflater.InflationFlag;
import com.android.systemui.statusbar.notification.row.wrapper.NotificationMediaTemplateViewWrapper;
import com.android.systemui.statusbar.notification.row.wrapper.NotificationViewWrapper;
import com.android.systemui.statusbar.notification.stack.AmbientState;
import com.android.systemui.statusbar.notification.stack.AnimationProperties;
@@ -331,6 +331,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
    private boolean mWasChildInGroupWhenRemoved;
    private int mNotificationColorAmbient;
    private NotificationInlineImageResolver mImageResolver;
    private NotificationMediaManager mMediaManager;

    private SystemNotificationAsyncTask mSystemNotificationAsyncTask =
            new SystemNotificationAsyncTask();
@@ -658,10 +659,11 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
        View expandedView = layout.getExpandedChild();
        boolean isMediaLayout = expandedView != null
                && expandedView.findViewById(com.android.internal.R.id.media_actions) != null;
        boolean showCompactMediaSeekbar = mMediaManager.getShowCompactMediaSeekbar();

        if (customView && beforeP && !mIsSummaryWithChildren) {
            minHeight = beforeN ? mNotificationMinHeightBeforeN : mNotificationMinHeightBeforeP;
        } else if (isMediaLayout && !NotificationMediaTemplateViewWrapper.HIDE_COMPACT_SCRUBBER) {
        } else if (isMediaLayout && showCompactMediaSeekbar) {
            minHeight = mNotificationMinHeightMedia;
        } else if (mUseIncreasedCollapsedHeight && layout == mPrivateLayout) {
            minHeight = mNotificationMinHeightLarge;
@@ -1635,6 +1637,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
        mMenuRow = new NotificationMenuRow(mContext);
        mImageResolver = new NotificationInlineImageResolver(context,
                new NotificationInlineImageCache());
        mMediaManager = Dependency.get(NotificationMediaManager.class);
        initDimens();
    }

+5 −4
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import android.widget.TextView;

import com.android.internal.R;
import com.android.systemui.Dependency;
import com.android.systemui.statusbar.NotificationMediaManager;
import com.android.systemui.statusbar.TransformableView;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;

@@ -58,12 +59,10 @@ public class NotificationMediaTemplateViewWrapper extends NotificationTemplateVi
    private TextView mSeekBarTotalTime;
    private long mDuration = 0;
    private MediaController mMediaController;
    private NotificationMediaManager mMediaManager;
    private View mSeekBarView;
    private Context mContext;

    // TODO: implement as phenotype flag
    public static final boolean HIDE_COMPACT_SCRUBBER = true;

    private SeekBar.OnSeekBarChangeListener mSeekListener = new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
@@ -102,6 +101,7 @@ public class NotificationMediaTemplateViewWrapper extends NotificationTemplateVi
            ExpandableNotificationRow row) {
        super(ctx, view, row);
        mContext = ctx;
        mMediaManager = Dependency.get(NotificationMediaManager.class);
    }

    private void resolveViews() {
@@ -110,7 +110,8 @@ public class NotificationMediaTemplateViewWrapper extends NotificationTemplateVi
        final MediaSession.Token token = mRow.getEntry().notification.getNotification().extras
                .getParcelable(Notification.EXTRA_MEDIA_SESSION);

        if (token == null || (COMPACT_MEDIA_TAG.equals(mView.getTag()) && HIDE_COMPACT_SCRUBBER)) {
        boolean showCompactSeekbar = mMediaManager.getShowCompactMediaSeekbar();
        if (token == null || (COMPACT_MEDIA_TAG.equals(mView.getTag()) && !showCompactSeekbar)) {
            if (mSeekBarView != null) {
                mSeekBarView.setVisibility(View.GONE);
            }