package com.dollearn.student.ui.home
|
|
import android.app.Activity
|
import android.content.Intent
|
import android.widget.TextView
|
import androidx.core.os.bundleOf
|
import cn.sinata.xldutils.fragment.BaseFragment
|
import cn.sinata.xldutils.utils.myToast
|
import cn.sinata.xldutils.utils.showAllowingStateLoss
|
import com.dollearn.student.R
|
import com.dollearn.student.dialog.TipDialog
|
import com.dollearn.student.network.Apis
|
import com.dollearn.student.network.HttpManager
|
import com.dollearn.student.network.requestByF
|
import com.dollearn.student.utils.Const
|
import com.dollearn.student.utils.event.EmptyEvent
|
import com.dollearn.student.utils.extention.clickDelay
|
import com.dollearn.student.utils.extention.formatToChinese
|
import kotlinx.android.synthetic.main.fragment_daily.*
|
import org.greenrobot.eventbus.EventBus
|
import org.jetbrains.anko.backgroundResource
|
import org.jetbrains.anko.support.v4.browse
|
import org.jetbrains.anko.support.v4.startActivityForResult
|
import org.jetbrains.anko.support.v4.toast
|
|
class DailyFragment : BaseFragment() {
|
override fun contentViewId() = R.layout.fragment_daily
|
|
private val day by lazy {
|
arguments?.getInt("day")?:0
|
}
|
private val season by lazy {
|
(requireActivity() as ScheduleActivity).season
|
}
|
private val week by lazy {
|
(requireActivity() as ScheduleActivity).week
|
}
|
|
|
override fun onFirstVisibleToUser() {
|
getProgress()
|
cl_1.clickDelay {
|
showDialog("加载题目...")
|
HttpManager.listenSelectPicture(season, week, day).requestByF(this,false, {_,data->
|
startActivityForResult<ListenActivity>(1,"data" to data,"day" to day,"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, day).requestByF(this,false, {_,data->
|
startActivityForResult<ChooseVoiceActivity>(1,"data" to data,"day" to day,"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, day).requestByF(this,false, {_,data->
|
startActivityForResult<IncludeActivity>(1,"data" to data,"day" to day,"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, day).requestByF(this,false, {_,data->
|
startActivityForResult<QAActivity>(1,"data" to data,"day" to day,"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, day).requestByF(this,false,{_,data->
|
startActivityForResult<MatchActivity>(1,"data" to data,"day" to day,"week" to week,"season" to season)
|
EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_TIMER))
|
|
}){_,msg->
|
handleError(msg)
|
}
|
}
|
}
|
|
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(childFragmentManager,"vip")
|
}else{
|
myToast(msg)
|
}
|
}
|
|
private fun getProgress(){
|
HttpManager.studySchedule(week,day).requestByF(this){ _, data->
|
data?.apply {
|
val scheduleActivity = activity as ScheduleActivity
|
if (day != scheduleActivity.currentDay){ //解锁了后一天
|
scheduleActivity.unLockNext(day)
|
}
|
tv_current.text = "当前周目:${week.formatToChinese()}周目"
|
tv_progress.text = "${computeSchedule}%"
|
tv_total.text = "${totalStudy}小时"
|
tv_today.text = "${todayStudy}小时"
|
progress_bar.progress = computeSchedule
|
|
if (this@DailyFragment.day == scheduleActivity.currentDay){
|
formatProgress(listen,tv_state)
|
formatProgress(look,tv_state_2)
|
formatProgress(induction,tv_state_3)
|
formatProgress(answer,tv_state_4)
|
formatProgress(pair,tv_state_5)
|
}else{
|
formatProgress(100,tv_state)
|
formatProgress(100,tv_state_2)
|
formatProgress(100,tv_state_3)
|
formatProgress(100,tv_state_4)
|
formatProgress(100,tv_state_5)
|
}
|
}
|
}
|
}
|
|
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}%"
|
}
|
}
|
}
|
|
fun nextSubject(type:Int){
|
when(type){
|
2->{
|
cl_2.callOnClick()
|
}
|
3->{
|
cl_3.callOnClick()
|
}
|
4->{
|
cl_4.callOnClick()
|
}
|
5->{
|
cl_5.callOnClick()
|
}
|
}
|
}
|
|
companion object{
|
fun newInstance(day:Int):DailyFragment{
|
val dailyFragment = DailyFragment()
|
dailyFragment.arguments = bundleOf("day" to day)
|
return dailyFragment
|
}
|
}
|
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
super.onActivityResult(requestCode, resultCode, data)
|
getProgress()
|
}
|
}
|