From cea882181da017d3ab0ba33d148e56e4d2637c1d Mon Sep 17 00:00:00 2001 From: Charles Lombardo Date: Wed, 15 Mar 2023 05:03:12 -0400 Subject: [PATCH] Android: Convert SettingsActivityPresenter to Kotlin --- .../ui/SettingsActivityPresenter.java | 197 ------------------ .../settings/ui/SettingsActivityPresenter.kt | 147 +++++++++++++ 2 files changed, 147 insertions(+), 197 deletions(-) delete mode 100644 Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java create mode 100644 Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.kt diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java deleted file mode 100644 index 00561daffb..0000000000 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java +++ /dev/null @@ -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; - } -} diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.kt new file mode 100644 index 0000000000..eee800463b --- /dev/null +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.kt @@ -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" + } +}