mirror of
https://github.com/jamessanford/kegs.git
synced 2025-03-05 23:29:18 +00:00
Exit cleanly when user cancels or has error with first disk image.
Also change around intent patterns again.
This commit is contained in:
parent
125b778575
commit
681644ea73
@ -27,43 +27,49 @@
|
||||
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.zip" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.ZIP" />
|
||||
</intent-filter>
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
|
||||
<!-- Yeah, this is pretty much awful. Blame PatternMatcher -->
|
||||
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.2mg" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.dsk" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.nib" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.hdv" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.po" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.do" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.2mg" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.dsk" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.nib" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.hdv" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.po" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.do" />
|
||||
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.2MG" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.DSK" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.NIB" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.HDV" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.PO" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.DO" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.2MG" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.DSK" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.NIB" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.HDV" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.PO" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.DO" />
|
||||
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.2mg.gz" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.dsk.gz" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.nib.gz" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.hdv.gz" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.po.gz" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.do.gz" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.2mg.gz" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.dsk.gz" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.nib.gz" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.hdv.gz" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.po.gz" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.do.gz" />
|
||||
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.2MG.gz" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.DSK.gz" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.NIB.gz" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.HDV.gz" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.PO.gz" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.DO.gz" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.2MG.gz" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.DSK.gz" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.NIB.gz" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.HDV.gz" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.PO.gz" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.DO.gz" />
|
||||
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.2MG.GZ" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.DSK.GZ" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.NIB.GZ" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.HDV.GZ" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.PO.GZ" />
|
||||
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.DO.GZ" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.2MG.GZ" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.DSK.GZ" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.NIB.GZ" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.HDV.GZ" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.PO.GZ" />
|
||||
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.DO.GZ" />
|
||||
|
||||
</intent-filter>
|
||||
|
||||
|
@ -54,6 +54,7 @@ public class KegsMain extends SherlockFragmentActivity implements KegsKeyboard.S
|
||||
|
||||
private boolean mPaused = false;
|
||||
final ArrayDeque<Runnable> mResumeQueue = new ArrayDeque<Runnable>();
|
||||
final Runnable mErrorFinish = new Runnable() { public void run() { finish(); } };
|
||||
|
||||
private DiskLoader mDiskLoader = null;
|
||||
|
||||
@ -156,14 +157,28 @@ public class KegsMain extends SherlockFragmentActivity implements KegsKeyboard.S
|
||||
});
|
||||
}
|
||||
|
||||
public void onImageCancelled(final boolean result, final DiskImage image) {
|
||||
if (getThread().nowWaitingForPowerOn()) {
|
||||
// Emulator never powered on and the user aborted.
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
public void onImageReady(final boolean result, final DiskImage image) {
|
||||
mDiskLoader = null;
|
||||
withUIActive(new Runnable() {
|
||||
public void run() {
|
||||
dismissFragment(FRAGMENT_LOADING);
|
||||
if (!result) {
|
||||
// TODO: Consider not showing the error if it was cancelled.
|
||||
new ErrorDialogFragment(R.string.image_error, null).show(getSupportFragmentManager(), FRAGMENT_ERROR);
|
||||
final Runnable cancel;
|
||||
if (getThread().nowWaitingForPowerOn()) {
|
||||
// Emulator never powered on and we failed, exit when user clicks OK.
|
||||
cancel = mErrorFinish;
|
||||
} else {
|
||||
cancel = null;
|
||||
}
|
||||
new ErrorDialogFragment(R.string.image_error, cancel).show(
|
||||
getSupportFragmentManager(), FRAGMENT_ERROR);
|
||||
} else if (image.action != DiskImage.ASK) {
|
||||
loadDiskImage(image);
|
||||
} else {
|
||||
@ -286,8 +301,8 @@ public class KegsMain extends SherlockFragmentActivity implements KegsKeyboard.S
|
||||
}
|
||||
if (!success) {
|
||||
if (!isCancelled()) {
|
||||
final Runnable runnable = new Runnable() { public void run() { finish(); } };
|
||||
new ErrorDialogFragment(R.string.rom_error, runnable).show(getSupportFragmentManager(), FRAGMENT_ERROR);
|
||||
new ErrorDialogFragment(R.string.rom_error, mErrorFinish).show(
|
||||
getSupportFragmentManager(), FRAGMENT_ERROR);
|
||||
}
|
||||
} else {
|
||||
boot();
|
||||
|
@ -14,12 +14,12 @@ class DiskImage {
|
||||
public static final int ASSET = 0;
|
||||
public static final int DOWNLOAD = 1;
|
||||
public static final int LOCALFILE = 2;
|
||||
public static final int ERROR = 3;
|
||||
|
||||
// action
|
||||
public static final int BOOT = 0;
|
||||
public static final int SWAP = 1;
|
||||
public static final int ASK = 2;
|
||||
public static final int CANCEL = 3;
|
||||
|
||||
public String filename;
|
||||
public String drive;
|
||||
|
@ -13,6 +13,7 @@ import java.util.zip.ZipEntry;
|
||||
class DiskLoader extends AsyncTask<Void, Void, Boolean> {
|
||||
interface ImageReady {
|
||||
void onImageReady(boolean result, DiskImage image);
|
||||
void onImageCancelled(boolean result, DiskImage image);
|
||||
}
|
||||
|
||||
private ImageReady mNotify;
|
||||
@ -60,7 +61,8 @@ class DiskLoader extends AsyncTask<Void, Void, Boolean> {
|
||||
}
|
||||
|
||||
private Boolean extractImage() {
|
||||
if (mImage.origin == DiskImage.ERROR) {
|
||||
if (mImage.action == DiskImage.CANCEL) {
|
||||
cancel(true);
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -134,7 +136,7 @@ class DiskLoader extends AsyncTask<Void, Void, Boolean> {
|
||||
}
|
||||
|
||||
protected void onCancelled(final Boolean result) {
|
||||
mNotify.onImageReady(result, mImage);
|
||||
mNotify.onImageCancelled(result, mImage);
|
||||
}
|
||||
|
||||
protected void onPostExecute(final Boolean result) {
|
||||
|
@ -63,7 +63,7 @@ public class ZipDiskFragment extends SherlockDialogFragment {
|
||||
// TODO: Ick. All this just so that whoever opened this fragment
|
||||
// will get a DiskLoader callback.
|
||||
mImage.filename = "";
|
||||
mImage.origin = DiskImage.ERROR;
|
||||
mImage.action = DiskImage.CANCEL;
|
||||
((KegsMain)getActivity()).runDiskLoader(mImage);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user