diff options
| author | Léo Lam <leo@leolam.fr> | 2020-04-27 15:15:39 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-04-27 15:15:39 +0200 |
| commit | b175e9e6ac1389e93411ad953a8c4d8aa8f18e31 (patch) | |
| tree | 02736aed43a75788f1b52151d627f2df21e75c1c /Source/Android/app/src/main/java/org | |
| parent | 75e79ece73afaf86c45f83f382e97f7983288467 (diff) | |
| parent | c5c080b235bec64afe1379290ae538a532aaae95 (diff) | |
Merge pull request #8748 from Ebola16/WAD
Android: Add Install WAD to menu_game_grid
Diffstat (limited to 'Source/Android/app/src/main/java/org')
8 files changed, 81 insertions, 5 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java index f04fee5c67..f37169ddee 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java @@ -447,6 +447,8 @@ public final class NativeLibrary public static native void ReloadWiimoteConfig(); + public static native boolean InstallWAD(String file); + private static boolean alertResult = false; public static boolean displayAlertMsg(final String caption, final String text, @@ -509,7 +511,7 @@ public final class NativeLibrary } // Show the AlertDialog on the main thread. - emulationActivity.runOnUiThread(() -> builder.show()); + emulationActivity.runOnUiThread(builder::show); // Wait for the lock to notify that it is complete. synchronized (lock) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java index 30e410bb5b..001bba3b5e 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java @@ -322,6 +322,9 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde case MainPresenter.REQUEST_GAME_FILE: extensions = FileBrowserHelper.GAME_EXTENSIONS; break; + case MainPresenter.REQUEST_WAD_FILE: + extensions = FileBrowserHelper.WAD_EXTENSION; + break; default: throw new InvalidParameterException("Unhandled request code"); } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/EmulationFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/EmulationFragment.java index 881fd3c554..ebb4dd48ef 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/EmulationFragment.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/EmulationFragment.java @@ -262,7 +262,6 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C } private final String[] mGamePaths; - private Thread mEmulationThread; private State state; private Surface mSurface; private boolean mRunWhenSurfaceIsValid; @@ -399,7 +398,7 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C mRunWhenSurfaceIsValid = false; if (state == State.STOPPED) { - mEmulationThread = new Thread(() -> + Thread emulationThread = new Thread(() -> { NativeLibrary.SurfaceChanged(mSurface); if (loadPreviousTemporaryState) @@ -413,8 +412,7 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C NativeLibrary.Run(mGamePaths); } }, "NativeEmulation"); - mEmulationThread.start(); - + emulationThread.start(); } else if (state == State.PAUSED) { 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 be1a8a74a2..641b9a975e 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 @@ -155,6 +155,13 @@ public final class MainActivity extends AppCompatActivity implements MainView FileBrowserHelper.GAME_EXTENSIONS); } + @Override + public void launchInstallWAD() + { + FileBrowserHelper.openFilePicker(this, MainPresenter.REQUEST_WAD_FILE, false, + FileBrowserHelper.WAD_EXTENSION); + } + /** * @param requestCode An int describing whether the Activity that is returning did so successfully. * @param resultCode An int describing what Activity is giving us this callback. @@ -181,6 +188,14 @@ public final class MainActivity extends AppCompatActivity implements MainView EmulationActivity.launchFile(this, FileBrowserHelper.getSelectedFiles(result)); } break; + + case MainPresenter.REQUEST_WAD_FILE: + // If the user picked a file, as opposed to just backing out. + if (resultCode == MainActivity.RESULT_OK) + { + mPresenter.installWAD(FileBrowserHelper.getSelectedPath(result)); + } + break; } } 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 b015df54b4..b107f415d6 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 @@ -1,13 +1,17 @@ package org.dolphinemu.dolphinemu.ui.main; +import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.widget.Toast; +import androidx.appcompat.app.AlertDialog; import androidx.localbroadcastmanager.content.LocalBroadcastManager; import org.dolphinemu.dolphinemu.BuildConfig; +import org.dolphinemu.dolphinemu.NativeLibrary; import org.dolphinemu.dolphinemu.R; import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag; import org.dolphinemu.dolphinemu.model.GameFileCache; @@ -18,6 +22,7 @@ public final class MainPresenter public static final int REQUEST_DIRECTORY = 1; public static final int REQUEST_GAME_FILE = 2; public static final int REQUEST_SD_FILE = 3; + public static final int REQUEST_WAD_FILE = 4; private final MainView mView; private final Context mContext; @@ -92,6 +97,10 @@ public final class MainPresenter case R.id.menu_open_file: mView.launchOpenFileActivity(); return true; + + case R.id.menu_install_wad: + mView.launchInstallWAD(); + return true; } return false; @@ -111,4 +120,33 @@ public final class MainPresenter { mDirToAdd = dir; } + + public void installWAD(String file) + { + final Activity mainPresenterActivity = (Activity) mContext; + + AlertDialog dialog = new AlertDialog.Builder(mContext, R.style.DolphinDialogBase).create(); + dialog.setTitle("Installing WAD"); + dialog.setMessage("Installing..."); + dialog.setCancelable(false); + dialog.show(); + + Thread installWADThread = new Thread(() -> + { + if (NativeLibrary.InstallWAD(file)) + { + mainPresenterActivity.runOnUiThread( + () -> Toast.makeText(mContext, R.string.wad_install_success, Toast.LENGTH_SHORT) + .show()); + } + else + { + mainPresenterActivity.runOnUiThread( + () -> Toast.makeText(mContext, R.string.wad_install_failure, Toast.LENGTH_SHORT) + .show()); + } + mainPresenterActivity.runOnUiThread(dialog::dismiss); + }, "InstallWAD"); + installWADThread.start(); + } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainView.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainView.java index 5e3dc6243e..fc4ed31513 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainView.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainView.java @@ -23,6 +23,8 @@ public interface MainView void launchOpenFileActivity(); + void launchInstallWAD(); + /** * To be called when the game file cache is updated. */ 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 1b12b0cb3e..8726c832e2 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 @@ -151,6 +151,13 @@ public final class TvMainActivity extends FragmentActivity implements MainView } @Override + public void launchInstallWAD() + { + FileBrowserHelper.openFilePicker(this, MainPresenter.REQUEST_WAD_FILE, false, + FileBrowserHelper.WAD_EXTENSION); + } + + @Override public void showGames() { // Kicks off the program services to update all channels @@ -187,6 +194,14 @@ public final class TvMainActivity extends FragmentActivity implements MainView EmulationActivity.launchFile(this, FileBrowserHelper.getSelectedFiles(result)); } break; + + case MainPresenter.REQUEST_WAD_FILE: + // If the user picked a file, as opposed to just backing out. + if (resultCode == MainActivity.RESULT_OK) + { + mPresenter.installWAD(FileBrowserHelper.getSelectedPath(result)); + } + break; } } 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 ae4a45b8e9..96658720c7 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 @@ -27,6 +27,9 @@ public final class FileBrowserHelper public static final HashSet<String> RAW_EXTENSION = new HashSet<>(Collections.singletonList( "raw")); + public static final HashSet<String> WAD_EXTENSION = new HashSet<>(Collections.singletonList( + "wad")); + public static void openDirectoryPicker(FragmentActivity activity, HashSet<String> extensions) { Intent i = new Intent(activity, CustomFilePickerActivity.class); |
