package com.sinata.xqmuse.ui.home
|
|
import androidx.recyclerview.widget.GridLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
import cn.sinata.xldutils.fragment.BaseFragment
|
import cn.sinata.xldutils.gone
|
import cn.sinata.xldutils.invisible
|
import cn.sinata.xldutils.utils.ellipsize
|
import cn.sinata.xldutils.visible
|
import com.sinata.xqmuse.MainActivity
|
import com.sinata.xqmuse.R
|
import com.sinata.xqmuse.network.HttpManager
|
import com.sinata.xqmuse.network.entity.*
|
import com.sinata.xqmuse.network.requestByF
|
import com.sinata.xqmuse.ui.BGMSettingActivity
|
import com.sinata.xqmuse.ui.H5Activity
|
import com.sinata.xqmuse.ui.guide.GuideActivity
|
import com.sinata.xqmuse.ui.home.adapter.HomeAdapter
|
import com.sinata.xqmuse.ui.home.adapter.HomeBannerAdapter
|
import com.sinata.xqmuse.ui.home.adapter.TopMenuAdapter
|
import com.sinata.xqmuse.ui.login.LoginActivity
|
import com.sinata.xqmuse.ui.mine.VipActivity
|
import com.sinata.xqmuse.utils.Const
|
import com.sinata.xqmuse.utils.event.EmptyEvent
|
import com.sinata.xqmuse.utils.interfaces.StringCallback
|
import kotlinx.android.synthetic.main.fragment_home.*
|
import org.greenrobot.eventbus.EventBus
|
import org.jetbrains.anko.support.v4.startActivity
|
import org.jetbrains.anko.support.v4.toast
|
|
class HomeFragment : BaseFragment() {
|
override fun contentViewId() = R.layout.fragment_home
|
|
private val topMenu = arrayListOf<Menu>()
|
private val topMenuAdapter = TopMenuAdapter(topMenu)
|
private var today:HomeItem? = null //今日冥想
|
private val privacy = arrayListOf<CommonItemBean>() //私人订制
|
private val privacyAdapter by lazy { HomeBannerAdapter(privacy,requireContext()) }
|
|
private val list = arrayListOf<HomeListBean>()
|
private val adapter = HomeAdapter(list)
|
|
override fun onFirstVisibleToUser() {
|
rv_menu.layoutManager = GridLayoutManager(requireContext(),4)
|
rv_menu.adapter = topMenuAdapter
|
banner_privacy.adapter = privacyAdapter
|
rv_list.layoutManager = LinearLayoutManager(requireContext())
|
rv_list.adapter = adapter
|
adapter.callback = object :StringCallback{
|
override fun onResult(rst: String) {
|
showDialog()
|
HttpManager.getMeditationDetails(rst).requestByF(this@HomeFragment,success = {_,data->
|
dismissDialog()
|
data?.goDetail(requireContext())
|
}){_,_->
|
dismissDialog()
|
}
|
}
|
}
|
getTopMenu()
|
getToday()
|
getPrivacy()
|
getList()
|
getBottomMenu()
|
initClick()
|
}
|
|
fun refreshData(){
|
getToday()
|
getPrivacy()
|
getList()
|
EventBus.getDefault().post(EmptyEvent(Const.EventCode.CHANGE_BGM)) //BGM切换流程
|
}
|
|
private fun initClick() {
|
iv_search.setOnClickListener {
|
startActivity<SearchActivity>()
|
}
|
iv_privacy.setOnClickListener {
|
startActivity<GuideActivity>()
|
}
|
iv_guide.setOnClickListener {
|
HttpManager.getH5(4).requestByF(this){ _, data->
|
data?.let {
|
startActivity<H5Activity>("title" to "新手冥想指南","url" to it.content)
|
}
|
}
|
}
|
iv_daily_empty.setOnClickListener {
|
toast("平台暂未设置今日疗愈")
|
}
|
iv_voice.setOnClickListener {
|
startActivity<BGMSettingActivity>()
|
}
|
topMenuAdapter.setOnItemClickListener { view, position ->
|
startActivity<TypeVoiceActivity>("title" to topMenu[position].categoryName,"id" to topMenu[position].id)
|
}
|
iv_today.setOnClickListener {
|
if (today!=null){
|
if (today?.isShow == 1){ //跳转播放微电影
|
startActivity<MicroVideoActivity>("url" to today?.meditationVideo?.videoUrl,"title" to today?.meditationVideo?.title)
|
}else if (MainActivity.voice?.id == today?.meditationId){
|
EventBus.getDefault().post(EmptyEvent(Const.EventCode.PAUSE_OR_RESUME_THINK))
|
if (MainActivity.playing) //播放中
|
iv_play_today.setImageResource(R.mipmap.player_pause)
|
else
|
iv_play_today.setImageResource(R.mipmap.play)
|
}else{
|
showDialog()
|
HttpManager.getMeditationDetails(today!!.meditationId).requestByF(this,success = {_,data->
|
dismissDialog()
|
if (data?.chargeType == 2&&data.isVip != 1){ //会员免费
|
startActivity<VipActivity>()
|
}else if (data?.chargeType == 3&&data.isBuy != 1){ //单独收费且未购买
|
startActivity<BuyVoiceActivity>("id" to data.id)
|
}else{
|
if (MainActivity.playing)
|
EventBus.getDefault().post(EmptyEvent(Const.EventCode.FINISH_THINK))
|
MainActivity.voice = data
|
EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_THINK))
|
}
|
}){_,_->
|
dismissDialog()
|
}
|
}
|
}
|
}
|
banner_privacy.setOnBannerListener { data, position ->
|
showDialog()
|
HttpManager.getMeditationDetails(privacy[position].id).requestByF(this,success = {_,data->
|
dismissDialog()
|
data?.goDetail(requireContext())
|
}){_,_->
|
dismissDialog()
|
}
|
}
|
iv_pri_empty.setOnClickListener { startActivity<LoginActivity>() }
|
}
|
|
fun changeBg(bg:String,video:String){
|
if (video.isNotEmpty()){
|
iv_home.invisible()
|
player.visible()
|
player.release()
|
player.setUrl(video)
|
player.setLooping(true)
|
player.start()
|
} else if (bg.isNotEmpty()){
|
iv_home.setImageURI(bg)
|
player.release()
|
player.gone()
|
iv_home.visible()
|
}
|
}
|
|
private fun getTopMenu(){
|
HttpManager.getCategoryListByType(1).requestByF(this){_,data->
|
topMenu.clear()
|
topMenu.addAll(data?: arrayListOf())
|
topMenuAdapter.notifyDataSetChanged()
|
}
|
}
|
|
private fun getBottomMenu(){
|
HttpManager.getCategoryListByType(2).requestByF(this){_,data->
|
adapter.menus.clear()
|
adapter.menus.addAll(data?: arrayListOf())
|
if (list.isNotEmpty()){
|
list.add(1, HomeListBean(null, arrayListOf()))
|
adapter.notifyDataSetChanged()
|
}
|
}
|
}
|
|
fun getToday() {
|
HttpManager.getTodayMeditation().requestByF(this){_,data->
|
today = data
|
if (data?.isShow == 0){
|
if (today?.clientMeditationVO?.backgroundUrl.isNullOrEmpty()){
|
iv_daily_empty.visible()
|
}else{
|
iv_daily_empty.gone()
|
iv_today.setImageURI(today?.imageUrl)
|
tv_length_today.text = "${today?.clientMeditationVO?.meditationTitle?.ellipsize(12)} | ${"%02d:%02d".format((data?.time?:0)/60,(data?.time?:0)%60)}"
|
tv_today_count.text = "${(today?.clientMeditationVO?.realLearnedNum?:0)+(today?.clientMeditationVO?.virtualLearnedNum?:0)}人已参加学习"
|
}
|
}else{
|
if (today?.meditationVideo?.videoUrl.isNullOrEmpty()){
|
iv_daily_empty.visible()
|
}else{
|
iv_daily_empty.gone()
|
iv_today.setImageURI(today?.meditationVideo?.imageUrl)
|
tv_length_today.text = "${today?.meditationVideo?.title?.ellipsize(18)} | ${"%02d:%02d".format((today?.meditationVideo?.videoSecond?:0)/60,(today?.meditationVideo?.videoSecond?:0)%60)}"
|
tv_today_count.text = ""
|
}
|
}
|
}
|
}
|
|
fun refreshTodayPlayingState(){
|
if (MainActivity.voice?.id == today?.meditationId&&MainActivity.playing)
|
iv_play_today.setImageResource(R.mipmap.player_pause)
|
else
|
iv_play_today.setImageResource(R.mipmap.play)
|
}
|
|
fun getPrivacy() {
|
HttpManager.getPersonalityPlan().requestByF(this){_,data->
|
privacy.clear()
|
privacy.addAll(data?: arrayListOf())
|
privacyAdapter.notifyDataSetChanged()
|
}
|
}
|
|
private fun getList() {
|
HttpManager.getMeditationAndCateList().requestByF(this){_,data->
|
list.clear()
|
list.addAll(data?: arrayListOf())
|
if (adapter.menus.isNotEmpty()){
|
list.add(1, HomeListBean(null, arrayListOf()))
|
adapter.notifyDataSetChanged()
|
}
|
}
|
}
|
|
override fun onPause() {
|
super.onPause()
|
player?.pause()
|
}
|
|
override fun onResume() {
|
super.onResume()
|
player?.resume()
|
}
|
|
override fun onDestroy() {
|
super.onDestroy()
|
player?.release()
|
}
|
}
|