diff options
| author | JMC47 <JMC4789@gmail.com> | 2022-07-23 07:59:19 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-07-23 07:59:19 -0400 |
| commit | 3d7b66bcfc08381400d3259d49943919733bf85b (patch) | |
| tree | bbf125fd88f7b108a2bf62e18d417200fe746443 /Source/Android/app/src/main/java | |
| parent | fdecd56ec751f4d8de88b5ef50dd48a9bd069160 (diff) | |
| parent | a20d0e31d6ea8b1cb272a4721fefed62eda03bcb (diff) | |
Merge pull request #10861 from JosJuice/android-new-sd
Android: Bring SD card settings up to date with DolphinQt
Diffstat (limited to 'Source/Android/app/src/main/java')
5 files changed, 60 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 b419099808..44ee61ed71 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 @@ -29,6 +29,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 4c4a74da84..d838f6879b 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 @@ -29,7 +29,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 dd3fb15506..8dda6b64c6 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 @@ -41,7 +41,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; @@ -423,8 +426,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")); } @@ -445,6 +446,7 @@ public final class SettingsFragmentPresenter private void addWiiSettings(ArrayList<SettingsItem> sl) { + sl.add(new HeaderSetting(mContext, R.string.wii_misc_settings, 0)); sl.add(new SingleChoiceSetting(mContext, IntSetting.SYSCONF_LANGUAGE, R.string.system_language, 0, R.array.wiiSystemLanguageEntries, R.array.wiiSystemLanguageValues)); sl.add(new CheckBoxSetting(mContext, BooleanSetting.SYSCONF_WIDESCREEN, R.string.wii_widescreen, @@ -455,10 +457,29 @@ public final class SettingsFragmentPresenter R.string.wii_screensaver, R.string.wii_screensaver_description)); sl.add(new SingleChoiceSetting(mContext, IntSetting.SYSCONF_SOUND_MODE, R.string.sound_mode, 0, R.array.soundModeEntries, R.array.soundModeValues)); + + sl.add(new HeaderSetting(mContext, R.string.wii_sd_card_settings, 0)); sl.add(new CheckBoxSetting(mContext, BooleanSetting.MAIN_WII_SD_CARD, R.string.insert_sd_card, 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, R.string.wiimote_rumble, 0)); sl.add(new IntSliderSetting(mContext, IntSetting.SYSCONF_SPEAKER_VOLUME, @@ -1384,4 +1405,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(); } |
