Index: chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchImageControl.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchImageControl.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchImageControl.java |
index e2f24f919c82a9f714f6427260b7226de6869112..aeafcf08b2f03f54828ede8675f8ece35423cc1f 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchImageControl.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchImageControl.java |
@@ -22,7 +22,7 @@ public class ContextualSearchImageControl |
* Animation properties. |
*/ |
protected enum AnimationType { |
- THUMBNAIL_VISIBILITY |
+ STATIC_IMAGE_VISIBILITY |
} |
/** The current context. */ |
@@ -62,84 +62,79 @@ public class ContextualSearchImageControl |
} |
// ============================================================================================ |
- // Thumbnail |
+ // Static Icon |
// ============================================================================================ |
/** |
- * The URL of the thumbnail to display. |
+ * The resource id of the static icon to display. |
*/ |
- private String mThumbnailUrl; |
+ private int mStaticIconResourceId; |
/** |
- * The height and width of the thumbnail. |
+ * Whether the static icon is visible. |
*/ |
- private int mThumbnailSize; |
+ private boolean mStaticIconVisible; |
/** |
- * Whether the thumbnail is visible. |
+ * @param resId The resource id of the static icon to display. |
*/ |
- private boolean mThumbnailVisible; |
+ public void setStaticIconResourceId(int resId) { |
+ mStaticIconResourceId = resId; |
+ mStaticIconVisible = true; |
+ animateStaticImageVisibility(true); |
+ } |
/** |
- * The thumbnail visibility percentage, which dictates how and where to draw the thumbnail. |
- * The thumbnail is not visible at all at 0.f and completely visible at 1.f. |
+ * @return The resource id of the static icon to display. |
*/ |
- private float mThumbnailVisibilityPercentage = 0.f; |
+ public int getStaticIconResourceId() { |
+ return mStaticIconResourceId; |
+ } |
/** |
- * @param thumbnailUrl The URL of the thumbnail to display |
+ * @return Whether the static icon is visible. |
*/ |
- public void setThumbnailUrl(String thumbnailUrl) { |
- mThumbnailUrl = thumbnailUrl; |
+ public boolean getStaticIconVisible() { |
+ return mStaticIconVisible; |
} |
+ // ============================================================================================ |
+ // Thumbnail |
+ // ============================================================================================ |
+ |
/** |
- * @return The URL used to fetch a thumbnail to display in the Bar. Will return an empty string |
- * if no thumbnail is available. |
+ * The URL of the thumbnail to display. |
*/ |
- public String getThumbnailUrl() { |
- return mThumbnailUrl != null ? mThumbnailUrl : ""; |
- } |
+ private String mThumbnailUrl; |
/** |
- * Hides the thumbnail if it is visible and makes the icon sprite visible. Also resets the |
- * thumbnail URL. |
- * @param animate Whether hiding the thumbnail should be animated. |
+ * Whether the thumbnail is visible. |
*/ |
- public void hideThumbnail(boolean animate) { |
- getIconSpriteControl().setIsVisible(true); |
- if (mThumbnailVisible && animate) { |
- animateThumbnailVisibility(false); |
- } else { |
- mOverlayPanelAnimation.cancelAnimation(this, AnimationType.THUMBNAIL_VISIBILITY); |
- onThumbnailHidden(); |
- } |
- } |
+ private boolean mThumbnailVisible; |
/** |
- * @return The height and width of the thumbnail in px. |
+ * @param thumbnailUrl The URL of the thumbnail to display |
*/ |
- public int getThumbnailSize() { |
- if (mThumbnailSize == 0) { |
- mThumbnailSize = mContext.getResources().getDimensionPixelSize( |
- R.dimen.contextual_search_thumbnail_size); |
- } |
- return mThumbnailSize; |
+ public void setThumbnailUrl(String thumbnailUrl) { |
+ // If a static icon is showing, the thumbnail should not be shown. |
+ if (mStaticIconVisible) return; |
+ |
+ mThumbnailUrl = thumbnailUrl; |
} |
/** |
- * @return Whether the thumbnail is visible. |
+ * @return The URL used to fetch a thumbnail to display in the Bar. Will return an empty string |
+ * if no thumbnail is available. |
*/ |
- public boolean getThumbnailVisible() { |
- return mThumbnailVisible; |
+ public String getThumbnailUrl() { |
+ return mThumbnailUrl != null ? mThumbnailUrl : ""; |
} |
/** |
- * @return The thumbnail visibility percentage, which dictates how and where to draw the |
- * thumbnail. The thumbnail is not visible at all at 0.f and completely visible at 1.f. |
+ * @return Whether the thumbnail is visible. |
*/ |
- public float getThumbnailVisibilityPercentage() { |
- return mThumbnailVisibilityPercentage; |
+ public boolean getThumbnailVisible() { |
+ return mThumbnailVisible; |
} |
/** |
@@ -154,52 +149,108 @@ public class ContextualSearchImageControl |
// TODO(twellington): if the icon sprite is animating wait to start the thumbnail visibility |
// animation. |
- animateThumbnailVisibility(true); |
+ animateStaticImageVisibility(true); |
+ } |
+ |
+ // ============================================================================================ |
+ // Static Image -- either a thumbnail or static icon |
+ // ============================================================================================ |
+ |
+ /** |
+ * The height and width of the static image. |
+ */ |
+ private int mStaticImageSize; |
+ |
+ /** |
+ * The static image visibility percentage, which dictates how and where to draw the static |
+ * image. The static image is not visible at all at 0.f and completely visible at 1.f. |
+ */ |
+ private float mStaticImageVisibilityPercentage = 0.f; |
+ |
+ /** |
+ * Hides the static image if it is visible and makes the icon sprite visible. Also resets the |
+ * thumbnail URL and static icon resource id. |
+ * @param animate Whether hiding the thumbnail should be animated. |
+ */ |
+ public void hideStaticIcon(boolean animate) { |
+ getIconSpriteControl().setIsVisible(true); |
+ if ((mThumbnailVisible || mStaticIconVisible) && animate) { |
+ animateStaticImageVisibility(false); |
+ } else { |
+ mOverlayPanelAnimation.cancelAnimation(this, AnimationType.STATIC_IMAGE_VISIBILITY); |
+ onStaticImageHidden(); |
+ } |
+ } |
+ |
+ /** |
+ * @return The height and width of the static image in px. |
+ */ |
+ public int getStaticImageSize() { |
+ if (mStaticImageSize == 0) { |
+ mStaticImageSize = mContext.getResources().getDimensionPixelSize( |
+ R.dimen.contextual_search_static_image_size); |
+ } |
+ return mStaticImageSize; |
+ } |
+ |
+ /** |
+ * @return The static image visibility percentage, which dictates how and where to draw the |
+ * static image. The static image is not visible at all at 0.f and completely visible at |
+ * 1.f. The static image may be either a thumbnail or static icon. |
+ */ |
+ public float getStaticImageVisibilityPercentage() { |
+ return mStaticImageVisibilityPercentage; |
} |
- private void onThumbnailHidden() { |
+ /** |
+ * Called when the static image finishes hiding to reset thumbnail and static icon values. |
+ */ |
+ private void onStaticImageHidden() { |
+ mStaticIconResourceId = 0; |
+ mStaticIconVisible = false; |
+ |
mThumbnailUrl = ""; |
mThumbnailVisible = false; |
getIconSpriteControl().setIsVisible(true); |
- mThumbnailVisibilityPercentage = 0.f; |
+ mStaticImageVisibilityPercentage = 0.f; |
} |
// ============================================================================================ |
// Thumbnail Animation |
// ============================================================================================ |
- private Interpolator mThumbnailVisibilityInterpolator; |
+ private Interpolator mStaticImageVisibilityInterpolator; |
- private void animateThumbnailVisibility(boolean visible) { |
- if (mThumbnailVisibilityInterpolator == null) { |
- mThumbnailVisibilityInterpolator = PathInterpolatorCompat.create(0.4f, 0.f, 0.6f, 1.f); |
+ private void animateStaticImageVisibility(boolean visible) { |
+ if (mStaticImageVisibilityInterpolator == null) { |
+ mStaticImageVisibilityInterpolator = |
+ PathInterpolatorCompat.create(0.4f, 0.f, 0.6f, 1.f); |
} |
- mOverlayPanelAnimation.cancelAnimation(this, AnimationType.THUMBNAIL_VISIBILITY); |
+ mOverlayPanelAnimation.cancelAnimation(this, AnimationType.STATIC_IMAGE_VISIBILITY); |
float endValue = visible ? 1.f : 0.f; |
- mOverlayPanelAnimation.addToAnimation(this, AnimationType.THUMBNAIL_VISIBILITY, |
- mThumbnailVisibilityPercentage, endValue, |
+ mOverlayPanelAnimation.addToAnimation(this, AnimationType.STATIC_IMAGE_VISIBILITY, |
+ mStaticImageVisibilityPercentage, endValue, |
OverlayPanelAnimation.BASE_ANIMATION_DURATION_MS, 0, false, |
- mThumbnailVisibilityInterpolator); |
+ mStaticImageVisibilityInterpolator); |
} |
@Override |
public void setProperty(AnimationType prop, float val) { |
- if (prop == AnimationType.THUMBNAIL_VISIBILITY) { |
- mThumbnailVisibilityPercentage = val; |
+ if (prop == AnimationType.STATIC_IMAGE_VISIBILITY) { |
+ mStaticImageVisibilityPercentage = val; |
} |
} |
@Override |
public void onPropertyAnimationFinished(AnimationType prop) { |
- if (prop == AnimationType.THUMBNAIL_VISIBILITY) { |
- if (mThumbnailVisibilityPercentage == 0.f) { |
- onThumbnailHidden(); |
+ if (prop == AnimationType.STATIC_IMAGE_VISIBILITY) { |
+ if (mStaticImageVisibilityPercentage == 0.f) { |
+ onStaticImageHidden(); |
} else { |
getIconSpriteControl().setIsVisible(false); |
} |
} |
} |
- |
} |