package com.shsening.autouploadvideos
|
|
import SessionProfile
|
import SessionProfileManager
|
import android.app.Activity
|
import android.app.AlertDialog
|
import android.content.Intent
|
import android.os.Bundle
|
import android.view.LayoutInflater
|
import android.view.View
|
import android.view.ViewGroup
|
import android.widget.AdapterView
|
import android.widget.ArrayAdapter
|
import android.widget.Button
|
import android.widget.ListView
|
import androidx.fragment.app.Fragment
|
import android.widget.TextView
|
import com.shsening.autouploadvideos.utils.Utils
|
import java.io.Serializable
|
|
class SessionProfileListFragment : Fragment() {
|
|
private lateinit var listView: ListView
|
private lateinit var btnNew: View
|
private val REQUEST_CODE = 100
|
|
private val sessionProfiles = mutableListOf<SessionProfile>() // Replace with your real data source
|
|
override fun onCreateView(
|
inflater: LayoutInflater, container: ViewGroup?,
|
savedInstanceState: Bundle?
|
): View {
|
val view = inflater.inflate(R.layout.fragment_session_profile_list, container, false)
|
|
listView = view.findViewById(R.id.list_view)
|
btnNew = view.findViewById(R.id.btn_new)
|
|
setupListView()
|
setupNewButton()
|
|
return view
|
}
|
|
private fun setupListView() {
|
// 清空适配器
|
listView.adapter = null
|
|
// 从 SessionProfileManager 获取所有的 SessionProfile
|
val sessionProfiles = SessionProfileManager(requireContext()).getAllProfiles()
|
|
// 自定义适配器实现删除按钮功能
|
val adapter = object : ArrayAdapter<SessionProfile>(
|
requireContext(),
|
android.R.layout.simple_list_item_2,
|
sessionProfiles
|
) {
|
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
|
val inflater = LayoutInflater.from(context)
|
val view = convertView ?: inflater.inflate(R.layout.list_item_with_delete, parent, false)
|
|
// 获取当前的 SessionProfile
|
val sessionProfile = getItem(position)
|
|
// 填充数据
|
val text1 = view.findViewById<TextView>(android.R.id.text1)
|
val textType = Utils.getSessionProfileValueByPosition(sessionProfile?.type)
|
text1.text = "${sessionProfile?.name} (${textType})"
|
|
val text2 = view.findViewById<TextView>(android.R.id.text2)
|
text2.text = sessionProfile?.lastUploadTime
|
|
// 设置删除按钮
|
val deleteButton = view.findViewById<Button>(R.id.deleteButton)
|
deleteButton.setOnClickListener {
|
// 弹出确认对话框
|
AlertDialog.Builder(context)
|
.setTitle("删除确认")
|
.setMessage("确定要删除 ${sessionProfile?.name} 吗?")
|
.setPositiveButton("确认") { _, _ ->
|
// 从管理器中删除
|
sessionProfile?.let {
|
SessionProfileManager(requireContext()).removeProfile(it.id)
|
}
|
// 刷新列表
|
setupListView()
|
}
|
.setNegativeButton("取消", null)
|
.show()
|
}
|
|
// 设置行点击事件
|
view.setOnClickListener {
|
val intent = Intent(requireContext(), SessionProfileActivity::class.java)
|
intent.putExtra("sessionProfile", sessionProfile as Serializable) // 传递选中的 Profile 对象
|
startActivityForResult(intent, REQUEST_CODE)
|
}
|
|
return view
|
}
|
}
|
|
// 设置适配器到 ListView
|
listView.adapter = adapter
|
|
// 设置点击事件
|
listView.onItemClickListener =
|
AdapterView.OnItemClickListener { _, _, position, _ ->
|
val selectedProfile = sessionProfiles[position]
|
val intent = Intent(requireContext(), SessionProfileActivity::class.java)
|
intent.putExtra("sessionProfile", selectedProfile as Serializable) // 传递选中的 Profile 对象
|
startActivityForResult(intent, REQUEST_CODE)
|
}
|
}
|
|
// 接收到 Activity 返回结果时刷新 Fragment
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
super.onActivityResult(requestCode, resultCode, data)
|
if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK) {
|
// 刷新 Fragment 内容
|
setupListView()
|
}
|
}
|
|
private fun setupNewButton() {
|
btnNew.setOnClickListener {
|
val intent = Intent(requireContext(), SessionProfileActivity::class.java)
|
startActivityForResult(intent, REQUEST_CODE)
|
}
|
}
|
}
|