lmw
6 天以前 c42258b3bdc3527b74e05bbd917ceaa458cc205a
app/src/main/java/com/dollearn/student/ui/home/ScheduleActivityNew.kt
@@ -1,73 +1,225 @@
package com.dollearn.student.ui.home
import androidx.fragment.app.Fragment
import android.widget.TextView
import androidx.core.os.bundleOf
import cn.sinata.xldutils.utils.myToast
import cn.sinata.xldutils.utils.showAllowingStateLoss
import com.dollearn.student.R
import com.dollearn.student.dialog.GameTypeDialog
import com.dollearn.student.dialog.TipDialog
import com.dollearn.student.network.Apis
import com.dollearn.student.network.HttpManager
import com.dollearn.student.network.request
import com.dollearn.student.ui.TransparentStatusBarActivity
import com.dollearn.student.utils.Const
import com.dollearn.student.utils.event.EmptyEvent
import com.dollearn.student.utils.event.IntEvent
import kotlinx.android.synthetic.main.activity_schedul.*
import com.dollearn.student.utils.extention.clickDelay
import kotlinx.android.synthetic.main.activity_schedul_new.*
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.jetbrains.anko.backgroundResource
import org.jetbrains.anko.browse
import org.jetbrains.anko.startActivity
import org.jetbrains.anko.startActivityForResult
class ScheduleActivityNew :TransparentStatusBarActivity(){
    override fun setContentView() = R.layout.activity_schedul_new
    private val titles = arrayOf("Day 1", "Day 2", "Day 3", "Day 4", "Day 5", "自主游戏", "听故事")
    private val frags = arrayListOf<Fragment>()
    val week by lazy { intent.getIntExtra("week",0) }
    val season by lazy { intent.getIntExtra("season",0) }
    var currentDay = 1
    val dailyViews by lazy { arrayListOf(cl_1,cl_2,cl_3,cl_4,cl_5,cl_6,cl_7) }
    override fun initClick() {
        cl_1.clickDelay {
            showDialog("加载题目...")
            HttpManager.listenSelectPicture(season, week, 1).request(this,false, {_,data->
                startActivityForResult<ListenActivity>(1,"data" to data,"day" to 1,"week" to week,"season" to season)
                EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_TIMER))
            }){_,msg->
                handleError(msg)
            }
        }
        cl_2.clickDelay {
            showDialog("加载题目...")
            HttpManager.pictureSelectVoice(season, week, 2).request(this,false, {_,data->
                startActivityForResult<ChooseVoiceActivity>(1,"data" to data,"day" to 2,"week" to week,"season" to season)
                EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_TIMER))
            }){_,msg->
                handleError(msg)
            }
        }
        cl_3.clickDelay {
            showDialog("加载题目...")
            HttpManager.induceExclude(season, week, 3).request(this,false, {_,data->
                startActivityForResult<IncludeActivity>(1,"data" to data,"day" to 3,"week" to week,"season" to season)
                EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_TIMER))
            }){_,msg->
                handleError(msg)
            }
        }
        cl_4.clickDelay {
            showDialog("加载题目...")
            HttpManager.questionsAndAnswers(season, week, 4).request(this,false, {_,data->
                startActivityForResult<QAActivity>(1,"data" to data,"day" to 4,"week" to week,"season" to season)
                EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_TIMER))
            }){_,msg->
                handleError(msg)
            }
        }
        cl_5.clickDelay {
            showDialog("加载题目...")
            HttpManager.pictureMateVoice(season, week, 5).request(this,false,{_,data->
                startActivityForResult<MatchActivity>(1,"data" to data,"day" to 5,"week" to week,"season" to season)
                EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_TIMER))
            }){_,msg->
                handleError(msg)
            }
        }
        cl_6.clickDelay {
            val gameTypeDialog = GameTypeDialog()
            gameTypeDialog.setCallback(object :GameTypeDialog.OnClickCallback{
                override fun onOk(d: Int) {
                    if (d == 1){
                        HttpManager.userGameDifficulty(week).request(this@ScheduleActivityNew){_,data->
                            startActivity<SuperListenActivity>("week" to week,"season" to season,"level" to (data?:0))
                            EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_TIMER))
                        }
                    }else{
                        showDialog("加载题目...")
                        HttpManager.gameMemory(season, week).request(this@ScheduleActivityNew){_,data->
                            startActivity<MemoryActivity>("data" to data,"week" to week,"season" to season)
                            EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_TIMER))
                        }
                    }
                }
            })
            gameTypeDialog.show(supportFragmentManager,"game")
        }
        cl_7.clickDelay {
            val gameTypeDialog = GameTypeDialog()
            gameTypeDialog.arguments = bundleOf("isStory" to true)
            gameTypeDialog.setCallback(object :GameTypeDialog.OnClickCallback{
                override fun onOk(d: Int) {
                    if (d == 1){
                        showDialog("加载题目...")
                        HttpManager.lookPictureDbu(season, week).request(this@ScheduleActivityNew){_,data->
                            startActivity<LookImgActivity>("data" to data,"week" to week,"season" to season)
                            EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_TIMER))
                        }
                    }else{
                        showDialog("加载题目...")
                        HttpManager.frameworkMemory(season, week).request(this@ScheduleActivityNew){_,data->
                            startActivity<ListenStoryActivity>("data" to data,"week" to week,"season" to season)
                            EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_TIMER))
                        }
                    }
                }
            })
            gameTypeDialog.show(supportFragmentManager,"game")
        }
    }
    override fun initView() {
        title = ""
        getSchedule()
        EventBus.getDefault().register(this)
    }
    override fun onResume() {
        super.onResume()
        getSchedule()
    }
    private fun getSchedule(){
        HttpManager.studySchedule(week,1).request(this){_,data->
            data?.apply {
                currentDay = day
                initTab(if (computeSchedule == 100) 7 else day)
                tv_current.text = "当前周目:第 ${week} 周"
                tv_progress.text = "${computeSchedule}%"
                tv_total.text = "${totalStudy}小时"
                tv_today.text = "${todayStudy}小时"
                progress_bar.progress = computeSchedule
                formatProgress(listen,tv_state)
                formatProgress(look,tv_state_2)
                formatProgress(induction,tv_state_3)
                formatProgress(answer,tv_state_4)
                formatProgress(pair,tv_state_5)
            }
        }
    }
    private fun initTab(day:Int) {
        titles.forEachIndexed { index, s ->
            if (index<5){
                frags.add(DailyFragment.newInstance(index+1))
            }else
                frags.add(WeekendFragment.newInstance(index+1))
        //设置是否可点击
        dailyViews.forEachIndexed { index, constraintLayout ->
            if (index in day until 6){
                dailyViews[index].isEnabled = false
                dailyViews[index].alpha = 0.5f
            }else{
                dailyViews[index].isEnabled = true
                dailyViews[index].alpha = 1f
        }
        tab_bar.setViewPager(view_pager, titles,this,frags)
        tab_bar.currentTab = currentDay-1
        view_pager.offscreenPageLimit = day
        //设置不可点击的day
        (day until 6).forEach {
            tab_bar.getTitleView(it).isEnabled = false
        }
        if (tab_bar.currentTab == 0)
            tab_bar.updateTabStyles()
    }
    fun unLockNext(day: Int){
        currentDay = day
        tab_bar.getTitleView(day - 1).isEnabled = true
        tab_bar.currentTab = currentDay-1
    private fun formatProgress(progress:Int,tv: TextView){
        tv.text =  when(progress){
            -1, 0->{
                tv.backgroundResource = R.drawable.bg_red_9dp
                "未完成"
            }
            100->{
                tv.backgroundResource = R.drawable.bg_blue_9dp
                "已完成"
            }
            else->{
                tv.backgroundResource = R.drawable.bg_pink_9dp
                "剩余:${progress}%"
            }
        }
    }
    private fun handleError(msg:String){
        if (msg.contains("会员")){
            val tipDialog = TipDialog()
            tipDialog.arguments = bundleOf("msg" to msg,"ok" to "成为会员")
            tipDialog.setCallback(object : TipDialog.OnClickCallback{
                override fun onOk() {
                    browse(Apis.SHARE_URL,true)
                }
                override fun onCancel() {
                }
            })
            tipDialog.showAllowingStateLoss(supportFragmentManager,"vip")
        }else{
            myToast(msg)
        }
    }
    @Subscribe
    fun nextSubject(e: IntEvent){
        if (e.code == Const.EventCode.NEXT_SUBJECT){
            (frags[view_pager.currentItem] as DailyFragment).nextSubject(e.i)
            when(e.i){
                2->{
                    cl_2.callOnClick()
                }
                3->{
                    cl_3.callOnClick()
                }
                4->{
                    cl_4.callOnClick()
                }
                5->{
                    cl_5.callOnClick()
                }
            }
        }
    }