mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2025-01-26 01:34:45 +01:00
Fixed voting state inconsistency after orientation change in ViewPostDetailActivity. Fixed title could not be shown properly in CollapsingToolbarLayout in ViewSubredditDetailActivity and ViewUserDetailActivity.
This commit is contained in:
parent
cd4730c649
commit
d8ddad9522
@ -1,349 +0,0 @@
|
|||||||
package ml.docilealligator.infinityforreddit;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.graphics.ColorFilter;
|
|
||||||
import android.net.Uri;
|
|
||||||
import android.view.LayoutInflater;
|
|
||||||
import android.view.View;
|
|
||||||
import android.view.ViewGroup;
|
|
||||||
import android.widget.ImageView;
|
|
||||||
import android.widget.ProgressBar;
|
|
||||||
import android.widget.TextView;
|
|
||||||
import android.widget.Toast;
|
|
||||||
|
|
||||||
import com.multilevelview.models.RecyclerViewItem;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Locale;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.browser.customtabs.CustomTabsIntent;
|
|
||||||
import androidx.core.content.ContextCompat;
|
|
||||||
import androidx.paging.PagedListAdapter;
|
|
||||||
import androidx.recyclerview.widget.DiffUtil;
|
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
|
||||||
import butterknife.BindView;
|
|
||||||
import butterknife.ButterKnife;
|
|
||||||
import retrofit2.Retrofit;
|
|
||||||
import ru.noties.markwon.SpannableConfiguration;
|
|
||||||
import ru.noties.markwon.view.MarkwonView;
|
|
||||||
|
|
||||||
public class CommentAdapter extends PagedListAdapter<CommentData, RecyclerView.ViewHolder> {
|
|
||||||
private Context mContext;
|
|
||||||
private Retrofit mRetrofit;
|
|
||||||
private Retrofit mOauthRetrofit;
|
|
||||||
private SharedPreferences mSharedPreferences;
|
|
||||||
private RecyclerView mRecyclerView;
|
|
||||||
private String subredditNamePrefixed;
|
|
||||||
private String article;
|
|
||||||
private Locale locale;
|
|
||||||
|
|
||||||
private NetworkState networkState;
|
|
||||||
private RetryLoadingMoreCallback retryLoadingMoreCallback;
|
|
||||||
|
|
||||||
interface RetryLoadingMoreCallback {
|
|
||||||
void retryLoadingMore();
|
|
||||||
}
|
|
||||||
|
|
||||||
CommentAdapter(Context context, Retrofit retrofit, Retrofit oauthRetrofit,
|
|
||||||
SharedPreferences sharedPreferences, RecyclerView recyclerView,
|
|
||||||
String subredditNamePrefixed, String article, Locale locale) {
|
|
||||||
super(DIFF_CALLBACK);
|
|
||||||
mContext = context;
|
|
||||||
mRetrofit = retrofit;
|
|
||||||
mOauthRetrofit = oauthRetrofit;
|
|
||||||
mSharedPreferences = sharedPreferences;
|
|
||||||
mRecyclerView = recyclerView;
|
|
||||||
this.subredditNamePrefixed = subredditNamePrefixed;
|
|
||||||
this.article = article;
|
|
||||||
this.locale = locale;
|
|
||||||
}
|
|
||||||
|
|
||||||
static final DiffUtil.ItemCallback<CommentData> DIFF_CALLBACK = new DiffUtil.ItemCallback<CommentData>() {
|
|
||||||
@Override
|
|
||||||
public boolean areItemsTheSame(@NonNull CommentData commentData, @NonNull CommentData t1) {
|
|
||||||
return commentData.getId().equals(t1.getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean areContentsTheSame(@NonNull CommentData commentData, @NonNull CommentData t1) {
|
|
||||||
return commentData.getCommentContent().equals(t1.getCommentContent());
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
@NonNull
|
|
||||||
@Override
|
|
||||||
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {
|
|
||||||
return new CommentViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_comment, parent, false));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
|
|
||||||
final CommentData commentItem = getItem(i);
|
|
||||||
|
|
||||||
String authorPrefixed = "u/" + commentItem.getAuthor();
|
|
||||||
((CommentViewHolder) viewHolder).authorTextView.setText(authorPrefixed);
|
|
||||||
((CommentViewHolder) viewHolder).authorTextView.setOnClickListener(view -> {
|
|
||||||
Intent intent = new Intent(mContext, ViewUserDetailActivity.class);
|
|
||||||
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, commentItem.getAuthor());
|
|
||||||
mContext.startActivity(intent);
|
|
||||||
});
|
|
||||||
|
|
||||||
((CommentViewHolder) viewHolder).commentTimeTextView.setText(commentItem.getCommentTime());
|
|
||||||
SpannableConfiguration spannableConfiguration = SpannableConfiguration.builder(mContext).linkResolver((view, link) -> {
|
|
||||||
if(link.startsWith("/u/")) {
|
|
||||||
Intent intent = new Intent(mContext, ViewUserDetailActivity.class);
|
|
||||||
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, link.substring(3));
|
|
||||||
mContext.startActivity(intent);
|
|
||||||
} else if(link.startsWith("/r/")) {
|
|
||||||
Intent intent = new Intent(mContext, ViewSubredditDetailActivity.class);
|
|
||||||
intent.putExtra(ViewSubredditDetailActivity.EXTRA_SUBREDDIT_NAME_KEY, link.substring(3));
|
|
||||||
mContext.startActivity(intent);
|
|
||||||
} else {
|
|
||||||
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
|
|
||||||
// add share action to menu list
|
|
||||||
builder.addDefaultShareMenuItem();
|
|
||||||
builder.setToolbarColor(mContext.getResources().getColor(R.color.colorPrimary));
|
|
||||||
CustomTabsIntent customTabsIntent = builder.build();
|
|
||||||
customTabsIntent.launchUrl(mContext, Uri.parse(link));
|
|
||||||
}
|
|
||||||
}).build();
|
|
||||||
|
|
||||||
((CommentViewHolder) viewHolder).commentMarkdownView.setMarkdown(spannableConfiguration, commentItem.getCommentContent());
|
|
||||||
((CommentViewHolder) viewHolder).scoreTextView.setText(Integer.toString(commentItem.getScore()));
|
|
||||||
|
|
||||||
((CommentViewHolder) viewHolder).verticalBlock.getLayoutParams().width = commentItem.getDepth() * 16;
|
|
||||||
if(commentItem.hasReply()) {
|
|
||||||
setExpandButton(((CommentViewHolder) viewHolder).expandButton, commentItem.isExpanded());
|
|
||||||
}
|
|
||||||
|
|
||||||
((CommentViewHolder) viewHolder).expandButton.setOnClickListener(view -> {
|
|
||||||
if(commentItem.hasChildren() && commentItem.getChildren().size() > 0) {
|
|
||||||
setExpandButton(((CommentViewHolder) viewHolder).expandButton, commentItem.isExpanded());
|
|
||||||
} else {
|
|
||||||
((CommentViewHolder) viewHolder).loadMoreCommentsProgressBar.setVisibility(View.VISIBLE);
|
|
||||||
FetchComment.fetchComment(mRetrofit, subredditNamePrefixed, article, commentItem.getId(),
|
|
||||||
locale, false, commentItem.getDepth(), new FetchComment.FetchCommentListener() {
|
|
||||||
@Override
|
|
||||||
public void onFetchCommentSuccess(List<?> commentData,
|
|
||||||
String parentId, ArrayList<String> children) {
|
|
||||||
commentItem.addChildren((List<RecyclerViewItem>) commentData);
|
|
||||||
((CommentViewHolder) viewHolder).loadMoreCommentsProgressBar
|
|
||||||
.setVisibility(View.GONE);
|
|
||||||
((CommentViewHolder) viewHolder).expandButton
|
|
||||||
.setImageResource(R.drawable.ic_expand_less_black_20dp);
|
|
||||||
|
|
||||||
/*ParseComment.parseComment(response, new ArrayList<>(),
|
|
||||||
locale, false, commentItem.getDepth(),
|
|
||||||
new ParseComment.ParseCommentListener() {
|
|
||||||
@Override
|
|
||||||
public void onParseCommentSuccess(List<?> commentData,
|
|
||||||
String parentId, String children) {
|
|
||||||
commentItem.addChildren((List<RecyclerViewItem>) commentData);
|
|
||||||
((CommentViewHolder) viewHolder).loadMoreCommentsProgressBar
|
|
||||||
.setVisibility(View.GONE);
|
|
||||||
((CommentViewHolder) viewHolder).expandButton
|
|
||||||
.setImageResource(R.drawable.ic_expand_less_black_20dp);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onParseCommentFailed() {
|
|
||||||
((CommentViewHolder) viewHolder).loadMoreCommentsProgressBar
|
|
||||||
.setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
});*/
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onFetchCommentFailed() {
|
|
||||||
((CommentViewHolder) viewHolder).loadMoreCommentsProgressBar
|
|
||||||
.setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
switch (commentItem.getVoteType()) {
|
|
||||||
case 1:
|
|
||||||
((CommentViewHolder) viewHolder).upvoteButton
|
|
||||||
.setColorFilter(ContextCompat.getColor(mContext, R.color.colorPrimary), android.graphics.PorterDuff.Mode.SRC_IN);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
((CommentViewHolder) viewHolder).downvoteButton
|
|
||||||
.setColorFilter(ContextCompat.getColor(mContext, R.color.minusButtonColor), android.graphics.PorterDuff.Mode.SRC_IN);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
((CommentViewHolder) viewHolder).upvoteButton.setOnClickListener(view -> {
|
|
||||||
final boolean isDownvotedBefore = ((CommentViewHolder) viewHolder).downvoteButton.getColorFilter() != null;
|
|
||||||
final ColorFilter minusButtonColorFilter = ((CommentViewHolder) viewHolder).downvoteButton.getColorFilter();
|
|
||||||
((CommentViewHolder) viewHolder).downvoteButton.clearColorFilter();
|
|
||||||
|
|
||||||
if (((CommentViewHolder) viewHolder).upvoteButton.getColorFilter() == null) {
|
|
||||||
((CommentViewHolder) viewHolder).upvoteButton.setColorFilter(ContextCompat.getColor(mContext, R.color.colorPrimary), android.graphics.PorterDuff.Mode.SRC_IN);
|
|
||||||
if(isDownvotedBefore) {
|
|
||||||
((CommentViewHolder) viewHolder).scoreTextView.setText(Integer.toString(commentItem.getScore() + 2));
|
|
||||||
} else {
|
|
||||||
((CommentViewHolder) viewHolder).scoreTextView.setText(Integer.toString(commentItem.getScore() + 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
VoteThing.voteThing(mOauthRetrofit,mSharedPreferences, new VoteThing.VoteThingListener() {
|
|
||||||
@Override
|
|
||||||
public void onVoteThingSuccess(int position1) {
|
|
||||||
commentItem.setVoteType(1);
|
|
||||||
if(isDownvotedBefore) {
|
|
||||||
commentItem.setScore(commentItem.getScore() + 2);
|
|
||||||
} else {
|
|
||||||
commentItem.setScore(commentItem.getScore() + 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onVoteThingFail(int position1) {
|
|
||||||
Toast.makeText(mContext, "Cannot upvote this comment", Toast.LENGTH_SHORT).show();
|
|
||||||
((CommentViewHolder) viewHolder).upvoteButton.clearColorFilter();
|
|
||||||
((CommentViewHolder) viewHolder).scoreTextView.setText(Integer.toString(commentItem.getScore()));
|
|
||||||
((CommentViewHolder) viewHolder).downvoteButton.setColorFilter(minusButtonColorFilter);
|
|
||||||
}
|
|
||||||
}, commentItem.getFullName(), RedditUtils.DIR_UPVOTE, ((CommentViewHolder) viewHolder).getAdapterPosition());
|
|
||||||
} else {
|
|
||||||
//Upvoted before
|
|
||||||
((CommentViewHolder) viewHolder).upvoteButton.clearColorFilter();
|
|
||||||
((CommentViewHolder) viewHolder).scoreTextView.setText(Integer.toString(commentItem.getScore() - 1));
|
|
||||||
|
|
||||||
VoteThing.voteThing(mOauthRetrofit, mSharedPreferences, new VoteThing.VoteThingListener() {
|
|
||||||
@Override
|
|
||||||
public void onVoteThingSuccess(int position1) {
|
|
||||||
commentItem.setVoteType(0);
|
|
||||||
commentItem.setScore(commentItem.getScore() - 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onVoteThingFail(int position1) {
|
|
||||||
Toast.makeText(mContext, "Cannot unvote this comment", Toast.LENGTH_SHORT).show();
|
|
||||||
((CommentViewHolder) viewHolder).scoreTextView.setText(Integer.toString(commentItem.getScore() + 1));
|
|
||||||
((CommentViewHolder) viewHolder).upvoteButton.setColorFilter(ContextCompat.getColor(mContext, R.color.colorPrimary), android.graphics.PorterDuff.Mode.SRC_IN);
|
|
||||||
commentItem.setScore(commentItem.getScore() + 1);
|
|
||||||
}
|
|
||||||
}, commentItem.getFullName(), RedditUtils.DIR_UNVOTE, ((CommentViewHolder) viewHolder).getAdapterPosition());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
((CommentViewHolder) viewHolder).downvoteButton.setOnClickListener(view -> {
|
|
||||||
final boolean isUpvotedBefore = ((CommentViewHolder) viewHolder).upvoteButton.getColorFilter() != null;
|
|
||||||
|
|
||||||
final ColorFilter upvoteButtonColorFilter = ((CommentViewHolder) viewHolder).upvoteButton.getColorFilter();
|
|
||||||
((CommentViewHolder) viewHolder).upvoteButton.clearColorFilter();
|
|
||||||
|
|
||||||
if (((CommentViewHolder) viewHolder).downvoteButton.getColorFilter() == null) {
|
|
||||||
((CommentViewHolder) viewHolder).downvoteButton.setColorFilter(ContextCompat.getColor(mContext, R.color.minusButtonColor), android.graphics.PorterDuff.Mode.SRC_IN);
|
|
||||||
if (isUpvotedBefore) {
|
|
||||||
((CommentViewHolder) viewHolder).scoreTextView.setText(Integer.toString(commentItem.getScore() - 2));
|
|
||||||
} else {
|
|
||||||
((CommentViewHolder) viewHolder).scoreTextView.setText(Integer.toString(commentItem.getScore() - 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
VoteThing.voteThing(mOauthRetrofit, mSharedPreferences, new VoteThing.VoteThingListener() {
|
|
||||||
@Override
|
|
||||||
public void onVoteThingSuccess(int position12) {
|
|
||||||
commentItem.setVoteType(-1);
|
|
||||||
if(isUpvotedBefore) {
|
|
||||||
commentItem.setScore(commentItem.getScore() - 2);
|
|
||||||
} else {
|
|
||||||
commentItem.setScore(commentItem.getScore() - 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onVoteThingFail(int position12) {
|
|
||||||
Toast.makeText(mContext, "Cannot downvote this comment", Toast.LENGTH_SHORT).show();
|
|
||||||
((CommentViewHolder) viewHolder).downvoteButton.clearColorFilter();
|
|
||||||
((CommentViewHolder) viewHolder).scoreTextView.setText(Integer.toString(commentItem.getScore()));
|
|
||||||
((CommentViewHolder) viewHolder).upvoteButton.setColorFilter(upvoteButtonColorFilter);
|
|
||||||
}
|
|
||||||
}, commentItem.getFullName(), RedditUtils.DIR_DOWNVOTE, viewHolder.getAdapterPosition());
|
|
||||||
} else {
|
|
||||||
//Down voted before
|
|
||||||
((CommentViewHolder) viewHolder).downvoteButton.clearColorFilter();
|
|
||||||
((CommentViewHolder) viewHolder).scoreTextView.setText(Integer.toString(commentItem.getScore() + 1));
|
|
||||||
|
|
||||||
VoteThing.voteThing(mOauthRetrofit, mSharedPreferences, new VoteThing.VoteThingListener() {
|
|
||||||
@Override
|
|
||||||
public void onVoteThingSuccess(int position12) {
|
|
||||||
commentItem.setVoteType(0);
|
|
||||||
commentItem.setScore(commentItem.getScore());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onVoteThingFail(int position12) {
|
|
||||||
Toast.makeText(mContext, "Cannot unvote this comment", Toast.LENGTH_SHORT).show();
|
|
||||||
((CommentViewHolder) viewHolder).downvoteButton.setColorFilter(ContextCompat.getColor(mContext, R.color.minusButtonColor), android.graphics.PorterDuff.Mode.SRC_IN);
|
|
||||||
((CommentViewHolder) viewHolder).scoreTextView.setText(Integer.toString(commentItem.getScore()));
|
|
||||||
commentItem.setScore(commentItem.getScore());
|
|
||||||
}
|
|
||||||
}, commentItem.getFullName(), RedditUtils.DIR_UNVOTE, viewHolder.getAdapterPosition());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
|
|
||||||
((CommentMultiLevelRecyclerViewAdapter.CommentViewHolder) holder).expandButton.setVisibility(View.GONE);
|
|
||||||
((CommentMultiLevelRecyclerViewAdapter.CommentViewHolder) holder).loadMoreCommentsProgressBar.setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getItemCount() {
|
|
||||||
if(hasExtraRow()) {
|
|
||||||
return super.getItemCount() + 1;
|
|
||||||
}
|
|
||||||
return super.getItemCount();
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean hasExtraRow() {
|
|
||||||
return networkState != null && networkState.getStatus() != NetworkState.Status.SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setNetworkState(NetworkState newNetworkState) {
|
|
||||||
NetworkState previousState = this.networkState;
|
|
||||||
boolean previousExtraRow = hasExtraRow();
|
|
||||||
this.networkState = newNetworkState;
|
|
||||||
boolean newExtraRow = hasExtraRow();
|
|
||||||
if (previousExtraRow != newExtraRow) {
|
|
||||||
if (previousExtraRow) {
|
|
||||||
notifyItemRemoved(super.getItemCount());
|
|
||||||
} else {
|
|
||||||
notifyItemInserted(super.getItemCount());
|
|
||||||
}
|
|
||||||
} else if (newExtraRow && !previousState.equals(newNetworkState)) {
|
|
||||||
notifyItemChanged(getItemCount() - 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setExpandButton(ImageView expandButton, boolean isExpanded) {
|
|
||||||
// set the icon based on the current state
|
|
||||||
expandButton.setVisibility(View.VISIBLE);
|
|
||||||
expandButton.setImageResource(isExpanded ? R.drawable.ic_expand_less_black_20dp : R.drawable.ic_expand_more_black_20dp);
|
|
||||||
}
|
|
||||||
|
|
||||||
class CommentViewHolder extends RecyclerView.ViewHolder {
|
|
||||||
@BindView(R.id.author_text_view_item_post_comment) TextView authorTextView;
|
|
||||||
@BindView(R.id.comment_time_text_view_item_post_comment) TextView commentTimeTextView;
|
|
||||||
@BindView(R.id.comment_markdown_view_item_post_comment) MarkwonView commentMarkdownView;
|
|
||||||
@BindView(R.id.plus_button_item_post_comment) ImageView upvoteButton;
|
|
||||||
@BindView(R.id.score_text_view_item_post_comment) TextView scoreTextView;
|
|
||||||
@BindView(R.id.minus_button_item_post_comment) ImageView downvoteButton;
|
|
||||||
@BindView(R.id.expand_button_item_post_comment) ImageView expandButton;
|
|
||||||
@BindView(R.id.load_more_comments_progress_bar) ProgressBar loadMoreCommentsProgressBar;
|
|
||||||
@BindView(R.id.reply_button_item_post_comment) ImageView replyButton;
|
|
||||||
@BindView(R.id.vertical_block_item_post_comment) View verticalBlock;
|
|
||||||
|
|
||||||
CommentViewHolder(View itemView) {
|
|
||||||
super(itemView);
|
|
||||||
ButterKnife.bind(this, itemView);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -69,7 +69,8 @@ public class ViewPostDetailActivity extends AppCompatActivity {
|
|||||||
private RequestManager glide;
|
private RequestManager glide;
|
||||||
|
|
||||||
private int orientation;
|
private int orientation;
|
||||||
private String orientationState = "OS";
|
private static String ORIENTATION_STATE = "OS";
|
||||||
|
private static final String POST_STATE = "PS";
|
||||||
|
|
||||||
private Post mPost;
|
private Post mPost;
|
||||||
private int postListPosition = -1;
|
private int postListPosition = -1;
|
||||||
@ -136,9 +137,13 @@ public class ViewPostDetailActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||||
|
|
||||||
orientation = getResources().getConfiguration().orientation;
|
if(savedInstanceState == null) {
|
||||||
|
orientation = getResources().getConfiguration().orientation;
|
||||||
mPost = getIntent().getExtras().getParcelable(EXTRA_POST_DATA);
|
mPost = getIntent().getExtras().getParcelable(EXTRA_POST_DATA);
|
||||||
|
} else {
|
||||||
|
orientation = savedInstanceState.getInt(ORIENTATION_STATE);
|
||||||
|
mPost = savedInstanceState.getParcelable(POST_STATE);
|
||||||
|
}
|
||||||
|
|
||||||
if(getIntent().hasExtra(EXTRA_POST_LIST_POSITION)) {
|
if(getIntent().hasExtra(EXTRA_POST_LIST_POSITION)) {
|
||||||
postListPosition = getIntent().getExtras().getInt(EXTRA_POST_LIST_POSITION);
|
postListPosition = getIntent().getExtras().getInt(EXTRA_POST_LIST_POSITION);
|
||||||
@ -576,7 +581,7 @@ public class ViewPostDetailActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onVoteEvent(VoteEventToDetailActivity event) {
|
public void onVoteEvent(VoteEventToDetailActivity event) {
|
||||||
if(mPost.getId() == event.postId) {
|
if(mPost.getId().equals(event.postId)) {
|
||||||
mPost.setVoteType(event.voteType);
|
mPost.setVoteType(event.voteType);
|
||||||
mScoreTextView.setText(Integer.toString(mPost.getScore() + event.voteType));
|
mScoreTextView.setText(Integer.toString(mPost.getScore() + event.voteType));
|
||||||
}
|
}
|
||||||
@ -595,13 +600,8 @@ public class ViewPostDetailActivity extends AppCompatActivity {
|
|||||||
@Override
|
@Override
|
||||||
protected void onSaveInstanceState(Bundle outState) {
|
protected void onSaveInstanceState(Bundle outState) {
|
||||||
super.onSaveInstanceState(outState);
|
super.onSaveInstanceState(outState);
|
||||||
outState.putInt(orientationState, orientation);
|
outState.putInt(ORIENTATION_STATE, orientation);
|
||||||
}
|
outState.putParcelable(POST_STATE, mPost);
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onRestoreInstanceState(Bundle savedInstanceState) {
|
|
||||||
super.onRestoreInstanceState(savedInstanceState);
|
|
||||||
orientation = savedInstanceState.getInt(orientationState);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -11,10 +11,15 @@ import android.view.ViewGroup;
|
|||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
import androidx.appcompat.widget.Toolbar;
|
||||||
|
import androidx.coordinatorlayout.widget.CoordinatorLayout;
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
|
import androidx.lifecycle.ViewModelProviders;
|
||||||
|
|
||||||
import com.bumptech.glide.Glide;
|
import com.bumptech.glide.Glide;
|
||||||
import com.bumptech.glide.RequestManager;
|
import com.bumptech.glide.RequestManager;
|
||||||
import com.bumptech.glide.request.RequestOptions;
|
import com.bumptech.glide.request.RequestOptions;
|
||||||
import com.google.android.material.appbar.AppBarLayout;
|
|
||||||
import com.google.android.material.appbar.CollapsingToolbarLayout;
|
import com.google.android.material.appbar.CollapsingToolbarLayout;
|
||||||
import com.google.android.material.chip.Chip;
|
import com.google.android.material.chip.Chip;
|
||||||
import com.google.android.material.snackbar.Snackbar;
|
import com.google.android.material.snackbar.Snackbar;
|
||||||
@ -28,11 +33,6 @@ import SubredditDatabase.SubredditRoomDatabase;
|
|||||||
import SubredditDatabase.SubredditViewModel;
|
import SubredditDatabase.SubredditViewModel;
|
||||||
import SubscribedSubredditDatabase.SubscribedSubredditDao;
|
import SubscribedSubredditDatabase.SubscribedSubredditDao;
|
||||||
import SubscribedSubredditDatabase.SubscribedSubredditRoomDatabase;
|
import SubscribedSubredditDatabase.SubscribedSubredditRoomDatabase;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
|
||||||
import androidx.appcompat.widget.Toolbar;
|
|
||||||
import androidx.coordinatorlayout.widget.CoordinatorLayout;
|
|
||||||
import androidx.fragment.app.Fragment;
|
|
||||||
import androidx.lifecycle.ViewModelProviders;
|
|
||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
|
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
|
||||||
@ -82,9 +82,6 @@ public class ViewSubredditDetailActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
((Infinity) getApplication()).getmNetworkComponent().inject(this);
|
((Infinity) getApplication()).getmNetworkComponent().inject(this);
|
||||||
|
|
||||||
final Toolbar toolbar = findViewById(R.id.toolbar);
|
|
||||||
setSupportActionBar(toolbar);
|
|
||||||
|
|
||||||
//Get status bar height
|
//Get status bar height
|
||||||
int statusBarHeight = 0;
|
int statusBarHeight = 0;
|
||||||
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
|
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
|
||||||
@ -92,40 +89,20 @@ public class ViewSubredditDetailActivity extends AppCompatActivity {
|
|||||||
statusBarHeight = getResources().getDimensionPixelSize(resourceId);
|
statusBarHeight = getResources().getDimensionPixelSize(resourceId);
|
||||||
}
|
}
|
||||||
|
|
||||||
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) toolbar.getLayoutParams();
|
|
||||||
params.topMargin = statusBarHeight;
|
|
||||||
|
|
||||||
String subredditName = getIntent().getExtras().getString(EXTRA_SUBREDDIT_NAME_KEY);
|
String subredditName = getIntent().getExtras().getString(EXTRA_SUBREDDIT_NAME_KEY);
|
||||||
String title = "r/" + subredditName;
|
String title = "r/" + subredditName;
|
||||||
subredditNameTextView.setText(title);
|
subredditNameTextView.setText(title);
|
||||||
|
|
||||||
|
|
||||||
CollapsingToolbarLayout collapsingToolbarLayout = findViewById(R.id.collapsing_toolbar_layout_view_subreddit_detail_activity);
|
CollapsingToolbarLayout collapsingToolbarLayout = findViewById(R.id.collapsing_toolbar_layout_view_subreddit_detail_activity);
|
||||||
AppBarLayout appBarLayout = findViewById(R.id.app_bar_layout_view_subreddit_detail_activity);
|
collapsingToolbarLayout.setTitleEnabled(false);
|
||||||
|
|
||||||
appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
|
Toolbar toolbar = findViewById(R.id.toolbar);
|
||||||
int previousVerticalOffset = 0;
|
toolbar.setTitle(title);
|
||||||
int scrollRange = -1;
|
setSupportActionBar(toolbar);
|
||||||
|
|
||||||
@Override
|
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) toolbar.getLayoutParams();
|
||||||
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
|
params.topMargin = statusBarHeight;
|
||||||
if(scrollRange == -1) {
|
|
||||||
scrollRange = appBarLayout.getTotalScrollRange();
|
|
||||||
} else {
|
|
||||||
if(verticalOffset < previousVerticalOffset) {
|
|
||||||
//Scroll down
|
|
||||||
if(scrollRange - Math.abs(verticalOffset) <= toolbar.getHeight()) {
|
|
||||||
collapsingToolbarLayout.setTitle(title);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
//Scroll up
|
|
||||||
if(scrollRange - Math.abs(verticalOffset) > toolbar.getHeight()) {
|
|
||||||
collapsingToolbarLayout.setTitle(" ");//carefull there should a space between double quote otherwise it wont work
|
|
||||||
}
|
|
||||||
}
|
|
||||||
previousVerticalOffset = verticalOffset;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
subscribedSubredditDao = SubscribedSubredditRoomDatabase.getDatabase(this).subscribedSubredditDao();
|
subscribedSubredditDao = SubscribedSubredditRoomDatabase.getDatabase(this).subscribedSubredditDao();
|
||||||
glide = Glide.with(this);
|
glide = Glide.with(this);
|
||||||
|
@ -10,10 +10,15 @@ import android.view.ViewGroup;
|
|||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
import androidx.appcompat.widget.Toolbar;
|
||||||
|
import androidx.coordinatorlayout.widget.CoordinatorLayout;
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
|
import androidx.lifecycle.ViewModelProviders;
|
||||||
|
|
||||||
import com.bumptech.glide.Glide;
|
import com.bumptech.glide.Glide;
|
||||||
import com.bumptech.glide.RequestManager;
|
import com.bumptech.glide.RequestManager;
|
||||||
import com.bumptech.glide.request.RequestOptions;
|
import com.bumptech.glide.request.RequestOptions;
|
||||||
import com.google.android.material.appbar.AppBarLayout;
|
|
||||||
import com.google.android.material.appbar.CollapsingToolbarLayout;
|
import com.google.android.material.appbar.CollapsingToolbarLayout;
|
||||||
import com.google.android.material.chip.Chip;
|
import com.google.android.material.chip.Chip;
|
||||||
import com.google.android.material.snackbar.Snackbar;
|
import com.google.android.material.snackbar.Snackbar;
|
||||||
@ -27,11 +32,6 @@ import User.UserDao;
|
|||||||
import User.UserData;
|
import User.UserData;
|
||||||
import User.UserRoomDatabase;
|
import User.UserRoomDatabase;
|
||||||
import User.UserViewModel;
|
import User.UserViewModel;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
|
||||||
import androidx.appcompat.widget.Toolbar;
|
|
||||||
import androidx.coordinatorlayout.widget.CoordinatorLayout;
|
|
||||||
import androidx.fragment.app.Fragment;
|
|
||||||
import androidx.lifecycle.ViewModelProviders;
|
|
||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
|
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
|
||||||
@ -74,15 +74,11 @@ public class ViewUserDetailActivity extends AppCompatActivity {
|
|||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.activity_view_user_detail);
|
setContentView(R.layout.activity_view_user_detail);
|
||||||
Toolbar toolbar = findViewById(R.id.toolbar);
|
|
||||||
setSupportActionBar(toolbar);
|
|
||||||
|
|
||||||
ButterKnife.bind(this);
|
ButterKnife.bind(this);
|
||||||
|
|
||||||
((Infinity) getApplication()).getmNetworkComponent().inject(this);
|
((Infinity) getApplication()).getmNetworkComponent().inject(this);
|
||||||
|
|
||||||
setSupportActionBar(toolbar);
|
|
||||||
|
|
||||||
//Get status bar height
|
//Get status bar height
|
||||||
int statusBarHeight = 0;
|
int statusBarHeight = 0;
|
||||||
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
|
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
|
||||||
@ -90,40 +86,19 @@ public class ViewUserDetailActivity extends AppCompatActivity {
|
|||||||
statusBarHeight = getResources().getDimensionPixelSize(resourceId);
|
statusBarHeight = getResources().getDimensionPixelSize(resourceId);
|
||||||
}
|
}
|
||||||
|
|
||||||
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) toolbar.getLayoutParams();
|
|
||||||
params.topMargin = statusBarHeight;
|
|
||||||
|
|
||||||
String userName = getIntent().getExtras().getString(EXTRA_USER_NAME_KEY);
|
String userName = getIntent().getExtras().getString(EXTRA_USER_NAME_KEY);
|
||||||
String title = "u/" + userName;
|
String title = "u/" + userName;
|
||||||
userNameTextView.setText(title);
|
userNameTextView.setText(title);
|
||||||
|
|
||||||
CollapsingToolbarLayout collapsingToolbarLayout = findViewById(R.id.collapsing_toolbar_layout_view_user_detail_activity);
|
CollapsingToolbarLayout collapsingToolbarLayout = findViewById(R.id.collapsing_toolbar_layout_view_user_detail_activity);
|
||||||
AppBarLayout appBarLayout = findViewById(R.id.app_bar_layout_view_user_detail_activity);
|
collapsingToolbarLayout.setTitleEnabled(false);
|
||||||
|
|
||||||
appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
|
Toolbar toolbar = findViewById(R.id.toolbar);
|
||||||
int previousVerticalOffset = 0;
|
toolbar.setTitle(title);
|
||||||
int scrollRange = -1;
|
setSupportActionBar(toolbar);
|
||||||
|
|
||||||
@Override
|
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) toolbar.getLayoutParams();
|
||||||
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
|
params.topMargin = statusBarHeight;
|
||||||
if(scrollRange == -1) {
|
|
||||||
scrollRange = appBarLayout.getTotalScrollRange();
|
|
||||||
} else {
|
|
||||||
if(verticalOffset < previousVerticalOffset) {
|
|
||||||
//Scroll down
|
|
||||||
if(scrollRange - Math.abs(verticalOffset) <= toolbar.getHeight()) {
|
|
||||||
collapsingToolbarLayout.setTitle(title);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
//Scroll up
|
|
||||||
if(scrollRange - Math.abs(verticalOffset) > toolbar.getHeight()) {
|
|
||||||
collapsingToolbarLayout.setTitle(" ");//carefull there should a space between double quote otherwise it wont work
|
|
||||||
}
|
|
||||||
}
|
|
||||||
previousVerticalOffset = verticalOffset;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
subscribedUserDao = SubscribedUserRoomDatabase.getDatabase(this).subscribedUserDao();
|
subscribedUserDao = SubscribedUserRoomDatabase.getDatabase(this).subscribedUserDao();
|
||||||
glide = Glide.with(this);
|
glide = Glide.with(this);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user