package com.fastaccess.ui.adapter.viewholder; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.content.ContextCompat; import android.support.v7.widget.CardView; import android.view.View; import android.view.ViewGroup; import com.fastaccess.R; import com.fastaccess.data.dao.GroupedNotificationModel; import com.fastaccess.data.dao.model.Notification; import com.fastaccess.helper.AppHelper; import com.fastaccess.helper.ParseDateFormat; import com.fastaccess.helper.ViewHelper; import com.fastaccess.ui.widgets.FontTextView; import com.fastaccess.ui.widgets.ForegroundImageView; import com.fastaccess.ui.widgets.recyclerview.BaseRecyclerAdapter; import com.fastaccess.ui.widgets.recyclerview.BaseViewHolder; import butterknife.BindView; /** * Created by Kosh on 11 Nov 2016, 2:08 PM */ public class NotificationsViewHolder extends BaseViewHolder<GroupedNotificationModel> { @BindView(R.id.title) FontTextView title; @BindView(R.id.date) FontTextView date; @BindView(R.id.unsubsribe) ForegroundImageView unSubscribe; @BindView(R.id.markAsRead) ForegroundImageView markAsRead; @BindView(R.id.notificationType) ForegroundImageView notificationType; @BindView(R.id.repoName) FontTextView repoName; private boolean showUnreadState; private NotificationsViewHolder(@NonNull View itemView, @Nullable BaseRecyclerAdapter adapter, boolean showUnreadState) { super(itemView, adapter); unSubscribe.setOnClickListener(this); markAsRead.setOnClickListener(this); this.showUnreadState = showUnreadState; } public static NotificationsViewHolder newInstance(@NonNull ViewGroup viewGroup, @Nullable BaseRecyclerAdapter adapter, boolean showUnreadState) { return new NotificationsViewHolder(getView(viewGroup, R.layout.notifications_row_item), adapter, showUnreadState); } @Override public void bind(@NonNull GroupedNotificationModel model) { Notification thread = model.getNotification(); if (thread != null && thread.getSubject() != null) { title.setText(thread.getSubject().getTitle()); int cardBackground = ViewHelper.getCardBackground(itemView.getContext()); int color; date.setText(ParseDateFormat.getTimeAgo(thread.getUpdatedAt())); markAsRead.setVisibility(thread.isUnread() ? View.VISIBLE : View.GONE); // unSubscribe.setImageResource(thread.isIsSubscribed() ? R.drawable.ic_unsubscribe : R.drawable.ic_subscribe); if (thread.getSubject().getType() != null) { notificationType.setImageResource(thread.getSubject().getType().getDrawableRes()); notificationType.setContentDescription(thread.getSubject().getType().name()); } else { notificationType.setImageResource(R.drawable.ic_info_outline); } if (showUnreadState) { repoName.setVisibility(View.GONE); if (AppHelper.isNightMode(itemView.getResources())) { color = ContextCompat.getColor(itemView.getContext(), R.color.material_blue_grey_800); } else { color = ContextCompat.getColor(itemView.getContext(), R.color.material_blue_grey_200); } ((CardView) itemView).setCardBackgroundColor(thread.isUnread() ? color : cardBackground); } else { repoName.setVisibility(View.VISIBLE); repoName.setText(thread.getRepository().getFullName()); } } } }