CDImagePBP: Add multi-disc support

This commit is contained in:
Connor McLaughlin
2021-03-27 03:34:50 +10:00
parent 50d712c3fe
commit e83f312928
6 changed files with 133 additions and 18 deletions

View File

@ -139,11 +139,13 @@ public class AndroidHostInterface {
public native void setFastForwardEnabled(boolean enabled);
public native String[] getMediaPlaylistPaths();
public native boolean hasMediaSubImages();
public native int getMediaPlaylistIndex();
public native String[] getMediaSubImageTitles();
public native boolean setMediaPlaylistIndex(int index);
public native int getMediaSubImageIndex();
public native boolean switchMediaSubImage(int index);
public native boolean setMediaFilename(String filename);

View File

@ -690,9 +690,23 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde
}
}
private void startDiscChangeFromFile() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(Intent.createChooser(intent, getString(R.string.main_activity_choose_disc_image)), REQUEST_CHANGE_DISC_FILE);
}
private void showDiscChangeMenu() {
final String[] paths = AndroidHostInterface.getInstance().getMediaPlaylistPaths();
final int currentPath = AndroidHostInterface.getInstance().getMediaPlaylistIndex();
final AndroidHostInterface hi = AndroidHostInterface.getInstance();
if (!hi.hasMediaSubImages()) {
startDiscChangeFromFile();
return;
}
final String[] paths = AndroidHostInterface.getInstance().getMediaSubImageTitles();
final int currentPath = AndroidHostInterface.getInstance().getMediaSubImageIndex();
final int numPaths = (paths != null) ? paths.length : 0;
AlertDialog.Builder builder = new AlertDialog.Builder(this);
@ -707,12 +721,9 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde
onMenuClosed();
if (i < numPaths) {
AndroidHostInterface.getInstance().setMediaPlaylistIndex(i);
AndroidHostInterface.getInstance().switchMediaSubImage(i);
} else {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(Intent.createChooser(intent, getString(R.string.main_activity_choose_disc_image)), REQUEST_CHANGE_DISC_FILE);
startDiscChangeFromFile();
}
});
builder.setOnCancelListener(dialogInterface -> onMenuClosed());