package zenproject.meditation.android.ui.menu.dialogs.flower;
import android.app.Dialog;
import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.NonNull;
import com.afollestad.materialdialogs.MaterialDialog;
import com.afollestad.materialdialogs.Theme;
import zenproject.meditation.android.analytics.AnalyticsTracker;
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 zenproject.meditation.android.ui.menu.dialogs.ZenDialog;
// TODO this class could be provided with the required collaborators and then tested.
public class FlowerOptionsDialog extends ZenDialog implements FlowerSelectedListener {
public static final String TAG = "FlowerOptionsDialog";
private Flower selectedFlower = FlowerOptionPreferences.newInstance().getFlower();
private FlowerSelectedListener flowerSelectedListener;
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
MaterialDialog materialDialog = new MaterialDialog.Builder(getActivity())
.title(ContextRetriever.INSTANCE.getResources().getString(R.string.flower_options_title))
.backgroundColor(Color.WHITE)
.customView(R.layout.flowers_options_dialog, false)
.positiveText(ContextRetriever.INSTANCE.getResources().getString(R.string.option_done))
.positiveColorRes(R.color.colorPrimaryDark)
.negativeText(ContextRetriever.INSTANCE.getResources().getString(R.string.option_cancel))
.negativeColorRes(R.color.colorAccent)
.theme(Theme.LIGHT)
.callback(new MaterialDialog.ButtonCallback() {
@Override
public void onPositive(MaterialDialog dialog) {
if (hasFlowerSelectedListener()) {
flowerSelectedListener.onFlowerSelected(selectedFlower);
}
trackPreferences();
storePreferences();
}
})
.build();
FlowerViewList flowerViewList = (FlowerViewList) materialDialog.getCustomView().findViewById(R.id.flower_picker);
flowerViewList.setFlowerSelectedListener(this);
return materialDialog;
}
private boolean hasFlowerSelectedListener() {
return this.flowerSelectedListener != null;
}
public void setFlowerSelectedListener(FlowerSelectedListener flowerSelectedListener) {
this.flowerSelectedListener = flowerSelectedListener;
}
private void trackPreferences() {
AnalyticsTracker.INSTANCE.trackFlower(selectedFlower);
}
private void storePreferences() {
FlowerOptionPreferences flowerOptionPreferences = FlowerOptionPreferences.newInstance();
flowerOptionPreferences.applyFlower(selectedFlower);
}
@Override
public void onFlowerSelected(Flower flower) {
selectedFlower = flower;
}
}