android: Convert SettingsActivityPresenter to Kotlin
This commit is contained in:
parent
b10e13c090
commit
34ce4877bd
|
@ -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"
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue