18034727885
2026-09-18 1328a7b0b90825b1fd63bca8f7675e52df8b151d
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
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<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) }
 
    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()
        setDay()
 
        wv_1.setOnWheelViewListener { _, item ->
            setMonth()
            setDay()
        }
        wv_2.setOnWheelViewListener { _, _ ->
            setDay()
        }
 
        find<View>(R.id.tv_cancel).setOnClickListener {
            dismiss()
        }
        find<View>(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
    }
}