package com.fuban.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.SpanBuilder
|
import cn.sinata.xldutils.utils.toTime
|
import com.fuban.user.R
|
import kotlinx.android.synthetic.main.dialog_time_wheel.*
|
import org.jetbrains.anko.matchParent
|
import org.jetbrains.anko.wrapContent
|
import java.util.*
|
|
class ChooseReserveTimeDialog : DialogFragment() {
|
override fun onCreateView(
|
inflater: LayoutInflater,
|
container: ViewGroup?,
|
savedInstanceState: Bundle?
|
): View? {
|
return inflater.inflate(R.layout.dialog_time_wheel, container, false)
|
}
|
|
private val title by lazy {
|
arguments?.getString("title")
|
}
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
super.onCreate(savedInstanceState)
|
setStyle(STYLE_NO_FRAME, 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)
|
if (title.isNullOrEmpty())
|
tv_title.text = SpanBuilder("选择用车时间(上下滑动选择)").size(0,6,16).bold(0,6).build()
|
else
|
tv_title.text = SpanBuilder("${title}(上下滑动选择)").size(0,title!!.length,16).bold(0,title!!.length).build()
|
|
wv_4.gone()
|
wv_5.gone()
|
|
setDay()
|
setHour()
|
setMin()
|
|
wv_1.setOnWheelViewListener { _, item ->
|
setHour()
|
setMin()
|
}
|
wv_2.setOnWheelViewListener { _, _ ->
|
setMin()
|
}
|
|
tv_cancel.setOnClickListener {
|
dismiss()
|
}
|
tv_action.setOnClickListener {
|
val nowMonth = Calendar.getInstance().get(Calendar.MONTH) + 1
|
val nowYear = Calendar.getInstance().get(Calendar.YEAR)
|
val s = if (wv_1.seletedIndex == 0) //现在
|
System.currentTimeMillis().toTime("yyyy-MM-dd HH:mm")
|
else { //翻年
|
(if (wv_1.seletedItem.substring(0, 2)
|
.toInt() < nowMonth
|
) nowYear + 1 else nowYear).toString() + "-" +
|
(wv_1.seletedItem.replace("月", "-").replace("日", " ")) +
|
wv_2.seletedItem.replace("点", ":") + wv_3.seletedItem.replace("分", "")
|
}
|
|
callback?.onOk(if (wv_1.seletedIndex == 0) "现在" else
|
wv_1.seletedItem+wv_2.seletedItem.replace("点", ":")+wv_3.seletedItem.replace("分", ""), s)
|
dismiss()
|
}
|
}
|
private var startTime = System.currentTimeMillis() + 11L * 60 * 1000 //预约开始时间从10分钟之后
|
|
private fun setDay() {
|
val calendar = Calendar.getInstance()
|
calendar.set(Calendar.HOUR_OF_DAY,23)
|
calendar.set(Calendar.MINUTE,56)
|
val todayLastTime = calendar.timeInMillis //今天11点56分的时间,今天最晚可预约时间
|
if (startTime >= todayLastTime)
|
wv_1.setItems(listOf("现在", (startTime+24*60*60*1000).toTime("MM月dd日")))
|
else
|
wv_1.setItems(listOf("现在", startTime.toTime("MM月dd日"),(startTime+24*60*60*1000).toTime("MM月dd日")))
|
wv_1.setSeletion(1)
|
}
|
|
private fun setHour() {
|
val i = if (wv_1.seletedIndex == 1) startTime.toTime("HH").toInt() else 0
|
wv_2.setItems(
|
if (wv_1.seletedIndex == 0)
|
arrayListOf("——")
|
else
|
(i..23).map {
|
String.format("%02d点",it)
|
}
|
)
|
wv_2.setSeletion(0)
|
}
|
|
private fun setMin() {
|
// val list = arrayListOf("0分", "10分", "20分", "30分", "40分", "50分")
|
// if (wv_1.seletedIndex == 0 && wv_2.seletedIndex == 0){
|
// var s = StringBuilder(startTime.toTime("mm分")).replace(1, 2, "0").toString()
|
// if (s == "00分")
|
// s = "0分"
|
// val indexOf = list.indexOf(s)
|
// wv_3.setItems(list.subList(indexOf,list.size))
|
// }else
|
// wv_3.setItems(list)
|
if (wv_1.seletedIndex == 0)
|
wv_3.setItems(arrayListOf("——"))
|
else{
|
if (wv_1.seletedIndex == 1&&wv_2.seletedIndex == 0){
|
wv_3.setItems((startTime.toTime("mm").toInt()..59).map {
|
String.format("%02d分",it)
|
})
|
}else{
|
wv_3.setItems((0..59).map {
|
String.format("%02d分",it)
|
})
|
}
|
}
|
wv_3.setSeletion(0)
|
}
|
|
interface Callback {
|
fun onOk(s: String,formatS:String)
|
}
|
|
private var callback: Callback? = null
|
|
fun setCallback(callback: Callback) {
|
this.callback = callback
|
}
|
}
|