/*
 * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
 */
package kr.co.zumo.app.lifeplus.view.custom.pin;

import android.support.annotation.StringRes;

/**
 * IPinContract
 * <pre>
 * </pre>
 *
 * @author 민효동
 * @version 1.0
 * @history 민효동   [2018-10-04]   [최초 작성]
 * @since 2018-10-04
 */
public interface IPinContract {

  interface View {
    /**
     * Presenter 지정
     *
     * @param presenter
     */
    void setPresenter(IPinContract.Presenter presenter);

    /**
     * 활성화
     */
    void setEnabled();

    /**
     * 비활성화
     */
    void setDisabled();

    /**
     * 다시 시작
     */
    void restart();

    /**
     * 가이드 텍스트를 업데이트 한다.
     *
     * @param stringId
     */
    void updateGuideText(@StringRes int stringId);

    /**
     * 가이드 텍스트를 업데이트 한다.
     *
     * @param str
     */
    void updateGuideText(String str);

    /**
     * @param color
     */
    void updateGuideTextColor(int color);

    /**
     * title 텍스트를 업데이트 한다.
     *
     * @param stringId
     */
    void updateTitleText(@StringRes int stringId);

    /**
     * 암호 재설정 버튼 표시;
     *
     * @param isVisible
     */
    void setResetButtonVisible(boolean isVisible);

    void dispose();
  }

  interface Presenter {
    /**
     * 뷰 시작 할 때
     */
    void onPinStart();

    /**
     * 핀 입력 완료했을 때
     *
     * @param result "1234"
     */
    void onPinResult(String result);

    /**
     * 재설정 버튼 눌렀을 때
     */
    void onClickPinReset();

    /**
     * 핀 입력 재시도
     */
    void retry();

    void dispose();
  }

  interface Listener {
    /**
     * 핀 입력 및 검증 완료했을 때
     *
     * @param result "1234"
     */
    void onPinResult(String result);

    /**
     * 재설정 버튼 눌렀을 때
     */
    void onClickPinReset();

    /**
     * 핀 입력 실패
     * - 2회 자체 검증 실패 시
     */
    void onPinFail();
  }
}
