/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.ui.view;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.os.Bundle;
import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.TextPaint;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.accessibility.AccessibilityEvent;
import com.galaxy.meetup.client.android.R;
import com.galaxy.meetup.client.android.common.Recyclable;
import com.galaxy.meetup.client.android.content.DbPlusOneData;
import com.galaxy.meetup.client.android.content.EsAvatarData;
import com.galaxy.meetup.client.android.service.Resource;
import com.galaxy.meetup.client.android.service.ResourceConsumer;
import com.galaxy.meetup.client.android.ui.view.ClickableButton.ClickableButtonListener;
import com.galaxy.meetup.client.util.AccessibilityUtils;
import com.galaxy.meetup.client.util.Dates;
import com.galaxy.meetup.client.util.ImageUtils;
import com.galaxy.meetup.client.util.PlusBarUtils;
import com.galaxy.meetup.client.util.TextPaintUtils;
import com.galaxy.meetup.client.util.TouchExplorationHelper;
import com.galaxy.meetup.client.util.ViewUtils;
import com.galaxy.meetup.server.client.domain.DataPlusOne;
import com.galaxy.meetup.server.client.util.JsonUtil;
/**
*
* @author sihai
*
*/
public class PhotoOneUpInfoView extends OneUpBaseView implements
ResourceConsumer, ClickableButtonListener, Recyclable {
private static Paint sActionBarBackgroundPaint;
private static int sAvatarMarginLeft;
private static int sAvatarMarginRight;
private static int sAvatarMarginTop;
private static Bitmap sAvatarOverlayBitmap;
private static int sAvatarSize;
private static Paint sBackgroundPaint;
private static int sCaptionMarginTop;
private static TextPaint sContentPaint;
private static TextPaint sDatePaint;
private static Bitmap sDefaultAvatarBitmap;
private static float sFontSpacing;
private static int sMarginBottom;
private static int sMarginLeft;
private static int sMarginRight;
private static int sNameMarginTop;
private static TextPaint sNamePaint;
private static int sPlusOneButtonMarginLeft;
private static int sPlusOneButtonMarginRight;
private static Paint sResizePaint;
private String mAlbumId;
private ClickableAvatar mAuthorImage;
private PositionedStaticLayout mAuthorLayout;
private int mBackgroundOffset;
private Spannable mCaption;
private ClickableStaticLayout mCaptionLayout;
private Set mClickableItems;
private boolean mContentDescriptionDirty;
private ClickableItem mCurrentClickableItem;
private String mDate;
private ClickableStaticLayout mDateLayout;
private OneUpListener mOneUpListener;
private String mOwnerId;
private String mOwnerName;
protected ClickableButton mPlusOneButton;
private DbPlusOneData mPlusOneData;
private OneUpActivityTouchExplorer mTouchExplorer;
public PhotoOneUpInfoView(Context context)
{
super(context);
mClickableItems = new HashSet();
mContentDescriptionDirty = true;
if(sNamePaint == null)
{
Resources resources = getContext().getResources();
sFontSpacing = resources.getDimension(R.dimen.stream_one_up_font_spacing);
sAvatarSize = resources.getDimensionPixelOffset(R.dimen.stream_one_up_avatar_size);
sMarginBottom = resources.getDimensionPixelOffset(R.dimen.stream_one_up_margin_bottom);
sMarginLeft = resources.getDimensionPixelOffset(R.dimen.stream_one_up_margin_left);
sMarginRight = resources.getDimensionPixelOffset(R.dimen.stream_one_up_margin_right);
sAvatarMarginTop = resources.getDimensionPixelOffset(R.dimen.stream_one_up_avatar_margin_top);
sAvatarMarginLeft = resources.getDimensionPixelOffset(R.dimen.stream_one_up_avatar_margin_left);
sAvatarMarginRight = resources.getDimensionPixelOffset(R.dimen.stream_one_up_avatar_margin_right);
sNameMarginTop = resources.getDimensionPixelOffset(R.dimen.stream_one_up_name_margin_top);
sCaptionMarginTop = resources.getDimensionPixelOffset(R.dimen.photo_one_up_caption_margin_top);
int i = resources.getDimensionPixelOffset(R.dimen.stream_one_up_plus_one_button_margin_right);
sPlusOneButtonMarginLeft = i;
sPlusOneButtonMarginRight = i;
sDefaultAvatarBitmap = EsAvatarData.getMediumDefaultAvatar(getContext(), true);
sAvatarOverlayBitmap = ImageUtils.decodeResource(resources, R.drawable.bg_taco_avatar);
TextPaint textpaint = new TextPaint();
sNamePaint = textpaint;
textpaint.setAntiAlias(true);
sNamePaint.setTypeface(Typeface.DEFAULT_BOLD);
sNamePaint.setColor(resources.getColor(R.color.stream_one_up_name));
sNamePaint.setTextSize(resources.getDimension(R.dimen.stream_one_up_name_text_size));
TextPaintUtils.registerTextPaint(sNamePaint, R.dimen.stream_one_up_name_text_size);
TextPaint textpaint1 = new TextPaint();
sDatePaint = textpaint1;
textpaint1.setAntiAlias(true);
sDatePaint.setColor(resources.getColor(R.color.stream_one_up_date));
sDatePaint.linkColor = resources.getColor(R.color.stream_one_up_link);
sDatePaint.setTextSize(resources.getDimension(R.dimen.stream_one_up_date_text_size));
TextPaintUtils.registerTextPaint(sDatePaint, R.dimen.stream_one_up_date_text_size);
TextPaint textpaint2 = new TextPaint();
sContentPaint = textpaint2;
textpaint2.setAntiAlias(true);
sContentPaint.setColor(resources.getColor(R.color.stream_one_up_content));
sContentPaint.linkColor = resources.getColor(R.color.stream_one_up_link);
sContentPaint.setTextSize(resources.getDimension(R.dimen.stream_one_up_content_text_size));
TextPaintUtils.registerTextPaint(sContentPaint, R.dimen.stream_one_up_content_text_size);
Paint paint = new Paint();
sBackgroundPaint = paint;
paint.setColor(resources.getColor(R.color.stream_one_up_list_background));
sBackgroundPaint.setStyle(android.graphics.Paint.Style.FILL);
Paint paint1 = new Paint();
sActionBarBackgroundPaint = paint1;
paint1.setColor(resources.getColor(R.color.stream_one_up_action_bar_background));
sActionBarBackgroundPaint.setStyle(android.graphics.Paint.Style.FILL);
sResizePaint = new Paint(2);
}
setupAccessibility(getContext());
}
public PhotoOneUpInfoView(Context context, AttributeSet attributeset)
{
super(context, attributeset);
mClickableItems = new HashSet();
mContentDescriptionDirty = true;
if(sNamePaint == null)
{
Resources resources = getContext().getResources();
sFontSpacing = resources.getDimension(R.dimen.stream_one_up_font_spacing);
sAvatarSize = resources.getDimensionPixelOffset(R.dimen.stream_one_up_avatar_size);
sMarginBottom = resources.getDimensionPixelOffset(R.dimen.stream_one_up_margin_bottom);
sMarginLeft = resources.getDimensionPixelOffset(R.dimen.stream_one_up_margin_left);
sMarginRight = resources.getDimensionPixelOffset(R.dimen.stream_one_up_margin_right);
sAvatarMarginTop = resources.getDimensionPixelOffset(R.dimen.stream_one_up_avatar_margin_top);
sAvatarMarginLeft = resources.getDimensionPixelOffset(R.dimen.stream_one_up_avatar_margin_left);
sAvatarMarginRight = resources.getDimensionPixelOffset(R.dimen.stream_one_up_avatar_margin_right);
sNameMarginTop = resources.getDimensionPixelOffset(R.dimen.stream_one_up_name_margin_top);
sCaptionMarginTop = resources.getDimensionPixelOffset(R.dimen.photo_one_up_caption_margin_top);
int i = resources.getDimensionPixelOffset(R.dimen.stream_one_up_plus_one_button_margin_right);
sPlusOneButtonMarginLeft = i;
sPlusOneButtonMarginRight = i;
sDefaultAvatarBitmap = EsAvatarData.getMediumDefaultAvatar(getContext(), true);
sAvatarOverlayBitmap = ImageUtils.decodeResource(resources, R.drawable.bg_taco_avatar);
TextPaint textpaint = new TextPaint();
sNamePaint = textpaint;
textpaint.setAntiAlias(true);
sNamePaint.setTypeface(Typeface.DEFAULT_BOLD);
sNamePaint.setColor(resources.getColor(R.color.stream_one_up_name));
sNamePaint.setTextSize(resources.getDimension(R.dimen.stream_one_up_name_text_size));
TextPaintUtils.registerTextPaint(sNamePaint, R.dimen.stream_one_up_name_text_size);
TextPaint textpaint1 = new TextPaint();
sDatePaint = textpaint1;
textpaint1.setAntiAlias(true);
sDatePaint.setColor(resources.getColor(R.color.stream_one_up_date));
sDatePaint.linkColor = resources.getColor(R.color.stream_one_up_link);
sDatePaint.setTextSize(resources.getDimension(R.dimen.stream_one_up_date_text_size));
TextPaintUtils.registerTextPaint(sDatePaint, R.dimen.stream_one_up_date_text_size);
TextPaint textpaint2 = new TextPaint();
sContentPaint = textpaint2;
textpaint2.setAntiAlias(true);
sContentPaint.setColor(resources.getColor(R.color.stream_one_up_content));
sContentPaint.linkColor = resources.getColor(R.color.stream_one_up_link);
sContentPaint.setTextSize(resources.getDimension(R.dimen.stream_one_up_content_text_size));
TextPaintUtils.registerTextPaint(sContentPaint, R.dimen.stream_one_up_content_text_size);
Paint paint = new Paint();
sBackgroundPaint = paint;
paint.setColor(resources.getColor(R.color.stream_one_up_list_background));
sBackgroundPaint.setStyle(android.graphics.Paint.Style.FILL);
Paint paint1 = new Paint();
sActionBarBackgroundPaint = paint1;
paint1.setColor(resources.getColor(R.color.stream_one_up_action_bar_background));
sActionBarBackgroundPaint.setStyle(android.graphics.Paint.Style.FILL);
sResizePaint = new Paint(2);
}
setupAccessibility(getContext());
}
public PhotoOneUpInfoView(Context context, AttributeSet attributeset, int i)
{
super(context, attributeset, i);
mClickableItems = new HashSet();
mContentDescriptionDirty = true;
if(sNamePaint == null)
{
Resources resources = getContext().getResources();
sFontSpacing = resources.getDimension(R.dimen.stream_one_up_font_spacing);
sAvatarSize = resources.getDimensionPixelOffset(R.dimen.stream_one_up_avatar_size);
sMarginBottom = resources.getDimensionPixelOffset(R.dimen.stream_one_up_margin_bottom);
sMarginLeft = resources.getDimensionPixelOffset(R.dimen.stream_one_up_margin_left);
sMarginRight = resources.getDimensionPixelOffset(R.dimen.stream_one_up_margin_right);
sAvatarMarginTop = resources.getDimensionPixelOffset(R.dimen.stream_one_up_avatar_margin_top);
sAvatarMarginLeft = resources.getDimensionPixelOffset(R.dimen.stream_one_up_avatar_margin_left);
sAvatarMarginRight = resources.getDimensionPixelOffset(R.dimen.stream_one_up_avatar_margin_right);
sNameMarginTop = resources.getDimensionPixelOffset(R.dimen.stream_one_up_name_margin_top);
sCaptionMarginTop = resources.getDimensionPixelOffset(R.dimen.photo_one_up_caption_margin_top);
int j = resources.getDimensionPixelOffset(R.dimen.stream_one_up_plus_one_button_margin_right);
sPlusOneButtonMarginLeft = j;
sPlusOneButtonMarginRight = j;
sDefaultAvatarBitmap = EsAvatarData.getMediumDefaultAvatar(getContext(), true);
sAvatarOverlayBitmap = ImageUtils.decodeResource(resources, R.drawable.bg_taco_avatar);
TextPaint textpaint = new TextPaint();
sNamePaint = textpaint;
textpaint.setAntiAlias(true);
sNamePaint.setTypeface(Typeface.DEFAULT_BOLD);
sNamePaint.setColor(resources.getColor(R.color.stream_one_up_name));
sNamePaint.setTextSize(resources.getDimension(R.dimen.stream_one_up_name_text_size));
TextPaintUtils.registerTextPaint(sNamePaint, R.dimen.stream_one_up_name_text_size);
TextPaint textpaint1 = new TextPaint();
sDatePaint = textpaint1;
textpaint1.setAntiAlias(true);
sDatePaint.setColor(resources.getColor(R.color.stream_one_up_date));
sDatePaint.linkColor = resources.getColor(R.color.stream_one_up_link);
sDatePaint.setTextSize(resources.getDimension(R.dimen.stream_one_up_date_text_size));
TextPaintUtils.registerTextPaint(sDatePaint, R.dimen.stream_one_up_date_text_size);
TextPaint textpaint2 = new TextPaint();
sContentPaint = textpaint2;
textpaint2.setAntiAlias(true);
sContentPaint.setColor(resources.getColor(R.color.stream_one_up_content));
sContentPaint.linkColor = resources.getColor(R.color.stream_one_up_link);
sContentPaint.setTextSize(resources.getDimension(R.dimen.stream_one_up_content_text_size));
TextPaintUtils.registerTextPaint(sContentPaint, R.dimen.stream_one_up_content_text_size);
Paint paint = new Paint();
sBackgroundPaint = paint;
paint.setColor(resources.getColor(R.color.stream_one_up_list_background));
sBackgroundPaint.setStyle(android.graphics.Paint.Style.FILL);
Paint paint1 = new Paint();
sActionBarBackgroundPaint = paint1;
paint1.setColor(resources.getColor(R.color.stream_one_up_action_bar_background));
sActionBarBackgroundPaint.setStyle(android.graphics.Paint.Style.FILL);
sResizePaint = new Paint(2);
}
setupAccessibility(getContext());
}
private void setupAccessibility(Context context)
{
if(android.os.Build.VERSION.SDK_INT >= 16 && AccessibilityUtils.isAccessibilityEnabled(context) && mTouchExplorer == null)
{
mTouchExplorer = new OneUpActivityTouchExplorer(context);
mTouchExplorer.install(this);
}
}
private void updateAccessibility()
{
if(mTouchExplorer != null)
{
mTouchExplorer.invalidateItemCache();
mTouchExplorer.invalidateParent();
}
}
public final void bindResources()
{
if(ViewUtils.isViewAttached(this) && mAuthorImage != null)
mAuthorImage.bindResources();
}
public boolean dispatchTouchEvent(MotionEvent motionevent)
{
boolean flag = true;
int i = (int)motionevent.getX();
int j = (int)motionevent.getY();
switch(motionevent.getAction()) {
case 0:
Iterator iterator1 = mClickableItems.iterator();
do
{
ClickableItem clickableitem = null;
do
{
if(!iterator1.hasNext())
break;
clickableitem = (ClickableItem)iterator1.next();
} while(!clickableitem.handleEvent(i, j, 0));
mCurrentClickableItem = clickableitem;
invalidate();
} while(true);
case 1:
mCurrentClickableItem = null;
for(Iterator iterator = mClickableItems.iterator(); iterator.hasNext(); ((ClickableItem)iterator.next()).handleEvent(i, j, 1));
invalidate();
flag = false;
break;
case 2:
flag = false;
break;
case 3:
if(mCurrentClickableItem != null)
{
mCurrentClickableItem.handleEvent(i, j, 3);
mCurrentClickableItem = null;
invalidate();
} else
{
flag = false;
}
break;
default:
flag = false;
break;
}
return flag;
}
public void invalidate()
{
super.invalidate();
if(mContentDescriptionDirty)
{
if(android.os.Build.VERSION.SDK_INT < 16)
{
StringBuilder stringbuilder = new StringBuilder();
AccessibilityUtils.appendAndSeparateIfNotEmpty(stringbuilder, mOwnerName);
AccessibilityUtils.appendAndSeparateIfNotEmpty(stringbuilder, mDate);
AccessibilityUtils.appendAndSeparateIfNotEmpty(stringbuilder, mCaption);
if(mPlusOneData == null || !mPlusOneData.isPlusOnedByMe());
stringbuilder.append((String)null);
setContentDescription(stringbuilder.toString());
setFocusable(true);
}
mContentDescriptionDirty = false;
}
}
protected void onAttachedToWindow()
{
super.onAttachedToWindow();
bindResources();
updateAccessibility();
}
public final void onClickableButtonListenerClick(ClickableButton clickablebutton)
{
if(mOneUpListener != null && clickablebutton == mPlusOneButton)
{
mOneUpListener.onPlusOne(mAlbumId, mPlusOneData);
if(AccessibilityUtils.isAccessibilityEnabled(getContext()))
{
boolean flag;
int i;
AccessibilityEvent accessibilityevent;
if(mPlusOneData != null && mPlusOneData.isPlusOnedByMe())
flag = true;
else
flag = false;
if(flag)
i = R.string.plus_one_removed_confirmation;
else
i = R.string.plus_one_added_confirmation;
accessibilityevent = AccessibilityEvent.obtain(16384);
accessibilityevent.getText().add(getResources().getString(i));
onInitializeAccessibilityEvent(accessibilityevent);
accessibilityevent.setContentDescription(null);
getParent().requestSendAccessibilityEvent(this, accessibilityevent);
}
}
}
protected void onDetachedFromWindow()
{
super.onDetachedFromWindow();
unbindResources();
if(mTouchExplorer != null)
{
mTouchExplorer.uninstall();
mTouchExplorer = null;
}
}
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
canvas.drawRect(0.0F, mBackgroundOffset, getWidth(), getHeight(), sBackgroundPaint);
Bitmap bitmap;
int i;
int j;
if(mAuthorImage.getBitmap() != null)
bitmap = mAuthorImage.getBitmap();
else
bitmap = sDefaultAvatarBitmap;
canvas.drawBitmap(bitmap, null, mAuthorImage.getRect(), sResizePaint);
canvas.drawBitmap(sAvatarOverlayBitmap, null, mAuthorImage.getRect(), sResizePaint);
if(mAuthorImage.isClicked())
mAuthorImage.drawSelectionRect(canvas);
mPlusOneButton.draw(canvas);
if(mDateLayout != null)
{
int i1 = mDateLayout.getLeft();
int j1 = mDateLayout.getTop();
canvas.translate(i1, j1);
mDateLayout.draw(canvas);
canvas.translate(-i1, -j1);
}
i = mAuthorLayout.getLeft();
j = mAuthorLayout.getTop();
canvas.translate(i, j);
mAuthorLayout.draw(canvas);
canvas.translate(-i, -j);
if(mCaptionLayout != null)
{
int k = mCaptionLayout.getLeft();
int l = mCaptionLayout.getTop();
canvas.translate(k, l);
mCaptionLayout.draw(canvas);
canvas.translate(-k, -l);
}
updateAccessibility();
}
protected void onMeasure(int i, int j)
{
super.onMeasure(i, j);
int k = getPaddingLeft() + sMarginLeft;
int l = getPaddingTop() - sAvatarMarginTop;
int i1 = getMeasuredWidth();
int j1 = i1 - k - getPaddingRight() - sMarginRight;
mBackgroundOffset = l;
Context context = getContext();
int k1 = k + sAvatarMarginLeft;
int l1 = l + sAvatarMarginTop;
mAuthorImage.setRect(k1, l1, k1 + sAvatarSize, l1 + sAvatarSize);
boolean flag;
int i2;
Resources resources;
int j2;
Object aobj[];
String s;
int k2;
int l2;
TextPaint textpaint;
android.graphics.drawable.NinePatchDrawable ninepatchdrawable;
android.graphics.drawable.NinePatchDrawable ninepatchdrawable1;
int i3;
int j3;
int k3;
int l3;
int i4;
int j4;
int k4;
if(mPlusOneData != null && mPlusOneData.isPlusOnedByMe())
flag = true;
else
flag = false;
if(mPlusOneData == null)
i2 = 1;
else
i2 = mPlusOneData.getCount();
resources = getResources();
j2 = R.string.stream_plus_one_count_with_plus;
aobj = new Object[1];
aobj[0] = Integer.valueOf(Math.max(i2, 1));
s = resources.getString(j2, aobj);
k2 = (k + j1) - sPlusOneButtonMarginRight;
l2 = l + sNameMarginTop;
mClickableItems.remove(mPlusOneButton);
if(flag)
textpaint = PlusBarUtils.sPlusOnedTextPaint;
else
textpaint = PlusBarUtils.sNotPlusOnedTextPaint;
if(flag)
ninepatchdrawable = PlusBarUtils.sPlusOnedDrawable;
else
ninepatchdrawable = PlusBarUtils.sButtonDrawable;
if(flag)
ninepatchdrawable1 = PlusBarUtils.sPlusOnedPressedDrawable;
else
ninepatchdrawable1 = PlusBarUtils.sButtonPressedDrawable;
mPlusOneButton = new ClickableButton(context, s, textpaint, ninepatchdrawable, ninepatchdrawable1, this, 0, 0);
i3 = k2 - mPlusOneButton.getRect().width();
mPlusOneButton.getRect().offsetTo(i3, l2);
mClickableItems.add(mPlusOneButton);
j3 = k + sAvatarMarginLeft + sAvatarSize + sAvatarMarginRight;
k3 = l + sNameMarginTop;
l3 = j1 - j3 - mPlusOneButton.getRect().width() - sPlusOneButtonMarginLeft;
mAuthorLayout = new PositionedStaticLayout(TextUtils.ellipsize(mOwnerName, sNamePaint, l3, android.text.TextUtils.TruncateAt.END), sNamePaint, l3, android.text.Layout.Alignment.ALIGN_NORMAL, sFontSpacing, 0.0F, false);
mAuthorLayout.setPosition(j3, k3);
i4 = k3 + mAuthorLayout.getHeight();
mClickableItems.remove(mDateLayout);
if(mDate != null)
{
java.util.Locale locale = getContext().getResources().getConfiguration().locale;
SpannableStringBuilder spannablestringbuilder = new SpannableStringBuilder(mDate.toUpperCase(locale));
spannablestringbuilder.append(" ");
mDateLayout = new ClickableStaticLayout(spannablestringbuilder, sDatePaint, l3, android.text.Layout.Alignment.ALIGN_NORMAL, sFontSpacing, 0.0F, false, null);
mDateLayout.setPosition(j3, i4);
mClickableItems.add(mDateLayout);
j4 = i4 + mDateLayout.getHeight();
} else
{
j4 = i4;
}
k4 = Math.max(sAvatarSize, j4 - l);
if(!TextUtils.isEmpty(mCaption))
{
int l4 = k4 + sCaptionMarginTop;
mClickableItems.remove(mCaptionLayout);
mCaptionLayout = new ClickableStaticLayout(mCaption, sContentPaint, j1, android.text.Layout.Alignment.ALIGN_NORMAL, sFontSpacing, 0.0F, false, mOneUpListener);
mCaptionLayout.setPosition(k, l4);
mClickableItems.add(mCaptionLayout);
k4 = mCaptionLayout.getBottom();
}
setMeasuredDimension(i1, k4 + sMarginBottom + getPaddingBottom());
if(mOnMeasuredListener != null)
mOnMeasuredListener.onMeasured(this);
if(mTouchExplorer != null)
mTouchExplorer.invalidateItemCache();
}
public void onRecycle()
{
unbindResources();
mAuthorLayout = null;
mDateLayout = null;
mCaptionLayout = null;
mAuthorImage = null;
mClickableItems.clear();
mCurrentClickableItem = null;
mPlusOneData = null;
mCaption = null;
mOneUpListener = null;
}
public final void onResourceStatusChange(Resource resource)
{
}
public void setAlbum(String s)
{
mAlbumId = s;
}
public void setCaption(String s)
{
mCaption = null;
if(!TextUtils.isEmpty(s))
mCaption = ClickableStaticLayout.buildStateSpans(s);
mContentDescriptionDirty = true;
}
public void setDate(long l)
{
mDate = Dates.getAbbreviatedRelativeTimeSpanString(getContext(), l).toString();
mContentDescriptionDirty = true;
}
public void setOneUpClickListener(OneUpListener oneuplistener)
{
mOneUpListener = oneuplistener;
}
public void setOwner(String s, String s1, String s2)
{
if(!TextUtils.equals(mOwnerId, s))
{
unbindResources();
mOwnerId = s;
mOwnerName = s1;
if(mOwnerName == null)
{
mOwnerName = "";
Log.w("PhotoOneUp", (new StringBuilder("===> Author name was null for gaia id: ")).append(s).toString());
}
if(mAuthorImage != null)
mClickableItems.remove(mAuthorImage);
mAuthorImage = new ClickableAvatar(this, mOwnerId, s2, mOwnerName, mOneUpListener, 2);
mClickableItems.add(mAuthorImage);
mContentDescriptionDirty = true;
bindResources();
}
}
public void setPlusOne(byte abyte0[])
{
mPlusOneData = null;
if(abyte0 != null)
{
DataPlusOne dataplusone = (DataPlusOne)JsonUtil.fromByteArray(abyte0, DataPlusOne.class);
if(dataplusone.globalCount != null && dataplusone.isPlusonedByViewer != null)
mPlusOneData = new DbPlusOneData(null, dataplusone.globalCount.intValue(), dataplusone.isPlusonedByViewer.booleanValue());
}
mContentDescriptionDirty = true;
}
public final void unbindResources()
{
if(mAuthorImage != null)
mAuthorImage.unbindResources();
}
private final class OneUpActivityTouchExplorer extends TouchExplorationHelper
{
private void refreshItemCache()
{
if(mIsItemCacheStale)
{
mItemCache.clear();
mItemCache.addAll(mClickableItems);
Collections.sort(mItemCache, ClickableItem.sComparator);
mIsItemCacheStale = false;
}
}
protected final int getIdForItem(Object obj)
{
ClickableItem clickableitem = (ClickableItem)obj;
refreshItemCache();
return mItemCache.indexOf(clickableitem);
}
protected final Object getItemAt(float f, float f1)
{
refreshItemCache();
ClickableItem clickableitem;
int size = mItemCache.size();
for(int j = 0; j < size; j++) {
clickableitem = (ClickableItem)mItemCache.get(j);
if(clickableitem.getRect().contains((int)f, (int)f1))
return clickableitem;
}
return null;
}
protected final Object getItemForId(int i)
{
ClickableItem clickableitem;
if(i >= 0 && i < mItemCache.size())
{
refreshDrawableState();
clickableitem = (ClickableItem)mItemCache.get(i);
} else
{
clickableitem = null;
}
return clickableitem;
}
protected final void getVisibleItems(List list)
{
refreshItemCache();
int i = 0;
for(int j = mItemCache.size(); i < j; i++)
list.add((ClickableItem)mItemCache.get(i));
}
public final void invalidateItemCache()
{
mIsItemCacheStale = true;
}
protected final boolean performActionForItem(Object obj, int i, Bundle bundle)
{
boolean flag = true;
ClickableItem clickableitem = (ClickableItem)obj;
if(i == 16)
{
clickableitem.handleEvent(clickableitem.getRect().centerX(), clickableitem.getRect().centerY(), 0);
clickableitem.handleEvent(clickableitem.getRect().centerX(), clickableitem.getRect().centerY(), 1);
} else
{
flag = false;
}
return flag;
}
protected final void populateEventForItem(Object obj, AccessibilityEvent accessibilityevent)
{
accessibilityevent.setContentDescription(((ClickableItem)obj).getContentDescription());
}
protected final void populateNodeForItem(Object obj, AccessibilityNodeInfoCompat accessibilitynodeinfocompat)
{
ClickableItem clickableitem = (ClickableItem)obj;
accessibilitynodeinfocompat.setBoundsInParent(clickableitem.getRect());
accessibilitynodeinfocompat.addAction(16);
accessibilitynodeinfocompat.setText(clickableitem.getContentDescription());
}
private boolean mIsItemCacheStale;
private ArrayList mItemCache;
public OneUpActivityTouchExplorer(Context context)
{
super(context);
mIsItemCacheStale = true;
mItemCache = new ArrayList(mClickableItems.size());
}
}
}