diff options
author | Hans Boehm <hboehm@google.com> | 2015-06-24 17:54:13 -0700 |
---|---|---|
committer | Hans Boehm <hboehm@google.com> | 2015-06-29 18:29:19 -0700 |
commit | a3723849baeec57260a83e01131e6db612a4ec44 (patch) | |
tree | 8591496381c2b51b0e00d4d41c715ceeb8722d55 /src | |
parent | e8553769f4b06650da0ca22a1bf741d0aad96e74 (diff) | |
download | android_packages_apps_ExactCalculator-a3723849baeec57260a83e01131e6db612a4ec44.tar.gz android_packages_apps_ExactCalculator-a3723849baeec57260a83e01131e6db612a4ec44.tar.bz2 android_packages_apps_ExactCalculator-a3723849baeec57260a83e01131e6db612a4ec44.zip |
Reimplement overflow menu messages as DialogFragments
Bug: 20650813
This preserves fraction and "with leading digits" displays during
rotation.
It also turns out to easily support copy, which is a useful bonus,
since it was an obvious hole in the UI for the fraction display.
For the "with leading digits" display, this is similar to a
plain display copy, but it allows character-level selection.
Much of the code here was cloned from Justin's.
Change-Id: I4805280fa6a46f06833be0bde9563c3ce04dca45
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/calculator2/AlertDialogFragment.java | 61 | ||||
-rw-r--r-- | src/com/android/calculator2/Calculator.java | 6 |
2 files changed, 62 insertions, 5 deletions
diff --git a/src/com/android/calculator2/AlertDialogFragment.java b/src/com/android/calculator2/AlertDialogFragment.java new file mode 100644 index 0000000..bb7a50b --- /dev/null +++ b/src/com/android/calculator2/AlertDialogFragment.java @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.calculator2; + +import android.app.Activity; +import android.app.AlertDialog; +import android.app.Dialog; +import android.app.DialogFragment; +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.widget.TextView; + +public class AlertDialogFragment extends DialogFragment { + + private static final String NAME = AlertDialogFragment.class.getName(); + private static final String KEY_MESSAGE = NAME + "_message"; + private static final String KEY_BUTTON_NEGATIVE = NAME + "_button_negative"; + + public static void showMessageDialog(Activity activity, CharSequence message) { + final Bundle args = new Bundle(); + args.putCharSequence(KEY_MESSAGE, message); + args.putCharSequence(KEY_BUTTON_NEGATIVE, activity.getString(R.string.dismiss)); + + final AlertDialogFragment dialogFragment = new AlertDialogFragment(); + dialogFragment.setArguments(args); + dialogFragment.show(activity.getFragmentManager(), null /* tag */); + } + + public AlertDialogFragment() { + setStyle(STYLE_NO_TITLE, android.R.attr.alertDialogTheme); + } + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + final Bundle args = getArguments() == null ? Bundle.EMPTY : getArguments(); + final Context context = getContext(); + final LayoutInflater inflater = LayoutInflater.from(context); + final TextView textView = (TextView) inflater.inflate(R.layout.dialog_message, + null /* root */); + textView.setText(args.getCharSequence(KEY_MESSAGE)); + return new AlertDialog.Builder(context) + .setView(textView) + .setNegativeButton(args.getCharSequence(KEY_BUTTON_NEGATIVE), null /* listener */) + .create(); + } +} diff --git a/src/com/android/calculator2/Calculator.java b/src/com/android/calculator2/Calculator.java index 65c668b..28d3312 100644 --- a/src/com/android/calculator2/Calculator.java +++ b/src/com/android/calculator2/Calculator.java @@ -34,7 +34,6 @@ import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.animation.PropertyValuesHolder; import android.app.Activity; -import android.app.AlertDialog; import android.content.ClipData; import android.content.Intent; import android.content.res.Resources; @@ -870,10 +869,7 @@ public class Calculator extends Activity } private void displayMessage(String s) { - new AlertDialog.Builder(this) - .setMessage(s) - .setNegativeButton(R.string.dismiss, null /* listener */) - .show(); + AlertDialogFragment.showMessageDialog(this, s); } private void displayFraction() { |