package com.reactnativenavigation.views;
import android.content.Context;
import android.graphics.Color;
import android.view.View;
import com.balysv.materialmenu.MaterialMenuDrawable;
import com.reactnativenavigation.NavigationApplication;
import com.reactnativenavigation.params.TitleBarButtonParams;
import com.reactnativenavigation.params.TitleBarLeftButtonParams;
import com.reactnativenavigation.utils.ViewUtils;
class LeftButton extends MaterialMenuDrawable implements View.OnClickListener {
private static int getColor(TitleBarButtonParams params) {
return params != null && params.color.hasColor() ?
params.color.getColor() :
Color.BLACK;
}
private TitleBarLeftButtonParams params;
private final LeftButtonOnClickListener onClickListener;
private String navigatorEventId;
private final boolean overrideBackPressInJs;
LeftButton(Context context,
TitleBarLeftButtonParams params,
LeftButtonOnClickListener onClickListener,
String navigatorEventId,
boolean overrideBackPressInJs) {
super(context, getColor(params), Stroke.THIN);
this.params = params;
this.onClickListener = onClickListener;
this.navigatorEventId = navigatorEventId;
this.overrideBackPressInJs = overrideBackPressInJs;
setInitialState();
setColor();
}
void setIconState(TitleBarLeftButtonParams params) {
this.params = params;
setColor();
animateIconState(params.iconState);
}
void setCustomIcon(TitleBarLeftButtonParams params) {
this.params = params;
setColor();
}
@Override
public void onClick(View v) {
if (isBackButton()) {
handleBackButtonClick();
} else if (isSideMenuButton()) {
onClickListener.onSideMenuButtonClick();
} else {
sendClickEvent();
}
}
private void handleBackButtonClick() {
if (overrideBackPressInJs) {
NavigationApplication.instance.getEventEmitter().sendNavigatorEvent("backPress", navigatorEventId);
} else {
onClickListener.onTitleBarBackButtonClick();
}
}
private void setInitialState() {
if (params != null) {
if (params.iconState != null) {
setIconState(params.iconState);
}
} else {
setVisible(false);
}
}
private void setColor() {
if (!params.color.hasColor()) {
return;
}
if (params.hasDefaultIcon()) {
setColor(params.color.getColor());
} else if (params.hasCustomIcon()) {
ViewUtils.tintDrawable(params.icon, params.color.getColor(), true);
}
}
@Override
public void setColor(int color) {
if (params.hasDefaultIcon()) {
super.setColor(color);
} else {
ViewUtils.tintDrawable(params.icon, color, true );
}
}
private boolean isBackButton() {
return params.hasDefaultIcon() && getIconState() == IconState.ARROW;
}
private boolean isSideMenuButton() {
return params.hasDefaultIcon() && getIconState() == IconState.BURGER;
}
private void sendClickEvent() {
NavigationApplication.instance.getEventEmitter().sendNavigatorEvent(params.eventId, navigatorEventId);
}
void updateNavigatorEventId(String navigatorEventId) {
this.navigatorEventId = navigatorEventId;
}
}