package com.crossbowffs.nekosms.app;

import android.database.Cursor;
import android.graphics.Typeface;
import androidx.recyclerview.widget.RecyclerView;
import android.text.format.DateUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.crossbowffs.nekosms.R;
import com.crossbowffs.nekosms.data.SmsMessageData;
import com.crossbowffs.nekosms.loader.BlockedSmsLoader;
import com.crossbowffs.nekosms.widget.RecyclerCursorAdapter;

/* package */ class BlockedMessagesAdapter extends RecyclerCursorAdapter<BlockedMessagesAdapter.BlockedSmsItemHolder> {
    public class BlockedSmsItemHolder extends RecyclerView.ViewHolder {
        public final TextView mSenderTextView;
        public final TextView mTimeSentTextView;
        public final TextView mBodyTextView;
        public SmsMessageData mMessageData;

        public BlockedSmsItemHolder(View itemView) {
            super(itemView);

            mSenderTextView = (TextView)itemView.findViewById(R.id.blocked_message_sender_textview);
            mTimeSentTextView = (TextView)itemView.findViewById(R.id.blocked_message_time_sent_textview);
            mBodyTextView = (TextView)itemView.findViewById(R.id.blocked_message_body_textview);
        }
    }

    private final BlockedMessagesFragment mFragment;

    public BlockedMessagesAdapter(BlockedMessagesFragment fragment) {
        mFragment = fragment;
    }

    @Override
    public BlockedSmsItemHolder onCreateViewHolder(ViewGroup group, int i) {
        LayoutInflater layoutInflater = LayoutInflater.from(mFragment.getContext());
        View view = layoutInflater.inflate(R.layout.listitem_blocked_messages, group, false);
        return new BlockedSmsItemHolder(view);
    }

    @Override
    protected int[] onBindColumns(Cursor cursor) {
        return BlockedSmsLoader.get().getColumns(cursor);
    }

    @Override
    public void onBindViewHolder(BlockedSmsItemHolder holder, Cursor cursor) {
        final SmsMessageData messageData = BlockedSmsLoader.get().getData(cursor, getColumns(), holder.mMessageData);
        holder.mMessageData = messageData;

        String sender = messageData.getSender();
        long timeSent = messageData.getTimeSent();
        String body = messageData.getBody();
        CharSequence timeSentString = DateUtils.getRelativeTimeSpanString(mFragment.getContext(), timeSent);

        holder.mSenderTextView.setText(sender);
        holder.mTimeSentTextView.setText(timeSentString);
        holder.mBodyTextView.setText(body);
        if (messageData.isRead()) {
            holder.mSenderTextView.setTypeface(null, Typeface.NORMAL);
            holder.mTimeSentTextView.setTypeface(null, Typeface.NORMAL);
            holder.mBodyTextView.setTypeface(null, Typeface.NORMAL);
        } else {
            holder.mSenderTextView.setTypeface(null, Typeface.BOLD);
            holder.mTimeSentTextView.setTypeface(null, Typeface.BOLD);
            holder.mBodyTextView.setTypeface(null, Typeface.BOLD);
        }

        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mFragment.showMessageDetailsDialog(messageData);
            }
        });
    }
}