package com.marverenic.music.viewmodel;
import android.databinding.BindingAdapter;
import android.graphics.Bitmap;
import android.graphics.PorterDuff;
import android.support.annotation.ColorInt;
import android.support.annotation.Nullable;
import android.support.design.widget.AppBarLayout;
import android.support.design.widget.BottomSheetBehavior;
import android.support.v7.widget.Toolbar;
import android.text.TextWatcher;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.MarginLayoutParams;
import android.view.animation.Animation;
import android.widget.EditText;
import android.widget.ImageView;
import com.marverenic.music.view.ViewUtils;
public class BindingAdapters {
@BindingAdapter("height")
public static void bindHeight(View view, int height) {
ViewGroup.LayoutParams params = view.getLayoutParams();
params.height = height;
view.setLayoutParams(params);
}
@BindingAdapter("bitmap")
public static void bindBitmap(ImageView imageView, Bitmap bitmap) {
imageView.setImageBitmap(bitmap);
}
@BindingAdapter("tint")
public static void bindImageViewTint(ImageView imageView, @ColorInt int color) {
imageView.setColorFilter(color, PorterDuff.Mode.SRC_IN);
}
@BindingAdapter("backgroundTint")
public static void bindViewBackgroundTint(View view, @ColorInt int color) {
view.getBackground().setColorFilter(color, PorterDuff.Mode.SRC_IN);
}
@BindingAdapter("marginLeft")
public static void bindLeftMargin(View view, int margin) {
MarginLayoutParams params = (MarginLayoutParams) view.getLayoutParams();
params.leftMargin = margin;
view.getParent().requestLayout();
}
@BindingAdapter("android:layout_marginBottom")
public static void bindBottomMargin(View view, int margin) {
MarginLayoutParams params = (MarginLayoutParams) view.getLayoutParams();
params.bottomMargin = margin;
view.getParent().requestLayout();
}
@BindingAdapter("android:layout_marginTop")
public static void bindTopMargin(View view, int margin) {
MarginLayoutParams params = (MarginLayoutParams) view.getLayoutParams();
params.topMargin = margin;
view.getParent().requestLayout();
}
@BindingAdapter("animation")
public static void bindAnimation(View view, @Nullable Animation animation) {
if (animation == null) {
return;
}
view.setAnimation(animation);
animation.start();
}
@BindingAdapter("behavior_bottomSheetCallback")
public static void bindBottomSheetCallback(View view,
BottomSheetBehavior.BottomSheetCallback callback) {
BottomSheetBehavior<View> behavior = BottomSheetBehavior.from(view);
behavior.setBottomSheetCallback(callback);
callback.onStateChanged(view, behavior.getState());
}
@BindingAdapter("behavior_peekHeight")
public static void bindPeekHeight(View view, int peekHeight) {
BottomSheetBehavior<View> behavior = BottomSheetBehavior.from(view);
behavior.setPeekHeight(peekHeight);
}
@BindingAdapter("textChangedListener")
public static void bindTextChangedListener(EditText editText, TextWatcher watcher) {
editText.addTextChangedListener(watcher);
}
@BindingAdapter("toolbar_marginTop")
public static void bindToolbarMarginTop(ViewGroup toolbarContainer, int marginTop) {
Toolbar toolbar = ViewUtils.findViewByClass(toolbarContainer, Toolbar.class);
bindTopMargin(toolbar, marginTop);
}
@BindingAdapter("toolbar_alpha")
public static void bindToolbarAlpha(ViewGroup toolbarContainer, float alpha) {
Toolbar toolbar = ViewUtils.findViewByClass(toolbarContainer, Toolbar.class);
toolbar.setAlpha(alpha);
}
@BindingAdapter("toolbar_expanded")
public static void bindToolbarExpanded(ViewGroup container, boolean expanded) {
if (expanded) {
AppBarLayout appBarLayout = ViewUtils.findViewByClass(container, AppBarLayout.class);
appBarLayout.setExpanded(true);
}
}
}