package kz.arta.synergy.workflow.mobile.android.common.components;

import android.content.Context;
import android.util.AttributeSet;

import kz.arta.synergy.workflow.mobile.android.R;
import kz.arta.synergy.workflow.mobile.android.common.utils.Utils;

/**
 * Created by neox on 29.07.15.
 * Компонент для ввода длительности
 */
public class LengthEditText extends AEditText {

    private boolean isValid = true;

    public LengthEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) {
        super.onTextChanged(text, start, lengthBefore, lengthAfter);
        check(text.toString());
    }

    /**
     * Метод вызывается каждый раз, при изменении текста в компоненте
     *
     * @param text текущий текст, который находится в компоненте
     */
    public void check(String text) {
        setValid(true);
        if (text.length() == 0) {
            isValid = false;
            setValid(false);
            return;
        }
        if (Utils.getDoubleStat(text) == 0) {
            isValid = false;
            setValid(false);
            return;
        } else {
            isValid = true;
            setValid(true);
        }
        setValid(isValid);
    }

    /**
     * Валидно ли текущее поле
     *
     * @return true/false
     */
    public boolean isValid() {
        return isValid;
    }

    /**
     * Метод изменяет стиль компонента в зависимости от того, валидная ли строка введена
     *
     * @param valid true/false
     */
    private void setValid(boolean valid) {
        if (valid) {
            setBackgroundResource(R.drawable.edit_text_background);
        } else {
            setBackgroundResource(R.drawable.edit_text_background_not_valid);
        }
    }

    /**
     * Метод возвращает текущее значение компонента
     *
     * @return текущее значение компонента
     */
    public String getValue() {
        return getText().toString();
    }

    /**
     * Метод устанавливает значение в компонент
     *
     * @param value текст
     */
    public void setValue(String value) {
        setText(value);
    }
}
