diff options
| author | JosJuice <josjuice@gmail.com> | 2022-07-16 12:18:10 +0200 |
|---|---|---|
| committer | JosJuice <josjuice@gmail.com> | 2022-07-23 13:28:34 +0200 |
| commit | a20d0e31d6ea8b1cb272a4721fefed62eda03bcb (patch) | |
| tree | ab03fe67276aa47f1bcf01e8764b50487b29f399 /Source/Android/app/src/main/java | |
| parent | c2b32916aa02ab5a0fe54285e945611fba70e0fd (diff) | |
Android: Bring SD card settings up to date with DolphinQt
Diffstat (limited to 'Source/Android/app/src/main/java')
5 files changed, 55 insertions, 13 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java index c320106f2f..2f4e465c11 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java @@ -187,29 +187,39 @@ public final class EmulationActivity extends AppCompatActivity { new AfterDirectoryInitializationRunner().runWithLifecycle(activity, true, () -> { - if (FileBrowserHelper.isPathEmptyOrValid(StringSetting.MAIN_DEFAULT_ISO) && - FileBrowserHelper.isPathEmptyOrValid(StringSetting.MAIN_FS_PATH) && - FileBrowserHelper.isPathEmptyOrValid(StringSetting.MAIN_DUMP_PATH) && - FileBrowserHelper.isPathEmptyOrValid(StringSetting.MAIN_LOAD_PATH) && - FileBrowserHelper.isPathEmptyOrValid(StringSetting.MAIN_RESOURCEPACK_PATH) && - FileBrowserHelper.isPathEmptyOrValid(StringSetting.MAIN_SD_PATH)) + if (!FileBrowserHelper.isPathEmptyOrValid(StringSetting.MAIN_DEFAULT_ISO) || + !FileBrowserHelper.isPathEmptyOrValid(StringSetting.MAIN_FS_PATH) || + !FileBrowserHelper.isPathEmptyOrValid(StringSetting.MAIN_DUMP_PATH) || + !FileBrowserHelper.isPathEmptyOrValid(StringSetting.MAIN_LOAD_PATH) || + !FileBrowserHelper.isPathEmptyOrValid(StringSetting.MAIN_RESOURCEPACK_PATH)) { - continueCallback.run(); + AlertDialog.Builder builder = new AlertDialog.Builder(activity); + builder.setMessage(R.string.unavailable_paths); + builder.setPositiveButton(R.string.yes, (dialogInterface, i) -> + SettingsActivity.launch(activity, MenuTag.CONFIG_PATHS)); + builder.setNeutralButton(R.string.continue_anyway, (dialogInterface, i) -> + continueCallback.run()); + builder.show(); } - else + else if (!FileBrowserHelper.isPathEmptyOrValid(StringSetting.MAIN_WII_SD_CARD_IMAGE_PATH) || + !FileBrowserHelper.isPathEmptyOrValid( + StringSetting.MAIN_WII_SD_CARD_SYNC_FOLDER_PATH)) { AlertDialog.Builder builder = new AlertDialog.Builder(activity); builder.setMessage(R.string.unavailable_paths); builder.setPositiveButton(R.string.yes, (dialogInterface, i) -> - SettingsActivity.launch(activity, MenuTag.CONFIG_PATHS)); + SettingsActivity.launch(activity, MenuTag.CONFIG_WII)); builder.setNeutralButton(R.string.continue_anyway, (dialogInterface, i) -> continueCallback.run()); builder.show(); } + else + { + continueCallback.run(); + } }); } - public static void launchSystemMenu(FragmentActivity activity) { if (sIgnoreLaunchRequests) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java index b6e63895a3..b16bd40f25 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java @@ -27,6 +27,8 @@ public enum BooleanSetting implements AbstractBooleanSetting MAIN_SIMULATE_KONGA_2(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "SimulateKonga2", false), MAIN_SIMULATE_KONGA_3(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "SimulateKonga3", false), MAIN_WII_SD_CARD(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "WiiSDCard", true), + MAIN_WII_SD_CARD_ENABLE_FOLDER_SYNC(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, + "WiiSDCardEnableFolderSync", false), MAIN_WIIMOTE_CONTINUOUS_SCANNING(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "WiimoteContinuousScanning", false), MAIN_WIIMOTE_ENABLE_SPEAKER(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.java index 5cb9127a58..0fac3fee03 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.java @@ -21,7 +21,10 @@ public enum StringSetting implements AbstractStringSetting MAIN_RESOURCEPACK_PATH(Settings.FILE_DOLPHIN, Settings.SECTION_INI_GENERAL, "ResourcePackPath", ""), MAIN_FS_PATH(Settings.FILE_DOLPHIN, Settings.SECTION_INI_GENERAL, "NANDRootPath", ""), - MAIN_SD_PATH(Settings.FILE_DOLPHIN, Settings.SECTION_INI_GENERAL, "WiiSDCardPath", ""), + MAIN_WII_SD_CARD_IMAGE_PATH(Settings.FILE_DOLPHIN, Settings.SECTION_INI_GENERAL, "WiiSDCardPath", + ""), + MAIN_WII_SD_CARD_SYNC_FOLDER_PATH(Settings.FILE_DOLPHIN, Settings.SECTION_INI_GENERAL, + "WiiSDCardSyncFolder", ""), MAIN_WFS_PATH(Settings.FILE_DOLPHIN, Settings.SECTION_INI_GENERAL, "WFSPath", ""), GFX_ENHANCE_POST_SHADER(Settings.FILE_GFX, Settings.SECTION_GFX_ENHANCEMENTS, diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java index 83ae49b2d4..234b0a8e34 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java @@ -39,7 +39,10 @@ import org.dolphinemu.dolphinemu.features.settings.model.view.StringSingleChoice import org.dolphinemu.dolphinemu.features.settings.model.view.SubmenuSetting; import org.dolphinemu.dolphinemu.features.settings.utils.SettingsFile; import org.dolphinemu.dolphinemu.ui.main.MainPresenter; +import org.dolphinemu.dolphinemu.utils.BooleanSupplier; import org.dolphinemu.dolphinemu.utils.EGLHelper; +import org.dolphinemu.dolphinemu.utils.ThreadUtil; +import org.dolphinemu.dolphinemu.utils.WiiUtils; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -411,8 +414,6 @@ public final class SettingsFragmentPresenter MainPresenter.REQUEST_DIRECTORY, "/Load")); sl.add(new FilePicker(mContext, StringSetting.MAIN_RESOURCEPACK_PATH, R.string.resource_pack_path, 0, MainPresenter.REQUEST_DIRECTORY, "/ResourcePacks")); - sl.add(new FilePicker(mContext, StringSetting.MAIN_SD_PATH, R.string.SD_card_path, 0, - MainPresenter.REQUEST_SD_FILE, "/Wii/sd.raw")); sl.add(new FilePicker(mContext, StringSetting.MAIN_WFS_PATH, R.string.wfs_path, 0, MainPresenter.REQUEST_DIRECTORY, "/WFS")); } @@ -446,6 +447,21 @@ public final class SettingsFragmentPresenter R.string.insert_sd_card_description)); sl.add(new CheckBoxSetting(mContext, BooleanSetting.MAIN_ALLOW_SD_WRITES, R.string.wii_sd_card_allow_writes, 0)); + sl.add(new CheckBoxSetting(mContext, BooleanSetting.MAIN_WII_SD_CARD_ENABLE_FOLDER_SYNC, + R.string.wii_sd_card_sync, R.string.wii_sd_card_sync_description)); + // TODO: Hardcoding "Load" here is wrong, because the user may have changed the Load path. + // The code structure makes this hard to fix, and with scoped storage active the Load path + // can't be changed anyway + sl.add(new FilePicker(mContext, StringSetting.MAIN_WII_SD_CARD_IMAGE_PATH, + R.string.wii_sd_card_path, 0, MainPresenter.REQUEST_SD_FILE, "/Load/WiiSD.raw")); + sl.add(new FilePicker(mContext, StringSetting.MAIN_WII_SD_CARD_SYNC_FOLDER_PATH, + R.string.wii_sd_sync_folder, 0, MainPresenter.REQUEST_DIRECTORY, "/Load/WiiSDSync/")); + sl.add(new RunRunnable(mContext, R.string.wii_sd_card_folder_to_file, 0, + R.string.wii_sd_card_folder_to_file_confirmation, 0, + () -> convertOnThread(WiiUtils::syncSdFolderToSdImage))); + sl.add(new RunRunnable(mContext, R.string.wii_sd_card_file_to_folder, 0, + R.string.wii_sd_card_file_to_folder_confirmation, 0, + () -> convertOnThread(WiiUtils::syncSdImageToSdFolder))); sl.add(new HeaderSetting(mContext, R.string.wii_wiimote_settings, 0)); sl.add(new CheckBoxSetting(mContext, BooleanSetting.SYSCONF_WIIMOTE_MOTOR, @@ -1358,4 +1374,11 @@ public final class SettingsFragmentPresenter mView.getAdapter().notifyAllSettingsChanged(); } + + private void convertOnThread(BooleanSupplier f) + { + ThreadUtil.runOnThreadAndShowResult(mView.getActivity(), R.string.wii_converting, 0, () -> + mContext.getResources().getString( + f.get() ? R.string.wii_convert_success : R.string.wii_convert_failure)); + } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/WiiUtils.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/WiiUtils.java index 44103f7483..fb1d7e90cb 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/WiiUtils.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/WiiUtils.java @@ -33,4 +33,8 @@ public final class WiiUtils public static native boolean isSystemMenuInstalled(); public static native String getSystemMenuVersion(); + + public static native boolean syncSdFolderToSdImage(); + + public static native boolean syncSdImageToSdFolder(); } |
