package zenproject.meditation.android.ui.menu.buttons.creators;
import android.content.Context;
import android.support.annotation.DrawableRes;
import android.support.annotation.IdRes;
import android.support.v4.content.ContextCompat;
import android.view.Gravity;
import android.view.ViewGroup;
import com.oguzdev.circularfloatingactionmenu.library.CircularMenu;
import zenproject.meditation.android.ContextRetriever;
import zenproject.meditation.android.R;
import zenproject.meditation.android.ui.menu.buttons.FloatingActionButton;
import zenproject.meditation.android.ui.menu.buttons.MenuButton;
public final class CircularMenuCreator {
private static final int MENU_RADIUS = ContextRetriever.INSTANCE.getResources().getDimensionPixelSize(R.dimen.menu_floating_action_button_radius);
private static final int BUTTON_SIZE = ContextRetriever.INSTANCE.getResources().getDimensionPixelSize(R.dimen.menu_floating_action_button_size);
private static final int MARGIN = ContextRetriever.INSTANCE.getResources().getDimensionPixelOffset(R.dimen.action_button_margin);
private static final int MENU_COLOR = ContextRetriever.INSTANCE.getResources().getColor(R.color.colorAccent);
private static final int START_ANGLE = 185;
private static final int END_ANGLE = 85;
private CircularMenuCreator() {
//no-op
}
public static CircularMenu create() {
Context context = ContextRetriever.INSTANCE.getApplicationContext();
return new CircularMenu.Builder(context)
.setRadius(MENU_RADIUS)
.addSubActionView(SubActionButtonCreator.createFrom(context,
R.color.colorPrimary,
R.drawable.brush,
MenuButton.BRUSH.getId()))
.addSubActionView(SubActionButtonCreator.createFrom(context,
R.color.colorPrimary,
R.drawable.bunch_flowers,
MenuButton.FLOWER.getId()))
/* TODO uncomment this code when the feature to select different music is implemented.
.addSubActionView(SubActionButtonCreator.createFrom(context,
R.color.colorPrimary,
R.drawable.music,
MenuButton.MUSIC.getId())) */
.addSubActionView(SubActionButtonCreator.createFrom(context,
R.color.colorPrimaryLight,
R.drawable.share,
MenuButton.SHARE.getId()))
.addSubActionView(SubActionButtonCreator.createFrom(context,
R.color.colorPrimaryLight,
R.drawable.save,
MenuButton.SCREENSHOT.getId()))
.addSubActionView(SubActionButtonCreator.createFrom(context,
R.color.colorAccent,
R.drawable.restart,
MenuButton.RESTART.getId()))
.attachTo(createMenuButtonWith(context,
R.drawable.menu,
MenuButton.MENU.getId()))
.setStartAngle(START_ANGLE)
.setEndAngle(END_ANGLE)
.build();
}
private static FloatingActionButton createMenuButtonWith(Context context, @DrawableRes int drawableId, @IdRes int resId) {
return new FloatingActionButton.Builder(context)
.withButtonSize(BUTTON_SIZE)
.withMargins(MARGIN, MARGIN, MARGIN, MARGIN)
.withButtonColor(MENU_COLOR)
.withGravity(Gravity.TOP | Gravity.END)
.withDrawable(ContextCompat.getDrawable(ContextRetriever.INSTANCE.getApplicationContext(), drawableId))
.withId(resId)
.createInto(getActivityContentView());
}
private static ViewGroup getActivityContentView() {
return (ViewGroup) ContextRetriever.INSTANCE.getActivity().getWindow().getDecorView().findViewById(android.R.id.content);
}
}