Fix isResultLayout()
Bug: 33105525
Bug: 33106867
Also reinitialize the dragController so it can keep up on rotation
or background display changes.
Change-Id: Ic1846bc4495196c35ebd4d4ac78f61078dca7573
diff --git a/src/com/android/calculator2/Calculator.java b/src/com/android/calculator2/Calculator.java
index 2c19468..70c7986 100644
--- a/src/com/android/calculator2/Calculator.java
+++ b/src/com/android/calculator2/Calculator.java
@@ -508,8 +508,10 @@
}
}
- public boolean isResultState() {
- return mCurrentState == CalculatorState.RESULT;
+ public boolean isResultLayout() {
+ return mCurrentState == CalculatorState.INIT
+ || mCurrentState == CalculatorState.RESULT
+ || mCurrentState == CalculatorState.ANIMATE;
}
@Override
diff --git a/src/com/android/calculator2/DragController.java b/src/com/android/calculator2/DragController.java
index 6fb1837..9b40ecc 100644
--- a/src/com/android/calculator2/DragController.java
+++ b/src/com/android/calculator2/DragController.java
@@ -50,25 +50,20 @@
public void setEvaluator(Evaluator evaluator) {
mEvaluator = evaluator;
-
- if (evaluator != null) {
- // Initialize controller
- if (EvaluatorStateUtils.isDisplayEmpty(mEvaluator)) {
- // Empty display
- mAnimationController = new EmptyAnimationController();
- } else if (isResultState()) {
- // Result
- mAnimationController = new ResultAnimationController();
- } else {
- // There is something in the formula field. There may or may not be
- // a quick result.
- mAnimationController = new AnimationController();
- }
- }
}
- private boolean isResultState() {
- return mDisplayResult.getTranslationY() != 0;
+ public void initializeController(boolean isResult) {
+ if (EvaluatorStateUtils.isDisplayEmpty(mEvaluator)) {
+ // Empty display
+ mAnimationController = new EmptyAnimationController();
+ } else if (isResult) {
+ // Result
+ mAnimationController = new ResultAnimationController();
+ } else {
+ // There is something in the formula field. There may or may not be
+ // a quick result.
+ mAnimationController = new AnimationController();
+ }
}
public void setDisplayFormula(CalculatorFormula formula) {
@@ -159,9 +154,10 @@
/**
* Reset all initialized values and set recyclerview to INVISIBLE to avoid flickering.
*/
- public void initializeAnimation(RecyclerView recyclerView) {
+ public void initializeAnimation(RecyclerView recyclerView, boolean isResult) {
recyclerView.setVisibility(View.INVISIBLE);
mAnimationInitialized = false;
+ initializeController(isResult);
}
public interface AnimateTextInterface {
diff --git a/src/com/android/calculator2/HistoryAdapter.java b/src/com/android/calculator2/HistoryAdapter.java
index e8c6eb7..cc2f7e1 100644
--- a/src/com/android/calculator2/HistoryAdapter.java
+++ b/src/com/android/calculator2/HistoryAdapter.java
@@ -39,7 +39,7 @@
private List<HistoryItem> mDataSet;
- private boolean mIsResultState;
+ private boolean mIsResultLayout;
public HistoryAdapter(Calculator calculator, ArrayList<HistoryItem> dataSet,
String currentExpressionDescription) {
@@ -125,7 +125,7 @@
}
private int getEvaluatorIndex(int position) {
- if (EvaluatorStateUtils.isDisplayEmpty(mEvaluator) || mIsResultState) {
+ if (EvaluatorStateUtils.isDisplayEmpty(mEvaluator) || mIsResultLayout) {
return (int) mEvaluator.getMaxIndex() - position;
} else {
// Account for the additional "Current Expression" with the +1.
@@ -133,8 +133,8 @@
}
}
- public void setIsResultState(boolean isResult) {
- mIsResultState = isResult;
+ public void setIsResultLayout(boolean isResult) {
+ mIsResultLayout = isResult;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
diff --git a/src/com/android/calculator2/HistoryFragment.java b/src/com/android/calculator2/HistoryFragment.java
index b8682ce..6eed1c2 100644
--- a/src/com/android/calculator2/HistoryFragment.java
+++ b/src/com/android/calculator2/HistoryFragment.java
@@ -134,18 +134,18 @@
dragLayout.addDragCallback(mDragCallback);
final Calculator activity = (Calculator) getActivity();
- final boolean isResultState = activity.isResultState();
+ final boolean isResultLayout = activity.isResultLayout();
mEvaluator = Evaluator.getInstance(activity);
if (mEvaluator != null) {
- initializeController();
+ initializeController(isResultLayout);
final long maxIndex = mEvaluator.getMaxIndex();
final ArrayList<HistoryItem> newDataSet = new ArrayList<>();
- if (!EvaluatorStateUtils.isDisplayEmpty(mEvaluator) && !isResultState) {
+ if (!EvaluatorStateUtils.isDisplayEmpty(mEvaluator) && !isResultLayout) {
// Add the current expression as the first element in the list (the layout is
// reversed and we want the current expression to be the last one in the
// recyclerview).
@@ -162,7 +162,7 @@
}
mDataSet = newDataSet;
mAdapter.setDataSet(mDataSet);
- mAdapter.setIsResultState(isResultState);
+ mAdapter.setIsResultLayout(isResultLayout);
}
mAdapter.notifyDataSetChanged();
@@ -173,7 +173,8 @@
super.onStart();
// The orientation may have changed.
- mDragController.initializeAnimation(mRecyclerView);
+ mDragController.initializeAnimation(mRecyclerView,
+ ((Calculator) getActivity()).isResultLayout());
}
@Override
@@ -205,7 +206,7 @@
((Calculator)(getActivity())).evaluateInstantIfNecessary();
}
- private void initializeController() {
+ private void initializeController(boolean isResult) {
mDragController.setDisplayFormula(
(CalculatorFormula) getActivity().findViewById(R.id.formula));
@@ -215,6 +216,8 @@
mDragController.setToolbar(getActivity().findViewById(R.id.toolbar));
mDragController.setEvaluator(mEvaluator);
+
+ mDragController.initializeController(isResult);
}
private void clearHistory() {