package zenproject.meditation.android.ui.menu.dialogs.brush;
import android.app.Dialog;
import android.content.DialogInterface;
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.ink.BrushColor;
import zenproject.meditation.android.preferences.BrushOptionsPreferences;
import zenproject.meditation.android.ui.menu.dialogs.ZenDialog;
import zenproject.meditation.android.ui.menu.dialogs.brush.color.ColorListView;
import zenproject.meditation.android.ui.menu.dialogs.brush.size.SizeView;
// TODO this class could be provided with the required collaborators and then tested.
public class BrushOptionsDialog extends ZenDialog implements ColorSelectedListener, SizeChangedListener {
public static final String TAG = "BrushOptionsDialog";
private BrushColor selectedColor = BrushOptionsPreferences.newInstance().getBrushColor();
private int selectedSize = BrushOptionsPreferences.newInstance().getBrushSizePercentage();
private SizeView sizeView;
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
MaterialDialog materialDialog = new MaterialDialog.Builder(getActivity())
.title(ContextRetriever.INSTANCE.getResources().getString(R.string.brush_options_title))
.backgroundColor(Color.WHITE)
.customView(R.layout.brush_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) {
trackPreferences();
storePreferences();
}
})
.build();
ColorListView colorListView = (ColorListView) materialDialog.getCustomView().findViewById(R.id.color_picker);
colorListView.setColorSelectedListener(this);
sizeView = (SizeView) materialDialog.getCustomView().findViewById(R.id.brush_size);
sizeView.setSizeChangedListener(this);
return materialDialog;
}
private void trackPreferences() {
AnalyticsTracker.INSTANCE.trackBrush(selectedColor, selectedSize);
}
private void storePreferences() {
BrushOptionsPreferences brushOptionsPreferences = BrushOptionsPreferences.newInstance();
brushOptionsPreferences.applyBrushColor(selectedColor);
brushOptionsPreferences.applyBrushSizePercentage(selectedSize);
}
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
}
@Override
public void onColorSelected(BrushColor color) {
selectedColor = color;
sizeView.updateInkDropImageColor(color.toAndroidColor());
}
@Override
public void onSizeChanged(int size) {
selectedSize = size;
}
}