lmw
2023-06-13 adf8013576cbdd12e5ebea8ff7e32baf5d558b27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
package com.kuanzhai.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 com.kuanzhai.user.R
import com.kuanzhai.user.interfaces.StringCallback
import kotlinx.android.synthetic.main.dialog_time_wheel.*
import org.jetbrains.anko.matchParent
import org.jetbrains.anko.wrapContent
import java.util.*
 
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)
    }
 
    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)
        val title = arguments?.getString("title")
        tv_title.text =
            if (title.isNullOrEmpty())
                SpanBuilder("选择用车时间(上下滑动选择)").size(0,6,16).bold(0,6).build()
            else title
 
 
        wv_4.gone()
        wv_5.gone()
 
        setYear()
        setMonth()
        setDay()
 
        wv_1.setOnWheelViewListener { _, item ->
            setMonth()
            setDay()
        }
        wv_2.setOnWheelViewListener { _, _ ->
            setDay()
        }
 
        tv_cancel.setOnClickListener {
            dismiss()
        }
        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
    }
}