package zenproject.meditation.android.ui.menu.dialogs.flower; import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.widget.LinearLayout; import com.novoda.notils.caster.Views; import de.hdodenhof.circleimageview.CircleImageView; import zenproject.meditation.android.ContextRetriever; import zenproject.meditation.android.R; import zenproject.meditation.android.sketch.painting.flowers.Flower; import zenproject.meditation.android.preferences.FlowerOptionPreferences; import static zenproject.meditation.android.sketch.painting.ink.BrushColor.ACCENT; /** * TODO Consider using an adapter when the number of flowers increases */ @SuppressWarnings("PMD.TooManyMethods") public class FlowerViewList extends LinearLayout { private static final int UNSELECTED_BORDER_SIZE = ContextRetriever.INSTANCE.getResources().getDimensionPixelSize(R.dimen.divider_weight); private static final int SELECTED_BORDER_SIZE = ContextRetriever.INSTANCE.getResources().getDimensionPixelSize(R.dimen.color_selected_weight); private static final int DIVIDER = ContextRetriever.INSTANCE.getResources().getColor(R.color.divider); private CircleImageView noneFlower; private CircleImageView cherryFlower; private CircleImageView meconopsisFlower; private CircleImageView poppyFlower; private CircleImageView birdsfootFlower; private FlowerSelectedListener flowerSelectedListener; public FlowerViewList(Context context) { super(context); } public FlowerViewList(Context context, AttributeSet attrs) { super(context, attrs); } public FlowerViewList(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onFinishInflate() { noneFlower = Views.findById(this, R.id.no_flower); cherryFlower = Views.findById(this, R.id.cherry); meconopsisFlower = Views.findById(this, R.id.meconopsis); poppyFlower = Views.findById(this, R.id.poppy); birdsfootFlower = Views.findById(this, R.id.birdsfoot_flower); setSelectedFrom(FlowerOptionPreferences.newInstance().getFlower()); } private boolean hasFlowerSelectedListener() { return flowerSelectedListener != null; } public void setFlowerSelectedListener(FlowerSelectedListener flowerSelectedListener) { this.flowerSelectedListener = flowerSelectedListener; } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); noneFlower.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setSelected((CircleImageView) v); notifyFlowerSelected(Flower.NONE); } }); cherryFlower.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setSelected((CircleImageView) v); notifyFlowerSelected(Flower.CHERRY); } }); meconopsisFlower.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setSelected((CircleImageView) v); notifyFlowerSelected(Flower.MECONOPSIS); } }); poppyFlower.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setSelected((CircleImageView) v); notifyFlowerSelected(Flower.POPPY); } }); birdsfootFlower.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setSelected((CircleImageView) v); notifyFlowerSelected(Flower.BIRDSFOOT); } }); } private void setSelectedFrom(Flower flower) { if (Flower.NONE == flower) { setSelected(noneFlower); } else if (Flower.CHERRY == flower) { setSelected(cherryFlower); } else if (Flower.MECONOPSIS == flower) { setSelected(meconopsisFlower); } else if (Flower.POPPY == flower) { setSelected(poppyFlower); } else if (Flower.BIRDSFOOT == flower) { setSelected(birdsfootFlower); } } private void setSelected(CircleImageView circleImageView) { unselectAll(); circleImageView.setBorderColor(ACCENT.toAndroidColor()); circleImageView.setBorderWidth(SELECTED_BORDER_SIZE); } private void unselectAll() { noneFlower.setBorderColor(DIVIDER); cherryFlower.setBorderColor(DIVIDER); meconopsisFlower.setBorderColor(DIVIDER); poppyFlower.setBorderColor(DIVIDER); birdsfootFlower.setBorderColor(DIVIDER); noneFlower.setBorderWidth(UNSELECTED_BORDER_SIZE); cherryFlower.setBorderWidth(UNSELECTED_BORDER_SIZE); meconopsisFlower.setBorderWidth(UNSELECTED_BORDER_SIZE); poppyFlower.setBorderWidth(UNSELECTED_BORDER_SIZE); birdsfootFlower.setBorderWidth(UNSELECTED_BORDER_SIZE); } @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); noneFlower.setOnClickListener(null); cherryFlower.setOnClickListener(null); meconopsisFlower.setOnClickListener(null); poppyFlower.setOnClickListener(null); birdsfootFlower.setOnClickListener(null); } private void notifyFlowerSelected(Flower flower) { if (hasFlowerSelectedListener()) { flowerSelectedListener.onFlowerSelected(flower); } } }