diff options
Diffstat (limited to 'WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderUserListActivity.java')
-rw-r--r-- | WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderUserListActivity.java | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderUserListActivity.java b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderUserListActivity.java new file mode 100644 index 000000000..9272c2e4f --- /dev/null +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderUserListActivity.java @@ -0,0 +1,146 @@ +package org.wordpress.android.ui.reader; + +import android.os.Bundle; +import android.support.v7.app.ActionBar; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.Toolbar; +import android.view.View; + +import org.wordpress.android.R; +import org.wordpress.android.datasets.ReaderCommentTable; +import org.wordpress.android.datasets.ReaderPostTable; +import org.wordpress.android.datasets.ReaderUserTable; +import org.wordpress.android.models.ReaderUserList; +import org.wordpress.android.ui.reader.adapters.ReaderUserAdapter; +import org.wordpress.android.ui.reader.utils.ReaderUtils; +import org.wordpress.android.ui.reader.views.ReaderRecyclerView; +import org.wordpress.android.util.DisplayUtils; +import org.wordpress.android.widgets.RecyclerItemDecoration; + +/* + * displays a list of users who like a specific reader post + */ +public class ReaderUserListActivity extends AppCompatActivity { + + private ReaderRecyclerView mRecyclerView; + private ReaderUserAdapter mAdapter; + private int mRestorePosition; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setContentView(R.layout.reader_activity_userlist); + setTitle(null); + + Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + if (toolbar != null) { + setSupportActionBar(toolbar); + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onBackPressed(); + } + }); + } + + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) { + getSupportActionBar().setDisplayShowTitleEnabled(true); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + } + + if (savedInstanceState != null) { + mRestorePosition = savedInstanceState.getInt(ReaderConstants.KEY_RESTORE_POSITION); + } + + int spacingHorizontal = 0; + int spacingVertical = DisplayUtils.dpToPx(this, 1); + mRecyclerView = (ReaderRecyclerView) findViewById(R.id.recycler_view); + mRecyclerView.addItemDecoration(new RecyclerItemDecoration(spacingHorizontal, spacingVertical)); + + long blogId = getIntent().getLongExtra(ReaderConstants.ARG_BLOG_ID, 0); + long postId = getIntent().getLongExtra(ReaderConstants.ARG_POST_ID, 0); + long commentId = getIntent().getLongExtra(ReaderConstants.ARG_COMMENT_ID, 0); + loadUsers(blogId, postId, commentId); + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + int position = ((LinearLayoutManager) mRecyclerView.getLayoutManager()).findFirstVisibleItemPosition(); + if (position > 0) { + outState.putInt(ReaderConstants.KEY_RESTORE_POSITION, position); + } + super.onSaveInstanceState(outState); + } + + private ReaderUserAdapter getAdapter() { + if (mAdapter == null) { + mAdapter = new ReaderUserAdapter(this); + mAdapter.setDataLoadedListener(new ReaderInterfaces.DataLoadedListener() { + @Override + public void onDataLoaded(boolean isEmpty) { + if (!isEmpty && mRestorePosition > 0) { + mRecyclerView.scrollToPosition(mRestorePosition); + } + mRestorePosition = 0; + } + }); + mRecyclerView.setAdapter(mAdapter); + } + return mAdapter; + } + + private void loadUsers(final long blogId, + final long postId, + final long commentId) { + new Thread() { + @Override + public void run() { + final String title = getTitleString(blogId, postId, commentId); + + final ReaderUserList users; + if (commentId == 0) { + // commentId is empty (not passed), so we're showing users who like a post + users = ReaderUserTable.getUsersWhoLikePost( + blogId, + postId, + ReaderConstants.READER_MAX_USERS_TO_DISPLAY); + } else { + // commentId is non-empty, so we're showing users who like a comment + users = ReaderUserTable.getUsersWhoLikeComment( + blogId, + commentId, + ReaderConstants.READER_MAX_USERS_TO_DISPLAY); + } + + runOnUiThread(new Runnable() { + @Override + public void run() { + if (!isFinishing()) { + setTitle(title); + getAdapter().setUsers(users); + } + } + }); + } + }.start(); + } + + private String getTitleString(final long blogId, + final long postId, + final long commentId) { + final int numLikes; + final boolean isLikedByCurrentUser; + if (commentId == 0) { + numLikes = ReaderPostTable.getNumLikesForPost(blogId, postId); + isLikedByCurrentUser = ReaderPostTable.isPostLikedByCurrentUser(blogId, postId); + } else { + numLikes = ReaderCommentTable.getNumLikesForComment(blogId, postId, commentId); + isLikedByCurrentUser = ReaderCommentTable.isCommentLikedByCurrentUser(blogId, postId, commentId); + } + return ReaderUtils.getLongLikeLabelText(this, numLikes, isLikedByCurrentUser); + } + +} |