diff options
| author | JosJuice <josjuice@gmail.com> | 2021-01-17 23:16:23 +0100 |
|---|---|---|
| committer | JosJuice <josjuice@gmail.com> | 2021-01-27 20:10:06 +0100 |
| commit | cd4ccda51c7b16be602ad32ffdf672a3de7cffeb (patch) | |
| tree | 8fd99d73acaf90d33951e9a6993c27b18d759000 /Source/Android/app/src/main/java | |
| parent | b08306d0b89a34b4dc04a324ce47b8d8833230a8 (diff) | |
Android: Add "Import Wii Save"
Diffstat (limited to 'Source/Android/app/src/main/java')
5 files changed, 66 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 90493e8cd4..2beb2112f2 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 @@ -220,6 +220,11 @@ public final class MainActivity extends AppCompatActivity implements MainView FileBrowserHelper.runAfterExtensionCheck(this, uri, FileBrowserHelper.WAD_EXTENSION, () -> mPresenter.installWAD(result.getData().toString())); break; + + case MainPresenter.REQUEST_WII_SAVE_FILE: + FileBrowserHelper.runAfterExtensionCheck(this, uri, FileBrowserHelper.BIN_EXTENSION, + () -> mPresenter.importWiiSave(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 489545e43a..c07fe5b388 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 @@ -31,6 +31,7 @@ public final class MainPresenter public static final int REQUEST_GAME_FILE = 2; 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; private final MainView mView; private final Context mContext; @@ -98,6 +99,11 @@ public final class MainPresenter new AfterDirectoryInitializationRunner().run(context, true, () -> mView.launchOpenFileActivity(REQUEST_WAD_FILE)); return true; + + case R.id.menu_import_wii_save: + new AfterDirectoryInitializationRunner().run(context, true, + () -> mView.launchOpenFileActivity(REQUEST_WII_SAVE_FILE)); + return true; } return false; @@ -160,6 +166,33 @@ public final class MainPresenter }); } + public void importWiiSave(String path) + { + runOnThreadAndShowResult(R.string.import_in_progress, () -> + { + int result = WiiUtils.importWiiSave(path); + int message; + switch (result) + { + case WiiUtils.RESULT_SUCCESS: + message = R.string.wii_save_import_success; + break; + case WiiUtils.RESULT_CORRUPTED_SOURCE: + message = R.string.wii_save_import_corruped_source; + break; + case WiiUtils.RESULT_TITLE_MISSING: + message = R.string.wii_save_import_title_missing; + break; + case WiiUtils.RESULT_CANCELLED: + return null; + default: + message = R.string.wii_save_import_error; + break; + } + return mContext.getResources().getString(message); + }); + } + private void runOnThreadAndShowResult(int progressMessage, Supplier<String> f) { final Activity mainPresenterActivity = (Activity) mContext; @@ -177,10 +210,14 @@ public final class MainPresenter { progressDialog.dismiss(); - AlertDialog.Builder builder = new AlertDialog.Builder(mContext, R.style.DolphinDialogBase); - builder.setMessage(result); - builder.setPositiveButton(R.string.ok, (dialog, i) -> dialog.dismiss()); - builder.show(); + if (result != null) + { + AlertDialog.Builder builder = + new AlertDialog.Builder(mContext, R.style.DolphinDialogBase); + builder.setMessage(result); + builder.setPositiveButton(R.string.ok, (dialog, i) -> dialog.dismiss()); + builder.show(); + } }); }, mContext.getResources().getString(progressMessage)).start(); } 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 0e9150ee52..d34c3d8518 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 @@ -244,6 +244,11 @@ public final class TvMainActivity extends FragmentActivity implements MainView FileBrowserHelper.runAfterExtensionCheck(this, uri, FileBrowserHelper.WAD_EXTENSION, () -> mPresenter.installWAD(result.getData().toString())); break; + + case MainPresenter.REQUEST_WII_SAVE_FILE: + FileBrowserHelper.runAfterExtensionCheck(this, uri, FileBrowserHelper.BIN_EXTENSION, + () -> mPresenter.importWiiSave(result.getData().toString())); + break; } } else @@ -344,6 +349,10 @@ public final class TvMainActivity extends FragmentActivity implements MainView R.drawable.ic_folder, R.string.grid_menu_install_wad)); + rowItems.add(new TvSettingsItem(R.id.menu_import_wii_save, + R.drawable.ic_folder, + R.string.grid_menu_import_wii_save)); + // 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/FileBrowserHelper.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/FileBrowserHelper.java index f68bc46857..94b10806df 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/FileBrowserHelper.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/FileBrowserHelper.java @@ -37,6 +37,9 @@ public final class FileBrowserHelper GAME_LIKE_EXTENSIONS.add("dff"); } + public static final HashSet<String> BIN_EXTENSION = new HashSet<>(Collections.singletonList( + "bin")); + public static final HashSet<String> RAW_EXTENSION = new HashSet<>(Collections.singletonList( "raw")); 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 6fc0b6d9ea..404d7e9909 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 @@ -2,5 +2,13 @@ package org.dolphinemu.dolphinemu.utils; public final class WiiUtils { + public static final int RESULT_SUCCESS = 0; + public static final int RESULT_ERROR = 1; + public static final int RESULT_CANCELLED = 2; + public static final int RESULT_CORRUPTED_SOURCE = 3; + public static final int RESULT_TITLE_MISSING = 4; + public static native boolean installWAD(String file); + + public static native int importWiiSave(String file); } |
