package co.smartreceipts.android.widget;
import android.content.Context;
import android.support.annotation.Nullable;
import android.support.annotation.StringRes;
import android.support.v4.content.ContextCompat;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.transitionseverywhere.Slide;
import com.transitionseverywhere.TransitionManager;
import co.smartreceipts.android.R;
public class Tooltip extends RelativeLayout {
private Button mButtonNo, mButtonYes;
private TextView mMessageText;
private ImageView mCloseIcon, mErrorIcon;
public Tooltip(Context context) {
super(context);
init();
}
public Tooltip(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public Tooltip(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
inflate(getContext(), R.layout.tooltip, this);
mMessageText = (TextView) findViewById(R.id.tooltip_message);
mButtonNo = (Button) findViewById(R.id.tooltip_no);
mButtonYes = (Button) findViewById(R.id.tooltip_yes);
mCloseIcon = (ImageView) findViewById(R.id.tooltip_close_icon);
mErrorIcon = (ImageView) findViewById(R.id.tooltip_error_icon);
setVisibility(VISIBLE);
}
public void setError(@StringRes int messageStringId, @Nullable OnClickListener closeClickListener) {
setViewStateError();
mMessageText.setText(getContext().getText(messageStringId));
showCloseIcon(closeClickListener);
}
public void setErrorWithoutClose(@StringRes int messageStringId, @Nullable OnClickListener tooltipClickListener) {
setViewStateError();
mCloseIcon.setVisibility(GONE);
mMessageText.setText(getContext().getText(messageStringId));
setTooltipClickListener(tooltipClickListener);
}
public void setInfo(@StringRes int infoStringId, @Nullable OnClickListener tooltipClickListener, @Nullable OnClickListener closeClickListener) {
setInfoMessage(infoStringId);
setTooltipClickListener(tooltipClickListener);
showCloseIcon(closeClickListener);
mErrorIcon.setVisibility(GONE);
mButtonNo.setVisibility(GONE);
mButtonYes.setVisibility(GONE);
}
public void setQuestion(@StringRes int questionStringId, @Nullable OnClickListener noClickListener, @Nullable OnClickListener yesClickListener) {
setInfoMessage(questionStringId);
mButtonNo.setVisibility(VISIBLE);
mButtonYes.setVisibility(VISIBLE);
mCloseIcon.setVisibility(GONE);
mErrorIcon.setVisibility(GONE);
mButtonNo.setOnClickListener(noClickListener);
mButtonYes.setOnClickListener(yesClickListener);
}
public void setInfoMessage(@StringRes int messageStringId) {
setInfoBackground();
mMessageText.setText(messageStringId);
mMessageText.setVisibility(VISIBLE);
}
public void setInfoMessage(@Nullable CharSequence text) {
setInfoBackground();
mMessageText.setText(text);
mMessageText.setVisibility(VISIBLE);
}
public void setTooltipClickListener(@Nullable OnClickListener tooltipClickListener) {
setOnClickListener(tooltipClickListener);
}
public void showCloseIcon(@Nullable OnClickListener closeClickListener) {
mCloseIcon.setVisibility(VISIBLE);
mCloseIcon.setOnClickListener(closeClickListener);
}
private void setErrorBackground() {
setBackgroundColor(ContextCompat.getColor(getContext(), R.color.smart_receipts_colorError));
}
private void setInfoBackground() {
setBackgroundColor(ContextCompat.getColor(getContext(), R.color.smart_receipts_colorAccent));
}
private void setViewStateError() {
setErrorBackground();
mMessageText.setVisibility(VISIBLE);
mCloseIcon.setVisibility(VISIBLE);
mErrorIcon.setVisibility(VISIBLE);
mButtonNo.setVisibility(GONE);
mButtonYes.setVisibility(GONE);
}
public void hideWithAnimation() {
TransitionManager.beginDelayedTransition((ViewGroup) getParent(), new Slide(Gravity.TOP));
setVisibility(GONE);
}
public void showWithAnimation() {
TransitionManager.beginDelayedTransition((ViewGroup) getParent(), new Slide(Gravity.TOP));
setVisibility(VISIBLE);
}
}