Android: Convert SettingsActivityPresenter to Kotlin
This commit is contained in:
parent
3b32ff6980
commit
cea882181d
|
@ -1,197 +0,0 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
package org.dolphinemu.dolphinemu.features.settings.ui;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.app.ComponentActivity;
|
||||
|
||||
import org.dolphinemu.dolphinemu.R;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
|
||||
import org.dolphinemu.dolphinemu.utils.AfterDirectoryInitializationRunner;
|
||||
import org.dolphinemu.dolphinemu.utils.DirectoryInitialization;
|
||||
import org.dolphinemu.dolphinemu.utils.Log;
|
||||
|
||||
public final class SettingsActivityPresenter
|
||||
{
|
||||
private static final String KEY_SHOULD_SAVE = "should_save";
|
||||
|
||||
private SettingsActivityView mView;
|
||||
|
||||
private Settings mSettings;
|
||||
|
||||
private boolean mShouldSave;
|
||||
|
||||
private MenuTag mMenuTag;
|
||||
private String mGameId;
|
||||
private int mRevision;
|
||||
private boolean mIsWii;
|
||||
private ComponentActivity mActivity;
|
||||
|
||||
SettingsActivityPresenter(SettingsActivityView view, Settings settings)
|
||||
{
|
||||
mView = view;
|
||||
mSettings = settings;
|
||||
}
|
||||
|
||||
public void onCreate(Bundle savedInstanceState, MenuTag menuTag, String gameId, int revision,
|
||||
boolean isWii, ComponentActivity activity)
|
||||
{
|
||||
this.mMenuTag = menuTag;
|
||||
this.mGameId = gameId;
|
||||
this.mRevision = revision;
|
||||
this.mIsWii = isWii;
|
||||
this.mActivity = activity;
|
||||
|
||||
mShouldSave = savedInstanceState != null && savedInstanceState.getBoolean(KEY_SHOULD_SAVE);
|
||||
}
|
||||
|
||||
public void onDestroy()
|
||||
{
|
||||
if (mSettings != null)
|
||||
{
|
||||
mSettings.close();
|
||||
mSettings = null;
|
||||
}
|
||||
}
|
||||
|
||||
public void onStart()
|
||||
{
|
||||
prepareDolphinDirectoriesIfNeeded();
|
||||
}
|
||||
|
||||
private void loadSettingsUI()
|
||||
{
|
||||
mView.hideLoading();
|
||||
|
||||
if (!mSettings.areSettingsLoaded())
|
||||
{
|
||||
if (!TextUtils.isEmpty(mGameId))
|
||||
{
|
||||
mSettings.loadSettings(mGameId, mRevision, mIsWii);
|
||||
|
||||
if (mSettings.gameIniContainsJunk())
|
||||
{
|
||||
mView.showGameIniJunkDeletionQuestion();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
mSettings.loadSettings(mIsWii);
|
||||
}
|
||||
}
|
||||
|
||||
mView.showSettingsFragment(mMenuTag, null, false, mGameId);
|
||||
mView.onSettingsFileLoaded(mSettings);
|
||||
}
|
||||
|
||||
private void prepareDolphinDirectoriesIfNeeded()
|
||||
{
|
||||
mView.showLoading();
|
||||
|
||||
new AfterDirectoryInitializationRunner().runWithLifecycle(mActivity, this::loadSettingsUI);
|
||||
}
|
||||
|
||||
public Settings getSettings()
|
||||
{
|
||||
return mSettings;
|
||||
}
|
||||
|
||||
public void clearGameSettings()
|
||||
{
|
||||
mSettings.clearGameSettings();
|
||||
onSettingChanged();
|
||||
}
|
||||
|
||||
public void onStop(boolean finishing)
|
||||
{
|
||||
if (mSettings != null && finishing && mShouldSave)
|
||||
{
|
||||
Log.debug("[SettingsActivity] Settings activity stopping. Saving settings to INI...");
|
||||
mSettings.saveSettings(mActivity);
|
||||
}
|
||||
}
|
||||
|
||||
public void onSettingChanged()
|
||||
{
|
||||
mShouldSave = true;
|
||||
}
|
||||
|
||||
public void saveState(Bundle outState)
|
||||
{
|
||||
outState.putBoolean(KEY_SHOULD_SAVE, mShouldSave);
|
||||
}
|
||||
|
||||
public boolean shouldSave()
|
||||
{
|
||||
return mShouldSave;
|
||||
}
|
||||
|
||||
public void onMenuTagAction(@NonNull MenuTag menuTag, int value)
|
||||
{
|
||||
if (menuTag.isSerialPort1Menu())
|
||||
{
|
||||
if (value != 0 && value != 255) // Not disabled or dummy
|
||||
{
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putInt(SettingsFragmentPresenter.ARG_SERIALPORT1_TYPE, value);
|
||||
mView.showSettingsFragment(menuTag, bundle, true, mGameId);
|
||||
}
|
||||
}
|
||||
|
||||
if (menuTag.isGCPadMenu())
|
||||
{
|
||||
if (value != 0) // Not disabled
|
||||
{
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putInt(SettingsFragmentPresenter.ARG_CONTROLLER_TYPE, value);
|
||||
mView.showSettingsFragment(menuTag, bundle, true, mGameId);
|
||||
}
|
||||
}
|
||||
|
||||
if (menuTag.isWiimoteMenu())
|
||||
{
|
||||
if (value == 1) // Emulated Wii Remote
|
||||
{
|
||||
mView.showSettingsFragment(menuTag, null, true, mGameId);
|
||||
}
|
||||
}
|
||||
|
||||
if (menuTag.isWiimoteExtensionMenu())
|
||||
{
|
||||
if (value != 0) // Not disabled
|
||||
{
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putInt(SettingsFragmentPresenter.ARG_CONTROLLER_TYPE, value);
|
||||
mView.showSettingsFragment(menuTag, bundle, true, mGameId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean hasMenuTagActionForValue(@NonNull MenuTag menuTag, int value)
|
||||
{
|
||||
if (menuTag.isSerialPort1Menu())
|
||||
{
|
||||
return (value != 0 && value != 255); // Not disabled or dummy
|
||||
}
|
||||
|
||||
if (menuTag.isGCPadMenu())
|
||||
{
|
||||
return (value != 0); // Not disabled
|
||||
}
|
||||
|
||||
if (menuTag.isWiimoteMenu())
|
||||
{
|
||||
return (value == 1); // Emulated Wii Remote
|
||||
}
|
||||
|
||||
if (menuTag.isWiimoteExtensionMenu())
|
||||
{
|
||||
return (value != 0); // Not disabled
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,147 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
package org.dolphinemu.dolphinemu.features.settings.ui
|
||||
|
||||
import android.os.Bundle
|
||||
import android.text.TextUtils
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Settings
|
||||
import org.dolphinemu.dolphinemu.utils.AfterDirectoryInitializationRunner
|
||||
import org.dolphinemu.dolphinemu.utils.Log
|
||||
|
||||
class SettingsActivityPresenter(
|
||||
private val activityView: SettingsActivityView,
|
||||
var settings: Settings?
|
||||
) {
|
||||
private var shouldSave = false
|
||||
private var menuTag: MenuTag? = null
|
||||
private var gameId: String? = null
|
||||
private var revision = 0
|
||||
private var isWii = false
|
||||
private lateinit var activity: AppCompatActivity
|
||||
|
||||
fun onCreate(
|
||||
savedInstanceState: Bundle?,
|
||||
menuTag: MenuTag?,
|
||||
gameId: String?,
|
||||
revision: Int,
|
||||
isWii: Boolean,
|
||||
activity: AppCompatActivity
|
||||
) {
|
||||
this.menuTag = menuTag
|
||||
this.gameId = gameId
|
||||
this.revision = revision
|
||||
this.isWii = isWii
|
||||
this.activity = activity
|
||||
shouldSave = savedInstanceState != null && savedInstanceState.getBoolean(KEY_SHOULD_SAVE)
|
||||
}
|
||||
|
||||
fun onDestroy() {
|
||||
if (settings != null) {
|
||||
settings!!.close()
|
||||
settings = null
|
||||
}
|
||||
}
|
||||
|
||||
fun onStart() {
|
||||
prepareDolphinDirectoriesIfNeeded()
|
||||
}
|
||||
|
||||
private fun loadSettingsUI() {
|
||||
activityView.hideLoading()
|
||||
if (!settings!!.areSettingsLoaded()) {
|
||||
if (!TextUtils.isEmpty(gameId)) {
|
||||
settings!!.loadSettings(gameId!!, revision, isWii)
|
||||
if (settings!!.gameIniContainsJunk()) {
|
||||
activityView.showGameIniJunkDeletionQuestion()
|
||||
}
|
||||
} else {
|
||||
settings!!.loadSettings(isWii)
|
||||
}
|
||||
}
|
||||
activityView.showSettingsFragment(menuTag!!, null, false, gameId!!)
|
||||
activityView.onSettingsFileLoaded(settings!!)
|
||||
}
|
||||
|
||||
private fun prepareDolphinDirectoriesIfNeeded() {
|
||||
activityView.showLoading()
|
||||
AfterDirectoryInitializationRunner().runWithLifecycle(activity) { loadSettingsUI() }
|
||||
}
|
||||
|
||||
fun clearGameSettings() {
|
||||
settings!!.clearGameSettings()
|
||||
onSettingChanged()
|
||||
}
|
||||
|
||||
fun onStop(finishing: Boolean) {
|
||||
if (settings != null && finishing && shouldSave) {
|
||||
Log.debug("[SettingsActivity] Settings activity stopping. Saving settings to INI...")
|
||||
settings!!.saveSettings(activity)
|
||||
}
|
||||
}
|
||||
|
||||
fun onSettingChanged() {
|
||||
shouldSave = true
|
||||
}
|
||||
|
||||
fun saveState(outState: Bundle) {
|
||||
outState.putBoolean(KEY_SHOULD_SAVE, shouldSave)
|
||||
}
|
||||
|
||||
fun onMenuTagAction(menuTag: MenuTag, value: Int) {
|
||||
if (menuTag.isSerialPort1Menu) {
|
||||
// Not disabled or dummy
|
||||
if (value != 0 && value != 255) {
|
||||
val bundle = Bundle()
|
||||
bundle.putInt(SettingsFragmentPresenter.ARG_SERIALPORT1_TYPE, value)
|
||||
activityView.showSettingsFragment(menuTag, bundle, true, gameId!!)
|
||||
}
|
||||
}
|
||||
if (menuTag.isGCPadMenu) {
|
||||
// Not disabled
|
||||
if (value != 0)
|
||||
{
|
||||
val bundle = Bundle()
|
||||
bundle.putInt(SettingsFragmentPresenter.ARG_CONTROLLER_TYPE, value)
|
||||
activityView.showSettingsFragment(menuTag, bundle, true, gameId!!)
|
||||
}
|
||||
}
|
||||
if (menuTag.isWiimoteMenu) {
|
||||
// Emulated Wii Remote
|
||||
if (value == 1) {
|
||||
activityView.showSettingsFragment(menuTag, null, true, gameId!!)
|
||||
}
|
||||
}
|
||||
if (menuTag.isWiimoteExtensionMenu) {
|
||||
// Not disabled
|
||||
if (value != 0) {
|
||||
val bundle = Bundle()
|
||||
bundle.putInt(SettingsFragmentPresenter.ARG_CONTROLLER_TYPE, value)
|
||||
activityView.showSettingsFragment(menuTag, bundle, true, gameId!!)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun hasMenuTagActionForValue(menuTag: MenuTag, value: Int): Boolean {
|
||||
if (menuTag.isSerialPort1Menu) {
|
||||
// Not disabled or dummy
|
||||
return value != 0 && value != 255
|
||||
}
|
||||
if (menuTag.isGCPadMenu) {
|
||||
// Not disabled
|
||||
return value != 0
|
||||
}
|
||||
if (menuTag.isWiimoteMenu) {
|
||||
// Emulated Wii Remote
|
||||
return value == 1
|
||||
}
|
||||
return if (menuTag.isWiimoteExtensionMenu) {
|
||||
// Not disabled
|
||||
value != 0
|
||||
} else false
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val KEY_SHOULD_SAVE = "should_save"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue