fixed activities by friends summary view

This commit is contained in:
Mariotaku Lee 2015-10-06 22:36:57 +08:00
parent 3ef40e2e53
commit 42b63fa405
5 changed files with 73 additions and 14 deletions

View File

@ -34,9 +34,11 @@ import java.util.List;
public class ParcelableActivitiesAdapter extends AbsActivitiesAdapter<List<ParcelableActivity>> {
private List<ParcelableActivity> mData;
private final boolean mIsByFriends;
public ParcelableActivitiesAdapter(Context context, boolean compact) {
public ParcelableActivitiesAdapter(Context context, boolean compact, boolean byFriends) {
super(context, compact);
mIsByFriends = byFriends;
}
@Override
@ -80,7 +82,11 @@ public class ParcelableActivitiesAdapter extends AbsActivitiesAdapter<List<Parce
@Override
protected void bindTitleSummaryViewHolder(ActivityTitleSummaryViewHolder holder, int position) {
holder.displayActivity(getActivity(position));
if (mIsByFriends) {
holder.displayActivitiesByFriends(getActivity(position));
} else {
holder.displayActivityAboutMe(getActivity(position));
}
}
@Override

View File

@ -42,6 +42,11 @@ public class ActivitiesAboutMeFragment extends ParcelableActivitiesFragment {
getSavedActivitiesFileArgs(), getTabPosition());
}
@Override
protected boolean isByFriends() {
return false;
}
@Override
protected String[] getSavedActivitiesFileArgs() {
final Bundle args = getArguments();

View File

@ -43,6 +43,11 @@ public class ActivitiesByFriendsFragment extends ParcelableActivitiesFragment {
getSavedActivitiesFileArgs(), getTabPosition());
}
@Override
protected boolean isByFriends() {
return true;
}
@Override
protected String[] getSavedActivitiesFileArgs() {
final Bundle args = getArguments();

View File

@ -95,9 +95,11 @@ public abstract class ParcelableActivitiesFragment extends AbsActivitiesFragment
@NonNull
@Override
protected ParcelableActivitiesAdapter onCreateAdapter(final Context context, final boolean compact) {
return new ParcelableActivitiesAdapter(context, compact);
return new ParcelableActivitiesAdapter(context, compact, isByFriends());
}
protected abstract boolean isByFriends();
protected long getAccountId() {
final Bundle args = getArguments();
return args != null ? args.getLong(EXTRA_ACCOUNT_ID, -1) : -1;

View File

@ -24,6 +24,7 @@ import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.PorterDuff.Mode;
import android.graphics.Typeface;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.RecyclerView.ViewHolder;
import android.text.SpannableString;
import android.text.Spanned;
@ -37,6 +38,7 @@ import org.mariotaku.twidere.R;
import org.mariotaku.twidere.adapter.AbsActivitiesAdapter;
import org.mariotaku.twidere.api.twitter.model.Activity;
import org.mariotaku.twidere.model.ParcelableActivity;
import org.mariotaku.twidere.model.ParcelableStatus;
import org.mariotaku.twidere.model.ParcelableUser;
import org.mariotaku.twidere.util.MediaLoaderWrapper;
import org.mariotaku.twidere.util.UserColorNameManager;
@ -73,13 +75,13 @@ public class ActivityTitleSummaryViewHolder extends ViewHolder {
profileImageMoreNumber = (TextView) itemView.findViewById(R.id.activity_profile_image_more_number);
}
public void displayActivity(ParcelableActivity activity) {
public void displayActivityAboutMe(ParcelableActivity activity) {
final Context context = adapter.getContext();
final Resources resources = adapter.getContext().getResources();
switch (activity.action) {
case Activity.ACTION_FOLLOW: {
activityTypeView.setImageResource(R.drawable.ic_activity_action_follow);
activityTypeView.setColorFilter(resources.getColor(R.color.highlight_follow), Mode.SRC_ATOP);
activityTypeView.setColorFilter(ContextCompat.getColor(context, R.color.highlight_follow), Mode.SRC_ATOP);
titleView.setText(getTitleStringAboutMe(R.string.activity_about_me_follow,
R.string.activity_about_me_follow_multi, activity.sources));
displayUserProfileImages(activity.sources);
@ -88,7 +90,7 @@ public class ActivityTitleSummaryViewHolder extends ViewHolder {
}
case Activity.ACTION_FAVORITE: {
activityTypeView.setImageResource(R.drawable.ic_activity_action_favorite);
activityTypeView.setColorFilter(resources.getColor(R.color.highlight_favorite), Mode.SRC_ATOP);
activityTypeView.setColorFilter(ContextCompat.getColor(context, R.color.highlight_favorite), Mode.SRC_ATOP);
titleView.setText(getTitleStringAboutMe(R.string.activity_about_me_favorite,
R.string.activity_about_me_favorite_multi, activity.sources));
displayUserProfileImages(activity.sources);
@ -98,7 +100,7 @@ public class ActivityTitleSummaryViewHolder extends ViewHolder {
}
case Activity.ACTION_RETWEET: {
activityTypeView.setImageResource(R.drawable.ic_activity_action_retweet);
activityTypeView.setColorFilter(resources.getColor(R.color.highlight_retweet), Mode.SRC_ATOP);
activityTypeView.setColorFilter(ContextCompat.getColor(context, R.color.highlight_retweet), Mode.SRC_ATOP);
titleView.setText(getTitleStringAboutMe(R.string.activity_about_me_retweet,
R.string.activity_about_me_retweet_multi, activity.sources));
displayUserProfileImages(activity.sources);
@ -108,7 +110,7 @@ public class ActivityTitleSummaryViewHolder extends ViewHolder {
}
case Activity.ACTION_FAVORITED_RETWEET: {
activityTypeView.setImageResource(R.drawable.ic_activity_action_favorite);
activityTypeView.setColorFilter(resources.getColor(R.color.highlight_favorite), Mode.SRC_ATOP);
activityTypeView.setColorFilter(ContextCompat.getColor(context, R.color.highlight_favorite), Mode.SRC_ATOP);
titleView.setText(getTitleStringAboutMe(R.string.activity_about_me_favorited_retweet,
R.string.activity_about_me_favorited_retweet_multi, activity.sources));
displayUserProfileImages(activity.sources);
@ -118,7 +120,7 @@ public class ActivityTitleSummaryViewHolder extends ViewHolder {
}
case Activity.ACTION_RETWEETED_RETWEET: {
activityTypeView.setImageResource(R.drawable.ic_activity_action_retweet);
activityTypeView.setColorFilter(resources.getColor(R.color.highlight_retweet), Mode.SRC_ATOP);
activityTypeView.setColorFilter(ContextCompat.getColor(context, R.color.highlight_retweet), Mode.SRC_ATOP);
titleView.setText(getTitleStringAboutMe(R.string.activity_about_me_retweeted_retweet,
R.string.activity_about_me_retweeted_retweet_multi, activity.sources));
displayUserProfileImages(activity.sources);
@ -128,7 +130,7 @@ public class ActivityTitleSummaryViewHolder extends ViewHolder {
}
case Activity.ACTION_RETWEETED_MENTION: {
activityTypeView.setImageResource(R.drawable.ic_activity_action_retweet);
activityTypeView.setColorFilter(resources.getColor(R.color.highlight_retweet), Mode.SRC_ATOP);
activityTypeView.setColorFilter(ContextCompat.getColor(context, R.color.highlight_retweet), Mode.SRC_ATOP);
titleView.setText(getTitleStringAboutMe(R.string.activity_about_me_retweeted_mention,
R.string.activity_about_me_retweeted_mention_multi, activity.sources));
displayUserProfileImages(activity.sources);
@ -138,7 +140,7 @@ public class ActivityTitleSummaryViewHolder extends ViewHolder {
}
case Activity.ACTION_FAVORITED_MENTION: {
activityTypeView.setImageResource(R.drawable.ic_activity_action_favorite);
activityTypeView.setColorFilter(resources.getColor(R.color.highlight_favorite), Mode.SRC_ATOP);
activityTypeView.setColorFilter(ContextCompat.getColor(context, R.color.highlight_favorite), Mode.SRC_ATOP);
titleView.setText(getTitleStringAboutMe(R.string.activity_about_me_favorited_mention,
R.string.activity_about_me_favorited_mention_multi, activity.sources));
displayUserProfileImages(activity.sources);
@ -172,6 +174,37 @@ public class ActivityTitleSummaryViewHolder extends ViewHolder {
}
}
public void displayActivitiesByFriends(ParcelableActivity activity) {
final Context context = adapter.getContext();
final Resources resources = adapter.getContext().getResources();
switch (activity.action) {
case Activity.ACTION_FOLLOW: {
activityTypeView.setImageResource(R.drawable.ic_activity_action_follow);
activityTypeView.setColorFilter(ContextCompat.getColor(context, R.color.highlight_follow), Mode.SRC_ATOP);
titleView.setText(getTitleStringByFriends(R.string.activity_by_friends_follow,
R.string.activity_by_friends_follow_multi, activity.sources, activity.target_users));
displayUserProfileImages(activity.sources);
summaryView.setVisibility(View.GONE);
break;
}
case Activity.ACTION_FAVORITE: {
activityTypeView.setImageResource(R.drawable.ic_activity_action_favorite);
activityTypeView.setColorFilter(ContextCompat.getColor(context, R.color.highlight_favorite), Mode.SRC_ATOP);
titleView.setText(getTitleStringByFriends(R.string.activity_by_friends_favorite,
R.string.activity_by_friends_favorite_multi, activity.sources, activity.target_statuses));
displayUserProfileImages(activity.sources);
summaryView.setText(activity.target_statuses[0].text_unescaped);
summaryView.setVisibility(View.VISIBLE);
break;
}
default: {
activityTypeView.setImageDrawable(null);
activityTypeView.clearColorFilter();
break;
}
}
}
public void setTextSize(float textSize) {
titleView.setTextSize(textSize);
summaryView.setTextSize(textSize * 0.85f);
@ -240,7 +273,7 @@ public class ActivityTitleSummaryViewHolder extends ViewHolder {
}
}
private Spanned getTitleStringByFriends(int stringRes, int stringResMulti, ParcelableUser[] sources, ParcelableUser[] targets) {
private Spanned getTitleStringByFriends(int stringRes, int stringResMulti, ParcelableUser[] sources, Object[] targets) {
if (sources == null || sources.length == 0) return null;
final Context context = adapter.getContext();
final Resources resources = context.getResources();
@ -250,8 +283,16 @@ public class ActivityTitleSummaryViewHolder extends ViewHolder {
final SpannableString firstSourceName = new SpannableString(manager.getDisplayName(
sources[0], nameFirst, false));
firstSourceName.setSpan(new StyleSpan(Typeface.BOLD), 0, firstSourceName.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
final SpannableString firstTargetName = new SpannableString(manager.getDisplayName(
targets[0], nameFirst, false));
final String displayName;
final Object target = targets[0];
if (target instanceof ParcelableUser) {
displayName = manager.getDisplayName((ParcelableUser) target, nameFirst, false);
} else if (target instanceof ParcelableStatus) {
displayName = manager.getDisplayName((ParcelableStatus) target, nameFirst, false);
} else {
throw new IllegalArgumentException();
}
final SpannableString firstTargetName = new SpannableString(displayName);
firstTargetName.setSpan(new StyleSpan(Typeface.BOLD), 0, firstTargetName.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
if (sources.length == 1) {
final String format = context.getString(stringRes);