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

import android.widget.Checkable;

import java.util.ArrayList;

/**
 * CheckBoxAllDriver
 * <pre>
 * </pre>
 *
 * @author 민효동
 * @version 1.0
 * @history 민효동   [2018. 9. 18.]   [최초 작성]
 * @since 2018. 9. 18.
 */
public class CheckBoxAllDriver {

  Checkable allBox;
  ArrayList<Checkable> boxes;

  public CheckBoxAllDriver(Checkable allBox) {
    this.allBox = allBox;
    boxes = new ArrayList<>();
  }

  /**
   * 체크 박스 추가
   *
   * @param box
   */
  public void addChildBox(Checkable box) {
    boxes.add(box);
  }

  /**
   * 모든 버튼 체크
   *
   * @param isChecked true|false
   */
  private void checkAll(boolean isChecked) {
    for (Checkable box : boxes) {
      box.setChecked(isChecked);
    }
  }

  /**
   * 모든 버튼이 체크되어있다면 올박스를 체크한다.
   */
  private void applyCheckAll() {
    boolean isCheckedAll = true;
    for (Checkable box : boxes) {
      isCheckedAll = isCheckedAll & box.isChecked();
    }

    allBox.setChecked(isCheckedAll);
  }

  /**
   * 모든 버튼이 체크되어있다면 올박스를 체크한다.
   */
  public void check() {
    applyCheckAll();
  }

  /**
   * 모든 버튼이 체크되어있다면 올박스를 체크한다.
   * - OnClickListener 에서 사용해야 제대로 작동함
   */
  public void applyCheckAll(boolean isChecked) {
    checkAll(isChecked);
  }

}
