From 16b1cbfc3111c2a020c3d625acda2ce8e4adcbe8 Mon Sep 17 00:00:00 2001 From: xiaji Date: Tue, 9 Jun 2026 19:55:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20SettingsActivity=20=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=20SourceRegistry=20=E9=A9=B1=E5=8A=A8=E6=BA=90=E5=88=87?= =?UTF-8?q?=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/videoapp/tv/SettingsActivity.kt | 40 +++++++++---------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/com/videoapp/tv/SettingsActivity.kt b/app/src/main/java/com/videoapp/tv/SettingsActivity.kt index ac078f9..2a09dce 100644 --- a/app/src/main/java/com/videoapp/tv/SettingsActivity.kt +++ b/app/src/main/java/com/videoapp/tv/SettingsActivity.kt @@ -11,7 +11,8 @@ 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 +import com.videoapp.tv.engine.SourceHandler +import com.videoapp.tv.engine.SourceRegistry class SettingsActivity : AppCompatActivity() { @@ -53,44 +54,40 @@ class SettingsActivity : AppCompatActivity() { btnSave = findViewById(R.id.btn_save) btnRestore = findViewById(R.id.btn_restore) - setupPresetSpinner() + setupSourceSpinner() 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 setupPresetSpinner() { - val presets = configRepo.getPresets() - val presetNames = presets.map { it.name } + private fun setupSourceSpinner() { + val handlers = SourceRegistry.getAll() + val names = handlers.map { it.displayName } val adapter = ArrayAdapter( this, android.R.layout.simple_spinner_item, - presetNames + names ) adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) spinnerPreset.adapter = adapter + val currentId = configRepo.getCurrentSourceId() + val currentIndex = handlers.indexOfFirst { it.id == currentId } + if (currentIndex >= 0) { + spinnerPreset.setSelection(currentIndex) + } + 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() + val handler = handlers[position] + configRepo.setCurrentSourceId(handler.id) } - override fun onNothingSelected(parent: AdapterView<*>?) {} } } @@ -115,10 +112,9 @@ class SettingsActivity : AppCompatActivity() { val config = configRepo.getConfig() loadConfigFromPreset(config) - val presets = configRepo.getPresets() - val matchedIndex = presets.indexOfFirst { - it.config.baseUrl == config.baseUrl - } + val handlers = SourceRegistry.getAll() + val currentId = configRepo.getCurrentSourceId() + val matchedIndex = handlers.indexOfFirst { it.id == currentId } if (matchedIndex >= 0) { ignoringSpinner = true spinnerPreset.setSelection(matchedIndex)