summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoman Birg <roman@cyngn.com>2016-02-03 09:17:46 -0800
committerGerrit Code Review <gerrit@cyanogenmod.org>2016-02-05 08:32:24 -0800
commita8533527366d17e9fe8a528b0b405ceaf87b45d3 (patch)
tree45591b39d2156b49aff970ab1deb4e7e6508bc5c
parent0358395ced901abd2a60745bbe2053765246ac76 (diff)
downloadframeworks_base-a8533527366d17e9fe8a528b0b405ceaf87b45d3.zip
frameworks_base-a8533527366d17e9fe8a528b0b405ceaf87b45d3.tar.gz
frameworks_base-a8533527366d17e9fe8a528b0b405ceaf87b45d3.tar.bz2
SystemUI: improve exiting edit mode from qs settings
When the user hits done while in edit mode on the QS Settings page, the animation can be a little jarring to move to the first page while the brightness view slides into place. So let's immediately put the brightness view into its proper position when going out of editing mode on the settings page. Ref: OPO-425 Change-Id: I93794a94752978b1055911bbef19ee9f0d77bd3c Signed-off-by: Roman Birg <roman@cyngn.com>
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSDragPanel.java38
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSPanelTopView.java22
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java2
3 files changed, 40 insertions, 22 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSDragPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSDragPanel.java
index 995237d..0615842 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSDragPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSDragPanel.java
@@ -390,34 +390,42 @@ public class QSDragPanel extends QSPanel implements View.OnDragListener, View.On
}
}
+ private void persistRecords() {
+ // persist the new config.
+ List<String> newTiles = new ArrayList<>();
+ for (TileRecord record : mRecords) {
+ newTiles.add(mHost.getSpec(record.tile));
+ }
+ mHost.setTiles(newTiles);
+ }
+
public void setEditing(boolean editing) {
if (mEditing == editing) return;
- mEditing = editing;
+ final boolean isOnSettings = isOnSettingsPage();
+ mQsPanelTop.setEditing(editing, isOnSettings);
if (!editing) {
- // persist the new config.
- List<String> newTiles = new ArrayList<>();
- for (TileRecord record : mRecords) {
- newTiles.add(mHost.getSpec(record.tile));
- }
- mHost.setTiles(newTiles);
+ persistRecords();
refreshAllTiles();
- mQsPanelTop.animate().translationX(0).start();
+ mQsPanelTop.setTranslationX(0);
+ if (isOnSettings) {
+ mViewPager.setCurrentItem(1, true);
+ }
}
+ mEditing = editing;
+ mPagerAdapter.notifyDataSetChanged();
+
+ mPageIndicator.setEditing(editing);
+ mViewPager.setOffscreenPageLimit(mEditing ? getCurrentMaxPageCount() + 1 : 1);
+ mPagerAdapter.notifyDataSetChanged();
// clear the record state
for (TileRecord record : mRecords) {
setupRecord(record);
drawTile(record, record.tile.getState());
}
- mQsPanelTop.setEditing(editing);
- mPageIndicator.setEditing(editing);
- mPagerAdapter.notifyDataSetChanged();
-
- mViewPager.setOffscreenPageLimit(mEditing ? getCurrentMaxPageCount() + 1 : 1);
- mPagerAdapter.notifyDataSetChanged();
requestLayout();
}
@@ -2110,8 +2118,8 @@ public class QSDragPanel extends QSPanel implements View.OnDragListener, View.On
CMSettings.Secure.QS_USE_MAIN_TILES, 1, currentUserId) == 1;
if (firstRowLarge != mFirstRowLarge) {
mFirstRowLarge = firstRowLarge;
- setTiles(new ArrayList<QSTile<?>>()); // clear out states
setTiles(mHost.getTiles());
+ mPagerAdapter.notifyDataSetChanged();
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelTopView.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelTopView.java
index 57c311c..5f57be1 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelTopView.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelTopView.java
@@ -65,6 +65,7 @@ public class QSPanelTopView extends FrameLayout {
private SettingsObserver mSettingsObserver;
private boolean mListening;
+ private boolean mSkipAnimations;
public QSPanelTopView(Context context, @Nullable AttributeSet attrs) {
this(context, attrs, 0);
@@ -137,12 +138,11 @@ public class QSPanelTopView extends FrameLayout {
boolean animateToState = !isLaidOut();
super.onLayout(changed, left, top, right, bottom);
if (animateToState) {
- Log.e(TAG, "first layout animating to state!");
- animateToState();
+ goToState();
}
}
- public void setEditing(boolean editing) {
+ public void setEditing(boolean editing, boolean skipAnim) {
mEditing = editing;
if (editing) {
mDisplayingInstructions = true;
@@ -151,7 +151,11 @@ public class QSPanelTopView extends FrameLayout {
mDisplayingInstructions = false;
mDisplayingTrash = false;
}
- animateToState();
+ if (skipAnim) {
+ goToState();
+ } else {
+ animateToState();
+ }
}
public void onStopDrag() {
@@ -254,9 +258,9 @@ public class QSPanelTopView extends FrameLayout {
}
});
- mAnimator.setDuration(500);
+ mAnimator.setDuration(mSkipAnimations ? 0 : 500);
mAnimator.setInterpolator(new FastOutSlowInInterpolator());
- mAnimator.setStartDelay(100);
+ mAnimator.setStartDelay(mSkipAnimations ? 0 : 100);
mAnimator.playTogether(instructionAnimator, trashAnimator,
brightnessAnimator, toastAnimator);
mAnimator.start();
@@ -271,6 +275,12 @@ public class QSPanelTopView extends FrameLayout {
}
private void animateToState() {
+ mSkipAnimations = false;
+ post(mAnimateRunnable);
+ }
+
+ private void goToState() {
+ mSkipAnimations = true;
post(mAnimateRunnable);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java
index 0bc05c4..27c8a4d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java
@@ -776,7 +776,7 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
public void setEditing(boolean editing) {
mEditing = editing;
- if (mEditingDetailAdapter == null) {
+ if (editing && mEditingDetailAdapter == null) {
mEditingDetailAdapter = new QSTile.DetailAdapter() {
@Override
public int getTitle() {