diff options
| author | JosJuice <josjuice@gmail.com> | 2021-01-18 12:22:26 +0100 |
|---|---|---|
| committer | JosJuice <josjuice@gmail.com> | 2021-01-27 20:10:07 +0100 |
| commit | 347551a01da643980fabfd3579ec34bb6cbb5419 (patch) | |
| tree | 7eab872f13982d6815c331f6787a9cfb508b983c /Source/Android/app/src/main/java | |
| parent | cd4ccda51c7b16be602ad32ffdf672a3de7cffeb (diff) | |
Android: Implement save overwrite confirmation
Diffstat (limited to 'Source/Android/app/src/main/java')
3 files changed, 43 insertions, 2 deletions
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 c07fe5b388..1534b0c654 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 @@ -18,11 +18,14 @@ import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag; import org.dolphinemu.dolphinemu.model.GameFileCache; import org.dolphinemu.dolphinemu.services.GameFileCacheService; import org.dolphinemu.dolphinemu.utils.AfterDirectoryInitializationRunner; +import org.dolphinemu.dolphinemu.utils.BooleanSupplier; import org.dolphinemu.dolphinemu.utils.ContentHandler; import org.dolphinemu.dolphinemu.utils.FileBrowserHelper; import org.dolphinemu.dolphinemu.utils.WiiUtils; import java.util.Arrays; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; import java.util.function.Supplier; public final class MainPresenter @@ -168,9 +171,41 @@ public final class MainPresenter public void importWiiSave(String path) { + if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.N) + return; // TODO + + final Activity mainPresenterActivity = (Activity) mContext; + + CompletableFuture<Boolean> canOverwriteFuture = new CompletableFuture<>(); + runOnThreadAndShowResult(R.string.import_in_progress, () -> { - int result = WiiUtils.importWiiSave(path); + BooleanSupplier canOverwrite = () -> + { + mainPresenterActivity.runOnUiThread(() -> + { + AlertDialog.Builder builder = + new AlertDialog.Builder(mContext, R.style.DolphinDialogBase); + builder.setMessage(R.string.wii_save_exists); + builder.setCancelable(false); + builder.setPositiveButton(R.string.yes, (dialog, i) -> canOverwriteFuture.complete(true)); + builder.setNegativeButton(R.string.no, (dialog, i) -> canOverwriteFuture.complete(false)); + builder.show(); + }); + + try + { + return canOverwriteFuture.get(); + } + catch (ExecutionException | InterruptedException e) + { + // Shouldn't happen + throw new RuntimeException(e); + } + }; + + int result = WiiUtils.importWiiSave(path, canOverwrite); + int message; switch (result) { diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/BooleanSupplier.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/BooleanSupplier.java new file mode 100644 index 0000000000..d1c490fe2a --- /dev/null +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/BooleanSupplier.java @@ -0,0 +1,6 @@ +package org.dolphinemu.dolphinemu.utils; + +public interface BooleanSupplier +{ + boolean get(); +} 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 404d7e9909..9a6440c9e5 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 @@ -10,5 +10,5 @@ public final class WiiUtils public static native boolean installWAD(String file); - public static native int importWiiSave(String file); + public static native int importWiiSave(String file, BooleanSupplier canOverwrite); } |
