package com.kickstarter.ui.viewholders; import android.content.Context; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.widget.CardView; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.kickstarter.KSApplication; import com.kickstarter.R; import com.kickstarter.libs.KSCurrency; import com.kickstarter.libs.KSString; import com.kickstarter.libs.utils.DateTimeUtils; import com.kickstarter.models.Activity; import com.kickstarter.models.Photo; import com.kickstarter.models.Project; import com.kickstarter.models.User; import com.squareup.picasso.Picasso; import org.joda.time.DateTime; import javax.inject.Inject; import butterknife.Bind; import butterknife.BindColor; import butterknife.BindString; import butterknife.ButterKnife; import butterknife.OnClick; import static com.kickstarter.libs.utils.ObjectUtils.coalesce; public final class ProjectStateChangedPositiveViewHolder extends ActivityListViewHolder { protected @Bind(R.id.card_view) CardView cardView; protected @Bind(R.id.left_stat_first) TextView leftStatFirstTextView; protected @Bind(R.id.left_stat_second) TextView leftStatSecondTextView; protected @Bind(R.id.project_photo) ImageView projectPhotoImageView; protected @Bind(R.id.right_stat_first) TextView rightStatFirstTextView; protected @Bind(R.id.right_stat_second) TextView rightStatSecondTextView; protected @Bind(R.id.title) TextView titleTextView; protected @BindColor(R.color.blue_darken_10) int blueDarken10Color; protected @BindColor(R.color.green_darken_10) int greenDarken10Color; protected @BindString(R.string.activity_project_state_change_creator_launched_a_project) String creatorLaunchedProjectString; protected @BindString(R.string.activity_project_state_change_goal) String goalString; protected @BindString(R.string.activity_project_state_change_launched) String launchedString; protected @BindString(R.string.activity_project_state_change_pledged_of_goal) String pledgedOfGoalString; protected @BindString(R.string.project_status_funded) String fundedString; protected @BindString(R.string.activity_project_state_change_project_was_successfully_funded) String projectSuccessfullyFundedString; @Inject KSCurrency ksCurrency; @Inject KSString ksString; private final @Nullable Delegate delegate; public interface Delegate { void projectStateChangedPositiveClicked(ProjectStateChangedPositiveViewHolder viewHolder, Activity activity); } public ProjectStateChangedPositiveViewHolder(final @NonNull View view, final @Nullable Delegate delegate) { super(view); this.delegate = delegate; ButterKnife.bind(this, view); ((KSApplication) view.getContext().getApplicationContext()).component().inject(this); } @Override public void onBind() { final Context context = context(); final Project project = activity().project(); if (project == null) { return; } final User user = activity().user(); if (user == null) { return; } final Photo photo = project.photo(); if (photo == null) { return; } switch (activity().category()) { case Activity.CATEGORY_LAUNCH: final DateTime launchedAt = coalesce(project.launchedAt(), new DateTime()); cardView.setCardBackgroundColor(blueDarken10Color); leftStatFirstTextView.setText(ksCurrency.format(project.goal(), project)); leftStatSecondTextView.setText(goalString); rightStatFirstTextView.setText(launchedString); rightStatSecondTextView.setText(DateTimeUtils.mediumDate(launchedAt)); titleTextView.setText(ksString.format( creatorLaunchedProjectString, "creator_name", user.name(), "project_name", project.name() )); break; case Activity.CATEGORY_SUCCESS: cardView.setCardBackgroundColor(greenDarken10Color); leftStatFirstTextView.setText(ksCurrency.format(project.pledged(), project)); leftStatSecondTextView.setText(ksString.format( pledgedOfGoalString, "goal", ksCurrency.format(project.goal(), project, true) )); rightStatFirstTextView.setText(fundedString); rightStatSecondTextView.setText(DateTimeUtils.mediumDate(activity().createdAt())); titleTextView.setText(ksString.format( projectSuccessfullyFundedString, "project_name", project.name() )); break; default: cardView.setCardBackgroundColor(greenDarken10Color); leftStatFirstTextView.setText(""); leftStatSecondTextView.setText(""); rightStatFirstTextView.setText(""); rightStatSecondTextView.setText(""); titleTextView.setText(""); } // TODO: Switch to "You launched a project" if current user launched //return context.getString(R.string.creator_launched_a_project, activity.user().name(), activity.project().name()); Picasso.with(context) .load(photo.full()) .into(projectPhotoImageView); } @OnClick(R.id.card_view) public void onClick() { if (this.delegate != null) { this.delegate.projectStateChangedPositiveClicked(this, activity()); } } }