package cn.flightfeather.thirdappmodule.module.inspection
|
|
import android.annotation.SuppressLint
|
import android.arch.lifecycle.Observer
|
import android.arch.lifecycle.ViewModelProviders
|
import android.content.Intent
|
import android.os.Bundle
|
import android.support.design.widget.TabLayout
|
import android.support.v4.app.Fragment
|
import android.support.v4.app.FragmentManager
|
import android.support.v4.view.ViewPager
|
import android.support.v7.widget.LinearLayoutManager
|
import android.view.View
|
import cn.flightfeather.thirdappmodule.R
|
import cn.flightfeather.thirdappmodule.adapter.AllRecyclerViewAdapter
|
import cn.flightfeather.thirdappmodule.bean.entity.Inspection
|
import cn.flightfeather.thirdappmodule.bean.entity.Scense
|
import cn.flightfeather.thirdappmodule.bean.entity.Subtask
|
import cn.flightfeather.thirdappmodule.model.bean.LedgerRecord
|
import cn.flightfeather.thirdappmodule.model.event.ProblemEvent
|
import cn.flightfeather.thirdappmodule.module.base.BaseActivity
|
import cn.flightfeather.thirdappmodule.module.base.TabViewPagerSetInterface
|
import cn.qqtheme.framework.picker.OptionPicker
|
import kotlinx.android.synthetic.main.activity_pic_evidence.*
|
import kotlinx.android.synthetic.main.layout_tab_viewpager.*
|
import org.greenrobot.eventbus.EventBus
|
import org.greenrobot.eventbus.Subscribe
|
import org.jetbrains.anko.toast
|
import java.util.*
|
import kotlin.collections.ArrayList
|
|
/**
|
* @author riku
|
* Date:2022/4/12
|
*
|
*/
|
@SuppressLint("SetTextI18n")
|
class PicEvidenceActivity : BaseActivity(), TabViewPagerSetInterface {
|
|
companion object {
|
// 选取图片最大数量
|
const val MAX_PIC: Int = 3
|
}
|
|
override fun getLayoutId(): Int = R.layout.activity_pic_evidence
|
|
lateinit var viewModel: PicEvidenceViewModel
|
|
private val tabTitles = mutableListOf<String>()
|
private val tabFragments = mutableListOf<Fragment>()
|
|
private val months = listOf("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12")
|
private var year: Int = 2022
|
private var month = months[0]
|
private lateinit var datePicker: OptionPicker
|
|
private var subTask: Subtask? = null
|
private var inspection: Inspection? = null
|
private var scene: Scense? = null
|
private var lat = 0.0
|
private var lng = 0.0
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
super.onCreate(savedInstanceState)
|
|
EventBus.getDefault().register(this)
|
viewModel = ViewModelProviders.of(this).get(PicEvidenceViewModel::class.java)
|
|
getExtra()
|
initUI()
|
initDatePicker()
|
initObserver()
|
initTab()
|
initViewPager()
|
|
scene?.let {
|
viewModel.searchLedgerRecord(it.guid, it.typeid.toInt(), "$year-$month")
|
}
|
}
|
|
private fun getExtra() {
|
subTask = intent.getSerializableExtra("subTask") as Subtask?
|
inspection = intent.getSerializableExtra("inspection") as Inspection?
|
scene = intent.getSerializableExtra("scene") as Scense?
|
lat = intent.getDoubleExtra("lat", 0.0)
|
lng = intent.getDoubleExtra("lng", 0.0)
|
}
|
|
private fun initUI() {
|
img_back.setOnClickListener { onBackPressed() }
|
|
val cal = Calendar.getInstance()
|
year = cal.get(Calendar.YEAR)
|
val mon = cal[Calendar.MONTH]
|
month = months[mon]
|
tv_menu.apply {
|
text = "${year}年"
|
setOnClickListener { datePicker.show() }
|
}
|
rv_month.apply {
|
val monthAdapter = object : AllRecyclerViewAdapter<String>(months, R.layout.item_single_text, this@PicEvidenceActivity) {
|
override fun bindView(holder: MyViewHolder?, obj: String?, isSelected: Boolean, position: Int) {
|
holder?.setText(R.id.tv_text, "${obj}月")
|
?.setSelected(R.id.tv_text, isSelected)
|
?.setOnItemClickListener {
|
setAllFalse()
|
setSelected(true, position)
|
notifyDataSetChanged()
|
viewModel.clearPic()
|
viewModel.searchLedgerRecord(scene!!.guid, scene!!.typeid.toInt(), "$year-$obj")
|
}
|
}
|
}
|
monthAdapter.setSelected(true, mon)
|
adapter = monthAdapter
|
layoutManager = LinearLayoutManager(this@PicEvidenceActivity, LinearLayoutManager.HORIZONTAL, false)
|
adapter?.notifyDataSetChanged()
|
}
|
|
tv_selected.text = "已选(0/${MAX_PIC})"
|
btn_fail.apply {
|
visibility = View.GONE
|
setOnClickListener { viewModel.clearPic() }
|
}
|
btn_pass.apply {
|
visibility = View.VISIBLE
|
setOnClickListener { submit() }
|
}
|
}
|
|
private fun initObserver() {
|
// 获取台账成功后,初始化viewpager
|
viewModel.ledgerTypes.observe(this, Observer {
|
// 有记录时生成viewpager界面
|
if (it?.isNotEmpty() == true) {
|
refreshTabViewPager(it)
|
viewpagerNotify()
|
layout_v.visibility = View.VISIBLE
|
layout_e.visibility = View.GONE
|
}
|
// 无记录时生成无记录提醒界面
|
else {
|
layout_v.visibility = View.GONE
|
layout_e.visibility = View.VISIBLE
|
}
|
})
|
|
// 图片选取
|
viewModel.selectedImgUrls.observe(this, Observer {
|
it?.size?.let {s ->
|
tv_selected.text = "已选(${s}/${MAX_PIC})"
|
if (s > 0) {
|
btn_fail.visibility = View.VISIBLE
|
} else {
|
btn_fail.visibility = View.GONE
|
}
|
}
|
})
|
}
|
|
private fun initDatePicker() {
|
var thisYear = year
|
val yearList = mutableListOf<String>()
|
while (thisYear > 1990) {
|
yearList.add(thisYear.toString())
|
thisYear--
|
}
|
datePicker = OptionPicker(this, yearList).apply {
|
title = "年份"
|
setOnOptionPickListener(object : OptionPicker.OnOptionPickListener() {
|
override fun onOptionPicked(index: Int, item: String?) {
|
item?.let { year = it.toInt()}
|
tv_menu.text = "${year}年"
|
scene?.let {
|
viewModel.searchLedgerRecord(it.guid, it.typeid.toInt(), "$year-$month")
|
}
|
}
|
})
|
this.setCancelText("取消")
|
this.setSubmitText("确定")
|
}
|
}
|
/**
|
* 提交所选图片,跳转问题取证界面
|
*/
|
private fun submit() {
|
viewModel.selectedImgUrls.value?.let {
|
when {
|
it.isEmpty() -> toast("请选择图片")
|
it.size > MAX_PIC -> toast("所选图片超过最大数量!")
|
else -> {
|
val intent = Intent(this, MenuEvidenceActivity::class.java).apply {
|
putExtra("subTask", subTask)
|
putExtra("inspection", inspection)
|
putExtra("scene", scene)
|
putExtra("lat", lat)
|
putExtra("lng", lng)
|
putStringArrayListExtra("picUrls", ArrayList(it))
|
}
|
startActivity(intent)
|
}
|
}
|
}
|
}
|
|
/**
|
* 刷新viewpager
|
*/
|
private fun refreshTabViewPager(list: LinkedHashMap<String, MutableList<LedgerRecord>>) {
|
tabTitles.clear()
|
tabFragments.clear()
|
list.forEach { (k, v) ->
|
tabTitles.add(k)
|
tabFragments.add(PicEvidenceFragment.newInstance(ArrayList(v)))
|
}
|
}
|
|
override fun getMyTabMode(): Int = TabLayout.MODE_SCROLLABLE
|
|
override fun getTab(): TabLayout = tab
|
|
override fun getViewPager(): ViewPager = view_pager
|
|
override fun getTitles(): List<String> {
|
tabTitles.clear()
|
viewModel.ledgerTypes.value?.forEach { (k, _) ->
|
tabTitles.add(k)
|
}
|
return tabTitles
|
}
|
|
override fun getTabFragments(): List<Fragment> {
|
tabFragments.clear()
|
viewModel.ledgerTypes.value?.forEach { (_, v)->
|
tabFragments.add(PicEvidenceFragment.newInstance(ArrayList(v)))
|
}
|
return tabFragments
|
}
|
|
override fun getMyFragmentManager(): FragmentManager = supportFragmentManager
|
|
@Subscribe
|
fun onProSubmit(problemEvent: ProblemEvent) {
|
viewModel.clearPic()
|
}
|
}
|