From 3b32ff6980d371d9aa6ba516fdbb5b1a87563416 Mon Sep 17 00:00:00 2001 From: Charles Lombardo Date: Wed, 15 Mar 2023 03:33:20 -0400 Subject: [PATCH] Android: Convert SettingsFile to Kotlin --- .../features/settings/utils/SettingsFile.java | 131 ------------------ .../features/settings/utils/SettingsFile.kt | 107 ++++++++++++++ 2 files changed, 107 insertions(+), 131 deletions(-) delete mode 100644 Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java create mode 100644 Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.kt diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java deleted file mode 100644 index acad8c2d19..0000000000 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java +++ /dev/null @@ -1,131 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later - -package org.dolphinemu.dolphinemu.features.settings.utils; - -import androidx.annotation.NonNull; - -import org.dolphinemu.dolphinemu.features.settings.ui.SettingsActivityView; -import org.dolphinemu.dolphinemu.utils.BiMap; -import org.dolphinemu.dolphinemu.utils.DirectoryInitialization; -import org.dolphinemu.dolphinemu.utils.IniFile; -import org.dolphinemu.dolphinemu.utils.Log; - -import java.io.File; - -/** - * Contains static methods for interacting with .ini files in which settings are stored. - */ -public final class SettingsFile -{ - public static final String KEY_ISO_PATH_BASE = "ISOPath"; - public static final String KEY_ISO_PATHS = "ISOPaths"; - - private static BiMap sectionsMap = new BiMap<>(); - - static - { - sectionsMap.add("Hardware", "Video_Hardware"); - sectionsMap.add("Settings", "Video_Settings"); - sectionsMap.add("Enhancements", "Video_Enhancements"); - sectionsMap.add("Stereoscopy", "Video_Stereoscopy"); - sectionsMap.add("Hacks", "Video_Hacks"); - sectionsMap.add("GameSpecific", "Video"); - } - - private SettingsFile() - { - } - - /** - * Reads a given .ini file from disk and returns it. - * If unsuccessful, outputs an error telling why it failed. - * - * @param file The ini file to load the settings from - * @param ini The object to load into - * @param view The current view. - */ - static void readFile(final File file, IniFile ini, SettingsActivityView view) - { - if (!ini.load(file, true)) - { - Log.error("[SettingsFile] Error reading from: " + file.getAbsolutePath()); - if (view != null) - view.onSettingsFileNotFound(); - } - } - - public static void readFile(final String fileName, IniFile ini, SettingsActivityView view) - { - readFile(getSettingsFile(fileName), ini, view); - } - - /** - * Reads a given .ini file from disk and returns it. - * If unsuccessful, outputs an error telling why it failed. - * - * @param gameId the id of the game to load settings for. - * @param ini The object to load into - * @param view The current view. - */ - public static void readCustomGameSettings(final String gameId, IniFile ini, - SettingsActivityView view) - { - readFile(getCustomGameSettingsFile(gameId), ini, view); - } - - /** - * Saves a given .ini file on disk. - * If unsuccessful, outputs an error telling why it failed. - * - * @param fileName The target filename without a path or extension. - * @param ini The IniFile we want to serialize. - * @param view The current view. - */ - public static void saveFile(final String fileName, IniFile ini, SettingsActivityView view) - { - if (!ini.save(getSettingsFile(fileName))) - { - Log.error("[SettingsFile] Error saving to: " + fileName + ".ini"); - if (view != null) - view.showToastMessage("Error saving " + fileName + ".ini"); - } - } - - public static void saveCustomGameSettings(final String gameId, IniFile ini) - { - ini.save(getCustomGameSettingsFile(gameId)); - } - - public static String mapSectionNameFromIni(String generalSectionName) - { - if (sectionsMap.getForward(generalSectionName) != null) - { - return sectionsMap.getForward(generalSectionName); - } - - return generalSectionName; - } - - public static String mapSectionNameToIni(String generalSectionName) - { - if (sectionsMap.getBackward(generalSectionName) != null) - { - return sectionsMap.getBackward(generalSectionName); - } - - return generalSectionName; - } - - @NonNull - public static File getSettingsFile(String fileName) - { - return new File( - DirectoryInitialization.getUserDirectory() + "/Config/" + fileName + ".ini"); - } - - public static File getCustomGameSettingsFile(String gameId) - { - return new File( - DirectoryInitialization.getUserDirectory() + "/GameSettings/" + gameId + ".ini"); - } -} diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.kt new file mode 100644 index 0000000000..827f04cbf3 --- /dev/null +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.kt @@ -0,0 +1,107 @@ +// SPDX-License-Identifier: GPL-2.0-or-later + +package org.dolphinemu.dolphinemu.features.settings.utils + +import org.dolphinemu.dolphinemu.features.settings.ui.SettingsActivityView +import org.dolphinemu.dolphinemu.utils.BiMap +import org.dolphinemu.dolphinemu.utils.DirectoryInitialization +import org.dolphinemu.dolphinemu.utils.IniFile +import org.dolphinemu.dolphinemu.utils.Log +import java.io.File + +/** + * Contains static methods for interacting with .ini files in which settings are stored. + */ +object SettingsFile { + const val KEY_ISO_PATH_BASE = "ISOPath" + const val KEY_ISO_PATHS = "ISOPaths" + private val sectionsMap = BiMap() + + init { + sectionsMap.apply { + add("Hardware", "Video_Hardware") + add("Settings", "Video_Settings") + add("Enhancements", "Video_Enhancements") + add("Stereoscopy", "Video_Stereoscopy") + add("Hacks", "Video_Hacks") + add("GameSpecific", "Video") + } + } + + /** + * Reads a given .ini file from disk and returns it. + * If unsuccessful, outputs an error telling why it failed. + * + * @param file The ini file to load the settings from + * @param ini The object to load into + * @param view The current view. + */ + private fun readFile(file: File, ini: IniFile, view: SettingsActivityView) { + if (!ini.load(file, true)) { + Log.error("[SettingsFile] Error reading from: " + file.absolutePath) + view.onSettingsFileNotFound() + } + } + + fun readFile(fileName: String, ini: IniFile, view: SettingsActivityView) { + readFile(getSettingsFile(fileName), ini, view) + } + + /** + * Reads a given .ini file from disk and returns it. + * If unsuccessful, outputs an error telling why it failed. + * + * @param gameId the id of the game to load settings for. + * @param ini The object to load into + * @param view The current view. + */ + fun readCustomGameSettings( + gameId: String, + ini: IniFile, + view: SettingsActivityView + ) { + readFile(getCustomGameSettingsFile(gameId), ini, view) + } + + /** + * Saves a given .ini file on disk. + * If unsuccessful, outputs an error telling why it failed. + * + * @param fileName The target filename without a path or extension. + * @param ini The IniFile we want to serialize. + * @param view The current view. + */ + fun saveFile(fileName: String, ini: IniFile, view: SettingsActivityView) { + if (!ini.save(getSettingsFile(fileName))) { + Log.error("[SettingsFile] Error saving to: $fileName.ini") + view.showToastMessage("Error saving $fileName.ini") + } + } + + fun saveCustomGameSettings(gameId: String, ini: IniFile) { + ini.save(getCustomGameSettingsFile(gameId)) + } + + fun mapSectionNameFromIni(generalSectionName: String): String? { + return if (sectionsMap.getForward(generalSectionName) != null) { + sectionsMap.getForward(generalSectionName) + } else generalSectionName + } + + fun mapSectionNameToIni(generalSectionName: String): String? { + return if (sectionsMap.getBackward(generalSectionName) != null) { + sectionsMap.getBackward(generalSectionName) + } else generalSectionName + } + + @JvmStatic + fun getSettingsFile(fileName: String): File { + return File(DirectoryInitialization.getUserDirectory() + "/Config/" + fileName + ".ini") + } + + private fun getCustomGameSettingsFile(gameId: String): File { + return File( + DirectoryInitialization.getUserDirectory() + "/GameSettings/" + gameId + ".ini" + ) + } +}