diff options
author | Christine Franks <christyfranks@google.com> | 2016-10-27 13:41:18 -0700 |
---|---|---|
committer | Christine Franks <christyfranks@google.com> | 2016-11-01 16:51:22 -0700 |
commit | 7452d3a099882228c6d628c2a9e3ec4f30eba015 (patch) | |
tree | 517e01248e7b92ca9d0c712179a62613aed34b36 /src | |
parent | e637b47baca4896c46f7ee01d58eb9da553be7f8 (diff) | |
download | android_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.java | 34 | ||||
-rw-r--r-- | src/com/android/calculator2/Calculator.java | 22 | ||||
-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.java | 2 | ||||
-rw-r--r-- | src/com/android/calculator2/Evaluator.java | 13 |
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() { |