diff options
| author | Léo Lam <leo@leolam.fr> | 2021-04-19 21:57:40 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-04-19 21:57:40 +0200 |
| commit | cf80ed7f2df94868665c9efa2ec8d0f1bb4ab377 (patch) | |
| tree | 66d03a2afdf9ea891a6e4e851b5149c1ee6b7fa4 /Source/Android/app/src/main/java | |
| parent | ec5fbeb0d629565d90e664e2781e7ec80b983861 (diff) | |
| parent | ceacd0930b27c7402be78daf9f449997fe0ff2e0 (diff) | |
Merge pull request #9653 from JosJuice/android-import-nand
Android: Add "Import BootMii NAND Backup"
Diffstat (limited to 'Source/Android/app/src/main/java')
4 files changed, 51 insertions, 4 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java index 0418f453de..62d8ee8def 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java @@ -226,6 +226,11 @@ public final class MainActivity extends AppCompatActivity FileBrowserHelper.runAfterExtensionCheck(this, uri, FileBrowserHelper.BIN_EXTENSION, () -> mPresenter.importWiiSave(result.getData().toString())); break; + + case MainPresenter.REQUEST_NAND_BIN_FILE: + FileBrowserHelper.runAfterExtensionCheck(this, uri, FileBrowserHelper.BIN_EXTENSION, + () -> mPresenter.importNANDBin(result.getData().toString())); + break; } } else diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java index ed02a6f22e..7c1785f91c 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java @@ -35,6 +35,7 @@ public final class MainPresenter public static final int REQUEST_SD_FILE = 3; public static final int REQUEST_WAD_FILE = 4; public static final int REQUEST_WII_SAVE_FILE = 5; + public static final int REQUEST_NAND_BIN_FILE = 6; private static boolean sShouldRescanLibrary = true; @@ -119,6 +120,11 @@ public final class MainPresenter new AfterDirectoryInitializationRunner().run(context, true, () -> mView.launchOpenFileActivity(REQUEST_WII_SAVE_FILE)); return true; + + case R.id.menu_import_nand_backup: + new AfterDirectoryInitializationRunner().run(context, true, + () -> mView.launchOpenFileActivity(REQUEST_NAND_BIN_FILE)); + return true; } return false; @@ -184,7 +190,7 @@ public final class MainPresenter public void installWAD(String path) { - runOnThreadAndShowResult(R.string.import_in_progress, () -> + runOnThreadAndShowResult(R.string.import_in_progress, 0, () -> { boolean success = WiiUtils.installWAD(path); int message = success ? R.string.wad_install_success : R.string.wad_install_failure; @@ -198,7 +204,7 @@ public final class MainPresenter CompletableFuture<Boolean> canOverwriteFuture = new CompletableFuture<>(); - runOnThreadAndShowResult(R.string.import_in_progress, () -> + runOnThreadAndShowResult(R.string.import_in_progress, 0, () -> { BooleanSupplier canOverwrite = () -> { @@ -248,13 +254,38 @@ public final class MainPresenter }); } - private void runOnThreadAndShowResult(int progressMessage, Supplier<String> f) + public void importNANDBin(String path) + { + AlertDialog.Builder builder = + new AlertDialog.Builder(mContext, R.style.DolphinDialogBase); + + builder.setMessage(R.string.nand_import_warning); + builder.setNegativeButton(R.string.no, (dialog, i) -> dialog.dismiss()); + builder.setPositiveButton(R.string.yes, (dialog, i) -> + { + dialog.dismiss(); + + runOnThreadAndShowResult(R.string.import_in_progress, R.string.do_not_close_app, () -> + { + // ImportNANDBin doesn't provide any result value, unfortunately... + // It does however show a panic alert if something goes wrong. + WiiUtils.importNANDBin(path); + return null; + }); + }); + + builder.show(); + } + + private void runOnThreadAndShowResult(int progressTitle, int progressMessage, Supplier<String> f) { final Activity mainPresenterActivity = (Activity) mContext; AlertDialog progressDialog = new AlertDialog.Builder(mContext, R.style.DolphinDialogBase) .create(); - progressDialog.setTitle(progressMessage); + progressDialog.setTitle(progressTitle); + if (progressMessage != 0) + progressDialog.setMessage(mContext.getResources().getString(progressMessage)); progressDialog.setCancelable(false); progressDialog.show(); diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java index b03b894493..d35f440c0c 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java @@ -264,6 +264,11 @@ public final class TvMainActivity extends FragmentActivity FileBrowserHelper.runAfterExtensionCheck(this, uri, FileBrowserHelper.BIN_EXTENSION, () -> mPresenter.importWiiSave(result.getData().toString())); break; + + case MainPresenter.REQUEST_NAND_BIN_FILE: + FileBrowserHelper.runAfterExtensionCheck(this, uri, FileBrowserHelper.BIN_EXTENSION, + () -> mPresenter.importNANDBin(result.getData().toString())); + break; } } else @@ -378,6 +383,10 @@ public final class TvMainActivity extends FragmentActivity R.drawable.ic_folder, R.string.grid_menu_import_wii_save)); + rowItems.add(new TvSettingsItem(R.id.menu_import_nand_backup, + R.drawable.ic_folder, + R.string.grid_menu_import_nand_backup)); + // Create a header for this row. HeaderItem header = new HeaderItem(R.string.preferences_settings, getString(R.string.preferences_settings)); 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 9a6440c9e5..74bb049df5 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 @@ -11,4 +11,6 @@ public final class WiiUtils public static native boolean installWAD(String file); public static native int importWiiSave(String file, BooleanSupplier canOverwrite); + + public static native void importNANDBin(String file); } |
