summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java/org
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2020-04-27 15:15:39 +0200
committerGitHub <noreply@github.com>2020-04-27 15:15:39 +0200
commitb175e9e6ac1389e93411ad953a8c4d8aa8f18e31 (patch)
tree02736aed43a75788f1b52151d627f2df21e75c1c /Source/Android/app/src/main/java/org
parent75e79ece73afaf86c45f83f382e97f7983288467 (diff)
parentc5c080b235bec64afe1379290ae538a532aaae95 (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')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java4
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java3
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/EmulationFragment.java6
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java15
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java38
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainView.java2
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java15
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/FileBrowserHelper.java3
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);