package io.github.droidkaigi.confsched.util;
import android.databinding.BindingAdapter;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.content.ContextCompat;
import android.text.TextUtils;
import android.text.util.Linkify;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import net.opacapp.multilinecollapsingtoolbar.CollapsingToolbarLayout;
import java.util.Date;
import io.github.droidkaigi.confsched.R;
import io.github.droidkaigi.confsched.model.Category;
import io.github.droidkaigi.confsched.model.Session;
import io.github.droidkaigi.confsched.widget.transformation.CropCircleTransformation;
public class DataBindingAttributeUtil {
public static void setImageUrlWithSize(ImageView imageView, @Nullable String imageUrl, float sizeInDimen, int placeholderResId) {
if (TextUtils.isEmpty(imageUrl)) {
imageView.setImageDrawable(ContextCompat.getDrawable(imageView.getContext(), placeholderResId));
} else {
final int size = Math.round(sizeInDimen);
imageView.setBackground(ContextCompat.getDrawable(imageView.getContext(), R.drawable.circle_border_grey200));
Picasso.with(imageView.getContext())
.load(imageUrl)
.resize(size, size)
.centerInside()
.placeholder(placeholderResId)
.error(placeholderResId)
.transform(new CropCircleTransformation())
.into(imageView);
}
}
@BindingAdapter({"speakerImageUrl", "speakerImageSize"})
public static void setSpeakerImageUrlWithSize(ImageView imageView, @Nullable String imageUrl, float sizeInDimen) {
setImageUrlWithSize(imageView, imageUrl, sizeInDimen, R.drawable.ic_speaker_placeholder);
}
@BindingAdapter({"contributorAvatarUrl", "contributorAvatarSize"})
public static void setContributorAvatarUrlWithSize(ImageView imageView, @Nullable String imageUrl, float sizeInDimen) {
setImageUrlWithSize(imageView, imageUrl, sizeInDimen, R.drawable.ic_speaker_placeholder);
}
@BindingAdapter("coverFadeBackground")
public static void setCoverFadeBackground(View view, @NonNull Category category) {
view.setBackgroundResource(category.getPaleColorResId());
}
@BindingAdapter("categoryVividColor")
public static void setCategoryVividColor(CollapsingToolbarLayout view, @NonNull Category category) {
view.setContentScrimColor(ContextCompat.getColor(view.getContext(), category.getVividColorResId()));
}
@BindingAdapter("categoryVividColor")
public static void setCategoryVividColor(TextView view, @NonNull Category category) {
view.setTextColor(ContextCompat.getColor(view.getContext(), category.getVividColorResId()));
}
@BindingAdapter("sessionTimeRange")
public static void setSessionTimeRange(TextView textView, @NonNull Session session) {
Date displaySTime = session.getDisplaySTime(textView.getContext());
Date displayETime = session.getDisplayETime(textView.getContext());
String timeRange = textView.getContext().getString(R.string.session_time_range,
DateUtil.getHourMinute(displaySTime),
DateUtil.getHourMinute(displayETime),
Integer.toString(DateUtil.getMinutes(displaySTime, displayETime)));
textView.setText(timeRange);
}
@BindingAdapter("sessionDetailTimeRange")
public static void setSessionDetailTimeRange(TextView textView, @NonNull Session session) {
Date displaySTime = session.getDisplaySTime(textView.getContext());
Date displayETime = session.getDisplayETime(textView.getContext());
String timeRange = textView.getContext().getString(R.string.session_time_range,
DateUtil.getLongFormatDate(displaySTime, textView.getContext()),
DateUtil.getHourMinute(displayETime),
Integer.toString(DateUtil.getMinutes(displaySTime, displayETime)));
textView.setText(timeRange);
}
@BindingAdapter("sessionDescription")
public static void setSessionDescription(TextView textView, @NonNull Session session) {
setTextRtlConsidered(textView, session.description);
Linkify.addLinks(textView, Linkify.ALL);
}
@BindingAdapter("sessionFab")
public static void setSessionFab(FloatingActionButton fab, @NonNull Session session) {
fab.setRippleColor(ContextCompat.getColor(fab.getContext(), session.category.getPaleColorResId()));
fab.setSelected(session.checked);
}
@BindingAdapter("textRtlConsidered")
public static void setTextRtlConsidered(TextView textView, String text) {
textView.setText(LocaleUtil.getRtlConsideredText(text));
}
}