summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/filtershow/PanelController.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/gallery3d/filtershow/PanelController.java')
-rw-r--r--src/com/android/gallery3d/filtershow/PanelController.java228
1 files changed, 127 insertions, 101 deletions
diff --git a/src/com/android/gallery3d/filtershow/PanelController.java b/src/com/android/gallery3d/filtershow/PanelController.java
index a0b13fb84..18a9585a6 100644
--- a/src/com/android/gallery3d/filtershow/PanelController.java
+++ b/src/com/android/gallery3d/filtershow/PanelController.java
@@ -16,9 +16,9 @@
package com.android.gallery3d.filtershow;
+import android.annotation.TargetApi;
import android.content.Context;
import android.text.Html;
-import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewPropertyAnimator;
@@ -27,6 +27,7 @@ import android.widget.TextView;
import com.android.gallery3d.R;
import com.android.gallery3d.filtershow.editors.Editor;
+import com.android.gallery3d.filtershow.filters.FilterRepresentation;
import com.android.gallery3d.filtershow.filters.ImageFilter;
import com.android.gallery3d.filtershow.filters.ImageFilterTinyPlanet;
import com.android.gallery3d.filtershow.imageshow.ImageCrop;
@@ -34,7 +35,6 @@ import com.android.gallery3d.filtershow.imageshow.ImageShow;
import com.android.gallery3d.filtershow.imageshow.MasterImage;
import com.android.gallery3d.filtershow.presets.ImagePreset;
import com.android.gallery3d.filtershow.ui.FilterIconButton;
-import com.android.gallery3d.filtershow.ui.FramedTextButton;
import java.util.HashMap;
import java.util.Vector;
@@ -49,6 +49,14 @@ public class PanelController implements OnClickListener {
private boolean mDisableFilterButtons = false;
private boolean mFixedAspect = false;
+ public static boolean useAnimations() {
+ int currentapiVersion = android.os.Build.VERSION.SDK_INT;
+ if (currentapiVersion >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
+ return true;
+ }
+ return false;
+ }
+
public void setFixedAspect(boolean t) {
mFixedAspect = t;
}
@@ -87,16 +95,28 @@ public class PanelController implements OnClickListener {
} else {
delta = w;
}
- anim.x(delta);
+ if (PanelController.useAnimations()) {
+ anim.x(delta);
+ } else {
+ mContainer.setX(delta);
+ }
} else if (move == VERTICAL_MOVE) {
- anim.y(h);
- }
- anim.setDuration(ANIM_DURATION).withLayer().withEndAction(new Runnable() {
- @Override
- public void run() {
- mContainer.setVisibility(View.GONE);
+ if (PanelController.useAnimations()) {
+ anim.y(h);
+ } else {
+ mContainer.setY(h);
}
- });
+ }
+ if (PanelController.useAnimations()) {
+ anim.setDuration(ANIM_DURATION).withLayer().withEndAction(new Runnable() {
+ @Override
+ public void run() {
+ mContainer.setVisibility(View.GONE);
+ }
+ });
+ } else {
+ mContainer.setVisibility(View.GONE);
+ }
return anim;
}
@@ -108,18 +128,20 @@ public class PanelController implements OnClickListener {
ViewPropertyAnimator anim = mContainer.animate();
int w = mRowPanel.getWidth();
int h = mRowPanel.getHeight();
- if (move == HORIZONTAL_MOVE) {
- if (oldPos < mPosition) {
- mContainer.setX(w);
- } else {
- mContainer.setX(-w);
+ if (useAnimations()) {
+ if (move == HORIZONTAL_MOVE) {
+ if (oldPos < mPosition) {
+ mContainer.setX(w);
+ } else {
+ mContainer.setX(-w);
+ }
+ anim.x(0);
+ } else if (move == VERTICAL_MOVE) {
+ mContainer.setY(h);
+ anim.y(0);
}
- anim.x(0);
- } else if (move == VERTICAL_MOVE) {
- mContainer.setY(h);
- anim.y(0);
+ anim.setDuration(ANIM_DURATION).withLayer();
}
- anim.setDuration(ANIM_DURATION).withLayer();
return anim;
}
}
@@ -187,12 +209,16 @@ public class PanelController implements OnClickListener {
mView.setY(0);
int h = mRowPanel.getHeight();
anim.y(-h);
- anim.setDuration(ANIM_DURATION).withLayer().withEndAction(new Runnable() {
- @Override
- public void run() {
- mView.setVisibility(View.GONE);
- }
- });
+ if (PanelController.useAnimations()) {
+ anim.setDuration(ANIM_DURATION).withLayer().withEndAction(new Runnable() {
+ @Override
+ public void run() {
+ mView.setVisibility(View.GONE);
+ }
+ });
+ } else {
+ mView.setVisibility(View.GONE);
+ }
mSelected = false;
return anim;
}
@@ -203,10 +229,13 @@ public class PanelController implements OnClickListener {
mView.setX(0);
mView.setY(-h);
updateText();
+ mSelected = true;
ViewPropertyAnimator anim = mView.animate();
anim.y(0);
- anim.setDuration(ANIM_DURATION).withLayer();
- mSelected = true;
+ anim.setDuration(ANIM_DURATION);
+ if (PanelController.useAnimations()) {
+ anim.withLayer();
+ }
return anim;
}
@@ -233,7 +262,6 @@ public class PanelController implements OnClickListener {
private View mCurrentPanel = null;
private View mRowPanel = null;
private UtilityPanel mUtilityPanel = null;
- private MasterImage mMasterImage = MasterImage.getImage();
private ImageShow mCurrentImage = null;
private Editor mCurrentEditor = null;
private FilterShowActivity mActivity = null;
@@ -294,9 +322,9 @@ public class PanelController implements OnClickListener {
if (mUtilityPanel == null || !mUtilityPanel.selected()) {
return true;
}
- HistoryAdapter adapter = mMasterImage.getHistory();
+ HistoryAdapter adapter = MasterImage.getImage().getHistory();
int position = adapter.undo();
- mMasterImage.onHistoryItemClick(position);
+ MasterImage.getImage().onHistoryItemClick(position);
showPanel(mCurrentPanel);
mCurrentImage.select();
if (mCurrentEditor != null) {
@@ -345,6 +373,7 @@ public class PanelController implements OnClickListener {
public ImageShow showImageView(int id) {
ImageShow image = null;
+ mActivity.hideImageViews();
for (View view : mImageViews) {
if (view.getId() == id) {
view.setVisibility(View.VISIBLE);
@@ -358,7 +387,8 @@ public class PanelController implements OnClickListener {
public void showDefaultImageView() {
showImageView(R.id.imageShow).setShowControls(false);
- mMasterImage.setCurrentFilter(null);
+ MasterImage.getImage().setCurrentFilter(null);
+ MasterImage.getImage().setCurrentFilterRepresentation(null);
}
public void showPanel(View view) {
@@ -368,10 +398,14 @@ public class PanelController implements OnClickListener {
if (mUtilityPanel != null && mUtilityPanel.selected()) {
ViewPropertyAnimator anim1 = mUtilityPanel.unselect();
removedUtilityPanel = true;
- anim1.start();
+ if (anim1 != null) {
+ anim1.start();
+ }
if (mCurrentPanel == view) {
ViewPropertyAnimator anim2 = current.select(-1, VERTICAL_MOVE);
- anim2.start();
+ if (anim2 != null) {
+ anim2.start();
+ }
showDefaultImageView();
}
}
@@ -387,77 +421,75 @@ public class PanelController implements OnClickListener {
currentPos = current.getPosition();
}
ViewPropertyAnimator anim1 = panel.select(currentPos, HORIZONTAL_MOVE);
- anim1.start();
+ if (anim1 != null) {
+ anim1.start();
+ }
if (current != null) {
ViewPropertyAnimator anim2 = current.unselect(panel.getPosition(), HORIZONTAL_MOVE);
- anim2.start();
+ if (anim2 != null) {
+ anim2.start();
+ }
}
} else {
ViewPropertyAnimator anim = panel.select(-1, VERTICAL_MOVE);
- anim.start();
+ if (anim != null) {
+ anim.start();
+ }
}
+
showDefaultImageView();
mCurrentPanel = view;
}
public ImagePreset getImagePreset() {
- return mMasterImage.getPreset();
- }
-
- public ImageFilter setImagePreset(ImageFilter filter, String name) {
- ImagePreset copy = new ImagePreset(getImagePreset());
- copy.add(filter);
- copy.setHistoryName(name);
- copy.setIsFx(false);
- mMasterImage.setPreset(copy, true);
- return filter;
+ return MasterImage.getImage().getPreset();
}
- // TODO: remove this.
- public void ensureFilter(String name) {
- ImagePreset preset = getImagePreset();
- ImageFilter filter = preset.getFilter(name);
- if (filter != null) {
- // If we already have a filter, we might still want
- // to push it onto the history stack.
- ImagePreset copy = new ImagePreset(getImagePreset());
- copy.setHistoryName(name);
- mMasterImage.setPreset(copy, true);
- filter = copy.getFilter(name);
- }
-
- if (filter == null) {
- ImageFilter filterInstance = mFilters.get(name);
- if (filterInstance != null) {
- try {
- ImageFilter newFilter = filterInstance.clone();
- newFilter.reset();
- filter = setImagePreset(newFilter, name);
- } catch (CloneNotSupportedException e) {
- e.printStackTrace();
- }
- }
+ public void useFilterRepresentation(FilterRepresentation filterRepresentation) {
+ if (filterRepresentation == null) {
+ return;
}
- if (filter != null) {
- mMasterImage.setCurrentFilter(filter);
+ if (MasterImage.getImage().getCurrentFilterRepresentation() == filterRepresentation) {
+ return;
}
+ ImagePreset oldPreset = MasterImage.getImage().getPreset();
+ ImagePreset copy = new ImagePreset(oldPreset);
+ FilterRepresentation representation = copy.getRepresentation(filterRepresentation);
+ if (representation == null) {
+ copy.addFilter(filterRepresentation);
+ } else {
+ if (filterRepresentation.allowsMultipleInstances()) {
+ representation.updateTempParametersFrom(filterRepresentation);
+ copy.setHistoryName(filterRepresentation.getName());
+ }
+ filterRepresentation = representation;
+ }
+ MasterImage.getImage().setPreset(copy, true);
+ MasterImage.getImage().setCurrentFilterRepresentation(filterRepresentation);
}
public void showComponent(View view) {
boolean doPanelTransition = true;
if (view instanceof FilterIconButton) {
- ImageFilter f = ((FilterIconButton) view).getImageFilter();
- doPanelTransition = f.showUtilityPanel();
+ FilterRepresentation f = ((FilterIconButton) view).getFilterRepresentation();
+ if (f != null) {
+ // FIXME: this check shouldn't be necessary (f shouldn't be null)
+ doPanelTransition = f.showUtilityPanel();
+ }
}
- if (mUtilityPanel != null && !mUtilityPanel.selected() && doPanelTransition ) {
+ if (mUtilityPanel != null && !mUtilityPanel.selected() && doPanelTransition) {
Panel current = mPanels.get(mCurrentPanel);
ViewPropertyAnimator anim1 = current.unselect(-1, VERTICAL_MOVE);
- anim1.start();
+ if (anim1 != null) {
+ anim1.start();
+ }
if (mUtilityPanel != null) {
ViewPropertyAnimator anim2 = mUtilityPanel.select();
- anim2.start();
+ if (anim2 != null) {
+ anim2.start();
+ }
}
}
@@ -469,22 +501,23 @@ public class PanelController implements OnClickListener {
if (view instanceof FilterIconButton) {
mCurrentEditor = null;
FilterIconButton component = (FilterIconButton) view;
- ImageFilter filter = component.getImageFilter();
- if (filter.getEditingViewId() != 0) {
- if (mEditorPlaceHolder.contains(filter.getEditingViewId())) {
- mCurrentEditor = mEditorPlaceHolder.showEditor(filter.getEditingViewId());
- mCurrentImage = mCurrentEditor.getImageShow();
- mCurrentEditor.setPanelController(this);
- } else {
- mCurrentImage = showImageView(filter.getEditingViewId());
+ FilterRepresentation representation = component.getFilterRepresentation();
+ if (representation != null) {
+ mUtilityPanel.setEffectName(representation.getName());
+ mUtilityPanel.setShowParameter(representation.showParameterValue());
+
+ if (representation.getEditorId() != 0) {
+ if (mEditorPlaceHolder.contains(representation.getEditorId())) {
+ mCurrentEditor = mEditorPlaceHolder.showEditor(representation.getEditorId());
+ mCurrentImage = mCurrentEditor.getImageShow();
+ mCurrentEditor.setPanelController(this);
+ } else {
+ mCurrentImage = showImageView(representation.getEditorId());
+ }
}
- mCurrentImage.setShowControls(filter.showEditingControls());
- String ename = mCurrentImage.getContext().getString(filter.getTextId());
- mUtilityPanel.setEffectName(ename);
+ mCurrentImage.setShowControls(representation.showEditingControls());
+ mUtilityPanel.setShowParameter(representation.showParameterValue());
- mUtilityPanel.setShowParameter(filter.showParameterValue());
- ImageFilter currentFilter = mMasterImage.getPreset().getFilter(filter.getName());
- mMasterImage.setCurrentFilter(currentFilter);
mCurrentImage.select();
if (mCurrentEditor != null) {
mCurrentEditor.reflectCurrentFilter();
@@ -503,7 +536,6 @@ public class PanelController implements OnClickListener {
mCurrentImage = showImageView(R.id.imageTinyPlanet).setShowControls(true);
String ename = mCurrentImage.getContext().getString(R.string.tinyplanet);
mUtilityPanel.setEffectName(ename);
- ensureFilter(ename);
if (!mDisableFilterButtons) {
mActivity.disableFilterButtons();
mDisableFilterButtons = true;
@@ -541,15 +573,8 @@ public class PanelController implements OnClickListener {
mUtilityPanel.setShowParameter(false);
break;
}
- case R.id.redEyeButton: {
- mCurrentImage = showImageView(R.id.imageRedEyes).setShowControls(true);
- String ename = mCurrentImage.getContext().getString(R.string.redeye);
- mUtilityPanel.setEffectName(ename);
- ensureFilter(ename);
- break;
- }
case R.id.applyEffect: {
- if (mMasterImage.getCurrentFilter() instanceof ImageFilterTinyPlanet) {
+ if (MasterImage.getImage().getCurrentFilter() instanceof ImageFilterTinyPlanet) {
mActivity.saveImage();
} else {
if (mCurrentImage instanceof ImageCrop) {
@@ -557,6 +582,7 @@ public class PanelController implements OnClickListener {
}
showPanel(mCurrentPanel);
}
+ MasterImage.getImage().invalidateFiltersOnly();
break;
}
}