Polish History multiwindow support.
Fixes: 34081054
Fixes: 34081005
Fixes: 32987283
-Hide quick result from current expression when we are in one-line
display mode.
-Adjust bottom padding for history item in one-line mode.
-Add font padding when bottom padding for items is 0 to prevent running
into the bottom edge of the display.
Change-Id: Icf3ddd4951ac0e4ab680124ecff7dd5258ccc05f
diff --git a/src/com/android/calculator2/Calculator.java b/src/com/android/calculator2/Calculator.java
index c149e84..705225b 100644
--- a/src/com/android/calculator2/Calculator.java
+++ b/src/com/android/calculator2/Calculator.java
@@ -297,7 +297,7 @@
private ForegroundColorSpan mUnprocessedColorSpan = new ForegroundColorSpan(Color.RED);
// Whether the display is one line.
- private boolean mOneLine;
+ private boolean mIsOneLine;
private HistoryFragment mHistoryFragment = new HistoryFragment();
@@ -415,7 +415,7 @@
mInverseToggle = (TextView) findViewById(R.id.toggle_inv);
mModeToggle = (TextView) findViewById(R.id.toggle_mode);
- mOneLine = mResultText.getVisibility() == View.INVISIBLE;
+ mIsOneLine = mResultText.getVisibility() == View.INVISIBLE;
mInvertibleButtons = new View[] {
findViewById(R.id.fun_sin),
@@ -519,7 +519,7 @@
mClearButton.setVisibility(View.GONE);
}
- if (mOneLine) {
+ if (mIsOneLine) {
if (mCurrentState == CalculatorState.RESULT
|| mCurrentState == CalculatorState.EVALUATE
|| mCurrentState == CalculatorState.ANIMATE) {
@@ -562,6 +562,10 @@
|| mCurrentState == CalculatorState.RESULT;
}
+ public boolean isOneLine() {
+ return mIsOneLine;
+ }
+
@Override
protected void onDestroy() {
mDragLayout.removeDragCallback(mDragCallback);
@@ -1179,7 +1183,7 @@
final float resultTranslationY = (mFormulaContainer.getBottom() - mResultText.getBottom())
- (mFormulaText.getPaddingBottom() - mResultText.getPaddingBottom());
float formulaTranslationY = -mFormulaContainer.getBottom();
- if (mOneLine) {
+ if (mIsOneLine) {
// Position the result text.
mResultText.setY(mResultText.getBottom());
formulaTranslationY = -(findViewById(R.id.toolbar).getBottom()
diff --git a/src/com/android/calculator2/DragController.java b/src/com/android/calculator2/DragController.java
index 7642a64..e90d1b4 100644
--- a/src/com/android/calculator2/DragController.java
+++ b/src/com/android/calculator2/DragController.java
@@ -56,6 +56,8 @@
private boolean mAnimationInitialized;
+ private boolean mOneLine;
+
private AnimationController mAnimationController;
private Evaluator mEvaluator;
@@ -64,7 +66,8 @@
mEvaluator = evaluator;
}
- public void initializeController(boolean isResult) {
+ public void initializeController(boolean isResult, boolean oneLine) {
+ mOneLine = oneLine;
if (EvaluatorStateUtils.isDisplayEmpty(mEvaluator)) {
// Empty display
mAnimationController = new EmptyAnimationController();
@@ -179,10 +182,11 @@
* Reset all initialized values.
* If the DragLayout is closed, set recyclerview to INVISIBLE to avoid flickering.
*/
- public void initializeAnimation(RecyclerView recyclerView, boolean isResult, boolean isOpen) {
+ public void initializeAnimation(RecyclerView recyclerView, boolean isResult,
+ boolean oneLine, boolean isOpen) {
recyclerView.setVisibility(isOpen ? View.VISIBLE : View.INVISIBLE);
mAnimationInitialized = false;
- initializeController(isResult);
+ initializeController(isResult, oneLine);
}
public interface AnimateTextInterface {
@@ -246,13 +250,19 @@
public void initializeFormulaTranslationY(AlignedTextView formula,
CalculatorResult result) {
- // Baseline of formula moves by the difference in formula bottom padding and the
- // difference in result height.
- mFormulaTranslationY =
- mDisplayFormula.getPaddingBottom() - formula.getPaddingBottom()
- + mDisplayResult.getHeight() - result.getHeight()
- - mBottomPaddingHeight;
-
+ if (mOneLine) {
+ // Disregard result since we set it to GONE in the one-line case.
+ mFormulaTranslationY =
+ mDisplayFormula.getPaddingBottom() - formula.getPaddingBottom()
+ - mBottomPaddingHeight;
+ } else {
+ // Baseline of formula moves by the difference in formula bottom padding and the
+ // difference in result height.
+ mFormulaTranslationY =
+ mDisplayFormula.getPaddingBottom() - formula.getPaddingBottom()
+ + mDisplayResult.getHeight() - result.getHeight()
+ - mBottomPaddingHeight;
+ }
}
public void initializeFormulaTranslationX(AlignedTextView formula) {
diff --git a/src/com/android/calculator2/HistoryAdapter.java b/src/com/android/calculator2/HistoryAdapter.java
index 0e7ff34..fe2f2c0 100644
--- a/src/com/android/calculator2/HistoryAdapter.java
+++ b/src/com/android/calculator2/HistoryAdapter.java
@@ -43,6 +43,7 @@
private List<HistoryItem> mDataSet;
private boolean mIsResultLayout;
+ private boolean mIsOneLine;
public HistoryAdapter(ArrayList<HistoryItem> dataSet) {
mDataSet = dataSet;
@@ -75,6 +76,7 @@
holder.mResult.setEvaluator(mEvaluator, item.getEvaluatorIndex());
if (item.getEvaluatorIndex() == Evaluator.HISTORY_MAIN_INDEX) {
holder.mDate.setText(R.string.title_current_expression);
+ holder.mResult.setVisibility(mIsOneLine ? View.GONE : View.VISIBLE);
} else {
// If the previous item occurred on the same date, the current item does not need
// a date header.
@@ -129,6 +131,10 @@
mIsResultLayout = isResult;
}
+ public void setIsOneLine(boolean isOneLine) {
+ mIsOneLine = isOneLine;
+ }
+
public void setEvaluator(Evaluator evaluator) {
mEvaluator = evaluator;
}
diff --git a/src/com/android/calculator2/HistoryFragment.java b/src/com/android/calculator2/HistoryFragment.java
index 86ab138..af06dfa 100644
--- a/src/com/android/calculator2/HistoryFragment.java
+++ b/src/com/android/calculator2/HistoryFragment.java
@@ -141,6 +141,7 @@
mAdapter.setEvaluator(Evaluator.getInstance(activity));
final boolean isResultLayout = activity.isResultLayout();
+ final boolean isOneLine = activity.isOneLine();
mDragLayout = (DragLayout) activity.findViewById(R.id.drag_layout);
mDragLayout.removeDragCallback(mDragCallback);
@@ -149,7 +150,7 @@
mEvaluator = Evaluator.getInstance(activity);
if (mEvaluator != null) {
- initializeController(isResultLayout);
+ initializeController(isResultLayout, isOneLine);
final long maxIndex = mEvaluator.getMaxIndex();
@@ -178,6 +179,7 @@
mDataSet = newDataSet;
mAdapter.setDataSet(mDataSet);
mAdapter.setIsResultLayout(isResultLayout);
+ mAdapter.setIsOneLine(activity.isOneLine());
}
mAdapter.notifyDataSetChanged();
@@ -186,10 +188,10 @@
@Override
public void onStart() {
super.onStart();
-
+ final Calculator activity = (Calculator) getActivity();
// The orientation may have changed.
mDragController.initializeAnimation(mRecyclerView,
- ((Calculator) getActivity()).isResultLayout(), mDragLayout.isOpen());
+ activity.isResultLayout(), activity.isOneLine(), mDragLayout.isOpen());
}
@Override
@@ -221,7 +223,7 @@
super.onDestroyView();
}
- private void initializeController(boolean isResult) {
+ private void initializeController(boolean isResult, boolean isOneLine) {
mDragController.setDisplayFormula(
(CalculatorFormula) getActivity().findViewById(R.id.formula));
@@ -232,7 +234,7 @@
mDragController.setEvaluator(mEvaluator);
- mDragController.initializeController(isResult);
+ mDragController.initializeController(isResult, isOneLine);
}
public boolean stopActionModeOrContextMenu() {