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.SPUtils
|
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<Int>()
|
private val months = arrayListOf<Int>()
|
private val wv_1 by lazy { find<WheelView>(R.id.wv_1) }
|
private val wv_2 by lazy { find<WheelView>(R.id.wv_2) }
|
private val wv_3 by lazy { find<WheelView>(R.id.wv_3) }
|
|
private val language by lazy { SPUtils.instance().getString("language","en") }
|
|
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<View>(R.id.wv_4).gone()
|
find<View>(R.id.wv_5).gone()
|
|
setYear()
|
setMonth(true)
|
setDay(true)
|
|
wv_3.setOnWheelViewListener { _, item ->
|
setMonth()
|
setDay()
|
}
|
wv_2.setOnWheelViewListener { _, _ ->
|
setDay()
|
}
|
|
find<View>(R.id.tv_cancel).setOnClickListener {
|
dismiss()
|
}
|
find<View>(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 == "en") 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
|
}
|
}
|