package com.alorma.github.ui.adapter.commit; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.text.Html; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.alorma.github.R; import com.alorma.github.ui.adapter.base.RecyclerArrayAdapter; import com.alorma.github.ui.view.DiffTextView; import com.alorma.github.utils.TextUtils; import core.repositories.CommitFile; import java.io.IOException; public class CommitFilesAdapter extends RecyclerArrayAdapter<CommitFile, CommitFilesAdapter.FileVH> { private OnFileRequestListener onFileRequestListener; public CommitFilesAdapter(LayoutInflater inflater) { super(inflater); } @Override public FileVH onCreateViewHolder(ViewGroup parent, int viewType) { return new FileVH(getInflater().inflate(R.layout.row_commit_file, parent, false)); } @Override protected void onBindViewHolder(FileVH holder, CommitFile commitFile) { String fileName = commitFile.getFilename(); if (fileName != null) { holder.fileName.setText(fileName); } if (commitFile.patch != null) { printContent(holder.textContent, commitFile.patch); } int additions = commitFile.additions; int deletions = commitFile.deletions; holder.toolbar.setTitle(""); String textCommitsStr = null; if (additions > 0 && deletions > 0) { textCommitsStr = holder.itemView.getContext().getString(R.string.commit_file_add_del, additions, deletions); holder.toolbar.setVisibility(View.VISIBLE); } else if (additions > 0) { textCommitsStr = holder.itemView.getContext().getString(R.string.commit_file_add, additions); holder.toolbar.setVisibility(View.VISIBLE); } else if (deletions > 0) { textCommitsStr = holder.itemView.getContext().getString(R.string.commit_file_del, deletions); holder.toolbar.setVisibility(View.VISIBLE); } else { holder.toolbar.setVisibility(View.GONE); } if (textCommitsStr != null) { holder.toolbar.setTitle(Html.fromHtml(textCommitsStr)); } } private void printContent(TextView textContent, String content) { try { content = TextUtils.splitLines(content, 6); } catch (IOException exc) { exc.printStackTrace(); } textContent.setText(content); } public void setOnFileRequestListener(OnFileRequestListener onFileRequestListener) { this.onFileRequestListener = onFileRequestListener; } public interface OnFileRequestListener { void onFileRequest(CommitFile file); } public class FileVH extends RecyclerView.ViewHolder implements View.OnClickListener { public TextView fileName; public DiffTextView textContent; private Toolbar toolbar; public FileVH(View itemView) { super(itemView); fileName = (TextView) itemView.findViewById(R.id.textFileName); textContent = (DiffTextView) itemView.findViewById(R.id.textContent); toolbar = (Toolbar) itemView.findViewById(R.id.toolbar); itemView.setOnClickListener(this); } @Override public void onClick(View v) { if (onFileRequestListener != null) { onFileRequestListener.onFileRequest(getItem(getAdapterPosition())); } } } }