/** * */ package com.gmail.charleszq.picorner.ui.command.px500; import java.lang.ref.WeakReference; import java.util.Comparator; import android.content.Context; import android.view.View; import com.gmail.charleszq.picorner.R; import com.gmail.charleszq.picorner.SPUtil; import com.gmail.charleszq.picorner.model.Author; import com.gmail.charleszq.picorner.service.IPhotoService; import com.gmail.charleszq.picorner.service.px500.PxUserPhotosService; import com.gmail.charleszq.picorner.task.AbstractFetchIconUrlTask; import com.gmail.charleszq.picorner.ui.helper.IHiddenView; import com.gmail.charleszq.picorner.ui.px500.Px500FriendsView; /** * @author charles(charleszq@gmail.com) * */ public class Px500FriendPhotosCommand extends AbstractPx500PhotoListCommand { private Author mFriend; private IHiddenView mHiddenView; /** * @param context */ public Px500FriendPhotosCommand(Context context) { super(context); } /* * (non-Javadoc) * * @see com.gmail.charleszq.picorner.ui.command.ICommand#getIconResourceId() */ @Override public int getIconResourceId() { return R.drawable.ic_action_contacts; } /* * (non-Javadoc) * * @see com.gmail.charleszq.picorner.ui.command.ICommand#getLabel() */ @Override public String getLabel() { return mContext.getString(R.string.menu_header_px500); } @Override public boolean execute(Object... params) { //when category changes, there is no params passed in if (params.length > 0) mFriend = (Author) params[0]; return super.execute(); } @Override public String getDescription() { String msg = mContext.getString(R.string.cd_500px_user_photos); return String.format( msg, mFriend.getUserName() == null ? String.valueOf(mFriend .getUserId()) : mFriend.getUserName()); } @Override public Object getAdapter(Class<?> adapterClass) { if (adapterClass == IHiddenView.class) { if (mHiddenView == null) { mHiddenView = new Px500FriendsView(); } return mHiddenView; } if (adapterClass == IPhotoService.class) { mCurrentPhotoService = new PxUserPhotosService( SPUtil.getPx500OauthToken(mContext), SPUtil.getPx500OauthTokenSecret(mContext), mFriend.getUserId()); ((PxUserPhotosService) mCurrentPhotoService) .setPhotoCategory(mPhotoCategory); return mCurrentPhotoService; } if (adapterClass == AbstractFetchIconUrlTask.class) { // this task is a little special, since we don't know the friend at // this time AbstractFetchIconUrlTask task = new AbstractFetchIconUrlTask( mContext) { @Override protected String doInBackground(Object... params) { Author a = (Author) params[0]; mIconViewRef = new WeakReference<View>((View) params[1]); return a.getBuddyIconUrl(); } }; return task; } if (adapterClass == Comparator.class) { return this.mFriend.getUserId() + mPhotoCategory.toString(); } return super.getAdapter(adapterClass); } }