Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 94c1bd95 authored by Annie Chin's avatar Annie Chin
Browse files

Fix isResultLayout()

Bug: 33105525
Bug: 33106867

Also reinitialize the dragController so it can keep up on rotation
or background display changes.

Change-Id: Ic1846bc4495196c35ebd4d4ac78f61078dca7573
parent a2290874
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -508,8 +508,10 @@ public class Calculator extends Activity
        }
    }

    public boolean isResultState() {
        return mCurrentState == CalculatorState.RESULT;
    public boolean isResultLayout() {
        return mCurrentState == CalculatorState.INIT
                || mCurrentState == CalculatorState.RESULT
                || mCurrentState == CalculatorState.ANIMATE;
    }

    @Override
+14 −18
Original line number Diff line number Diff line
@@ -50,13 +50,13 @@ public final class DragController {

    public void setEvaluator(Evaluator evaluator) {
        mEvaluator = evaluator;
    }

        if (evaluator != null) {
            // Initialize controller
    public void initializeController(boolean isResult) {
        if (EvaluatorStateUtils.isDisplayEmpty(mEvaluator)) {
            // Empty display
            mAnimationController = new EmptyAnimationController();
            } else if (isResultState()) {
        } else if (isResult) {
            // Result
            mAnimationController = new ResultAnimationController();
        } else {
@@ -65,11 +65,6 @@ public final class DragController {
            mAnimationController = new AnimationController();
        }
    }
    }

    private boolean isResultState() {
        return mDisplayResult.getTranslationY() != 0;
    }

    public void setDisplayFormula(CalculatorFormula formula) {
        mDisplayFormula = formula;
@@ -159,9 +154,10 @@ public final class DragController {
    /**
     * 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 {
+4 −4
Original line number Diff line number Diff line
@@ -39,7 +39,7 @@ public class HistoryAdapter extends RecyclerView.Adapter<HistoryAdapter.ViewHold

    private List<HistoryItem> mDataSet;

    private boolean mIsResultState;
    private boolean mIsResultLayout;

    public HistoryAdapter(Calculator calculator, ArrayList<HistoryItem> dataSet,
            String currentExpressionDescription) {
@@ -125,7 +125,7 @@ public class HistoryAdapter extends RecyclerView.Adapter<HistoryAdapter.ViewHold
    }

    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 class HistoryAdapter extends RecyclerView.Adapter<HistoryAdapter.ViewHold
        }
    }

    public void setIsResultState(boolean isResult) {
        mIsResultState = isResult;
    public void setIsResultLayout(boolean isResult) {
        mIsResultLayout = isResult;
    }

    public static class ViewHolder extends RecyclerView.ViewHolder {
+9 −6
Original line number Diff line number Diff line
@@ -134,18 +134,18 @@ public class HistoryFragment extends Fragment {
        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 @@ public class HistoryFragment extends Fragment {
            }
            mDataSet = newDataSet;
            mAdapter.setDataSet(mDataSet);
            mAdapter.setIsResultState(isResultState);
            mAdapter.setIsResultLayout(isResultLayout);
        }

        mAdapter.notifyDataSetChanged();
@@ -173,7 +173,8 @@ public class HistoryFragment extends Fragment {
        super.onStart();

        // The orientation may have changed.
        mDragController.initializeAnimation(mRecyclerView);
        mDragController.initializeAnimation(mRecyclerView,
                ((Calculator) getActivity()).isResultLayout());
    }

    @Override
@@ -205,7 +206,7 @@ public class HistoryFragment extends Fragment {
        ((Calculator)(getActivity())).evaluateInstantIfNecessary();
    }

    private void initializeController() {
    private void initializeController(boolean isResult) {
        mDragController.setDisplayFormula(
                (CalculatorFormula) getActivity().findViewById(R.id.formula));

@@ -215,6 +216,8 @@ public class HistoryFragment extends Fragment {
        mDragController.setToolbar(getActivity().findViewById(R.id.toolbar));

        mDragController.setEvaluator(mEvaluator);

        mDragController.initializeController(isResult);
    }

    private void clearHistory() {