package com.igo.user.dialog import android.os.Bundle import android.view.Gravity import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.DialogFragment import cn.sinata.xldutils.gone import cn.sinata.xldutils.utils.LanguageUtil import cn.sinata.xldutils.view.WheelView import com.igo.user.R import com.igo.user.utils.Const import org.jetbrains.anko.matchParent import org.jetbrains.anko.support.v4.find import org.jetbrains.anko.wrapContent import java.util.Calendar class ChooseBirthEnglishDialog : DialogFragment() { private val years = arrayListOf() private val months = arrayListOf() private val wv_1 by lazy { find(R.id.wv_1) } private val wv_2 by lazy { find(R.id.wv_2) } private val wv_3 by lazy { find(R.id.wv_3) } private val language by lazy { LanguageUtil.getLanguage() } override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { return inflater.inflate(R.layout.dialog_birth_day, container, false) } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setStyle(STYLE_NO_FRAME, cn.sinata.xldutils.R.style.Dialog) } override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) dialog?.window?.setLayout(matchParent, wrapContent) dialog?.window?.setGravity(Gravity.BOTTOM) dialog?.setCanceledOnTouchOutside(true) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) find(R.id.wv_4).gone() find(R.id.wv_5).gone() setYear() setMonth(true) setDay(true) wv_3.setOnWheelViewListener { _, item -> setMonth() setDay() } wv_2.setOnWheelViewListener { _, _ -> setDay() } find(R.id.tv_cancel).setOnClickListener { dismiss() } find(R.id.tv_sure).setOnClickListener { callback?.onOk(wv_3.seletedItem+"-"+(months[wv_2.seletedIndex]+1) +"-"+wv_1.seletedItem,wv_1.seletedItem+" "+wv_2.seletedItem+","+wv_3.seletedItem) dismiss() } } private fun setYear() { val year = Calendar.getInstance().get(Calendar.YEAR) years.addAll((1900..year)) wv_3.setItems(years.map { "${it}" }) wv_3.setSeletion(years.lastIndex) } private fun setMonth(isFirst:Boolean = false) { val month = Calendar.getInstance().get(Calendar.MONTH) val end = if (wv_3.seletedIndex == years.lastIndex) month else 11 months.clear() months.addAll((0..end)) val list = if (language == Const.Language.ENGLISH) Const.monthEnglish.subList(0,end+1) else Const.monthFrench.subList(0,end+1) wv_2.setItems(list) wv_2.setSeletion(if (isFirst) list.lastIndex else 0) } private fun setDay(isFirst:Boolean = false) { val c = Calendar.getInstance() c.set(Calendar.YEAR,years[wv_3.seletedIndex]) c.set(Calendar.MONTH,months[wv_2.seletedIndex]) val max = c.getActualMaximum(Calendar.DAY_OF_MONTH) val current = Calendar.getInstance().get(Calendar.DAY_OF_MONTH) val end = if (wv_3.seletedIndex == years.lastIndex&&wv_2.seletedIndex == months.lastIndex) current else max val list = (1..end).map { String.format("%02d",it) } wv_1.setItems(list) wv_1.setSeletion(if (isFirst) list.lastIndex else 0) } interface Callback { fun onOk(s: String,formatS:String) } private var callback: Callback? = null fun setCallback(callback: Callback) { this.callback = callback } }