summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/photoeditor
diff options
context:
space:
mode:
authorYuli Huang <yuli@google.com>2011-11-10 16:50:31 +0800
committerYuli Huang <yuli@google.com>2011-11-10 16:50:31 +0800
commitfd3d9dab304d66f2f7d995440d996c688b6d9a31 (patch)
tree14c37da540cd5b250d5f5338f8e63f4fe220d789 /src/com/android/gallery3d/photoeditor
parent669f5b8aed366c59c8c062e1049bc287ff73babf (diff)
downloadandroid_packages_apps_Snap-fd3d9dab304d66f2f7d995440d996c688b6d9a31.tar.gz
android_packages_apps_Snap-fd3d9dab304d66f2f7d995440d996c688b6d9a31.tar.bz2
android_packages_apps_Snap-fd3d9dab304d66f2f7d995440d996c688b6d9a31.zip
Fix b/5518211 by disabling effects when photo cannot be loaded.
Change-Id: I9e5ae9cfaf9bee52cd63a0e77a3b083e47b59335
Diffstat (limited to 'src/com/android/gallery3d/photoeditor')
-rw-r--r--src/com/android/gallery3d/photoeditor/EffectsBar.java2
-rw-r--r--src/com/android/gallery3d/photoeditor/PhotoEditor.java24
-rw-r--r--src/com/android/gallery3d/photoeditor/SpinnerProgressDialog.java42
3 files changed, 38 insertions, 30 deletions
diff --git a/src/com/android/gallery3d/photoeditor/EffectsBar.java b/src/com/android/gallery3d/photoeditor/EffectsBar.java
index acb22b6e6..b4857e60d 100644
--- a/src/com/android/gallery3d/photoeditor/EffectsBar.java
+++ b/src/com/android/gallery3d/photoeditor/EffectsBar.java
@@ -67,8 +67,6 @@ public class EffectsBar extends LinearLayout {
return select;
}
});
-
- setEnabled(false);
}
private void createEffectsGallery(int effectsId) {
diff --git a/src/com/android/gallery3d/photoeditor/PhotoEditor.java b/src/com/android/gallery3d/photoeditor/PhotoEditor.java
index 7b53041ad..dba7e6258 100644
--- a/src/com/android/gallery3d/photoeditor/PhotoEditor.java
+++ b/src/com/android/gallery3d/photoeditor/PhotoEditor.java
@@ -36,6 +36,7 @@ public class PhotoEditor extends Activity {
private Uri saveUri;
private FilterStack filterStack;
private ActionBar actionBar;
+ private EffectsBar effectsBar;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -61,14 +62,16 @@ public class PhotoEditor extends Activity {
actionBar.updateSave(saveUri == null);
}
- EffectsBar effectsBar = (EffectsBar) findViewById(R.id.effects_bar);
+ // Effects-bar is initially disabled until photo is successfully loaded.
+ effectsBar = (EffectsBar) findViewById(R.id.effects_bar);
effectsBar.initialize(filterStack);
+ effectsBar.setEnabled(false);
- actionBar.setClickRunnable(R.id.undo_button, createUndoRedoRunnable(true, effectsBar));
- actionBar.setClickRunnable(R.id.redo_button, createUndoRedoRunnable(false, effectsBar));
- actionBar.setClickRunnable(R.id.save_button, createSaveRunnable(effectsBar));
- actionBar.setClickRunnable(R.id.share_button, createShareRunnable(effectsBar));
- actionBar.setClickRunnable(R.id.action_bar_back, createBackRunnable(effectsBar));
+ actionBar.setClickRunnable(R.id.undo_button, createUndoRedoRunnable(true));
+ actionBar.setClickRunnable(R.id.redo_button, createUndoRedoRunnable(false));
+ actionBar.setClickRunnable(R.id.save_button, createSaveRunnable());
+ actionBar.setClickRunnable(R.id.share_button, createShareRunnable());
+ actionBar.setClickRunnable(R.id.action_bar_back, createBackRunnable());
}
private SpinnerProgressDialog createProgressDialog() {
@@ -86,6 +89,7 @@ public class PhotoEditor extends Activity {
@Override
public void onDone() {
progressDialog.dismiss();
+ effectsBar.setEnabled(result != null);
}
});
}
@@ -93,7 +97,7 @@ public class PhotoEditor extends Activity {
new LoadScreennailTask(this, callback).execute(sourceUri);
}
- private Runnable createUndoRedoRunnable(final boolean undo, final EffectsBar effectsBar) {
+ private Runnable createUndoRedoRunnable(final boolean undo) {
return new Runnable() {
@Override
@@ -121,7 +125,7 @@ public class PhotoEditor extends Activity {
};
}
- private Runnable createSaveRunnable(final EffectsBar effectsBar) {
+ private Runnable createSaveRunnable() {
return new Runnable() {
@Override
@@ -154,7 +158,7 @@ public class PhotoEditor extends Activity {
};
}
- private Runnable createShareRunnable(final EffectsBar effectsBar) {
+ private Runnable createShareRunnable() {
return new Runnable() {
@Override
@@ -175,7 +179,7 @@ public class PhotoEditor extends Activity {
};
}
- private Runnable createBackRunnable(final EffectsBar effectsBar) {
+ private Runnable createBackRunnable() {
return new Runnable() {
@Override
diff --git a/src/com/android/gallery3d/photoeditor/SpinnerProgressDialog.java b/src/com/android/gallery3d/photoeditor/SpinnerProgressDialog.java
index 9a3d8499a..207c2d142 100644
--- a/src/com/android/gallery3d/photoeditor/SpinnerProgressDialog.java
+++ b/src/com/android/gallery3d/photoeditor/SpinnerProgressDialog.java
@@ -18,55 +18,61 @@ 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;
import com.android.gallery3d.R;
+import java.util.ArrayList;
+
/**
* Spinner model progress dialog that disables all tools for user interaction after it shows up and
* and re-enables them after it dismisses.
*/
public class SpinnerProgressDialog extends Dialog {
- private final ViewGroup tools;
+ private final ViewGroup toolbar;
+ private final ArrayList<View> enabledTools = new ArrayList<View>();
- public static SpinnerProgressDialog show(ViewGroup tools) {
- SpinnerProgressDialog dialog = new SpinnerProgressDialog(tools);
+ public static SpinnerProgressDialog show(ViewGroup toolbar) {
+ SpinnerProgressDialog dialog = new SpinnerProgressDialog(toolbar);
dialog.setCancelable(false);
dialog.show();
return dialog;
}
- private SpinnerProgressDialog(ViewGroup tools) {
- super(tools.getContext(), R.style.SpinnerProgressDialog);
+ private SpinnerProgressDialog(ViewGroup toolbar) {
+ super(toolbar.getContext(), R.style.SpinnerProgressDialog);
- addContentView(new ProgressBar(tools.getContext()), new LayoutParams(
+ addContentView(new ProgressBar(toolbar.getContext()), new LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
- this.tools = tools;
- enableTools(false);
+ // Disable enabled tools when showing spinner progress dialog.
+ for (int i = 0; i < toolbar.getChildCount(); i++) {
+ View view = toolbar.getChildAt(i);
+ if (view.isEnabled()) {
+ enabledTools.add(view);
+ view.setEnabled(false);
+ }
+ }
+ this.toolbar = toolbar;
}
@Override
public void dismiss() {
super.dismiss();
-
- enableTools(true);
+ // Enable tools that were disabled by this spinner progress dialog.
+ for (View view : enabledTools) {
+ view.setEnabled(true);
+ }
}
@Override
public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
-
// Pass touch events to tools for killing idle even when the progress dialog is shown.
- return tools.dispatchTouchEvent(event);
- }
-
- private void enableTools(boolean enabled) {
- for (int i = 0; i < tools.getChildCount(); i++) {
- tools.getChildAt(i).setEnabled(enabled);
- }
+ return toolbar.dispatchTouchEvent(event);
}
}