android: Load settings at the start of each activity
This commit is contained in:
		@@ -21,6 +21,7 @@ import android.view.MotionEvent
 | 
			
		||||
import android.view.Surface
 | 
			
		||||
import android.view.View
 | 
			
		||||
import android.view.inputmethod.InputMethodManager
 | 
			
		||||
import androidx.activity.viewModels
 | 
			
		||||
import androidx.appcompat.app.AppCompatActivity
 | 
			
		||||
import androidx.core.content.getSystemService
 | 
			
		||||
import androidx.core.view.WindowCompat
 | 
			
		||||
@@ -34,6 +35,7 @@ import kotlinx.coroutines.Dispatchers
 | 
			
		||||
import kotlinx.coroutines.launch
 | 
			
		||||
import org.yuzu.yuzu_emu.NativeLibrary
 | 
			
		||||
import org.yuzu.yuzu_emu.R
 | 
			
		||||
import org.yuzu.yuzu_emu.features.settings.model.SettingsViewModel
 | 
			
		||||
import org.yuzu.yuzu_emu.fragments.EmulationFragment
 | 
			
		||||
import org.yuzu.yuzu_emu.model.Game
 | 
			
		||||
import org.yuzu.yuzu_emu.utils.ControllerMappingHelper
 | 
			
		||||
@@ -60,6 +62,8 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener {
 | 
			
		||||
 | 
			
		||||
    private lateinit var game: Game
 | 
			
		||||
 | 
			
		||||
    private val settingsViewModel: SettingsViewModel by viewModels()
 | 
			
		||||
 | 
			
		||||
    override fun onDestroy() {
 | 
			
		||||
        stopForegroundService(this)
 | 
			
		||||
        super.onDestroy()
 | 
			
		||||
@@ -68,6 +72,8 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener {
 | 
			
		||||
    override fun onCreate(savedInstanceState: Bundle?) {
 | 
			
		||||
        ThemeHelper.setTheme(this)
 | 
			
		||||
 | 
			
		||||
        settingsViewModel.settings.loadSettings()
 | 
			
		||||
 | 
			
		||||
        super.onCreate(savedInstanceState)
 | 
			
		||||
        if (savedInstanceState == null) {
 | 
			
		||||
            // Get params we were passed
 | 
			
		||||
 
 | 
			
		||||
@@ -39,7 +39,7 @@ class Settings {
 | 
			
		||||
    val isEmpty: Boolean
 | 
			
		||||
        get() = sections.isEmpty()
 | 
			
		||||
 | 
			
		||||
    fun loadSettings(view: SettingsActivityView) {
 | 
			
		||||
    fun loadSettings(view: SettingsActivityView? = null) {
 | 
			
		||||
        sections = SettingsSectionMap()
 | 
			
		||||
        loadYuzuSettings(view)
 | 
			
		||||
        if (!TextUtils.isEmpty(gameId)) {
 | 
			
		||||
@@ -48,13 +48,13 @@ class Settings {
 | 
			
		||||
        isLoaded = true
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun loadYuzuSettings(view: SettingsActivityView) {
 | 
			
		||||
    private fun loadYuzuSettings(view: SettingsActivityView?) {
 | 
			
		||||
        for ((fileName) in configFileSectionsMap) {
 | 
			
		||||
            sections.putAll(SettingsFile.readFile(fileName, view))
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun loadCustomGameSettings(gameId: String, view: SettingsActivityView) {
 | 
			
		||||
    private fun loadCustomGameSettings(gameId: String, view: SettingsActivityView?) {
 | 
			
		||||
        // Custom game settings
 | 
			
		||||
        mergeSections(SettingsFile.readCustomGameSettings(gameId, view))
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -37,7 +37,7 @@ object SettingsFile {
 | 
			
		||||
    private fun readFile(
 | 
			
		||||
        ini: File?,
 | 
			
		||||
        isCustomGame: Boolean,
 | 
			
		||||
        view: SettingsActivityView?
 | 
			
		||||
        view: SettingsActivityView? = null
 | 
			
		||||
    ): HashMap<String, SettingSection?> {
 | 
			
		||||
        val sections: HashMap<String, SettingSection?> = SettingsSectionMap()
 | 
			
		||||
        var reader: BufferedReader? = null
 | 
			
		||||
@@ -74,10 +74,13 @@ object SettingsFile {
 | 
			
		||||
        return sections
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun readFile(fileName: String, view: SettingsActivityView): HashMap<String, SettingSection?> {
 | 
			
		||||
    fun readFile(fileName: String, view: SettingsActivityView?): HashMap<String, SettingSection?> {
 | 
			
		||||
        return readFile(getSettingsFile(fileName), false, view)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun readFile(fileName: String): HashMap<String, SettingSection?> =
 | 
			
		||||
        readFile(getSettingsFile(fileName), false)
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Reads a given .ini file from disk and returns it as a HashMap of SettingSections, themselves
 | 
			
		||||
     * effectively a HashMap of key/value settings. If unsuccessful, outputs an error telling why it
 | 
			
		||||
@@ -88,7 +91,7 @@ object SettingsFile {
 | 
			
		||||
     */
 | 
			
		||||
    fun readCustomGameSettings(
 | 
			
		||||
        gameId: String,
 | 
			
		||||
        view: SettingsActivityView
 | 
			
		||||
        view: SettingsActivityView?
 | 
			
		||||
    ): HashMap<String, SettingSection?> {
 | 
			
		||||
        return readFile(getCustomGameSettingsFile(gameId), true, view)
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -35,6 +35,7 @@ import org.yuzu.yuzu_emu.activities.EmulationActivity
 | 
			
		||||
import org.yuzu.yuzu_emu.databinding.ActivityMainBinding
 | 
			
		||||
import org.yuzu.yuzu_emu.databinding.DialogProgressBarBinding
 | 
			
		||||
import org.yuzu.yuzu_emu.features.settings.model.Settings
 | 
			
		||||
import org.yuzu.yuzu_emu.features.settings.model.SettingsViewModel
 | 
			
		||||
import org.yuzu.yuzu_emu.features.settings.ui.SettingsActivity
 | 
			
		||||
import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile
 | 
			
		||||
import org.yuzu.yuzu_emu.fragments.MessageDialogFragment
 | 
			
		||||
@@ -48,6 +49,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
 | 
			
		||||
 | 
			
		||||
    private val homeViewModel: HomeViewModel by viewModels()
 | 
			
		||||
    private val gamesViewModel: GamesViewModel by viewModels()
 | 
			
		||||
    private val settingsViewModel: SettingsViewModel by viewModels()
 | 
			
		||||
 | 
			
		||||
    override var themeId: Int = 0
 | 
			
		||||
 | 
			
		||||
@@ -55,6 +57,8 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
 | 
			
		||||
        val splashScreen = installSplashScreen()
 | 
			
		||||
        splashScreen.setKeepOnScreenCondition { !DirectoryInitialization.areDirectoriesReady }
 | 
			
		||||
 | 
			
		||||
        settingsViewModel.settings.loadSettings()
 | 
			
		||||
 | 
			
		||||
        ThemeHelper.setTheme(this)
 | 
			
		||||
 | 
			
		||||
        super.onCreate(savedInstanceState)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user