summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChristine Franks <christyfranks@google.com>2016-10-27 13:41:18 -0700
committerChristine Franks <christyfranks@google.com>2016-11-01 16:51:22 -0700
commit7452d3a099882228c6d628c2a9e3ec4f30eba015 (patch)
tree517e01248e7b92ca9d0c712179a62613aed34b36 /src
parente637b47baca4896c46f7ee01d58eb9da553be7f8 (diff)
downloadandroid_packages_apps_ExactCalculator-7452d3a099882228c6d628c2a9e3ec4f30eba015.tar.gz
android_packages_apps_ExactCalculator-7452d3a099882228c6d628c2a9e3ec4f30eba015.tar.bz2
android_packages_apps_ExactCalculator-7452d3a099882228c6d628c2a9e3ec4f30eba015.zip
Materialize dialogs
Bug: 26857695 Test: manual - view all four dialog types. 1) Display as fraction, 2) Display leading digits, 3) Timeout and 4) cancellation of a long calculation. Change-Id: I3454ae843a5e265b64d5c1b092e655a6e13180ad
Diffstat (limited to 'src')
-rw-r--r--src/com/android/calculator2/AlertDialogFragment.java34
-rw-r--r--src/com/android/calculator2/Calculator.java22
-rw-r--r--src/com/android/calculator2/CalculatorFormula.java (renamed from src/com/android/calculator2/CalculatorText.java)20
-rw-r--r--src/com/android/calculator2/CalculatorResult.java2
-rw-r--r--src/com/android/calculator2/Evaluator.java13
5 files changed, 54 insertions, 37 deletions
diff --git a/src/com/android/calculator2/AlertDialogFragment.java b/src/com/android/calculator2/AlertDialogFragment.java
index 47f482f..e098022 100644
--- a/src/com/android/calculator2/AlertDialogFragment.java
+++ b/src/com/android/calculator2/AlertDialogFragment.java
@@ -23,6 +23,7 @@ import android.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.Nullable;
+import android.support.annotation.StringRes;
import android.view.LayoutInflater;
import android.widget.TextView;
@@ -47,16 +48,36 @@ public class AlertDialogFragment extends DialogFragment implements DialogInterfa
private static final String KEY_MESSAGE = NAME + "_message";
private static final String KEY_BUTTON_NEGATIVE = NAME + "_button_negative";
private static final String KEY_BUTTON_POSITIVE = NAME + "_button_positive";
+ private static final String KEY_TITLE = NAME + "_title";
+
+ /**
+ * Convenience method for creating and showing a DialogFragment with the given message and
+ * title.
+ *
+ * @param activity originating Activity
+ * @param title resource id for the title string
+ * @param message resource id for the displayed message string
+ * @param positiveButtonLabel label for second button, if any. If non-null, activity must
+ * implement AlertDialogFragment.OnClickListener to respond.
+ */
+ public static void showMessageDialog(Activity activity, @StringRes int title,
+ @StringRes int message, @StringRes int positiveButtonLabel) {
+ showMessageDialog(activity, title != 0 ? activity.getString(title) : null,
+ activity.getString(message),
+ positiveButtonLabel != 0 ? activity.getString(positiveButtonLabel) : null);
+ }
/**
* Create and show a DialogFragment with the given message.
+ *
* @param activity originating Activity
+ * @param title displayed title, if any
* @param message displayed message
* @param positiveButtonLabel label for second button, if any. If non-null, activity must
* implement AlertDialogFragment.OnClickListener to respond.
*/
- public static void showMessageDialog(Activity activity, CharSequence message,
- @Nullable CharSequence positiveButtonLabel) {
+ public static void showMessageDialog(Activity activity, @Nullable CharSequence title,
+ CharSequence message, @Nullable CharSequence positiveButtonLabel) {
final AlertDialogFragment dialogFragment = new AlertDialogFragment();
final Bundle args = new Bundle();
args.putCharSequence(KEY_MESSAGE, message);
@@ -64,6 +85,7 @@ public class AlertDialogFragment extends DialogFragment implements DialogInterfa
if (positiveButtonLabel != null) {
args.putCharSequence(KEY_BUTTON_POSITIVE, positiveButtonLabel);
}
+ args.putCharSequence(KEY_TITLE, title);
dialogFragment.setArguments(args);
dialogFragment.show(activity.getFragmentManager(), null /* tag */);
}
@@ -78,11 +100,11 @@ public class AlertDialogFragment extends DialogFragment implements DialogInterfa
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
final LayoutInflater inflater = LayoutInflater.from(builder.getContext());
- final TextView textView = (TextView) inflater.inflate(
+ final TextView messageView = (TextView) inflater.inflate(
R.layout.dialog_message, null /* root */);
- textView.setText(args.getCharSequence(KEY_MESSAGE));
+ messageView.setText(args.getCharSequence(KEY_MESSAGE));
+ builder.setView(messageView);
- builder.setView(textView);
builder.setNegativeButton(args.getCharSequence(KEY_BUTTON_NEGATIVE), null /* listener */);
final CharSequence positiveButtonLabel = args.getCharSequence(KEY_BUTTON_POSITIVE);
@@ -90,6 +112,8 @@ public class AlertDialogFragment extends DialogFragment implements DialogInterfa
builder.setPositiveButton(positiveButtonLabel, this);
}
+ builder.setTitle(args.getCharSequence(KEY_TITLE));
+
return builder.create();
}
diff --git a/src/com/android/calculator2/Calculator.java b/src/com/android/calculator2/Calculator.java
index e884de5..b730425 100644
--- a/src/com/android/calculator2/Calculator.java
+++ b/src/com/android/calculator2/Calculator.java
@@ -67,7 +67,7 @@ import android.widget.HorizontalScrollView;
import android.widget.TextView;
import android.widget.Toolbar;
-import com.android.calculator2.CalculatorText.OnTextSizeChangeListener;
+import com.android.calculator2.CalculatorFormula.OnTextSizeChangeListener;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -77,9 +77,8 @@ import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
-public class Calculator extends Activity
- implements OnTextSizeChangeListener, OnLongClickListener, CalculatorText.OnPasteListener,
- AlertDialogFragment.OnClickListener {
+public class Calculator extends Activity implements OnTextSizeChangeListener, OnLongClickListener,
+ CalculatorFormula.OnPasteListener, AlertDialogFragment.OnClickListener {
/**
* Constant for an invalid resource id.
@@ -178,7 +177,7 @@ public class Calculator extends Activity
private CalculatorDisplay mDisplayView;
private TextView mModeView;
- private CalculatorText mFormulaText;
+ private CalculatorFormula mFormulaText;
private CalculatorResult mResultText;
private HorizontalScrollView mFormulaContainer;
private DragLayout mDragLayout;
@@ -229,7 +228,7 @@ public class Calculator extends Activity
mDisplayView = (CalculatorDisplay) findViewById(R.id.display);
mModeView = (TextView) findViewById(R.id.mode);
- mFormulaText = (CalculatorText) findViewById(R.id.formula);
+ mFormulaText = (CalculatorFormula) findViewById(R.id.formula);
mResultText = (CalculatorResult) findViewById(R.id.result);
mFormulaContainer = (HorizontalScrollView) findViewById(R.id.formula_container);
@@ -420,7 +419,7 @@ public class Calculator extends Activity
@Override
public void onActionModeStarted(ActionMode mode) {
super.onActionModeStarted(mode);
- if (mode.getTag() == CalculatorText.TAG_ACTION_MODE) {
+ if (mode.getTag() == CalculatorFormula.TAG_ACTION_MODE) {
mFormulaContainer.scrollTo(mFormulaText.getRight(), 0);
}
}
@@ -1094,13 +1093,14 @@ public class Calculator extends Activity
.commit();
}
- private void displayMessage(String s) {
- AlertDialogFragment.showMessageDialog(this, s, null);
+ private void displayMessage(String title, String message) {
+ AlertDialogFragment.showMessageDialog(this, title, message, null);
}
private void displayFraction() {
UnifiedReal result = mEvaluator.getResult();
- displayMessage(KeyMaps.translateResult(result.toNiceString()));
+ displayMessage(getString(R.string.menu_fraction),
+ KeyMaps.translateResult(result.toNiceString()));
}
// Display full result to currently evaluated precision
@@ -1112,7 +1112,7 @@ public class Calculator extends Activity
} else {
msg += res.getString(R.string.approximate);
}
- displayMessage(msg);
+ displayMessage(getString(R.string.menu_leading), msg);
}
/**
diff --git a/src/com/android/calculator2/CalculatorText.java b/src/com/android/calculator2/CalculatorFormula.java
index 52b4d13..88f677c 100644
--- a/src/com/android/calculator2/CalculatorText.java
+++ b/src/com/android/calculator2/CalculatorFormula.java
@@ -37,9 +37,9 @@ import android.view.View;
import android.widget.TextView;
/**
- * TextView adapted for Calculator display.
+ * TextView adapted for displaying the formula and allowing pasting.
*/
-public class CalculatorText extends AlignedTextView implements MenuItem.OnMenuItemClickListener,
+public class CalculatorFormula extends AlignedTextView implements MenuItem.OnMenuItemClickListener,
ClipboardManager.OnPrimaryClipChangedListener {
public static final String TAG_ACTION_MODE = "ACTION_MODE";
@@ -60,26 +60,26 @@ public class CalculatorText extends AlignedTextView implements MenuItem.OnMenuIt
private OnPasteListener mOnPasteListener;
private OnTextSizeChangeListener mOnTextSizeChangeListener;
- public CalculatorText(Context context) {
+ public CalculatorFormula(Context context) {
this(context, null /* attrs */);
}
- public CalculatorText(Context context, AttributeSet attrs) {
+ public CalculatorFormula(Context context, AttributeSet attrs) {
this(context, attrs, 0 /* defStyleAttr */);
}
- public CalculatorText(Context context, AttributeSet attrs, int defStyleAttr) {
+ public CalculatorFormula(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
mClipboardManager = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
final TypedArray a = context.obtainStyledAttributes(
- attrs, R.styleable.CalculatorText, defStyleAttr, 0);
+ attrs, R.styleable.CalculatorFormula, defStyleAttr, 0);
mMaximumTextSize = a.getDimension(
- R.styleable.CalculatorText_maxTextSize, getTextSize());
+ R.styleable.CalculatorFormula_maxTextSize, getTextSize());
mMinimumTextSize = a.getDimension(
- R.styleable.CalculatorText_minTextSize, getTextSize());
- mStepTextSize = a.getDimension(R.styleable.CalculatorText_stepTextSize,
+ R.styleable.CalculatorFormula_minTextSize, getTextSize());
+ mStepTextSize = a.getDimension(R.styleable.CalculatorFormula_stepTextSize,
(mMaximumTextSize - mMinimumTextSize) / 3);
a.recycle();
@@ -311,7 +311,7 @@ public class CalculatorText extends AlignedTextView implements MenuItem.OnMenuIt
createPasteMenu(inflater, contextMenu);
mContextMenu = contextMenu;
for(int i = 0; i < contextMenu.size(); i++) {
- contextMenu.getItem(i).setOnMenuItemClickListener(CalculatorText.this);
+ contextMenu.getItem(i).setOnMenuItemClickListener(CalculatorFormula.this);
}
}
});
diff --git a/src/com/android/calculator2/CalculatorResult.java b/src/com/android/calculator2/CalculatorResult.java
index d81d0d0..e14c8d2 100644
--- a/src/com/android/calculator2/CalculatorResult.java
+++ b/src/com/android/calculator2/CalculatorResult.java
@@ -768,7 +768,7 @@ public class CalculatorResult extends AlignedTextView implements MenuItem.OnMenu
int result;
synchronized(mWidthLock) {
result = (int) Math.floor(mWidthConstraint / mCharWidth);
- // We can apparently finish evaluating before onMeasure in CalculatorText has been
+ // We can apparently finish evaluating before onMeasure in CalculatorFormula has been
// called, in which case we get 0 or -1 as the width constraint.
}
if (result <= 0) {
diff --git a/src/com/android/calculator2/Evaluator.java b/src/com/android/calculator2/Evaluator.java
index 89a3e72..fe2862c 100644
--- a/src/com/android/calculator2/Evaluator.java
+++ b/src/com/android/calculator2/Evaluator.java
@@ -224,14 +224,7 @@ public class Evaluator {
}
private void displayCancelledMessage() {
- new AlertDialog.Builder(mCalculator)
- .setMessage(R.string.cancelled)
- .setPositiveButton(R.string.dismiss,
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface d, int which) { }
- })
- .create()
- .show();
+ AlertDialogFragment.showMessageDialog(mCalculator, 0, R.string.cancelled, 0);
}
// Timeout handling.
@@ -280,8 +273,8 @@ public class Evaluator {
private final int QUICK_MAX_RESULT_BITS = 50000;
private void displayTimeoutMessage() {
- AlertDialogFragment.showMessageDialog(mCalculator, mCalculator.getString(R.string.timeout),
- (mLongTimeout ? null : mCalculator.getString(R.string.ok_remove_timeout)));
+ AlertDialogFragment.showMessageDialog(mCalculator, R.string.dialog_timeout,
+ R.string.timeout, mLongTimeout ? 0 : R.string.ok_remove_timeout);
}
public void setLongTimeOut() {