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

Commit 2f91645c authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Page in PagedTileLayout only changes when needed"

parents 6c76b21d 407ddb2f
Loading
Loading
Loading
Loading
+36 −3
Original line number Original line Diff line number Diff line
@@ -6,7 +6,9 @@ import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.animation.PropertyValuesHolder;
import android.content.Context;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.Resources;
import android.os.Bundle;
import android.util.AttributeSet;
import android.util.AttributeSet;
import android.util.Log;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.LayoutInflater;
@@ -29,6 +31,7 @@ import java.util.Set;
public class PagedTileLayout extends ViewPager implements QSTileLayout {
public class PagedTileLayout extends ViewPager implements QSTileLayout {


    private static final boolean DEBUG = false;
    private static final boolean DEBUG = false;
    private static final String CURRENT_PAGE = "current_page";


    private static final String TAG = "PagedTileLayout";
    private static final String TAG = "PagedTileLayout";
    private static final int REVEAL_SCROLL_DURATION_MILLIS = 750;
    private static final int REVEAL_SCROLL_DURATION_MILLIS = 750;
@@ -54,6 +57,9 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout {
    private AnimatorSet mBounceAnimatorSet;
    private AnimatorSet mBounceAnimatorSet;
    private float mLastExpansion;
    private float mLastExpansion;
    private boolean mDistributeTiles = false;
    private boolean mDistributeTiles = false;
    private int mPageToRestore = -1;
    private int mLayoutOrientation;
    private int mLayoutDirection;


    public PagedTileLayout(Context context, AttributeSet attrs) {
    public PagedTileLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        super(context, attrs);
@@ -61,14 +67,38 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout {
        setAdapter(mAdapter);
        setAdapter(mAdapter);
        setOnPageChangeListener(mOnPageChangeListener);
        setOnPageChangeListener(mOnPageChangeListener);
        setCurrentItem(0, false);
        setCurrentItem(0, false);
        mLayoutOrientation = getResources().getConfiguration().orientation;
        mLayoutDirection = getLayoutDirection();
    }

    public void saveInstanceState(Bundle outState) {
        outState.putInt(CURRENT_PAGE, getCurrentItem());
    }

    public void restoreInstanceState(Bundle savedInstanceState) {
        // There's only 1 page at this point. We want to restore the correct page once the
        // pages have been inflated
        mPageToRestore = savedInstanceState.getInt(CURRENT_PAGE, -1);
    }

    @Override
    protected void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        if (mLayoutOrientation != newConfig.orientation) {
            mLayoutOrientation = newConfig.orientation;
            setCurrentItem(0, false);
        }
    }
    }


    @Override
    @Override
    public void onRtlPropertiesChanged(int layoutDirection) {
    public void onRtlPropertiesChanged(int layoutDirection) {
        super.onRtlPropertiesChanged(layoutDirection);
        super.onRtlPropertiesChanged(layoutDirection);
        if (mLayoutDirection != layoutDirection) {
            mLayoutDirection = layoutDirection;
            setAdapter(mAdapter);
            setAdapter(mAdapter);
            setCurrentItem(0, false);
            setCurrentItem(0, false);
        }
        }
    }


    @Override
    @Override
    public void setCurrentItem(int item, boolean smoothScroll) {
    public void setCurrentItem(int item, boolean smoothScroll) {
@@ -219,7 +249,10 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout {
        mPageIndicator.setNumPages(mPages.size());
        mPageIndicator.setNumPages(mPages.size());
        setAdapter(mAdapter);
        setAdapter(mAdapter);
        mAdapter.notifyDataSetChanged();
        mAdapter.notifyDataSetChanged();
        setCurrentItem(0, false);
        if (mPageToRestore != -1) {
            setCurrentItem(mPageToRestore, false);
            mPageToRestore = -1;
        }
    }
    }


    @Override
    @Override
+6 −0
Original line number Original line Diff line number Diff line
@@ -103,6 +103,9 @@ public class QSFragment extends Fragment implements QS, CommandQueue.Callbacks {
            setListening(savedInstanceState.getBoolean(EXTRA_LISTENING));
            setListening(savedInstanceState.getBoolean(EXTRA_LISTENING));
            setEditLocation(view);
            setEditLocation(view);
            mQSCustomizer.restoreInstanceState(savedInstanceState);
            mQSCustomizer.restoreInstanceState(savedInstanceState);
            if (mQsExpanded) {
                mQSPanel.getTileLayout().restoreInstanceState(savedInstanceState);
            }
        }
        }
        SysUiServiceProvider.getComponent(getContext(), CommandQueue.class).addCallbacks(this);
        SysUiServiceProvider.getComponent(getContext(), CommandQueue.class).addCallbacks(this);
    }
    }
@@ -127,6 +130,9 @@ public class QSFragment extends Fragment implements QS, CommandQueue.Callbacks {
        outState.putBoolean(EXTRA_EXPANDED, mQsExpanded);
        outState.putBoolean(EXTRA_EXPANDED, mQsExpanded);
        outState.putBoolean(EXTRA_LISTENING, mListening);
        outState.putBoolean(EXTRA_LISTENING, mListening);
        mQSCustomizer.saveInstanceState(outState);
        mQSCustomizer.saveInstanceState(outState);
        if (mQsExpanded) {
            mQSPanel.getTileLayout().saveInstanceState(outState);
        }
    }
    }


    @VisibleForTesting
    @VisibleForTesting
+6 −0
Original line number Original line Diff line number Diff line
@@ -25,6 +25,7 @@ import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.Resources;
import android.metrics.LogMaker;
import android.metrics.LogMaker;
import android.os.Bundle;
import android.os.Handler;
import android.os.Handler;
import android.os.Message;
import android.os.Message;
import android.service.quicksettings.Tile;
import android.service.quicksettings.Tile;
@@ -666,6 +667,11 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne
    }
    }


    public interface QSTileLayout {
    public interface QSTileLayout {

        default void saveInstanceState(Bundle outState) {}

        default void restoreInstanceState(Bundle savedInstanceState) {}

        void addTile(TileRecord tile);
        void addTile(TileRecord tile);


        void removeTile(TileRecord tile);
        void removeTile(TileRecord tile);