package com.florianmski.tracktoid.ui.widgets; import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; import com.florianmski.tracktoid.R; import com.florianmski.tracktoid.TraktoidTheme; import com.florianmski.tracktoid.data.TraktBase; public class FlagsView extends RelativeLayout { private View vSeen; private View vCollection; private View vWatchlist; private TextView tvTitle; private TextView tvSubtitle; public FlagsView(Context context) { this(context, null, 0); } public FlagsView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public FlagsView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); initView(context); } private void initView(Context context) { View v = inflate(context, R.layout.view_flags, this); vSeen = v.findViewById(R.id.viewSeen); vCollection = v.findViewById(R.id.viewCollection); vWatchlist = v.findViewById(R.id.viewWatchlist); tvTitle = (TextView)v.findViewById(R.id.textViewTitle); tvSubtitle = (TextView)v.findViewById(R.id.textViewSubtitle); } private void resetVisibility() { flagsVisibility(false); visibility(tvTitle, false); visibility(tvSubtitle, false); } private void flagsVisibility(Boolean flagsVisibility) { visibility(vSeen, flagsVisibility); visibility(vCollection, flagsVisibility); visibility(vWatchlist, flagsVisibility); } public void init(Flags flags) { resetVisibility(); if(flags.traktBase != null) { visibility(vSeen, flags.traktBase.watched); visibility(vCollection, flags.traktBase.collected); visibility(vWatchlist, flags.traktBase.watchlisted); setTitle(flags.traktBase.title); } if(flags.title != null) setTitle(flags.title); if(flags.subtitle != null) setSubtitle(flags.subtitle); if(flags.theme != null) { tvTitle.setBackgroundColor(flags.theme.getColor(getContext())); tvSubtitle.setBackgroundColor(flags.theme.getColor(getContext())); } flagsVisibility(flags.displayFlags); visibility(tvTitle, flags.displayTitle); visibility(tvSubtitle, flags.displaySubtitle); } private void setText(TextView tv, String text) { if(text != null && !text.isEmpty()) { visibility(tv, true); tv.setText(text); } else visibility(tv, false); } public void setTitle(String title) { setText(tvTitle, title); } public void setSubtitle(String subtitle) { setText(tvSubtitle, subtitle); } // TODO put it in a Utils class (ViewUtils?) private void visibility(View v, Boolean visible) { if(visible != null) v.setVisibility(visible ? View.VISIBLE : View.GONE); } public static class Flags { public final TraktBase traktBase; public final String title; public final String subtitle; public Boolean displayFlags; public Boolean displayTitle; public Boolean displaySubtitle; public TraktoidTheme theme; public Flags(Builder builder) { this.traktBase = builder.traktBase; this.title = builder.title; this.subtitle = builder.subtitle; this.displayFlags = builder.displayFlags; this.displayTitle = builder.displayTitle; this.theme = builder.theme; } public static class Builder { private TraktBase traktBase; private String title; private String subtitle; private Boolean displayFlags; private Boolean displayTitle; private Boolean displaySubtitle; private TraktoidTheme theme; public Builder() {} public Builder(TraktBase traktBase) { this.traktBase = traktBase; } public Builder title(String title) { this.title = title; return this; } public Builder subtitle(String subtitle) { this.subtitle = subtitle; return this; } public Builder displayFlags(boolean displayFlags) { this.displayFlags = displayFlags; return this; } public Builder displayTitle(boolean displayTitle) { this.displayTitle = displayTitle; return this; } public Builder displaySubtitle(boolean displaySubtitle) { this.displaySubtitle = displaySubtitle; return this; } public Builder theme(TraktoidTheme theme) { this.theme = theme; return this; } public Flags build() { return new Flags(this); } } } }