| | |
| | | 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() |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |