package com.luorrak.ouroboros.ReplyChecker; import android.content.Intent; import android.database.Cursor; import android.graphics.Typeface; import android.support.design.widget.Snackbar; import android.support.v7.widget.CardView; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageButton; import android.widget.TextView; import com.luorrak.ouroboros.R; import com.luorrak.ouroboros.thread.ThreadActivity; import com.luorrak.ouroboros.util.ChanUrls; import com.luorrak.ouroboros.util.CursorRecyclerAdapter; import com.luorrak.ouroboros.util.DbContract; import com.luorrak.ouroboros.util.InfiniteDbHelper; import com.luorrak.ouroboros.util.Util; /** * Ouroboros - An 8chan browser * Copyright (C) 2015 Luorrak * <p/> * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * <p/> * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * <p/> * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ public class ReplyCheckerAdapter extends CursorRecyclerAdapter{ InfiniteDbHelper infiniteDbHelper; public ReplyCheckerAdapter(Cursor cursor, InfiniteDbHelper infiniteDbHelper) { super(cursor); this.infiniteDbHelper = infiniteDbHelper; } @Override public void onBindViewHolderCursor(RecyclerView.ViewHolder holder, Cursor cursor) { ReplyCheckerViewHolder replyCheckerViewHolder = (ReplyCheckerViewHolder) holder; createReplyCheckerObject(replyCheckerViewHolder, cursor); setViewVisibility(replyCheckerViewHolder); String threadTitle = "/" + replyCheckerViewHolder.replyCheckerObject.boardName + "/" + replyCheckerViewHolder.replyCheckerObject.resto; replyCheckerViewHolder.rcThreadName.setText(threadTitle); replyCheckerViewHolder.rcSubjectText.setText(replyCheckerViewHolder.replyCheckerObject.subject); replyCheckerViewHolder.rcCommentText.setText(replyCheckerViewHolder.replyCheckerObject.comment); replyCheckerViewHolder.rcReplyCountText.setText(replyCheckerViewHolder.replyCheckerObject.replyCount + " Replies"); } private void setViewVisibility(ReplyCheckerViewHolder replyCheckerViewHolder){ if (replyCheckerViewHolder.replyCheckerObject.subject.equals("")){ replyCheckerViewHolder.rcSubjectText.setVisibility(View.GONE); } if (replyCheckerViewHolder.replyCheckerObject.comment.equals("")){ replyCheckerViewHolder.rcCommentText.setVisibility(View.GONE); } } private void createReplyCheckerObject(ReplyCheckerViewHolder replyCheckerViewHolder, Cursor cursor){ if((cursor != null) && (cursor.getCount() > 0)){ replyCheckerViewHolder.replyCheckerObject.id = cursor.getString(cursor.getColumnIndex(DbContract.UserPosts._ID)); replyCheckerViewHolder.replyCheckerObject.boardName = cursor.getString(cursor.getColumnIndex(DbContract.UserPosts.COLUMN_BOARDS)); replyCheckerViewHolder.replyCheckerObject.resto = cursor.getString(cursor.getColumnIndex(DbContract.UserPosts.COLUMN_RESTO)); replyCheckerViewHolder.replyCheckerObject.subject = cursor.getString(cursor.getColumnIndex(DbContract.UserPosts.COLUMN_SUBJECT)); replyCheckerViewHolder.replyCheckerObject.comment = cursor.getString(cursor.getColumnIndex(DbContract.UserPosts.COLUMN_COMMENT)); replyCheckerViewHolder.replyCheckerObject.replyCount = cursor.getString(cursor.getColumnIndex(DbContract.UserPosts.COLUMN_NUMBER_OF_REPLIES)); replyCheckerViewHolder.replyCheckerObject.position = cursor.getInt(cursor.getColumnIndex(DbContract.UserPosts.COLUMN_POSITION)); } } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new ReplyCheckerViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.reply_checker_list_item, parent, false)); } class ReplyCheckerObject { public String id = ""; public String boardName = ""; public String resto = ""; public String subject = ""; public String comment = ""; public String replyCount = ""; public int position = 0; } private class ReplyCheckerViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { public CardView rcCard; public TextView rcThreadName; public TextView rcSubjectText; public TextView rcCommentText; public TextView rcReplyCountText; public ImageButton rcMarkAsReadButton; public ReplyCheckerObject replyCheckerObject; public ReplyCheckerViewHolder(View itemView) { super(itemView); rcCard = (CardView) itemView.findViewById(R.id.reply_checker_card); rcThreadName = (TextView) itemView.findViewById(R.id.reply_checker_thread_name); rcSubjectText = (TextView) itemView.findViewById(R.id.reply_checker_sub_text); rcCommentText = (TextView) itemView.findViewById(R.id.reply_checker_com_text); rcReplyCountText = (TextView) itemView.findViewById(R.id.reply_checker_reply_count); rcMarkAsReadButton = (ImageButton) itemView.findViewById(R.id.reply_checker_mark_as_read_button); replyCheckerObject = new ReplyCheckerObject(); rcThreadName.setTypeface(rcThreadName.getTypeface(), Typeface.BOLD); rcReplyCountText.setTypeface(rcReplyCountText.getTypeface(), Typeface.BOLD); rcMarkAsReadButton.setOnClickListener(this); rcCard.setOnClickListener(this); rcThreadName.setOnClickListener(this); rcSubjectText.setOnClickListener(this); rcCommentText.setOnClickListener(this); rcReplyCountText.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.reply_checker_mark_as_read_button:{ Snackbar.make(v, "Thread Marked As Read", Snackbar.LENGTH_LONG).show(); infiniteDbHelper.removeUserPostFlag(replyCheckerObject.id); changeCursor(infiniteDbHelper.getFlaggedUserPostsCursor()); break; } default:{ // TODO: 2/8/16 Open thread in new intent and mark as read Intent intent = new Intent(v.getContext(), ThreadActivity.class); intent.putExtra(Util.INTENT_THREAD_NO, replyCheckerObject.resto); intent.putExtra(Util.INTENT_BOARD_NAME, replyCheckerObject.boardName); intent.putExtra(Util.INTENT_THREAD_POSITION, replyCheckerObject.position); v.getContext().startActivity(intent); break; } } } } }