summaryrefslogtreecommitdiffstats
path: root/src/com/android/calculator2
diff options
context:
space:
mode:
authorJustin Klaassen <justinklaassen@google.com>2015-04-16 16:51:38 -0700
committerJustin Klaassen <justinklaassen@google.com>2015-04-17 15:14:56 -0700
commitd48b756434bda6a5f66740a8ea603aca1f536544 (patch)
treeabb180a0f7bd7c1f9cef063ad1cf9bb0f742eead /src/com/android/calculator2
parent01db51b36603f5349c7a372715d22b8352ea9e8d (diff)
downloadandroid_packages_apps_ExactCalculator-d48b756434bda6a5f66740a8ea603aca1f536544.tar.gz
android_packages_apps_ExactCalculator-d48b756434bda6a5f66740a8ea603aca1f536544.tar.bz2
android_packages_apps_ExactCalculator-d48b756434bda6a5f66740a8ea603aca1f536544.zip
Adopt Toolbar for overflow menu
Change-Id: I55958260b4279b504e79b7a104a813a1273ae403
Diffstat (limited to 'src/com/android/calculator2')
-rw-r--r--src/com/android/calculator2/Calculator.java76
-rw-r--r--src/com/android/calculator2/CalculatorResult.java4
2 files changed, 43 insertions, 37 deletions
diff --git a/src/com/android/calculator2/Calculator.java b/src/com/android/calculator2/Calculator.java
index 8298a44..0d4ab2d 100644
--- a/src/com/android/calculator2/Calculator.java
+++ b/src/com/android/calculator2/Calculator.java
@@ -73,10 +73,8 @@ import android.view.ViewAnimationUtils;
import android.view.ViewGroupOverlay;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.webkit.WebView;
-import android.widget.Button;
-import android.widget.PopupMenu;
-import android.widget.PopupMenu.OnMenuItemClickListener;
import android.widget.TextView;
+import android.widget.Toolbar;
import com.android.calculator2.CalculatorEditText.OnTextSizeChangeListener;
@@ -90,7 +88,7 @@ import java.io.IOException;
import java.text.DecimalFormatSymbols; // TODO: May eventually not need this here.
public class Calculator extends Activity
- implements OnTextSizeChangeListener, OnLongClickListener, OnMenuItemClickListener, CalculatorEditText.PasteListener {
+ implements OnTextSizeChangeListener, OnLongClickListener, CalculatorEditText.PasteListener {
/**
* Constant for an invalid resource id.
@@ -178,15 +176,15 @@ public class Calculator extends Activity
private Evaluator mEvaluator;
private View mDisplayView;
+ private TextView mModeView;
private CalculatorEditText mFormulaEditText;
private CalculatorResult mResult;
- private TextView mDegRadDisplay;
+
private ViewPager mPadViewPager;
private View mDeleteButton;
- private View mEqualButton;
private View mClearButton;
- private View mOverflowMenuButton;
- private Button mDegRadButton;
+ private View mEqualButton;
+ private TextView mModeButton;
private View mCurrentButton;
private Animator mCurrentAnimator;
@@ -199,11 +197,16 @@ public class Calculator extends Activity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator);
+ setActionBar((Toolbar) findViewById(R.id.toolbar));
+
+ // Hide all default options in the ActionBar.
+ getActionBar().setDisplayOptions(0);
mDisplayView = findViewById(R.id.display);
+ mModeView = (TextView) findViewById(R.id.deg_rad);
mFormulaEditText = (CalculatorEditText) findViewById(R.id.formula);
mResult = (CalculatorResult) findViewById(R.id.result);
- mDegRadDisplay = (TextView) findViewById(R.id.deg_rad);
+
mPadViewPager = (ViewPager) findViewById(R.id.pad_pager);
mDeleteButton = findViewById(R.id.del);
mClearButton = findViewById(R.id.clr);
@@ -211,8 +214,7 @@ public class Calculator extends Activity
if (mEqualButton == null || mEqualButton.getVisibility() != View.VISIBLE) {
mEqualButton = findViewById(R.id.pad_operator).findViewById(R.id.eq);
}
- mOverflowMenuButton = findViewById(R.id.overflow_menu);
- mDegRadButton = (Button)findViewById(R.id.mode_deg_rad);
+ mModeButton = (TextView) findViewById(R.id.mode_deg_rad);
mEvaluator = new Evaluator(this, mResult);
mResult.setEvaluator(mEvaluator);
@@ -278,7 +280,7 @@ public class Calculator extends Activity
// Set the state, updating delete label and display colors.
// This restores display positions on moving to INPUT.
- // But movement/animation for moving to RESULT has already been done.
+ // But movement/animation for moving to RESULT has already been done.
private void setState(CalculatorState state) {
if (mCurrentState != state) {
if (state == CalculatorState.INPUT) {
@@ -308,6 +310,8 @@ public class Calculator extends Activity
getWindow().setStatusBarColor(
getResources().getColor(R.color.calculator_accent_color));
}
+
+ invalidateOptionsMenu();
}
}
@@ -338,16 +342,14 @@ public class Calculator extends Activity
// to reflect the indicated current degree mode (true = degrees)
// TODO: Hide the top corner display until the advanced panel is exposed.
private void updateDegreeMode(boolean dm) {
- Resources res = getResources();
- String descr;
if (dm) {
- mDegRadDisplay.setText(R.string.mode_deg);
- mDegRadButton.setText(R.string.mode_rad);
- mDegRadButton.setContentDescription(res.getString(R.string.desc_mode_rad));
+ mModeView.setText(R.string.mode_deg);
+ mModeButton.setText(R.string.mode_rad);
+ mModeButton.setContentDescription(getString(R.string.desc_mode_rad));
} else {
- mDegRadDisplay.setText(R.string.mode_rad);
- mDegRadButton.setText(R.string.mode_deg);
- mDegRadButton.setContentDescription(res.getString(R.string.desc_mode_deg));
+ mModeView.setText(R.string.mode_rad);
+ mModeButton.setText(R.string.mode_deg);
+ mModeButton.setContentDescription(getString(R.string.desc_mode_deg));
}
}
@@ -379,23 +381,20 @@ public class Calculator extends Activity
public void onButtonClick(View view) {
mCurrentButton = view;
- int id = view.getId();
// Always cancel in-progress evaluation.
// If we were waiting for the result, do nothing else.
mEvaluator.cancelAll();
+
if (mCurrentState == CalculatorState.EVALUATE
|| mCurrentState == CalculatorState.ANIMATE) {
onCancelled();
return;
}
+
+
+ final int id = view.getId();
switch (id) {
- case R.id.overflow_menu:
- PopupMenu menu = constructPopupMenu();
- if (menu != null) {
- menu.show();
- }
- break;
case R.id.eq:
onEquals();
break;
@@ -453,6 +452,9 @@ public class Calculator extends Activity
// Initial evaluation completed successfully. Initiate display.
public void onEvaluate(int initDisplayPrec, String truncatedWholeNumber) {
+ // Invalidate any options that may depend on the current result.
+ invalidateOptionsMenu();
+
if (mCurrentState == CalculatorState.INPUT) {
// Just update small result display.
mResult.displayResult(initDisplayPrec, truncatedWholeNumber);
@@ -697,25 +699,25 @@ public class Calculator extends Activity
mFormulaEditText.requestFocus();
}
- // Overflow menu handling.
- private PopupMenu constructPopupMenu() {
- final PopupMenu popupMenu = new PopupMenu(this, mOverflowMenuButton);
- mOverflowMenuButton.setOnTouchListener(popupMenu.getDragToOpenListener());
- popupMenu.inflate(R.menu.overflow);
- final Menu menu = popupMenu.getMenu();
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.overflow, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onPrepareOptionsMenu(Menu menu) {
if (mCurrentState != CalculatorState.RESULT) {
menu.findItem(R.id.menu_fraction).setEnabled(false);
menu.findItem(R.id.menu_leading).setEnabled(false);
} else if (mEvaluator.getRational() == null) {
menu.findItem(R.id.menu_fraction).setEnabled(false);
}
- popupMenu.setOnMenuItemClickListener(this);
- onPrepareOptionsMenu(menu);
- return popupMenu;
+ return true;
}
@Override
- public boolean onMenuItemClick(MenuItem item) {
+ public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_help:
displayHelpMessage();
diff --git a/src/com/android/calculator2/CalculatorResult.java b/src/com/android/calculator2/CalculatorResult.java
index 59e9d84..6fac5a6 100644
--- a/src/com/android/calculator2/CalculatorResult.java
+++ b/src/com/android/calculator2/CalculatorResult.java
@@ -95,6 +95,10 @@ public class CalculatorResult extends TextView {
mGestureDetector = new GestureDetector(context,
new GestureDetector.SimpleOnGestureListener() {
@Override
+ public boolean onDown(MotionEvent e) {
+ return true;
+ }
+ @Override
public boolean onFling(MotionEvent e1, MotionEvent e2,
float velocityX, float velocityY) {
if (!mScroller.isFinished()) {