Merge "Disable zoom" into gb-ub-photos-bryce
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 6838a17..7688566 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -107,14 +107,14 @@
<string name="no_location" msgid="4043624857489331676">"कोई स्थान नहीं"</string>
<string name="no_connectivity" msgid="7164037617297293668">"नेटवर्क समस्याओं के कारण कुछ स्थानों को पहचाना नहीं जा सका."</string>
<string name="sync_album_error" msgid="1020688062900977530">"इस एल्बम के फ़ोटो डाउनलोड नहीं किए जा सके. बाद में पुन: प्रयास करें."</string>
- <string name="show_images_only" msgid="7263218480867672653">"केवल छवियां"</string>
+ <string name="show_images_only" msgid="7263218480867672653">"केवल चित्र"</string>
<string name="show_videos_only" msgid="3850394623678871697">"केवल वीडियो"</string>
- <string name="show_all" msgid="6963292714584735149">"छवियां और वीडियो"</string>
+ <string name="show_all" msgid="6963292714584735149">"चित्र और वीडियो"</string>
<string name="appwidget_title" msgid="6410561146863700411">"फ़ोटो गैलरी"</string>
<string name="appwidget_empty_text" msgid="1228925628357366957">"कोई फ़ोटो नहीं."</string>
<string name="crop_saved" msgid="1595985909779105158">"काट-छांट की गई चित्र को <xliff:g id="FOLDER_NAME">%s</xliff:g> में सहेजा गया."</string>
<string name="no_albums_alert" msgid="4111744447491690896">"कोई एल्बम उपलब्ध नहीं."</string>
- <string name="empty_album" msgid="4542880442593595494">"O छवियां/वीडियो उपलब्ध."</string>
+ <string name="empty_album" msgid="4542880442593595494">"O चित्र/वीडियो उपलब्ध."</string>
<string name="picasa_posts" msgid="1497721615718760613">"पोस्ट"</string>
<string name="make_available_offline" msgid="5157950985488297112">"ऑफ़लाइन उपलब्ध कराएं"</string>
<string name="sync_picasa_albums" msgid="8522572542111169872">"रीफ्रेश करें"</string>
@@ -177,7 +177,7 @@
<string name="widget_type_album" msgid="6013045393140135468">"कोई एल्बम चुनें"</string>
<string name="widget_type_shuffle" msgid="8594622705019763768">"सभी छवियों का क्रम बदलें"</string>
<string name="widget_type_photo" msgid="6267065337367795355">"कोई चित्र चुनें"</string>
- <string name="widget_type" msgid="1364653978966343448">"छवियां चुनें"</string>
+ <string name="widget_type" msgid="1364653978966343448">"चित्र चुनें"</string>
<string name="slideshow_dream_name" msgid="6915963319933437083">"स्लाइडशो"</string>
<string name="albums" msgid="7320787705180057947">"एल्बम"</string>
<string name="times" msgid="2023033894889499219">"इतने बार"</string>
@@ -315,8 +315,8 @@
<string name="pref_camera_id_label_back" msgid="8745553500400332333">"सामने का कैमरा"</string>
<string name="pref_camera_id_label_front" msgid="8699439330056996709">"पीछे का कैमरा"</string>
<string name="dialog_ok" msgid="6263301364153382152">"ठीक"</string>
- <string name="spaceIsLow_content" product="nosdcard" msgid="4401325203349203177">"आपके USB संग्रहण में स्थान कम है. गुणवत्ता सेटिंग बदलें या कुछ छवियां या अन्य फ़ाइलें हटाएं."</string>
- <string name="spaceIsLow_content" product="default" msgid="1732882643101247179">"आपके SD कार्ड में स्थान कम है. गुणवत्ता सेटिंग बदलें या कुछ छवियां या अन्य फ़ाइलें हटाएं."</string>
+ <string name="spaceIsLow_content" product="nosdcard" msgid="4401325203349203177">"आपके USB संग्रहण में स्थान कम है. गुणवत्ता सेटिंग बदलें या कुछ चित्र या अन्य फ़ाइलें हटाएं."</string>
+ <string name="spaceIsLow_content" product="default" msgid="1732882643101247179">"आपके SD कार्ड में स्थान कम है. गुणवत्ता सेटिंग बदलें या कुछ चित्र या अन्य फ़ाइलें हटाएं."</string>
<string name="video_reach_size_limit" msgid="6179877322015552390">"आकार सीमा पहुंची."</string>
<string name="pano_too_fast_prompt" msgid="2823839093291374709">"बहुत तेज़"</string>
<string name="pano_dialog_prepare_preview" msgid="4788441554128083543">"पैनोरामा तैयार हो रहा है"</string>
diff --git a/res/values/filtershow_color.xml b/res/values/filtershow_color.xml
index f6bf7fb..927bfa2 100644
--- a/res/values/filtershow_color.xml
+++ b/res/values/filtershow_color.xml
@@ -37,4 +37,5 @@
<color name="filtershow_stateview_selected_text">#000000</color>
<color name="filtershow_categoryview_background">#1a1a1a</color>
<color name="filtershow_categoryview_text">#a7a7a7</color>
+ <color name="filtershow_category_selection">#ffffffff</color>
</resources>
\ No newline at end of file
diff --git a/src/com/android/gallery3d/filtershow/category/CategoryAdapter.java b/src/com/android/gallery3d/filtershow/category/CategoryAdapter.java
index e310b2f..0a65cd9 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.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 @@
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 @@
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 9ddfcab..abae80f 100644
--- a/src/com/android/gallery3d/filtershow/category/CategoryPanel.java
+++ b/src/com/android/gallery3d/filtershow/category/CategoryPanel.java
@@ -50,18 +50,22 @@
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 @@
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 c101f98..84a973b 100644
--- a/src/com/android/gallery3d/filtershow/category/CategoryView.java
+++ b/src/com/android/gallery3d/filtershow/category/CategoryView.java
@@ -29,6 +29,7 @@
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 @@
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 @@
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 @@
canvas.drawText(text, x, y, mPaint);
}
+ @Override
public void onDraw(Canvas canvas) {
canvas.drawColor(mBackgroundColor);
if (mAction != null) {
@@ -81,6 +90,10 @@
} 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 void setAction(Action action) {
+ public void setAction(Action action, CategoryAdapter adapter) {
mAction = action;
+ mAdapter = adapter;
invalidate();
}
@@ -106,5 +120,6 @@
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 7cadbc3..9a64ffb 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.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 c3c8769..96126c5 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 @@
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 @@
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 void onClick(View v) {
FilterShowActivity activity = (FilterShowActivity) getContext();
activity.showRepresentation(mFilterRepresentation);
+ mAdapter.setSelected(v);
}
public FilterRepresentation getFilterRepresentation() {
@@ -113,6 +130,20 @@
} 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 0000000..1b108bd
--- /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);
+ }
+
+}