added activity actions

This commit is contained in:
Mariotaku Lee 2015-09-02 19:44:57 +08:00
parent d263048a67
commit 0870731d28
7 changed files with 98 additions and 40 deletions

View File

@ -33,6 +33,8 @@ public interface Activity extends TwitterResponse, Comparable<Activity> {
int ACTION_FAVORITED_RETWEET = 0x08;
int ACTION_RETWEETED_RETWEET = 0x09;
int ACTION_QUOTE = 0x0A;
int ACTION_RETWEETED_MENTION = 0x0B;
int ACTION_FAVORITED_MENTION = 0x0C;
Action getAction();
@ -66,7 +68,9 @@ public interface Activity extends TwitterResponse, Comparable<Activity> {
enum Action {
FAVORITE(ACTION_FAVORITE), FOLLOW(ACTION_FOLLOW), MENTION(ACTION_MENTION), REPLY(ACTION_REPLY),
RETWEET(ACTION_RETWEET), LIST_MEMBER_ADDED(ACTION_LIST_MEMBER_ADDED), LIST_CREATED(ACTION_LIST_CREATED),
FAVORITED_RETWEET(ACTION_FAVORITED_RETWEET), RETWEETED_RETWEET(ACTION_RETWEETED_RETWEET), QUOTE(ACTION_QUOTE);
FAVORITED_RETWEET(ACTION_FAVORITED_RETWEET), RETWEETED_RETWEET(ACTION_RETWEETED_RETWEET),
QUOTE(ACTION_QUOTE), RETWEETED_MENTION(ACTION_RETWEETED_MENTION),
FAVORITED_MENTION(ACTION_FAVORITED_MENTION);
private final int actionId;
@ -74,10 +78,6 @@ public interface Activity extends TwitterResponse, Comparable<Activity> {
actionId = action;
}
public int getActionId() {
return actionId;
}
public static Action parse(final String string) {
if ("favorite".equalsIgnoreCase(string)) return FAVORITE;
if ("follow".equalsIgnoreCase(string)) return FOLLOW;
@ -89,7 +89,13 @@ public interface Activity extends TwitterResponse, Comparable<Activity> {
if ("favorited_retweet".equalsIgnoreCase(string)) return FAVORITED_RETWEET;
if ("retweeted_retweet".equalsIgnoreCase(string)) return RETWEETED_RETWEET;
if ("quote".equalsIgnoreCase(string)) return QUOTE;
if ("retweeted_mention".equalsIgnoreCase(string)) return RETWEETED_MENTION;
if ("favorited_mention".equalsIgnoreCase(string)) return FAVORITED_MENTION;
throw new IllegalArgumentException("Unknown action " + string);
}
public int getActionId() {
return actionId;
}
}
}

View File

@ -41,6 +41,18 @@ import java.util.Locale;
public class ActivityImpl extends TwitterResponseImpl implements Activity {
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
private Action action;
private Date createdAt;
private User[] sources;
private User[] targetUsers;
private User[] targetObjectUsers;
private Status[] targetObjectStatuses, targetStatuses;
private UserList[] targetUserLists, targetObjectUserLists;
private long maxPosition, minPosition;
private int targetObjectsSize, targetsSize, sourcesSize;
public static final JsonMapper<Activity> MAPPER = new JsonMapper<Activity>() {
@SuppressWarnings("TryWithIdenticalCatches")
@Override
@ -90,51 +102,65 @@ public class ActivityImpl extends TwitterResponseImpl implements Activity {
instance.sources = LoganSquare.mapperFor(User.class).parseList(jsonParser).toArray(new User[instance.sourcesSize]);
} else if ("targets".equals(fieldName)) {
if (instance.action == null) throw new IOException();
if (instance.action == Action.FOLLOW || instance.action == Action.MENTION || instance.action == Action.LIST_MEMBER_ADDED) {
instance.targetUsers = LoganSquare.mapperFor(User.class).parseList(jsonParser).toArray(new User[instance.targetsSize]);
} else if (instance.action == Action.LIST_CREATED) {
instance.targetUserLists = LoganSquare.mapperFor(UserList.class).parseList(jsonParser).toArray(new UserList[instance.targetsSize]);
} else {
instance.targetStatuses = LoganSquare.mapperFor(Status.class).parseList(jsonParser).toArray(new Status[instance.targetsSize]);
switch (instance.action) {
case FAVORITE:
case REPLY:
case RETWEET:
case QUOTE:
case FAVORITED_RETWEET:
case RETWEETED_RETWEET:
case RETWEETED_MENTION:
case FAVORITED_MENTION: {
instance.targetStatuses = LoganSquare.mapperFor(Status.class).parseList(jsonParser).toArray(new Status[instance.targetsSize]);
break;
}
case FOLLOW:
case MENTION:
case LIST_MEMBER_ADDED: {
instance.targetUsers = LoganSquare.mapperFor(User.class).parseList(jsonParser).toArray(new User[instance.targetsSize]);
break;
}
case LIST_CREATED: {
instance.targetUserLists = LoganSquare.mapperFor(UserList.class).parseList(jsonParser).toArray(new UserList[instance.targetsSize]);
break;
}
}
} else if ("target_objects".equals(fieldName)) {
if (instance.action == null) throw new IOException();
if (instance.action == Action.LIST_MEMBER_ADDED) {
instance.targetObjectUserLists = LoganSquare.mapperFor(UserList.class).parseList(jsonParser).toArray(new UserList[instance.targetObjectsSize]);
} else if (instance.action == Action.RETWEETED_RETWEET) {
instance.targetObjectUsers = LoganSquare.mapperFor(User.class).parseList(jsonParser).toArray(new User[instance.targetObjectsSize]);
} else {
instance.targetObjectStatuses = LoganSquare.mapperFor(Status.class).parseList(jsonParser).toArray(new Status[instance.targetObjectsSize]);
switch (instance.action) {
case FAVORITE:
case FOLLOW:
case MENTION:
case REPLY:
case RETWEET:
case LIST_CREATED:
case QUOTE: {
instance.targetObjectStatuses = LoganSquare.mapperFor(Status.class).parseList(jsonParser).toArray(new Status[instance.targetObjectsSize]);
break;
}
case LIST_MEMBER_ADDED: {
instance.targetObjectUserLists = LoganSquare.mapperFor(UserList.class).parseList(jsonParser).toArray(new UserList[instance.targetObjectsSize]);
break;
}
case FAVORITED_RETWEET:
case RETWEETED_RETWEET:
case RETWEETED_MENTION:
case FAVORITED_MENTION: {
instance.targetObjectUsers = LoganSquare.mapperFor(User.class).parseList(jsonParser).toArray(new User[instance.targetObjectsSize]);
}
}
}
}
};
private Action action;
private Date createdAt;
private User[] sources;
private User[] targetUsers;
ActivityImpl() {
}
@Override
public User[] getTargetObjectUsers() {
return targetObjectUsers;
}
private User[] targetObjectUsers;
private Status[] targetObjectStatuses, targetStatuses;
private UserList[] targetUserLists, targetObjectUserLists;
private long maxPosition, minPosition;
private int targetObjectsSize, targetsSize, sourcesSize;
ActivityImpl() {
}
@Override
public int compareTo(@NonNull final Activity another) {
final Date thisDate = getCreatedAt(), thatDate = another.getCreatedAt();
@ -226,6 +252,4 @@ public class ActivityImpl extends TwitterResponseImpl implements Activity {
'}';
}
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
}

View File

@ -309,6 +309,8 @@ public abstract class AbsActivitiesAdapter<Data> extends LoadMoreSupportAdapter<
case Activity.ACTION_RETWEET:
case Activity.ACTION_FAVORITED_RETWEET:
case Activity.ACTION_RETWEETED_RETWEET:
case Activity.ACTION_RETWEETED_MENTION:
case Activity.ACTION_FAVORITED_MENTION:
case Activity.ACTION_LIST_MEMBER_ADDED: {
return ITEM_VIEW_TYPE_TITLE_SUMMARY;
}

View File

@ -126,6 +126,26 @@ public class ActivityTitleSummaryViewHolder extends ViewHolder {
summaryView.setVisibility(View.VISIBLE);
break;
}
case Activity.ACTION_RETWEETED_MENTION: {
activityTypeView.setImageResource(R.drawable.ic_activity_action_retweet);
activityTypeView.setColorFilter(resources.getColor(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);
summaryView.setText(activity.target_statuses[0].text_unescaped);
summaryView.setVisibility(View.VISIBLE);
break;
}
case Activity.ACTION_FAVORITED_MENTION: {
activityTypeView.setImageResource(R.drawable.ic_activity_action_favorite);
activityTypeView.setColorFilter(resources.getColor(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);
summaryView.setText(activity.target_statuses[0].text_unescaped);
summaryView.setVisibility(View.VISIBLE);
break;
}
case Activity.ACTION_LIST_MEMBER_ADDED: {
activityTypeView.setImageResource(R.drawable.ic_activity_action_list_added);
activityTypeView.setColorFilter(activityTypeView.getDefaultColor(), Mode.SRC_ATOP);

View File

@ -231,6 +231,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/quoted_text"
android:layout_marginBottom="@dimen/element_spacing_normal"
android:layout_marginTop="@dimen/element_spacing_normal"
android:layout_toEndOf="@+id/quote_indicator"
android:layout_toRightOf="@+id/quote_indicator"
@ -248,7 +249,7 @@
android:layout_alignLeft="@+id/profile_container"
android:layout_alignStart="@+id/profile_container"
android:layout_below="@+id/media_preview"
android:layout_marginTop="@dimen/element_spacing_minus_small"
android:layout_marginTop="@dimen/element_spacing_minus_msmall"
android:gravity="center_vertical|start"
android:orientation="horizontal">

View File

@ -207,6 +207,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/quoted_text"
android:layout_marginBottom="@dimen/element_spacing_msmall"
android:layout_marginTop="@dimen/element_spacing_small"
android:layout_toEndOf="@+id/quote_indicator"
android:layout_toRightOf="@+id/quote_indicator"
@ -226,7 +227,7 @@
android:layout_alignLeft="@id/status_content"
android:layout_alignStart="@id/status_content"
android:layout_below="@+id/status_content"
android:layout_marginTop="@dimen/element_spacing_minus_mlarge"
android:layout_marginTop="@dimen/element_spacing_minus_normal"
android:layout_toLeftOf="@+id/item_menu"
android:layout_toStartOf="@+id/item_menu"
android:gravity="center_vertical|start"

View File

@ -278,6 +278,10 @@
<string name="activity_about_me_retweet_multi"><xliff:g id="user">%1$s</xliff:g> and <xliff:g id="other">%2$s</xliff:g> retweeted your tweet.</string>
<string name="activity_about_me_retweeted_retweet"><xliff:g id="user">%s</xliff:g> retweeted your retweet.</string>
<string name="activity_about_me_retweeted_retweet_multi"><xliff:g id="user">%1$s</xliff:g> and <xliff:g id="other">%2$s</xliff:g> retweeted your retweet.</string>
<string name="activity_about_me_retweeted_mention"><xliff:g id="user">%s</xliff:g> retweeted a tweet mentioned you.</string>
<string name="activity_about_me_retweeted_mention_multi"><xliff:g id="user">%s</xliff:g> and <xliff:g id="other">%2$s</xliff:g> retweeted a tweet mentioned you.</string>
<string name="activity_about_me_favorited_mention"><xliff:g id="user">%s</xliff:g> favorited a tweet mentioned you.</string>
<string name="activity_about_me_favorited_mention_multi"><xliff:g id="user">%s</xliff:g> and <xliff:g id="other">%2$s</xliff:g> favorited a tweet mentioned you.</string>
<string name="activity_about_me_list_member_added"><xliff:g id="user">%s</xliff:g> added you to list.</string>
<string name="activity_about_me_list_member_added_with_name"><xliff:g id="user">%1$s</xliff:g> added you to list <xliff:g id="list">%2$s</xliff:g>".</string>
<string name="activity_about_me_list_member_added_multi"><xliff:g id="user">%1$s</xliff:g> and <xliff:g id="other">%2$s</xliff:g> added you to their lists.</string>