From 08a196e60ed714263d5283f3c0579bb2dcf56e02 Mon Sep 17 00:00:00 2001
From: lmw <125975490@qq.com>
Date: 星期一, 03 三月 2025 17:44:26 +0800
Subject: [PATCH] save

---
 app/src/main/java/com/sinata/xqmuse/ui/home/HomeFragment.kt |  196 ++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 168 insertions(+), 28 deletions(-)

diff --git a/app/src/main/java/com/sinata/xqmuse/ui/home/HomeFragment.kt b/app/src/main/java/com/sinata/xqmuse/ui/home/HomeFragment.kt
index 1eb42a5..f67d9cc 100644
--- a/app/src/main/java/com/sinata/xqmuse/ui/home/HomeFragment.kt
+++ b/app/src/main/java/com/sinata/xqmuse/ui/home/HomeFragment.kt
@@ -1,47 +1,34 @@
 package com.sinata.xqmuse.ui.home
 
-import android.graphics.Color
 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.utils.SPUtils
-import cn.sinata.xldutils.utils.SpanBuilder
-import cn.sinata.xldutils.utils.myToast
-import cn.sinata.xldutils.utils.toTime
+import cn.sinata.xldutils.invisible
+import cn.sinata.xldutils.utils.ellipsize
 import cn.sinata.xldutils.visible
-import com.github.mikephil.charting.components.XAxis
-import com.github.mikephil.charting.components.YAxis
-import com.github.mikephil.charting.data.Entry
-import com.github.mikephil.charting.data.LineData
-import com.github.mikephil.charting.data.LineDataSet
-import com.github.mikephil.charting.formatter.ValueFormatter
-import com.github.mikephil.charting.interfaces.datasets.ILineDataSet
+import com.google.android.exoplayer2.upstream.DataSpec
+import com.google.android.exoplayer2.upstream.RawResourceDataSource
 import com.sinata.xqmuse.MainActivity
 import com.sinata.xqmuse.R
-import com.sinata.xqmuse.dialog.ChooseStarDialog
-import com.sinata.xqmuse.dialog.ChooseWeightDialog
-import com.sinata.xqmuse.dialog.NoticeDialog
 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.LuckAdapter
 import com.sinata.xqmuse.ui.home.adapter.TopMenuAdapter
-import com.sinata.xqmuse.ui.mine.UserInfoActivity
+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.extention.clickDelay
-import com.sinata.xqmuse.utils.extention.getArrowIcon
-import com.sinata.xqmuse.utils.extention.getStarIcon
 import com.sinata.xqmuse.utils.interfaces.StringCallback
 import kotlinx.android.synthetic.main.fragment_home.*
 import org.greenrobot.eventbus.EventBus
-import org.greenrobot.eventbus.Subscribe
 import org.jetbrains.anko.support.v4.startActivity
-import java.util.*
-import kotlin.math.absoluteValue
+import org.jetbrains.anko.support.v4.toast
 
 class HomeFragment : BaseFragment() {
     override fun contentViewId() = R.layout.fragment_home
@@ -61,15 +48,127 @@
         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>()
+        }
+        tv_3.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()
+        }else{
+            iv_home.invisible()
+            player.visible()
+            player.release()
+            //ExoPlayer
+            val dataSpec = DataSpec(RawResourceDataSource.buildRawResourceUri(R.raw.default_bg))
+            val rawResourceDataSource = RawResourceDataSource(requireContext())
+            try {
+                rawResourceDataSource.open(dataSpec)
+            } catch (e: RawResourceDataSource.RawResourceDataSourceException) {
+                e.printStackTrace()
+            }
+            val url = rawResourceDataSource.uri.toString()
+            player.setUrl(url)
+            player.setLooping(true)
+            player.start()
+        }
     }
 
     private fun getTopMenu(){
@@ -91,16 +190,43 @@
         }
     }
 
-    private fun getToday() {
+    fun getToday() {
         HttpManager.getTodayMeditation().requestByF(this){_,data->
             today = data
-            iv_today.setImageURI(today?.clientMeditationVO?.backgroundUrl)
-            tv_length_today.text = "${today?.clientMeditationVO?.meditationTitle} | ${"00:00"}"
-            tv_today_count.text = "${today?.clientMeditationVO?.realLearnedNum}人已参加学习"
+            if (data?.isShow == 0){
+                tv_1.text = "每日疗愈"
+                tv_sub_1.text = "Daily Meditation"
+                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{
+                tv_1.text = "泉疗愈 微电影"
+                tv_sub_1.text = "Spring Healing Microfilm"
+                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 = ""
+                }
+            }
         }
     }
 
-    private fun getPrivacy() {
+    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())
@@ -119,4 +245,18 @@
         }
     }
 
+    override fun onPause() {
+        super.onPause()
+        player?.pause()
+    }
+
+    override fun onResume() {
+        super.onResume()
+        player?.resume()
+    }
+
+    override fun onDestroy() {
+        super.onDestroy()
+        player?.release()
+    }
 }
\ No newline at end of file

--
Gitblit v1.7.1