summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnnie Chin <afchin@google.com>2017-01-04 12:21:52 -0800
committerAnnie Chin <afchin@google.com>2017-01-05 14:57:32 -0800
commit8861323dcc360b12de1c369fcb84e88d634cfcb7 (patch)
tree6c6d80b9cbd5898b212612f738699e277b37f29c
parentc3a0b31c6fc6637b4390b2f9c119c19a8acfeb00 (diff)
downloadandroid_packages_apps_ExactCalculator-8861323dcc360b12de1c369fcb84e88d634cfcb7.tar.gz
android_packages_apps_ExactCalculator-8861323dcc360b12de1c369fcb84e88d634cfcb7.tar.bz2
android_packages_apps_ExactCalculator-8861323dcc360b12de1c369fcb84e88d634cfcb7.zip
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
-rw-r--r--res/values-w230dp-h220dp/dimens.xml4
-rw-r--r--res/values-w230dp-h275dp/dimens.xml4
-rw-r--r--res/values-w375dp-h220dp/dimens.xml4
-rw-r--r--res/values-w375dp-h275dp/dimens.xml4
-rw-r--r--res/values-w520dp-h220dp-land/dimens.xml4
-rw-r--r--src/com/android/calculator2/Calculator.java12
-rw-r--r--src/com/android/calculator2/DragController.java30
-rw-r--r--src/com/android/calculator2/HistoryAdapter.java6
-rw-r--r--src/com/android/calculator2/HistoryFragment.java12
9 files changed, 51 insertions, 29 deletions
diff --git a/res/values-w230dp-h220dp/dimens.xml b/res/values-w230dp-h220dp/dimens.xml
index e0fde7f..10a6c21 100644
--- a/res/values-w230dp-h220dp/dimens.xml
+++ b/res/values-w230dp-h220dp/dimens.xml
@@ -18,7 +18,7 @@
<resources>
<!-- Dimens for display formula. -->
<dimen name="formula_padding_top">0dip</dimen>
- <dimen name="formula_padding_bottom">0dip</dimen>
+ <dimen name="formula_padding_bottom">8dip</dimen>
<dimen name="formula_padding_start">16dip</dimen>
<dimen name="formula_padding_end">16dip</dimen>
<dimen name="formula_min_textsize">28dip</dimen>
@@ -27,7 +27,7 @@
<!-- Dimens for display result. -->
<dimen name="result_padding_top">0dip</dimen>
- <dimen name="result_padding_bottom">0dip</dimen>
+ <dimen name="result_padding_bottom">8dip</dimen>
<dimen name="result_padding_start">16dip</dimen>
<dimen name="result_padding_end">16dip</dimen>
<dimen name="result_textsize">28dip</dimen>
diff --git a/res/values-w230dp-h275dp/dimens.xml b/res/values-w230dp-h275dp/dimens.xml
index d969266..7f8bf5e 100644
--- a/res/values-w230dp-h275dp/dimens.xml
+++ b/res/values-w230dp-h275dp/dimens.xml
@@ -18,7 +18,7 @@
<resources>
<!-- Dimens for display formula. -->
<dimen name="formula_padding_top">0dip</dimen>
- <dimen name="formula_padding_bottom">0dip</dimen>
+ <dimen name="formula_padding_bottom">8dip</dimen>
<dimen name="formula_padding_start">16dip</dimen>
<dimen name="formula_padding_end">16dip</dimen>
<dimen name="formula_min_textsize">28dip</dimen>
@@ -27,7 +27,7 @@
<!-- Dimens for display result. -->
<dimen name="result_padding_top">0dip</dimen>
- <dimen name="result_padding_bottom">0dip</dimen>
+ <dimen name="result_padding_bottom">8dip</dimen>
<dimen name="result_padding_start">16dip</dimen>
<dimen name="result_padding_end">16dip</dimen>
<dimen name="result_textsize">28dip</dimen>
diff --git a/res/values-w375dp-h220dp/dimens.xml b/res/values-w375dp-h220dp/dimens.xml
index e0fde7f..10a6c21 100644
--- a/res/values-w375dp-h220dp/dimens.xml
+++ b/res/values-w375dp-h220dp/dimens.xml
@@ -18,7 +18,7 @@
<resources>
<!-- Dimens for display formula. -->
<dimen name="formula_padding_top">0dip</dimen>
- <dimen name="formula_padding_bottom">0dip</dimen>
+ <dimen name="formula_padding_bottom">8dip</dimen>
<dimen name="formula_padding_start">16dip</dimen>
<dimen name="formula_padding_end">16dip</dimen>
<dimen name="formula_min_textsize">28dip</dimen>
@@ -27,7 +27,7 @@
<!-- Dimens for display result. -->
<dimen name="result_padding_top">0dip</dimen>
- <dimen name="result_padding_bottom">0dip</dimen>
+ <dimen name="result_padding_bottom">8dip</dimen>
<dimen name="result_padding_start">16dip</dimen>
<dimen name="result_padding_end">16dip</dimen>
<dimen name="result_textsize">28dip</dimen>
diff --git a/res/values-w375dp-h275dp/dimens.xml b/res/values-w375dp-h275dp/dimens.xml
index e0fde7f..10a6c21 100644
--- a/res/values-w375dp-h275dp/dimens.xml
+++ b/res/values-w375dp-h275dp/dimens.xml
@@ -18,7 +18,7 @@
<resources>
<!-- Dimens for display formula. -->
<dimen name="formula_padding_top">0dip</dimen>
- <dimen name="formula_padding_bottom">0dip</dimen>
+ <dimen name="formula_padding_bottom">8dip</dimen>
<dimen name="formula_padding_start">16dip</dimen>
<dimen name="formula_padding_end">16dip</dimen>
<dimen name="formula_min_textsize">28dip</dimen>
@@ -27,7 +27,7 @@
<!-- Dimens for display result. -->
<dimen name="result_padding_top">0dip</dimen>
- <dimen name="result_padding_bottom">0dip</dimen>
+ <dimen name="result_padding_bottom">8dip</dimen>
<dimen name="result_padding_start">16dip</dimen>
<dimen name="result_padding_end">16dip</dimen>
<dimen name="result_textsize">28dip</dimen>
diff --git a/res/values-w520dp-h220dp-land/dimens.xml b/res/values-w520dp-h220dp-land/dimens.xml
index b1ef149..0ae75b5 100644
--- a/res/values-w520dp-h220dp-land/dimens.xml
+++ b/res/values-w520dp-h220dp-land/dimens.xml
@@ -18,7 +18,7 @@
<resources>
<!-- Dimens for display formula. -->
<dimen name="formula_padding_top">0dip</dimen>
- <dimen name="formula_padding_bottom">0dip</dimen>
+ <dimen name="formula_padding_bottom">8dip</dimen>
<dimen name="formula_padding_start">36dip</dimen>
<dimen name="formula_padding_end">36dip</dimen>
<dimen name="formula_min_textsize">28dip</dimen>
@@ -27,7 +27,7 @@
<!-- Dimens for display result. -->
<dimen name="result_padding_top">0dip</dimen>
- <dimen name="result_padding_bottom">0dip</dimen>
+ <dimen name="result_padding_bottom">8dip</dimen>
<dimen name="result_padding_start">36dip</dimen>
<dimen name="result_padding_end">36dip</dimen>
<dimen name="result_textsize">28dip</dimen>
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 @@ public class Calculator extends Activity
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 @@ public class Calculator extends Activity
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 @@ public class Calculator extends Activity
mClearButton.setVisibility(View.GONE);
}
- if (mOneLine) {
+ if (mIsOneLine) {
if (mCurrentState == CalculatorState.RESULT
|| mCurrentState == CalculatorState.EVALUATE
|| mCurrentState == CalculatorState.ANIMATE) {
@@ -562,6 +562,10 @@ public class Calculator extends Activity
|| mCurrentState == CalculatorState.RESULT;
}
+ public boolean isOneLine() {
+ return mIsOneLine;
+ }
+
@Override
protected void onDestroy() {
mDragLayout.removeDragCallback(mDragCallback);
@@ -1179,7 +1183,7 @@ public class Calculator extends Activity
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 @@ public final class DragController {
private boolean mAnimationInitialized;
+ private boolean mOneLine;
+
private AnimationController mAnimationController;
private Evaluator mEvaluator;
@@ -64,7 +66,8 @@ public final class DragController {
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 @@ public final class DragController {
* 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 final class DragController {
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 @@ public class HistoryAdapter extends RecyclerView.Adapter<HistoryAdapter.ViewHold
private List<HistoryItem> mDataSet;
private boolean mIsResultLayout;
+ private boolean mIsOneLine;
public HistoryAdapter(ArrayList<HistoryItem> dataSet) {
mDataSet = dataSet;
@@ -75,6 +76,7 @@ public class HistoryAdapter extends RecyclerView.Adapter<HistoryAdapter.ViewHold
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 @@ public class HistoryAdapter extends RecyclerView.Adapter<HistoryAdapter.ViewHold
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 @@ public class HistoryFragment extends Fragment {
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 @@ public class HistoryFragment extends Fragment {
mEvaluator = Evaluator.getInstance(activity);
if (mEvaluator != null) {
- initializeController(isResultLayout);
+ initializeController(isResultLayout, isOneLine);
final long maxIndex = mEvaluator.getMaxIndex();
@@ -178,6 +179,7 @@ public class HistoryFragment extends Fragment {
mDataSet = newDataSet;
mAdapter.setDataSet(mDataSet);
mAdapter.setIsResultLayout(isResultLayout);
+ mAdapter.setIsOneLine(activity.isOneLine());
}
mAdapter.notifyDataSetChanged();
@@ -186,10 +188,10 @@ public class HistoryFragment extends Fragment {
@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 @@ public class HistoryFragment extends Fragment {
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 @@ public class HistoryFragment extends Fragment {
mDragController.setEvaluator(mEvaluator);
- mDragController.initializeController(isResult);
+ mDragController.initializeController(isResult, isOneLine);
}
public boolean stopActionModeOrContextMenu() {