package com.flightfeather.ducha.module.common
|
|
import android.arch.lifecycle.Observer
|
import android.arch.lifecycle.ViewModelProviders
|
import android.os.Bundle
|
import android.support.v7.widget.LinearLayoutManager
|
import android.view.Menu
|
import android.view.MenuItem
|
import android.view.View
|
import cn.flightfeather.thirdappmodule.adapter.AllRecyclerViewAdapter
|
import cn.flightfeather.thirdappmodule.model.event.FileExportEvent
|
import cn.flightfeather.thirdappmodule.module.base.BaseActivity
|
import cn.flightfeather.thirdappmodule.module.base.startActivity
|
import cn.flightfeather.thirdappmodule.util.DateFormatter
|
import cn.flightfeather.thirdappmodule.util.DialogUtil2
|
import cn.flightfeather.thirdappmodule.util.SystemServiceUtils
|
import cn.flightfeather.thirdappmodule.util.size
|
import com.flightfeather.ducha.R
|
import kotlinx.android.synthetic.main.dc_activity_exported_file.*
|
import org.greenrobot.eventbus.EventBus
|
import org.greenrobot.eventbus.Subscribe
|
import org.greenrobot.eventbus.ThreadMode
|
import java.io.File
|
|
/**
|
* @author riku
|
* Date: 2020/6/13
|
* 文件导出activity
|
*/
|
class ExportedFileActivity : BaseActivity(), View.OnClickListener {
|
|
private lateinit var viewModel: FileExportViewModel
|
|
private var adapter: AllRecyclerViewAdapter<File>? = null
|
|
override fun getLayoutId(): Int = R.layout.dc_activity_exported_file
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
super.onCreate(savedInstanceState)
|
viewModel = ViewModelProviders.of(this).get(FileExportViewModel::class.java)
|
|
EventBus.getDefault().register(this)
|
|
supportActionBar?.apply {
|
title = "文件导出"
|
setDisplayHomeAsUpEnabled(true)
|
}
|
|
initList()
|
initObserver()
|
|
btn_export.setOnClickListener(this)
|
fab_export.setOnClickListener(this)
|
|
viewModel.getExportFiles()
|
}
|
|
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
|
super.onCreateOptionsMenu(menu)
|
menuInflater.inflate(R.menu.menu_file_option, menu)
|
return true
|
}
|
|
override fun onOptionsItemSelected(item: MenuItem?): Boolean {
|
when (item?.itemId) {
|
android.R.id.home -> onBackPressed()
|
R.id.action_clear -> viewModel.deleteAllFiles()
|
}
|
return super.onOptionsItemSelected(item)
|
}
|
|
private fun initList() {
|
adapter = object : AllRecyclerViewAdapter<File>(viewModel.dataList.value, R.layout.dc_item_file_export, this) {
|
override fun bindView(holder: MyViewHolder?, obj: File?, isSelected: Boolean, position: Int) {
|
holder?.setText(R.id.txt_file_name, obj?.name)
|
?.setText(R.id.txt_file_time, DateFormatter.dateTimeFormat2.format(obj?.lastModified()))
|
?.setText(R.id.txt_file_size, obj?.size())
|
?.setOnItemClickListener {
|
DialogUtil2.showBottomDialog(this@ExportedFileActivity, rootView, listOf("分享", "删除"), listOf ({ p->
|
SystemServiceUtils.shareFile(this@ExportedFileActivity, obj?.path)
|
p.dismiss()
|
}, {p->
|
viewModel.deleteFile(obj)
|
viewModel.dataList.value?.removeAt(position)
|
notifyItemRemoved(position)
|
notifyItemRangeChanged(position, viewModel.dataList.value!!.size - position)
|
refreshEmptyView()
|
p.dismiss()
|
}))
|
}
|
}
|
}
|
recyclerView.adapter = adapter
|
recyclerView.layoutManager = LinearLayoutManager(this)
|
ll_empty_view.visibility = View.VISIBLE
|
}
|
|
private fun initObserver() {
|
viewModel.dataList.observe(this, Observer {
|
adapter?.notifyDataSetChanged()
|
refreshEmptyView()
|
})
|
}
|
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
fun onFileExported(event: FileExportEvent) {
|
viewModel.dataList.value?.add(File(event.path))
|
recyclerView.postDelayed({
|
adapter?.notifyDataSetChanged()
|
refreshEmptyView()
|
}, 500)
|
}
|
|
private fun refreshEmptyView() {
|
if (viewModel.dataList.value?.isNotEmpty() == true) {
|
ll_empty_view.visibility = View.GONE
|
} else {
|
ll_empty_view.visibility = View.VISIBLE
|
}
|
}
|
|
override fun onClick(v: View?) {
|
when (v?.id) {
|
R.id.btn_export,
|
R.id.fab_export-> {
|
this.startActivity(FileExportActivity::class.java)
|
}
|
}
|
}
|
}
|