package com.dollearn.student.ui.worldcup
|
|
import android.Manifest
|
import android.content.Intent
|
import android.os.Bundle
|
import androidx.core.os.bundleOf
|
import androidx.recyclerview.widget.GridLayoutManager
|
import cn.sinata.xldutils.activity.BaseActivity
|
import cn.sinata.xldutils.utils.SPUtils
|
import cn.sinata.xldutils.utils.myToast
|
import com.github.zackratos.ultimatebar.UltimateBar
|
import com.google.gson.Gson
|
import com.dollearn.student.R
|
import com.dollearn.student.dialog.TipDialog
|
import com.dollearn.student.network.HttpManager
|
import com.dollearn.student.network.entity.CodeResultUser
|
import com.dollearn.student.network.request
|
import com.dollearn.student.ui.home.ScannerActivity
|
import com.dollearn.student.ui.worldcup.adapter.WorldUserAdapter
|
import com.dollearn.student.utils.Const
|
import com.tbruyelle.rxpermissions2.RxPermissions
|
import kotlinx.android.synthetic.main.activity_start_world_cup.*
|
import org.jetbrains.anko.startActivityForResult
|
|
class StartWorldActivity:BaseActivity() {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
super.onCreate(savedInstanceState)
|
setContentView(R.layout.activity_start_world_cup)
|
UltimateBar.with(this)
|
.statusDark(false)
|
.create().transparentBar() //沉浸状态栏
|
initView()
|
initClick()
|
}
|
|
private val redList = arrayListOf<CodeResultUser>()
|
private val redAdapter = WorldUserAdapter(redList)
|
private val blueList = arrayListOf<CodeResultUser>()
|
private val blueAdapter = WorldUserAdapter(blueList)
|
|
private val name by lazy { intent.getStringExtra("name") }
|
private val id by lazy { intent.getStringExtra("id")?:"" }
|
|
private var code = "" //场地信息
|
|
private fun initView(){
|
tv_title.text = name
|
rv_blue.layoutManager = GridLayoutManager(this,3)
|
blueList.add(CodeResultUser(type = "blue"))
|
blueList.add(CodeResultUser(type = "blue"))
|
blueList.add(CodeResultUser(type = "blue"))
|
rv_blue.adapter = blueAdapter
|
rv_red.layoutManager = GridLayoutManager(this,3)
|
redList.add(CodeResultUser(type = "red"))
|
redList.add(CodeResultUser(type = "red"))
|
redList.add(CodeResultUser(type = "red"))
|
rv_red.adapter = redAdapter
|
}
|
|
private fun initClick(){
|
iv_back.setOnClickListener {
|
finish()
|
}
|
iv_add_red.setOnClickListener {
|
if (redList.filter { !it.id.isNullOrEmpty() }.size == 3)
|
myToast("最多选择3人")
|
else
|
toScanner(1)
|
}
|
iv_add_blue.setOnClickListener {
|
if (blueList.filter { !it.id.isNullOrEmpty() }.size == 3)
|
myToast("最多选择3人")
|
else
|
toScanner(2)
|
}
|
tv_action.setOnClickListener {
|
if (code.isNullOrEmpty())
|
toScanner(3)
|
else{
|
val redUser = redList.filter { !it.id.isNullOrEmpty() }
|
val blueUser = blueList.filter { !it.id.isNullOrEmpty() }
|
if (redUser.size<3){
|
myToast("红队人数不足")
|
return@setOnClickListener
|
}
|
if (blueUser.size<3){
|
myToast("蓝队人数不足")
|
return@setOnClickListener
|
}
|
val allUser = arrayListOf<CodeResultUser>()
|
allUser.addAll(redUser)
|
allUser.addAll(blueUser)
|
val tipDialog = TipDialog()
|
tipDialog.arguments = bundleOf("msg" to "确认开启当前比赛吗?")
|
tipDialog.setCallback(object :TipDialog.OnClickCallback{
|
override fun onOk() {
|
showDialog("正在开启...")
|
HttpManager.startWorldCup(code,Gson().toJson(allUser),id).request(this@StartWorldActivity){_,data->
|
myToast("比赛开始")
|
redList.forEach {
|
it.id = ""
|
it.avatar = ""
|
}
|
redAdapter.notifyDataSetChanged()
|
blueList.forEach {
|
it.id = ""
|
it.avatar = ""
|
}
|
blueAdapter.notifyDataSetChanged()
|
}
|
}
|
|
override fun onCancel() {
|
}
|
})
|
tipDialog.show(supportFragmentManager,"start")
|
}
|
}
|
}
|
|
private fun toScanner(type:Int){
|
val rxPermissions = RxPermissions(this)
|
val cameraGranted = rxPermissions.isGranted(Manifest.permission.CAMERA)
|
if (SPUtils.instance().getBoolean(Const.Permission.CAMERA_REFUSE)&& !cameraGranted){
|
myToast("缺少相机权限")
|
return
|
}
|
if (cameraGranted)
|
startActivityForResult<ScannerActivity>(type,"isWorldCup" to true)
|
else{
|
val tipDialog = TipDialog()
|
tipDialog.arguments = bundleOf("msg" to "为了扫描二维码,我们需要获取摄像头使用权限","ok" to "去授权","cancel" to "不需要")
|
tipDialog.setCallback(object :TipDialog.OnClickCallback{
|
override fun onOk() {
|
rxPermissions.request(Manifest.permission.CAMERA)
|
.subscribe {
|
if (it) {
|
startActivityForResult<ScannerActivity>(type,"isWorldCup" to true)
|
} else{
|
myToast("没有相机权限")
|
SPUtils.instance().put(Const.Permission.CAMERA_REFUSE,true).apply()
|
}
|
}
|
}
|
|
override fun onCancel() {
|
SPUtils.instance().put(Const.Permission.CAMERA_REFUSE,true).apply()
|
}
|
})
|
tipDialog.show(supportFragmentManager,"scan")
|
}
|
}
|
|
private fun addUser(isRed:Boolean,user: CodeResultUser){
|
val list = if (isRed) redList else blueList
|
val otherList = if (isRed) blueList else redList
|
if (list.filter { !it.id.isNullOrEmpty() }.size == 3)
|
myToast("最多选择3人")
|
else if (list.filter { it.id == user.id }.isNotEmpty())
|
myToast("请勿重复添加")
|
else if (otherList.filter { it.id == user.id }.isNotEmpty())
|
myToast("${if (isRed) "蓝" else "红"}队已存在")
|
else{
|
list.filter { it.id.isNullOrEmpty() }.firstOrNull()?.let {
|
it.id = user.id
|
it.avatar = user.avatar
|
it.participantType = user.participantType
|
}
|
}
|
}
|
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
super.onActivityResult(requestCode, resultCode, data)
|
if (resultCode == RESULT_OK&&data!=null){
|
val result = data.getStringExtra("result")?:""
|
when(requestCode){
|
1,2->{
|
HttpManager.getWorldCupPeople(id,result).request(this){_,data->
|
data?.apply {
|
if (requestCode == 1){
|
addUser(true,data)
|
redAdapter.notifyDataSetChanged()
|
}else{
|
addUser(false,data)
|
blueAdapter.notifyDataSetChanged()
|
}
|
}
|
}
|
}
|
3->{
|
HttpManager.getDeviceInformation(result).request(this){_,data->
|
data?.apply {
|
code = result
|
tv_site.text = "所属赛点: ${name}"
|
tv_place.text = "所属场地: ${address}"
|
tv_action.text = "开始比赛"
|
}
|
}
|
}
|
}
|
}
|
}
|
|
}
|