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

Commit 79118c45 authored by Selim Cinek's avatar Selim Cinek Committed by Automerger Merge Worker
Browse files

Merge "Resetting the scroll position of the media players when allowed" into rvc-dev am: 2cdb725b

Change-Id: I00f19b60e9a670992eaf985b92213cf8475f0382
parents f19bd92d 2cdb725b
Loading
Loading
Loading
Loading
+13 −3
Original line number Original line Diff line number Diff line
@@ -42,10 +42,10 @@ class MediaViewManager @Inject constructor(
    val mediaCarousel: HorizontalScrollView
    val mediaCarousel: HorizontalScrollView
    private val mediaContent: ViewGroup
    private val mediaContent: ViewGroup
    private val mediaPlayers: MutableMap<String, MediaControlPanel> = mutableMapOf()
    private val mediaPlayers: MutableMap<String, MediaControlPanel> = mutableMapOf()
    private val visualStabilityCallback = ::reorderAllPlayers
    private val visualStabilityCallback : VisualStabilityManager.Callback
    private var activeMediaIndex: Int = 0
    private var activeMediaIndex: Int = 0
    private var needsReordering: Boolean = false
    private var scrollIntoCurrentMedia: Int = 0
    private var scrollIntoCurrentMedia: Int = 0

    private var currentlyExpanded = true
    private var currentlyExpanded = true
        set(value) {
        set(value) {
            if (field != value) {
            if (field != value) {
@@ -75,6 +75,16 @@ class MediaViewManager @Inject constructor(
        mediaCarousel = inflateMediaCarousel()
        mediaCarousel = inflateMediaCarousel()
        mediaCarousel.setOnScrollChangeListener(scrollChangedListener)
        mediaCarousel.setOnScrollChangeListener(scrollChangedListener)
        mediaContent = mediaCarousel.requireViewById(R.id.media_carousel)
        mediaContent = mediaCarousel.requireViewById(R.id.media_carousel)
        visualStabilityCallback = VisualStabilityManager.Callback {
            if (needsReordering) {
                needsReordering = false
                reorderAllPlayers()
            }
            // Let's reset our scroll position
            mediaCarousel.scrollX = 0
        }
        visualStabilityManager.addReorderingAllowedCallback(visualStabilityCallback,
                true /* persistent */)
        mediaManager.addListener(object : MediaDataManager.Listener {
        mediaManager.addListener(object : MediaDataManager.Listener {
            override fun onMediaDataLoaded(key: String, data: MediaData) {
            override fun onMediaDataLoaded(key: String, data: MediaData) {
                updateView(key, data)
                updateView(key, data)
@@ -169,7 +179,7 @@ class MediaViewManager @Inject constructor(
                mediaContent.removeView(existingPlayer.view?.player)
                mediaContent.removeView(existingPlayer.view?.player)
                mediaContent.addView(existingPlayer.view?.player, 0)
                mediaContent.addView(existingPlayer.view?.player, 0)
            } else {
            } else {
                visualStabilityManager.addReorderingAllowedCallback(visualStabilityCallback)
                needsReordering = true
            }
            }
        }
        }
        existingPlayer.bind(data)
        existingPlayer.bind(data)
+6 −3
Original line number Original line Diff line number Diff line
@@ -195,13 +195,15 @@ public class NotificationViewHierarchyManager implements DynamicPrivacyControlle
                boolean wasChildInGroup = ent.isChildInGroup();
                boolean wasChildInGroup = ent.isChildInGroup();
                if (isChildInGroup && !wasChildInGroup) {
                if (isChildInGroup && !wasChildInGroup) {
                    isChildInGroup = wasChildInGroup;
                    isChildInGroup = wasChildInGroup;
                    mVisualStabilityManager.addGroupChangesAllowedCallback(mEntryManager);
                    mVisualStabilityManager.addGroupChangesAllowedCallback(mEntryManager,
                            false /* persistent */);
                } else if (!isChildInGroup && wasChildInGroup) {
                } else if (!isChildInGroup && wasChildInGroup) {
                    // We allow grouping changes if the group was collapsed
                    // We allow grouping changes if the group was collapsed
                    if (mGroupManager.isLogicalGroupExpanded(ent.getSbn())) {
                    if (mGroupManager.isLogicalGroupExpanded(ent.getSbn())) {
                        isChildInGroup = wasChildInGroup;
                        isChildInGroup = wasChildInGroup;
                        parent = ent.getRow().getNotificationParent().getEntry();
                        parent = ent.getRow().getNotificationParent().getEntry();
                        mVisualStabilityManager.addGroupChangesAllowedCallback(mEntryManager);
                        mVisualStabilityManager.addGroupChangesAllowedCallback(mEntryManager,
                                false /* persistent */);
                    }
                    }
                }
                }
            }
            }
@@ -286,7 +288,8 @@ public class NotificationViewHierarchyManager implements DynamicPrivacyControlle
                if (mVisualStabilityManager.canReorderNotification(targetChild)) {
                if (mVisualStabilityManager.canReorderNotification(targetChild)) {
                    mListContainer.changeViewPosition(targetChild, i);
                    mListContainer.changeViewPosition(targetChild, i);
                } else {
                } else {
                    mVisualStabilityManager.addReorderingAllowedCallback(mEntryManager);
                    mVisualStabilityManager.addReorderingAllowedCallback(mEntryManager,
                            false  /* persistent */);
                }
                }
            }
            }
            j++;
            j++;
+28 −7
Original line number Original line Diff line number Diff line
@@ -43,7 +43,9 @@ public class VisualStabilityManager implements OnHeadsUpChangedListener, Dumpabl
    private static final long TEMPORARY_REORDERING_ALLOWED_DURATION = 1000;
    private static final long TEMPORARY_REORDERING_ALLOWED_DURATION = 1000;


    private final ArrayList<Callback> mReorderingAllowedCallbacks = new ArrayList<>();
    private final ArrayList<Callback> mReorderingAllowedCallbacks = new ArrayList<>();
    private final ArraySet<Callback> mPersistentReorderingCallbacks = new ArraySet<>();
    private final ArrayList<Callback> mGroupChangesAllowedCallbacks = new ArrayList<>();
    private final ArrayList<Callback> mGroupChangesAllowedCallbacks = new ArrayList<>();
    private final ArraySet<Callback> mPersistentGroupCallbacks = new ArraySet<>();
    private final Handler mHandler;
    private final Handler mHandler;


    private boolean mPanelExpanded;
    private boolean mPanelExpanded;
@@ -85,8 +87,15 @@ public class VisualStabilityManager implements OnHeadsUpChangedListener, Dumpabl


    /**
    /**
     * Add a callback to invoke when reordering is allowed again.
     * Add a callback to invoke when reordering is allowed again.
     *
     * @param callback the callback to add
     * @param persistent {@code true} if this callback should this callback be persisted, otherwise
     *                               it will be removed after a single invocation
     */
     */
    public void addReorderingAllowedCallback(Callback callback) {
    public void addReorderingAllowedCallback(Callback callback, boolean persistent) {
        if (persistent) {
            mPersistentReorderingCallbacks.add(callback);
        }
        if (mReorderingAllowedCallbacks.contains(callback)) {
        if (mReorderingAllowedCallbacks.contains(callback)) {
            return;
            return;
        }
        }
@@ -95,8 +104,15 @@ public class VisualStabilityManager implements OnHeadsUpChangedListener, Dumpabl


    /**
    /**
     * Add a callback to invoke when group changes are allowed again.
     * Add a callback to invoke when group changes are allowed again.
     *
     * @param callback the callback to add
     * @param persistent {@code true} if this callback should this callback be persisted, otherwise
     *                               it will be removed after a single invocation
     */
     */
    public void addGroupChangesAllowedCallback(Callback callback) {
    public void addGroupChangesAllowedCallback(Callback callback, boolean persistent) {
        if (persistent) {
            mPersistentGroupCallbacks.add(callback);
        }
        if (mGroupChangesAllowedCallbacks.contains(callback)) {
        if (mGroupChangesAllowedCallbacks.contains(callback)) {
            return;
            return;
        }
        }
@@ -136,21 +152,26 @@ public class VisualStabilityManager implements OnHeadsUpChangedListener, Dumpabl
        boolean changedToTrue = reorderingAllowed && !mReorderingAllowed;
        boolean changedToTrue = reorderingAllowed && !mReorderingAllowed;
        mReorderingAllowed = reorderingAllowed;
        mReorderingAllowed = reorderingAllowed;
        if (changedToTrue) {
        if (changedToTrue) {
            notifyChangeAllowed(mReorderingAllowedCallbacks);
            notifyChangeAllowed(mReorderingAllowedCallbacks, mPersistentReorderingCallbacks);
        }
        }
        boolean groupChangesAllowed = (!mScreenOn || !mPanelExpanded) && !mPulsing;
        boolean groupChangesAllowed = (!mScreenOn || !mPanelExpanded) && !mPulsing;
        changedToTrue = groupChangesAllowed && !mGroupChangedAllowed;
        changedToTrue = groupChangesAllowed && !mGroupChangedAllowed;
        mGroupChangedAllowed = groupChangesAllowed;
        mGroupChangedAllowed = groupChangesAllowed;
        if (changedToTrue) {
        if (changedToTrue) {
            notifyChangeAllowed(mGroupChangesAllowedCallbacks);
            notifyChangeAllowed(mGroupChangesAllowedCallbacks, mPersistentGroupCallbacks);
        }
        }
    }
    }


    private void notifyChangeAllowed(ArrayList<Callback> callbacks) {
    private void notifyChangeAllowed(ArrayList<Callback> callbacks,
            ArraySet<Callback> persistentCallbacks) {
        for (int i = 0; i < callbacks.size(); i++) {
        for (int i = 0; i < callbacks.size(); i++) {
            callbacks.get(i).onChangeAllowed();
            Callback callback = callbacks.get(i);
            callback.onChangeAllowed();
            if (!persistentCallbacks.contains(callback)) {
                callbacks.remove(callback);
                i--;
            }
        }
        }
        callbacks.clear();
    }
    }


    /**
    /**
+2 −1
Original line number Original line Diff line number Diff line
@@ -463,7 +463,8 @@ public class NotificationChildrenContainer extends ViewGroup {
                    mAttachedChildren.add(i, desiredChild);
                    mAttachedChildren.add(i, desiredChild);
                    result = true;
                    result = true;
                } else {
                } else {
                    visualStabilityManager.addReorderingAllowedCallback(callback);
                    visualStabilityManager.addReorderingAllowedCallback(callback,
                            false /* persistent */);
                }
                }
            }
            }
        }
        }
+2 −1
Original line number Original line Diff line number Diff line
@@ -439,7 +439,8 @@ public class HeadsUpManagerPhone extends HeadsUpManager implements Dumpable,
                        // time out anyway
                        // time out anyway
                        && !entry.showingPulsing()) {
                        && !entry.showingPulsing()) {
                    mEntriesToRemoveWhenReorderingAllowed.add(entry);
                    mEntriesToRemoveWhenReorderingAllowed.add(entry);
                    mVisualStabilityManager.addReorderingAllowedCallback(HeadsUpManagerPhone.this);
                    mVisualStabilityManager.addReorderingAllowedCallback(HeadsUpManagerPhone.this,
                            false  /* persistent */);
                } else if (mTrackingHeadsUp) {
                } else if (mTrackingHeadsUp) {
                    mEntriesToRemoveAfterExpand.add(entry);
                    mEntriesToRemoveAfterExpand.add(entry);
                } else if (mIsAutoHeadsUp && mStatusBarState == StatusBarState.KEYGUARD) {
                } else if (mIsAutoHeadsUp && mStatusBarState == StatusBarState.KEYGUARD) {
Loading