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.view.WheelView import com.igo.user.R import com.igo.user.interfaces.StringCallback import org.jetbrains.anko.matchParent import org.jetbrains.anko.support.v4.find import org.jetbrains.anko.wrapContent import java.util.Calendar class CharterReserveTimeDialog : DialogFragment() { private val calendar = Calendar.getInstance() override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { return inflater.inflate(R.layout.dialog_time_wheel, container, false) } 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) } 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() setDay() wv_1.setOnWheelViewListener { _, item -> setMonth() setDay() } wv_2.setOnWheelViewListener { _, _ -> setDay() } find(R.id.tv_cancel).setOnClickListener { dismiss() } find(R.id.tv_action).setOnClickListener { callback?.onRlt(wv_1.seletedItem.replace("年","-") + wv_2.seletedItem.replace("月","-") + wv_3.seletedItem.replace("日","")) dismiss() } } private fun setYear() { calendar.timeInMillis = System.currentTimeMillis() + 24 * 60 * 60 * 1000 val y = calendar.get(Calendar.YEAR) val map = (0..20).map { "${(y+it)}年" } wv_1.setItems(map) wv_1.setSeletion(0) } private fun setMonth() { val start = if (wv_1.seletedIndex == 0) calendar.get(Calendar.MONTH) + 1 else 1 wv_2.setItems((start..12).map { String.format("%02d月",it) }) wv_2.setSeletion(0) } private fun setDay() { val start = if (wv_1.seletedIndex == 0&&wv_2.seletedIndex == 0) calendar.get(Calendar.DAY_OF_MONTH) else 1 val c = Calendar.getInstance() c.set(Calendar.YEAR,wv_1.seletedItem.substring(0,4).toInt()) c.set(Calendar.MONTH,wv_2.seletedItem.substring(0,2).toInt()-1) val max = c.getActualMaximum(Calendar.DAY_OF_MONTH) wv_3.setItems((start..max).map { String.format("%02d日",it) }) wv_3.setSeletion(0) } private var callback: StringCallback? = null fun setCallback(callback: StringCallback) { this.callback = callback } }