summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYuli Huang <yuli@google.com>2012-03-07 01:18:08 +0800
committerYuli Huang <yuli@google.com>2012-03-07 01:18:08 +0800
commit1149eb582c588a0e980b0dcc7ef04c5983788981 (patch)
treec3badac8cfc92cd48f2b2ed28b5f8334ba6f1799 /src
parent415c07d5710b3d61a212103d11150f6c960194e4 (diff)
downloadandroid_packages_apps_Snap-1149eb582c588a0e980b0dcc7ef04c5983788981.tar.gz
android_packages_apps_Snap-1149eb582c588a0e980b0dcc7ef04c5983788981.tar.bz2
android_packages_apps_Snap-1149eb582c588a0e980b0dcc7ef04c5983788981.zip
Fix b/5885342: Multiple PhotoEditor activities cause exceptions.
Avoid using a static variable to keep tracking views across activities. Change-Id: Ia53444502d476d37b64344e5aea5f58a06ee3b03
Diffstat (limited to 'src')
-rw-r--r--src/com/android/gallery3d/photoeditor/SpinnerProgressDialog.java49
1 files changed, 27 insertions, 22 deletions
diff --git a/src/com/android/gallery3d/photoeditor/SpinnerProgressDialog.java b/src/com/android/gallery3d/photoeditor/SpinnerProgressDialog.java
index 065075e52..108c17d50 100644
--- a/src/com/android/gallery3d/photoeditor/SpinnerProgressDialog.java
+++ b/src/com/android/gallery3d/photoeditor/SpinnerProgressDialog.java
@@ -19,7 +19,6 @@ package com.android.gallery3d.photoeditor;
import android.app.Dialog;
import android.view.MotionEvent;
import android.view.View;
-import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.ProgressBar;
@@ -34,46 +33,52 @@ import java.util.ArrayList;
*/
public class SpinnerProgressDialog extends Dialog {
- private static ViewGroup toolbar;
private static SpinnerProgressDialog dialog;
+ private final Toolbar toolbar;
private final ArrayList<View> enabledTools = new ArrayList<View>();
- public static void initialize(ViewGroup toolbar) {
- SpinnerProgressDialog.toolbar = toolbar;
- }
-
- public static void showDialog() {
+ public static void showDialog(Toolbar toolbar) {
// There should be only one progress dialog running at a time.
if (dialog == null) {
- dialog = new SpinnerProgressDialog();
- dialog.setCancelable(false);
+ dialog = new SpinnerProgressDialog(toolbar);
dialog.show();
- // Disable enabled tools when showing spinner progress dialog.
- for (int i = 0; i < toolbar.getChildCount(); i++) {
- View view = toolbar.getChildAt(i);
- if (view.isEnabled()) {
- dialog.enabledTools.add(view);
- view.setEnabled(false);
- }
- }
}
}
public static void dismissDialog() {
if (dialog != null) {
dialog.dismiss();
- // Enable tools that were disabled by this spinner progress dialog.
- for (View view : dialog.enabledTools) {
- view.setEnabled(true);
- }
dialog = null;
}
}
- private SpinnerProgressDialog() {
+ private SpinnerProgressDialog(Toolbar toolbar) {
super(toolbar.getContext(), R.style.SpinnerProgressDialog);
addContentView(new ProgressBar(toolbar.getContext()), new LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
+ setCancelable(false);
+ this.toolbar = toolbar;
+ }
+
+ @Override
+ public void show() {
+ super.show();
+ // Disable enabled tools when showing spinner progress dialog.
+ for (View view : toolbar.getTools()) {
+ if (view.isEnabled()) {
+ enabledTools.add(view);
+ view.setEnabled(false);
+ }
+ }
+ }
+
+ @Override
+ public void dismiss() {
+ super.dismiss();
+ // Enable tools that were disabled by this spinner progress dialog.
+ for (View view : enabledTools) {
+ view.setEnabled(true);
+ }
}
@Override