Loading packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java +36 −3 Original line number Original line Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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); Loading @@ -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) { Loading Loading @@ -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 Loading packages/SystemUI/src/com/android/systemui/qs/QSFragment.java +6 −0 Original line number Original line Diff line number Diff line Loading @@ -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); } } Loading @@ -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 Loading packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +6 −0 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading Loading
packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java +36 −3 Original line number Original line Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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); Loading @@ -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) { Loading Loading @@ -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 Loading
packages/SystemUI/src/com/android/systemui/qs/QSFragment.java +6 −0 Original line number Original line Diff line number Diff line Loading @@ -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); } } Loading @@ -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 Loading
packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +6 −0 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading