summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d
diff options
context:
space:
mode:
authorMichael Kolb <kolby@google.com>2013-05-17 15:37:24 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-05-17 15:37:24 -0700
commit8dcd1ab3b1d2c0f56b2af8ffd25ca3a6a5cfb657 (patch)
tree0b5285aa6c381704631db1b00e6fac670ffd570c /src/com/android/gallery3d
parent87f9a62f473a3c57505e2877b0a46ab3cb5e62ac (diff)
parent01fa94509b880bf80d3c852544c26cda6e882539 (diff)
downloadandroid_packages_apps_Snap-8dcd1ab3b1d2c0f56b2af8ffd25ca3a6a5cfb657.tar.gz
android_packages_apps_Snap-8dcd1ab3b1d2c0f56b2af8ffd25ca3a6a5cfb657.tar.bz2
android_packages_apps_Snap-8dcd1ab3b1d2c0f56b2af8ffd25ca3a6a5cfb657.zip
am 1a266f16: Highlight selected option in FX and Borders
* commit '1a266f16edbef7cb0a770d37fcad958fc55a5862': Highlight selected option in FX and Borders
Diffstat (limited to 'src/com/android/gallery3d')
-rw-r--r--src/com/android/gallery3d/filtershow/category/CategoryAdapter.java67
-rw-r--r--src/com/android/gallery3d/filtershow/category/CategoryPanel.java5
-rw-r--r--src/com/android/gallery3d/filtershow/category/CategoryView.java17
-rw-r--r--src/com/android/gallery3d/filtershow/category/MainPanel.java1
-rw-r--r--src/com/android/gallery3d/filtershow/ui/FilterIconButton.java33
-rw-r--r--src/com/android/gallery3d/filtershow/ui/SelectionRenderer.java32
6 files changed, 142 insertions, 13 deletions
diff --git a/src/com/android/gallery3d/filtershow/category/CategoryAdapter.java b/src/com/android/gallery3d/filtershow/category/CategoryAdapter.java
index e310b2f33..0a65cd92f 100644
--- a/src/com/android/gallery3d/filtershow/category/CategoryAdapter.java
+++ b/src/com/android/gallery3d/filtershow/category/CategoryAdapter.java
@@ -21,24 +21,25 @@ import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.AbsListView;
import android.widget.ArrayAdapter;
-import android.widget.LinearLayout;
import android.widget.ListView;
+
import com.android.gallery3d.R;
import com.android.gallery3d.filtershow.filters.FilterRepresentation;
-import com.android.gallery3d.filtershow.filters.FilterTinyPlanetRepresentation;
-import com.android.gallery3d.filtershow.filters.ImageFilter;
import com.android.gallery3d.filtershow.filters.ImageFilterTinyPlanet;
+import com.android.gallery3d.filtershow.imageshow.MasterImage;
+import com.android.gallery3d.filtershow.presets.ImagePreset;
import com.android.gallery3d.filtershow.ui.FilterIconButton;
public class CategoryAdapter extends ArrayAdapter<Action> {
private static final String LOGTAG = "CategoryAdapter";
private int mItemHeight = 200;
- private ListView mContainer;
+ private View mContainer;
private int mItemWidth = ListView.LayoutParams.MATCH_PARENT;
private boolean mUseFilterIconButton = false;
+ private int mSelectedPosition;
+ int mCategory;
public CategoryAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
@@ -62,6 +63,22 @@ public class CategoryAdapter extends ArrayAdapter<Action> {
action.setAdapter(this);
}
+ public void initializeSelection(int category) {
+ mCategory = category;
+ if (category == MainPanel.LOOKS || category == MainPanel.BORDERS) {
+ ImagePreset preset = MasterImage.getImage().getPreset();
+ if (preset != null) {
+ for (int i = 0; i < getCount(); i++) {
+ if (preset.historyName().equals(getItem(i).getRepresentation().getName())) {
+ mSelectedPosition = i;
+ }
+ }
+ }
+ } else {
+ mSelectedPosition = -1;
+ }
+ }
+
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (mUseFilterIconButton) {
@@ -73,27 +90,55 @@ public class CategoryAdapter extends ArrayAdapter<Action> {
FilterIconButton view = (FilterIconButton) convertView;
Action action = getItem(position);
view.setAction(action);
- view.setup(action.getName(), null);
+ view.setup(action.getName(), null, this);
view.setLayoutParams(
new ListView.LayoutParams(mItemWidth, mItemHeight));
+ view.setTag(position);
+ if (mCategory == MainPanel.LOOKS || mCategory == MainPanel.BORDERS) {
+ view.setBackground(null);
+ }
return view;
}
if (convertView == null) {
convertView = new CategoryView(getContext());
}
CategoryView view = (CategoryView) convertView;
- view.setAction(getItem(position));
+ view.setAction(getItem(position), this);
view.setLayoutParams(
new ListView.LayoutParams(mItemWidth, mItemHeight));
+ view.setTag(position);
return view;
}
- public void setContainer(ListView container) {
- mContainer = container;
+ public void setSelected(View v) {
+ int old = mSelectedPosition;
+ mSelectedPosition = (Integer) v.getTag();
+ if (old != -1) {
+ invalidateView(old);
+ }
+ invalidateView(mSelectedPosition);
}
- public ListView getContainer() {
- return mContainer;
+ public boolean isSelected(View v) {
+ return (Integer) v.getTag() == mSelectedPosition;
+ }
+
+ private void invalidateView(int position) {
+ View child = null;
+ if (mContainer instanceof ListView) {
+ ListView lv = (ListView) mContainer;
+ child = lv.getChildAt(position - lv.getFirstVisiblePosition());
+ } else {
+ CategoryTrack ct = (CategoryTrack) mContainer;
+ child = ct.getChildAt(position);
+ }
+ if (child != null) {
+ child.invalidate();
+ }
+ }
+
+ public void setContainer(View container) {
+ mContainer = container;
}
public void imageLoaded() {
diff --git a/src/com/android/gallery3d/filtershow/category/CategoryPanel.java b/src/com/android/gallery3d/filtershow/category/CategoryPanel.java
index 9ddfcabe0..abae80f93 100644
--- a/src/com/android/gallery3d/filtershow/category/CategoryPanel.java
+++ b/src/com/android/gallery3d/filtershow/category/CategoryPanel.java
@@ -50,18 +50,22 @@ public class CategoryPanel extends Fragment {
switch (adapter) {
case MainPanel.LOOKS: {
mAdapter = activity.getCategoryLooksAdapter();
+ mAdapter.initializeSelection(MainPanel.LOOKS);
break;
}
case MainPanel.BORDERS: {
mAdapter = activity.getCategoryBordersAdapter();
+ mAdapter.initializeSelection(MainPanel.BORDERS);
break;
}
case MainPanel.GEOMETRY: {
mAdapter = activity.getCategoryGeometryAdapter();
+ mAdapter.initializeSelection(MainPanel.GEOMETRY);
break;
}
case MainPanel.FILTERS: {
mAdapter = activity.getCategoryFiltersAdapter();
+ mAdapter.initializeSelection(MainPanel.FILTERS);
break;
}
}
@@ -90,6 +94,7 @@ public class CategoryPanel extends Fragment {
CategoryTrack panel = (CategoryTrack) panelView;
mAdapter.setUseFilterIconButton(true);
panel.setAdapter(mAdapter);
+ mAdapter.setContainer(panel);
} else {
ListView panel = (ListView) main.findViewById(R.id.listItems);
panel.setAdapter(mAdapter);
diff --git a/src/com/android/gallery3d/filtershow/category/CategoryView.java b/src/com/android/gallery3d/filtershow/category/CategoryView.java
index c101f983f..84a973b50 100644
--- a/src/com/android/gallery3d/filtershow/category/CategoryView.java
+++ b/src/com/android/gallery3d/filtershow/category/CategoryView.java
@@ -29,6 +29,7 @@ import android.view.View;
import com.android.gallery3d.R;
import com.android.gallery3d.filtershow.FilterShowActivity;
import com.android.gallery3d.filtershow.filters.FilterRepresentation;
+import com.android.gallery3d.filtershow.ui.SelectionRenderer;
public class CategoryView extends View implements View.OnClickListener {
@@ -40,6 +41,9 @@ public class CategoryView extends View implements View.OnClickListener {
private static int sTextSize = 32;
private int mTextColor;
private int mBackgroundColor;
+ private Paint mSelectPaint;
+ CategoryAdapter mAdapter;
+ private int mSelectionStroke;
public static void setTextSize(int size) {
sTextSize = size;
@@ -55,6 +59,10 @@ public class CategoryView extends View implements View.OnClickListener {
Resources res = getResources();
mBackgroundColor = res.getColor(R.color.filtershow_categoryview_background);
mTextColor = res.getColor(R.color.filtershow_categoryview_text);
+ mSelectionStroke = res.getDimensionPixelSize(R.dimen.thumbnail_margin);
+ mSelectPaint = new Paint();
+ mSelectPaint.setStyle(Paint.Style.FILL);
+ mSelectPaint.setColor(res.getColor(R.color.filtershow_category_selection));
}
public void drawText(Canvas canvas, String text) {
@@ -71,6 +79,7 @@ public class CategoryView extends View implements View.OnClickListener {
canvas.drawText(text, x, y, mPaint);
}
+ @Override
public void onDraw(Canvas canvas) {
canvas.drawColor(mBackgroundColor);
if (mAction != null) {
@@ -81,6 +90,10 @@ public class CategoryView extends View implements View.OnClickListener {
} else {
Bitmap bitmap = mAction.getImage();
canvas.drawBitmap(bitmap, 0, 0, mPaint);
+ if (mAdapter.isSelected(this)) {
+ SelectionRenderer.drawSelection(canvas, 0, 0, bitmap.getWidth(),
+ bitmap.getHeight(), mSelectionStroke, mSelectPaint);
+ }
}
mPaint.setColor(mBackgroundColor);
mPaint.setStyle(Paint.Style.STROKE);
@@ -93,8 +106,9 @@ public class CategoryView extends View implements View.OnClickListener {
}
}
- public void setAction(Action action) {
+ public void setAction(Action action, CategoryAdapter adapter) {
mAction = action;
+ mAdapter = adapter;
invalidate();
}
@@ -106,5 +120,6 @@ public class CategoryView extends View implements View.OnClickListener {
public void onClick(View view) {
FilterShowActivity activity = (FilterShowActivity) getContext();
activity.showRepresentation(mAction.getRepresentation());
+ mAdapter.setSelected(this);
}
}
diff --git a/src/com/android/gallery3d/filtershow/category/MainPanel.java b/src/com/android/gallery3d/filtershow/category/MainPanel.java
index 7cadbc323..9a64ffbf3 100644
--- a/src/com/android/gallery3d/filtershow/category/MainPanel.java
+++ b/src/com/android/gallery3d/filtershow/category/MainPanel.java
@@ -24,6 +24,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.LinearLayout;
+
import com.android.gallery3d.R;
import com.android.gallery3d.filtershow.FilterShowActivity;
import com.android.gallery3d.filtershow.state.StatePanel;
diff --git a/src/com/android/gallery3d/filtershow/ui/FilterIconButton.java b/src/com/android/gallery3d/filtershow/ui/FilterIconButton.java
index c3c87694a..96126c55c 100644
--- a/src/com/android/gallery3d/filtershow/ui/FilterIconButton.java
+++ b/src/com/android/gallery3d/filtershow/ui/FilterIconButton.java
@@ -17,18 +17,25 @@
package com.android.gallery3d.filtershow.ui;
import android.content.Context;
+import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.Rect;
import android.graphics.RectF;
+import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;
+import com.android.gallery3d.R;
import com.android.gallery3d.filtershow.FilterShowActivity;
import com.android.gallery3d.filtershow.cache.RenderingRequest;
import com.android.gallery3d.filtershow.cache.RenderingRequestCaller;
import com.android.gallery3d.filtershow.category.Action;
+import com.android.gallery3d.filtershow.category.CategoryAdapter;
import com.android.gallery3d.filtershow.filters.FilterRepresentation;
import com.android.gallery3d.filtershow.imageshow.GeometryListener;
import com.android.gallery3d.filtershow.imageshow.GeometryMetadata;
@@ -45,6 +52,9 @@ public class FilterIconButton extends IconButton implements View.OnClickListener
private FilterRepresentation mFilterRepresentation = null;
private Bitmap mIconBitmap = null;
private Action mAction;
+ private Paint mSelectPaint;
+ private int mSelectStroke;
+ private CategoryAdapter mAdapter;
public FilterIconButton(Context context) {
super(context);
}
@@ -57,11 +67,17 @@ public class FilterIconButton extends IconButton implements View.OnClickListener
super(context, attrs, defStyle);
}
- public void setup(String text, LinearLayout parent) {
+ public void setup(String text, LinearLayout parent, CategoryAdapter adapter) {
+ mAdapter = adapter;
setText(text);
setContentDescription(text);
super.setOnClickListener(this);
+ Resources res = getContext().getResources();
MasterImage.getImage().addGeometryListener(this);
+ mSelectStroke = res.getDimensionPixelSize(R.dimen.thumbnail_margin);
+ mSelectPaint = new Paint();
+ mSelectPaint.setStyle(Paint.Style.FILL);
+ mSelectPaint.setColor(res.getColor(R.color.filtershow_category_selection));
invalidate();
}
@@ -69,6 +85,7 @@ public class FilterIconButton extends IconButton implements View.OnClickListener
public void onClick(View v) {
FilterShowActivity activity = (FilterShowActivity) getContext();
activity.showRepresentation(mFilterRepresentation);
+ mAdapter.setSelected(v);
}
public FilterRepresentation getFilterRepresentation() {
@@ -113,6 +130,20 @@ public class FilterIconButton extends IconButton implements View.OnClickListener
} else {
super.onDraw(canvas);
}
+ if (mAdapter.isSelected(this)) {
+ Drawable iconDrawable = getCompoundDrawables()[1];
+ if (iconDrawable != null) {
+ canvas.save();
+ int padding = getCompoundDrawablePadding();
+ canvas.translate(getScrollX() + padding + getPaddingLeft() - mSelectStroke - 1,
+ getScrollY() + padding + getPaddingTop() - mSelectStroke - 1);
+ Rect r = iconDrawable.getBounds();
+ SelectionRenderer.drawSelection(canvas, r.left, r.top,
+ r.right + 2 * mSelectStroke + 2, r.bottom + 2 * mSelectStroke + 2,
+ mSelectStroke, mSelectPaint);
+ canvas.restore();
+ }
+ }
}
@Override
diff --git a/src/com/android/gallery3d/filtershow/ui/SelectionRenderer.java b/src/com/android/gallery3d/filtershow/ui/SelectionRenderer.java
new file mode 100644
index 000000000..1b108bd5d
--- /dev/null
+++ b/src/com/android/gallery3d/filtershow/ui/SelectionRenderer.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2013 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.gallery3d.filtershow.ui;
+
+import android.graphics.Canvas;
+import android.graphics.Paint;
+
+public class SelectionRenderer {
+
+ public static void drawSelection(Canvas canvas, int left, int top, int right, int bottom,
+ int stroke, Paint paint) {
+ canvas.drawRect(left, top, right, top + stroke, paint);
+ canvas.drawRect(left, bottom - stroke, right, bottom, paint);
+ canvas.drawRect(left, top, left + stroke, bottom, paint);
+ canvas.drawRect(right - stroke, top, right, bottom, paint);
+ }
+
+}