committed by
bunnei
2 changed files with 99 additions and 122 deletions
-
122src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivityPresenter.java
-
99src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivityPresenter.kt
@ -1,122 +0,0 @@ |
|||
package org.yuzu.yuzu_emu.features.settings.ui; |
|||
|
|||
import android.content.IntentFilter; |
|||
import android.os.Bundle; |
|||
import android.text.TextUtils; |
|||
|
|||
import org.yuzu.yuzu_emu.NativeLibrary; |
|||
import org.yuzu.yuzu_emu.features.settings.model.Settings; |
|||
import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile; |
|||
import org.yuzu.yuzu_emu.utils.DirectoryInitialization; |
|||
import org.yuzu.yuzu_emu.utils.DirectoryInitialization.DirectoryInitializationState; |
|||
import org.yuzu.yuzu_emu.utils.DirectoryStateReceiver; |
|||
import org.yuzu.yuzu_emu.utils.Log; |
|||
import org.yuzu.yuzu_emu.utils.ThemeUtil; |
|||
|
|||
import java.io.File; |
|||
|
|||
public final class SettingsActivityPresenter { |
|||
private static final String KEY_SHOULD_SAVE = "should_save"; |
|||
|
|||
private SettingsActivityView mView; |
|||
|
|||
private Settings mSettings = new Settings(); |
|||
|
|||
private boolean mShouldSave; |
|||
|
|||
private DirectoryStateReceiver directoryStateReceiver; |
|||
|
|||
private String menuTag; |
|||
private String gameId; |
|||
|
|||
public SettingsActivityPresenter(SettingsActivityView view) { |
|||
mView = view; |
|||
} |
|||
|
|||
public void onCreate(Bundle savedInstanceState, String menuTag, String gameId) { |
|||
if (savedInstanceState == null) { |
|||
this.menuTag = menuTag; |
|||
this.gameId = gameId; |
|||
} else { |
|||
mShouldSave = savedInstanceState.getBoolean(KEY_SHOULD_SAVE); |
|||
} |
|||
} |
|||
|
|||
public void onStart() { |
|||
prepareDirectoriesIfNeeded(); |
|||
} |
|||
|
|||
void loadSettingsUI() { |
|||
if (mSettings.isEmpty()) { |
|||
if (!TextUtils.isEmpty(gameId)) { |
|||
mSettings.loadSettings(gameId, mView); |
|||
} else { |
|||
mSettings.loadSettings(mView); |
|||
} |
|||
} |
|||
|
|||
mView.showSettingsFragment(menuTag, false, gameId); |
|||
mView.onSettingsFileLoaded(mSettings); |
|||
} |
|||
|
|||
private void prepareDirectoriesIfNeeded() { |
|||
File configFile = new File(DirectoryInitialization.getUserDirectory() + "/config/" + SettingsFile.FILE_NAME_CONFIG + ".ini"); |
|||
if (!configFile.exists()) { |
|||
Log.error(DirectoryInitialization.getUserDirectory() + "/config/" + SettingsFile.FILE_NAME_CONFIG + ".ini"); |
|||
Log.error("yuzu config file could not be found!"); |
|||
} |
|||
if (DirectoryInitialization.areDirectoriesReady()) { |
|||
loadSettingsUI(); |
|||
} else { |
|||
mView.showLoading(); |
|||
IntentFilter statusIntentFilter = new IntentFilter( |
|||
DirectoryInitialization.BROADCAST_ACTION); |
|||
|
|||
directoryStateReceiver = |
|||
new DirectoryStateReceiver(directoryInitializationState -> |
|||
{ |
|||
if (directoryInitializationState == DirectoryInitializationState.YUZU_DIRECTORIES_INITIALIZED) { |
|||
mView.hideLoading(); |
|||
loadSettingsUI(); |
|||
} else if (directoryInitializationState == DirectoryInitializationState.CANT_FIND_EXTERNAL_STORAGE) { |
|||
mView.showExternalStorageNotMountedHint(); |
|||
mView.hideLoading(); |
|||
} |
|||
}); |
|||
|
|||
mView.startDirectoryInitializationService(directoryStateReceiver, statusIntentFilter); |
|||
} |
|||
} |
|||
|
|||
public void setSettings(Settings settings) { |
|||
mSettings = settings; |
|||
} |
|||
|
|||
public Settings getSettings() { |
|||
return mSettings; |
|||
} |
|||
|
|||
public void onStop(boolean finishing) { |
|||
if (directoryStateReceiver != null) { |
|||
mView.stopListeningToDirectoryInitializationService(directoryStateReceiver); |
|||
directoryStateReceiver = null; |
|||
} |
|||
|
|||
if (mSettings != null && finishing && mShouldSave) { |
|||
Log.debug("[SettingsActivity] Settings activity stopping. Saving settings to INI..."); |
|||
mSettings.saveSettings(mView); |
|||
} |
|||
|
|||
ThemeUtil.applyTheme(); |
|||
|
|||
NativeLibrary.ReloadSettings(); |
|||
} |
|||
|
|||
public void onSettingChanged() { |
|||
mShouldSave = true; |
|||
} |
|||
|
|||
public void saveState(Bundle outState) { |
|||
outState.putBoolean(KEY_SHOULD_SAVE, mShouldSave); |
|||
} |
|||
} |
|||
@ -0,0 +1,99 @@ |
|||
package org.yuzu.yuzu_emu.features.settings.ui |
|||
|
|||
import android.content.IntentFilter |
|||
import android.os.Bundle |
|||
import android.text.TextUtils |
|||
import org.yuzu.yuzu_emu.NativeLibrary |
|||
import org.yuzu.yuzu_emu.features.settings.model.Settings |
|||
import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile |
|||
import org.yuzu.yuzu_emu.utils.DirectoryInitialization |
|||
import org.yuzu.yuzu_emu.utils.DirectoryInitialization.DirectoryInitializationState |
|||
import org.yuzu.yuzu_emu.utils.DirectoryStateReceiver |
|||
import org.yuzu.yuzu_emu.utils.Log |
|||
import java.io.File |
|||
|
|||
class SettingsActivityPresenter(private val activityView: SettingsActivityView) { |
|||
var settings: Settings? = Settings() |
|||
private var shouldSave = false |
|||
private var directoryStateReceiver: DirectoryStateReceiver? = null |
|||
private lateinit var menuTag: String |
|||
private lateinit var gameId: String |
|||
|
|||
fun onCreate(savedInstanceState: Bundle?, menuTag: String, gameId: String) { |
|||
if (savedInstanceState == null) { |
|||
this.menuTag = menuTag |
|||
this.gameId = gameId |
|||
} else { |
|||
shouldSave = savedInstanceState.getBoolean(KEY_SHOULD_SAVE) |
|||
} |
|||
} |
|||
|
|||
fun onStart() { |
|||
prepareDirectoriesIfNeeded() |
|||
} |
|||
|
|||
private fun loadSettingsUI() { |
|||
if (settings!!.isEmpty) { |
|||
if (!TextUtils.isEmpty(gameId)) { |
|||
settings!!.loadSettings(gameId, activityView) |
|||
} else { |
|||
settings!!.loadSettings(activityView) |
|||
} |
|||
} |
|||
activityView.showSettingsFragment(menuTag, false, gameId) |
|||
activityView.onSettingsFileLoaded(settings) |
|||
} |
|||
|
|||
private fun prepareDirectoriesIfNeeded() { |
|||
val configFile = |
|||
File(DirectoryInitialization.userDirectory + "/config/" + SettingsFile.FILE_NAME_CONFIG + ".ini") |
|||
if (!configFile.exists()) { |
|||
Log.error(DirectoryInitialization.userDirectory + "/config/" + SettingsFile.FILE_NAME_CONFIG + ".ini") |
|||
Log.error("yuzu config file could not be found!") |
|||
} |
|||
if (DirectoryInitialization.areDirectoriesReady()) { |
|||
loadSettingsUI() |
|||
} else { |
|||
activityView.showLoading() |
|||
val statusIntentFilter = IntentFilter(DirectoryInitialization.BROADCAST_ACTION) |
|||
directoryStateReceiver = |
|||
DirectoryStateReceiver { directoryInitializationState: DirectoryInitializationState -> |
|||
if (directoryInitializationState == DirectoryInitializationState.YUZU_DIRECTORIES_INITIALIZED) { |
|||
activityView.hideLoading() |
|||
loadSettingsUI() |
|||
} else if (directoryInitializationState == DirectoryInitializationState.CANT_FIND_EXTERNAL_STORAGE) { |
|||
activityView.showExternalStorageNotMountedHint() |
|||
activityView.hideLoading() |
|||
} |
|||
} |
|||
activityView.startDirectoryInitializationService( |
|||
directoryStateReceiver, |
|||
statusIntentFilter |
|||
) |
|||
} |
|||
} |
|||
|
|||
fun onStop(finishing: Boolean) { |
|||
if (directoryStateReceiver != null) { |
|||
activityView.stopListeningToDirectoryInitializationService(directoryStateReceiver!!) |
|||
directoryStateReceiver = null |
|||
} |
|||
if (settings != null && finishing && shouldSave) { |
|||
Log.debug("[SettingsActivity] Settings activity stopping. Saving settings to INI...") |
|||
settings!!.saveSettings(activityView) |
|||
} |
|||
NativeLibrary.ReloadSettings() |
|||
} |
|||
|
|||
fun onSettingChanged() { |
|||
shouldSave = true |
|||
} |
|||
|
|||
fun saveState(outState: Bundle) { |
|||
outState.putBoolean(KEY_SHOULD_SAVE, shouldSave) |
|||
} |
|||
|
|||
companion object { |
|||
private const val KEY_SHOULD_SAVE = "should_save" |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue