feat: 新增tvcat.cc视频来源, 设置页面支持多来源切换
This commit is contained in:
@@ -1,16 +1,22 @@
|
||||
package com.videoapp.tv
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.AdapterView
|
||||
import android.widget.ArrayAdapter
|
||||
import android.widget.Button
|
||||
import android.widget.EditText
|
||||
import android.widget.Spinner
|
||||
import android.widget.Toast
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import com.videoapp.tv.data.ConfigRepository
|
||||
import com.videoapp.tv.data.SiteConfig
|
||||
import com.videoapp.tv.data.SitePreset
|
||||
|
||||
class SettingsActivity : AppCompatActivity() {
|
||||
|
||||
private lateinit var configRepo: ConfigRepository
|
||||
private lateinit var spinnerPreset: Spinner
|
||||
private lateinit var editBaseUrl: EditText
|
||||
private lateinit var editSearchPath: EditText
|
||||
private lateinit var editSearchMethod: EditText
|
||||
@@ -24,6 +30,7 @@ class SettingsActivity : AppCompatActivity() {
|
||||
private lateinit var editSourceEpisodeGroupSelector: EditText
|
||||
private lateinit var btnSave: Button
|
||||
private lateinit var btnRestore: Button
|
||||
private var ignoringSpinner = false
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
@@ -31,6 +38,7 @@ class SettingsActivity : AppCompatActivity() {
|
||||
|
||||
configRepo = ConfigRepository(this)
|
||||
|
||||
spinnerPreset = findViewById(R.id.spinner_preset)
|
||||
editBaseUrl = findViewById(R.id.edit_base_url)
|
||||
editSearchPath = findViewById(R.id.edit_search_path)
|
||||
editSearchMethod = findViewById(R.id.edit_search_method)
|
||||
@@ -45,18 +53,49 @@ class SettingsActivity : AppCompatActivity() {
|
||||
btnSave = findViewById(R.id.btn_save)
|
||||
btnRestore = findViewById(R.id.btn_restore)
|
||||
|
||||
setupPresetSpinner()
|
||||
loadConfig()
|
||||
|
||||
btnSave.setOnClickListener { saveConfig() }
|
||||
btnRestore.setOnClickListener {
|
||||
configRepo.restoreDefault()
|
||||
ignoringSpinner = true
|
||||
spinnerPreset.setSelection(0)
|
||||
ignoringSpinner = false
|
||||
loadConfig()
|
||||
Toast.makeText(this, R.string.config_restored, Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
|
||||
private fun loadConfig() {
|
||||
val config = configRepo.getConfig()
|
||||
private fun setupPresetSpinner() {
|
||||
val presets = configRepo.getPresets()
|
||||
val presetNames = presets.map { it.name }
|
||||
val adapter = ArrayAdapter(
|
||||
this,
|
||||
android.R.layout.simple_spinner_item,
|
||||
presetNames
|
||||
)
|
||||
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
|
||||
spinnerPreset.adapter = adapter
|
||||
|
||||
spinnerPreset.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
|
||||
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
|
||||
if (ignoringSpinner) return
|
||||
val preset = presets.getOrNull(position) ?: return
|
||||
configRepo.applyPreset(preset)
|
||||
loadConfigFromPreset(preset.config)
|
||||
Toast.makeText(
|
||||
this@SettingsActivity,
|
||||
"已切换到 ${preset.name}",
|
||||
Toast.LENGTH_SHORT
|
||||
).show()
|
||||
}
|
||||
|
||||
override fun onNothingSelected(parent: AdapterView<*>?) {}
|
||||
}
|
||||
}
|
||||
|
||||
private fun loadConfigFromPreset(config: SiteConfig) {
|
||||
editBaseUrl.setText(config.baseUrl)
|
||||
editSearchPath.setText(config.searchPath)
|
||||
editSearchMethod.setText(config.searchMethod)
|
||||
@@ -72,6 +111,21 @@ class SettingsActivity : AppCompatActivity() {
|
||||
editSourceEpisodeGroupSelector.setText(config.sourceEpisodeGroupSelector)
|
||||
}
|
||||
|
||||
private fun loadConfig() {
|
||||
val config = configRepo.getConfig()
|
||||
loadConfigFromPreset(config)
|
||||
|
||||
val presets = configRepo.getPresets()
|
||||
val matchedIndex = presets.indexOfFirst {
|
||||
it.config.baseUrl == config.baseUrl
|
||||
}
|
||||
if (matchedIndex >= 0) {
|
||||
ignoringSpinner = true
|
||||
spinnerPreset.setSelection(matchedIndex)
|
||||
ignoringSpinner = false
|
||||
}
|
||||
}
|
||||
|
||||
private fun saveConfig() {
|
||||
val extraParams = parseExtraParams(editExtraParams.text.toString())
|
||||
|
||||
|
||||
Reference in New Issue
Block a user