package kr.co.zumo.app.lifeplus.manager;

import android.support.annotation.StringRes;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.ProgressBar;

import kr.co.zumo.app.R;

/**
 * Fragment의 ActionBar 관리
 * <pre>
 * </pre>
 *
 * @author 하세미
 * @version 1.0
 * @history 하세미   [2018. 9. 5.]   [최초 작성]
 * @since 2018. 9. 5.
 */
public class ActionBarManager {

  private static final ActionBarManager ourInstance = new ActionBarManager();

  public static ActionBarManager getInstance() {
    return ourInstance;
  }

  private ActionBar actionBar;

  private ActionBarManager() {
  }

  /**
   * actionBar 정보 받아옴.
   *
   * @param actionBar
   */
  public void init(ActionBar actionBar) {
    this.actionBar = actionBar;
  }


  /**
   * actionbar 제목 설정
   *
   * @param stringId
   */
  public void setTitle(@StringRes int stringId) {
    actionBar.setTitle(stringId);
  }

  /**
   * actionbar back 설정 유무
   *
   * @param isEnabled
   */
  public void setDisplayHomeAsUpEnabled(boolean isEnabled) {
    actionBar.setDisplayHomeAsUpEnabled(isEnabled);
  }

  /**
   * actionbar 유무
   *
   * @param isEnabled
   */
  public void setDisplayShowTitleEnabled(boolean isEnabled) {
    actionBar.setDisplayShowTitleEnabled(isEnabled);
  }

  /**
   * actionbar hide
   */
  public void hide() {
    actionBar.hide();
  }

  /**
   * show
   */
  public void show() {
    actionBar.show();
  }

  /**
   * Custom Layout 을 지정한다.
   *
   * @param view
   */
  public void setCustomView(View view) {

    // Custom Actionbar 를 사용하기 위해 CustomEnabled 을 true 시키고 필요 없는 것은 false 시킨다
    actionBar.setDisplayShowCustomEnabled(true);
    actionBar.setDisplayHomeAsUpEnabled(false);      //액션바 아이콘을 업 네비게이션 형태로 표시합니다.
    actionBar.setDisplayShowTitleEnabled(false);    //액션바에 표시되는 제목의 표시유무를 설정합니다.
    actionBar.setDisplayShowHomeEnabled(false);      //홈 아이콘을 숨김처리합니다.
    actionBar.setCustomView(view);

    Toolbar parent = (Toolbar) view.getParent();
    parent.setPadding(0, 0, 0, 0);//for tab otherwise give space in tab
    parent.setContentInsetsAbsolute(0, 0);

    setDisplayOptions(android.app.ActionBar.DISPLAY_SHOW_CUSTOM);
    setElevation(0);
  }

  /**
   * Progress bar 의 진행율 설정
   *
   * @param percent 0~100
   */
  public void setProgress(int percent) {
    View customView = actionBar.getCustomView();
    if (null != customView) {
      ProgressBar progressBar = customView.findViewById(R.id.progress_bar);
      progressBar.setProgress(percent);
    }
  }

  private void setDisplayOptions(int displayOptions) {
    actionBar.setDisplayOptions(displayOptions);
  }

  private void setElevation(int elevation) {
    actionBar.setElevation(elevation);
  }

  /***********************************
   * life-cycle
   ***********************************/
  //  public void init() {
//
//  }
//
//  public void start() {
//
//  }
//
//  public void stop() {
//
//  }
//
//  public void dispose() {
//
//  }
}
