Loading res/values/color.xml +3 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,9 @@ <!-- Text color for the result in the calculator display. --> <color name="display_result_text_color">#6C000000</color> <!-- Lighter color for exponent while scrolling. --> <color name="display_result_exponent_text_color">#40000000</color> <!-- Background color for the numeric pad. --> <color name="pad_numeric_background_color">#434343</color> Loading src/com/android/calculator2/Calculator.java +22 −7 Original line number Diff line number Diff line Loading @@ -122,6 +122,7 @@ public class Calculator extends Activity @Override public boolean onKey(View view, int keyCode, KeyEvent keyEvent) { if (keyEvent.getAction() != KeyEvent.ACTION_UP) return true; stopActionMode(); switch (keyCode) { case KeyEvent.KEYCODE_NUMPAD_ENTER: case KeyEvent.KEYCODE_ENTER: Loading Loading @@ -311,15 +312,28 @@ public class Calculator extends Activity } } // Stop any active ActionMode. Return true if there was one. private boolean stopActionMode() { if (mResult.stopActionMode()) { return true; } if (mFormulaText.stopActionMode()) { return true; } return false; } @Override public void onBackPressed() { if (mPadViewPager == null || mPadViewPager.getCurrentItem() == 0) { if (!stopActionMode()) { if (mPadViewPager != null && mPadViewPager.getCurrentItem() != 0) { // Select the previous pad. mPadViewPager.setCurrentItem(mPadViewPager.getCurrentItem() - 1); } else { // If the user is currently looking at the first pad (or the pad is not paged), // allow the system to handle the Back button. super.onBackPressed(); } else { // Otherwise, select the previous pad. mPadViewPager.setCurrentItem(mPadViewPager.getCurrentItem() - 1); } } } Loading Loading @@ -380,6 +394,7 @@ public class Calculator extends Activity public void onButtonClick(View view) { mCurrentButton = view; stopActionMode(); // Always cancel in-progress evaluation. // If we were waiting for the result, do nothing else. Loading src/com/android/calculator2/CalculatorResult.java +22 −5 Original line number Diff line number Diff line Loading @@ -28,8 +28,8 @@ import android.net.Uri; import android.widget.TextView; import android.widget.OverScroller; import android.text.Editable; import android.text.Spanned; import android.text.SpannableString; import android.text.Spanned; import android.text.style.ForegroundColorSpan; import android.util.AttributeSet; import android.util.Log; Loading Loading @@ -90,6 +90,8 @@ public class CalculatorResult extends TextView { // the difference is not noticeable. private static final int MAX_WIDTH = 100; // Maximum number of digits displayed private ActionMode mActionMode; private final ForegroundColorSpan mExponentColorSpan; public CalculatorResult(Context context, AttributeSet attrs) { super(context, attrs); Loading @@ -107,6 +109,7 @@ public class CalculatorResult extends TextView { mCurrentPos = mScroller.getFinalX(); } mScroller.forceFinished(true); stopActionMode(); CalculatorResult.this.cancelLongPress(); // Ignore scrolls of error string, etc. if (!mScrollable) return true; Loading @@ -124,6 +127,7 @@ public class CalculatorResult extends TextView { mCurrentPos = mScroller.getFinalX(); } mScroller.forceFinished(true); stopActionMode(); CalculatorResult.this.cancelLongPress(); if (!mScrollable) return true; int duration = (int)(e2.getEventTime() - e1.getEventTime()); Loading @@ -135,13 +139,17 @@ public class CalculatorResult extends TextView { } @Override public void onLongPress(MotionEvent e) { startActionMode(mCopyActionModeCallback, if (mValid) { mActionMode = startActionMode(mCopyActionModeCallback, ActionMode.TYPE_FLOATING); } } }); setOnTouchListener(mTouchListener); setHorizontallyScrolling(false); // do it ourselves setCursorVisible(false); mExponentColorSpan = new ForegroundColorSpan( context.getColor(R.color.display_result_exponent_text_color)); // Copy ActionMode is triggered explicitly, not through // setCustomSelectionActionModeCallback. Loading Loading @@ -364,6 +372,7 @@ public class CalculatorResult extends TextView { void clear() { mValid = false; mScrollable = false; setText(""); } Loading @@ -376,8 +385,7 @@ public class CalculatorResult extends TextView { if (epos > 0 && result.indexOf('.') == -1) { // Gray out exponent if used as position indicator SpannableString formattedResult = new SpannableString(result); formattedResult.setSpan(new ForegroundColorSpan(Color.LTGRAY), epos, result.length(), formattedResult.setSpan(mExponentColorSpan, epos, result.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); setText(formattedResult); } else { Loading Loading @@ -432,9 +440,18 @@ public class CalculatorResult extends TextView { @Override public void onDestroyActionMode(ActionMode mode) { mActionMode = null; } }; public boolean stopActionMode() { if (mActionMode != null) { mActionMode.finish(); return true; } return false; } private void setPrimaryClip(ClipData clip) { ClipboardManager clipboard = (ClipboardManager) getContext(). getSystemService(Context.CLIPBOARD_SERVICE); Loading src/com/android/calculator2/CalculatorText.java +11 −1 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import android.widget.TextView; public class CalculatorText extends TextView implements View.OnLongClickListener{ private ActionMode mActionMode; private final ActionMode.Callback mPasteActionModeCallback = new ActionMode.Callback() { Loading Loading @@ -76,6 +77,7 @@ public class CalculatorText extends TextView implements View.OnLongClickListener @Override public void onDestroyActionMode(ActionMode mode) { mActionMode = null; } @Override Loading Loading @@ -149,7 +151,7 @@ public class CalculatorText extends TextView implements View.OnLongClickListener @Override public boolean onLongClick(View v) { startActionMode(mPasteActionModeCallback, ActionMode.TYPE_FLOATING); mActionMode = startActionMode(mPasteActionModeCallback, ActionMode.TYPE_FLOATING); return true; } Loading Loading @@ -229,6 +231,14 @@ public class CalculatorText extends TextView implements View.OnLongClickListener return super.getCompoundPaddingBottom() - Math.min(getPaddingBottom(), fontMetrics.descent); } public boolean stopActionMode() { if (mActionMode != null) { mActionMode.finish(); return true; } return false; } public interface OnTextSizeChangeListener { void onTextSizeChanged(TextView textView, float oldSize); } Loading src/com/android/calculator2/Evaluator.java +1 −0 Original line number Diff line number Diff line Loading @@ -752,6 +752,7 @@ class Evaluator { } void restoreInstanceState(DataInput in) { mChangedValue = true; try { CalculatorExpr.initExprInput(); mDegreeMode = in.readBoolean(); Loading Loading
res/values/color.xml +3 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,9 @@ <!-- Text color for the result in the calculator display. --> <color name="display_result_text_color">#6C000000</color> <!-- Lighter color for exponent while scrolling. --> <color name="display_result_exponent_text_color">#40000000</color> <!-- Background color for the numeric pad. --> <color name="pad_numeric_background_color">#434343</color> Loading
src/com/android/calculator2/Calculator.java +22 −7 Original line number Diff line number Diff line Loading @@ -122,6 +122,7 @@ public class Calculator extends Activity @Override public boolean onKey(View view, int keyCode, KeyEvent keyEvent) { if (keyEvent.getAction() != KeyEvent.ACTION_UP) return true; stopActionMode(); switch (keyCode) { case KeyEvent.KEYCODE_NUMPAD_ENTER: case KeyEvent.KEYCODE_ENTER: Loading Loading @@ -311,15 +312,28 @@ public class Calculator extends Activity } } // Stop any active ActionMode. Return true if there was one. private boolean stopActionMode() { if (mResult.stopActionMode()) { return true; } if (mFormulaText.stopActionMode()) { return true; } return false; } @Override public void onBackPressed() { if (mPadViewPager == null || mPadViewPager.getCurrentItem() == 0) { if (!stopActionMode()) { if (mPadViewPager != null && mPadViewPager.getCurrentItem() != 0) { // Select the previous pad. mPadViewPager.setCurrentItem(mPadViewPager.getCurrentItem() - 1); } else { // If the user is currently looking at the first pad (or the pad is not paged), // allow the system to handle the Back button. super.onBackPressed(); } else { // Otherwise, select the previous pad. mPadViewPager.setCurrentItem(mPadViewPager.getCurrentItem() - 1); } } } Loading Loading @@ -380,6 +394,7 @@ public class Calculator extends Activity public void onButtonClick(View view) { mCurrentButton = view; stopActionMode(); // Always cancel in-progress evaluation. // If we were waiting for the result, do nothing else. Loading
src/com/android/calculator2/CalculatorResult.java +22 −5 Original line number Diff line number Diff line Loading @@ -28,8 +28,8 @@ import android.net.Uri; import android.widget.TextView; import android.widget.OverScroller; import android.text.Editable; import android.text.Spanned; import android.text.SpannableString; import android.text.Spanned; import android.text.style.ForegroundColorSpan; import android.util.AttributeSet; import android.util.Log; Loading Loading @@ -90,6 +90,8 @@ public class CalculatorResult extends TextView { // the difference is not noticeable. private static final int MAX_WIDTH = 100; // Maximum number of digits displayed private ActionMode mActionMode; private final ForegroundColorSpan mExponentColorSpan; public CalculatorResult(Context context, AttributeSet attrs) { super(context, attrs); Loading @@ -107,6 +109,7 @@ public class CalculatorResult extends TextView { mCurrentPos = mScroller.getFinalX(); } mScroller.forceFinished(true); stopActionMode(); CalculatorResult.this.cancelLongPress(); // Ignore scrolls of error string, etc. if (!mScrollable) return true; Loading @@ -124,6 +127,7 @@ public class CalculatorResult extends TextView { mCurrentPos = mScroller.getFinalX(); } mScroller.forceFinished(true); stopActionMode(); CalculatorResult.this.cancelLongPress(); if (!mScrollable) return true; int duration = (int)(e2.getEventTime() - e1.getEventTime()); Loading @@ -135,13 +139,17 @@ public class CalculatorResult extends TextView { } @Override public void onLongPress(MotionEvent e) { startActionMode(mCopyActionModeCallback, if (mValid) { mActionMode = startActionMode(mCopyActionModeCallback, ActionMode.TYPE_FLOATING); } } }); setOnTouchListener(mTouchListener); setHorizontallyScrolling(false); // do it ourselves setCursorVisible(false); mExponentColorSpan = new ForegroundColorSpan( context.getColor(R.color.display_result_exponent_text_color)); // Copy ActionMode is triggered explicitly, not through // setCustomSelectionActionModeCallback. Loading Loading @@ -364,6 +372,7 @@ public class CalculatorResult extends TextView { void clear() { mValid = false; mScrollable = false; setText(""); } Loading @@ -376,8 +385,7 @@ public class CalculatorResult extends TextView { if (epos > 0 && result.indexOf('.') == -1) { // Gray out exponent if used as position indicator SpannableString formattedResult = new SpannableString(result); formattedResult.setSpan(new ForegroundColorSpan(Color.LTGRAY), epos, result.length(), formattedResult.setSpan(mExponentColorSpan, epos, result.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); setText(formattedResult); } else { Loading Loading @@ -432,9 +440,18 @@ public class CalculatorResult extends TextView { @Override public void onDestroyActionMode(ActionMode mode) { mActionMode = null; } }; public boolean stopActionMode() { if (mActionMode != null) { mActionMode.finish(); return true; } return false; } private void setPrimaryClip(ClipData clip) { ClipboardManager clipboard = (ClipboardManager) getContext(). getSystemService(Context.CLIPBOARD_SERVICE); Loading
src/com/android/calculator2/CalculatorText.java +11 −1 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import android.widget.TextView; public class CalculatorText extends TextView implements View.OnLongClickListener{ private ActionMode mActionMode; private final ActionMode.Callback mPasteActionModeCallback = new ActionMode.Callback() { Loading Loading @@ -76,6 +77,7 @@ public class CalculatorText extends TextView implements View.OnLongClickListener @Override public void onDestroyActionMode(ActionMode mode) { mActionMode = null; } @Override Loading Loading @@ -149,7 +151,7 @@ public class CalculatorText extends TextView implements View.OnLongClickListener @Override public boolean onLongClick(View v) { startActionMode(mPasteActionModeCallback, ActionMode.TYPE_FLOATING); mActionMode = startActionMode(mPasteActionModeCallback, ActionMode.TYPE_FLOATING); return true; } Loading Loading @@ -229,6 +231,14 @@ public class CalculatorText extends TextView implements View.OnLongClickListener return super.getCompoundPaddingBottom() - Math.min(getPaddingBottom(), fontMetrics.descent); } public boolean stopActionMode() { if (mActionMode != null) { mActionMode.finish(); return true; } return false; } public interface OnTextSizeChangeListener { void onTextSizeChanged(TextView textView, float oldSize); } Loading
src/com/android/calculator2/Evaluator.java +1 −0 Original line number Diff line number Diff line Loading @@ -752,6 +752,7 @@ class Evaluator { } void restoreInstanceState(DataInput in) { mChangedValue = true; try { CalculatorExpr.initExprInput(); mDegreeMode = in.readBoolean(); Loading