package com.sinata.xqmuse.ui.home
|
|
import androidx.core.os.bundleOf
|
import androidx.recyclerview.widget.GridLayoutManager
|
import cn.sinata.xldutils.fragment.BaseFragment
|
import cn.sinata.xldutils.gone
|
import cn.sinata.xldutils.utils.myToast
|
import com.sinata.xqmuse.R
|
import com.sinata.xqmuse.dialog.ChooseStarDialog
|
import com.sinata.xqmuse.network.HttpManager
|
import com.sinata.xqmuse.network.entity.LuckItem
|
import com.sinata.xqmuse.network.requestByF
|
import com.sinata.xqmuse.ui.home.adapter.LuckAdapter
|
import com.sinata.xqmuse.utils.Const
|
import com.sinata.xqmuse.utils.event.EmptyEvent
|
import com.sinata.xqmuse.utils.extention.clickDelay
|
import com.sinata.xqmuse.utils.extention.getStarIcon
|
import com.sinata.xqmuse.utils.interfaces.StringCallback
|
import kotlinx.android.synthetic.main.fragment_star.*
|
import org.greenrobot.eventbus.EventBus
|
import org.greenrobot.eventbus.Subscribe
|
|
class StarFragment : BaseFragment() {
|
override fun contentViewId() = R.layout.fragment_star
|
|
private val type by lazy { arguments?.getString("type")?:"" }
|
private val luckName = arrayListOf("综合指数", "爱情指数", "幸运数字", "健康指数", "财运指数", "工作指数", "速配星座", "幸运色")
|
private val lucks = arrayListOf<LuckItem>()
|
private val adapter = LuckAdapter(lucks)
|
|
override fun onFirstVisibleToUser() {
|
EventBus.getDefault().register(this)
|
if (type == TYPE_TODAY||type == TYPE_TOMORROW){
|
rv_luck.layoutManager = GridLayoutManager(requireContext(), 4)
|
rv_luck.adapter = adapter
|
}else{
|
rv_luck.gone()
|
tv_1.text = "运势详情"
|
}
|
|
tv_change.clickDelay {
|
ChooseStarDialog.show(
|
childFragmentManager,
|
(requireActivity() as StarActivity).star,
|
object : StringCallback {
|
override fun onResult(rst: String) {
|
(requireActivity() as StarActivity).star = rst
|
EventBus.getDefault().post(EmptyEvent(Const.EventCode.CHANGE_STAR))
|
HttpManager.changeConstellation(rst).requestByF(this@StarFragment) { _, _ ->
|
EventBus.getDefault().post(EmptyEvent(Const.EventCode.USER_INFO_CHANGED))
|
}
|
}
|
})
|
}
|
getData()
|
}
|
|
|
|
private fun getData(){
|
val star = (requireActivity() as StarActivity).star
|
tv_change.text = star
|
tv_change.setCompoundDrawablesRelativeWithIntrinsicBounds(star.getStarIcon(), 0, R.mipmap.ic_switch, 0)
|
HttpManager.constellation(star, type).requestByF(this, success = { _, data ->
|
tv_time.text = "日期:${data?.datetime}"
|
tv_tip.text = data?.summary
|
|
when (type){
|
TYPE_TODAY, TYPE_TOMORROW->{
|
lucks.clear()
|
lucks.addAll((0 until 8).map {
|
LuckItem(luckName[it], data?.getValue(luckName[it]) ?: "")
|
})
|
adapter.notifyDataSetChanged()
|
}
|
else->{
|
|
}
|
}
|
|
})
|
}
|
|
@Subscribe
|
fun refresh(e:EmptyEvent){
|
if (e.code == Const.EventCode.CHANGE_STAR)
|
getData()
|
}
|
|
override fun onDestroy() {
|
super.onDestroy()
|
EventBus.getDefault().unregister(this)
|
}
|
|
companion object{
|
const val TYPE_TODAY = "today"
|
const val TYPE_TOMORROW = "tomorrow"
|
const val TYPE_WEEK = "week"
|
const val TYPE_MONTH = "month"
|
const val TYPE_YEAR = "year"
|
fun newInstance(type:String):StarFragment{
|
val starFragment = StarFragment()
|
starFragment.arguments = bundleOf("type" to type)
|
return starFragment
|
}
|
}
|
}
|