From 9ac050f05136061f5c2a141c6a998a91ce69868f Mon Sep 17 00:00:00 2001 From: kruland2607 Date: Wed, 25 Jan 2012 17:33:22 +0000 Subject: [PATCH] Modify the OpenRocketTask to send both the WarningSet and OpenRocketDocument back and display a dialog when there are warnings. The dialog is only partially implemented. git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@369 180e2498-e6e9-4542-8430-84ac67f01cd8 --- .../android/rocket/OpenRocketLoader.java | 75 ++++++++++++++++--- .../rocket/OpenRocketLoaderResult.java | 11 +++ .../android/rocket/OpenRocketLoaderTask.java | 9 ++- 3 files changed, 80 insertions(+), 15 deletions(-) create mode 100644 android/src/net/sf/openrocket/android/rocket/OpenRocketLoaderResult.java diff --git a/android/src/net/sf/openrocket/android/rocket/OpenRocketLoader.java b/android/src/net/sf/openrocket/android/rocket/OpenRocketLoader.java index ee35ba00..dbdd01c1 100644 --- a/android/src/net/sf/openrocket/android/rocket/OpenRocketLoader.java +++ b/android/src/net/sf/openrocket/android/rocket/OpenRocketLoader.java @@ -3,17 +3,18 @@ package net.sf.openrocket.android.rocket; import java.io.File; import net.sf.openrocket.R; +import net.sf.openrocket.aerodynamics.WarningSet; import net.sf.openrocket.android.Application; -import net.sf.openrocket.document.OpenRocketDocument; +import android.app.AlertDialog; +import android.app.Dialog; import android.app.ProgressDialog; -import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.Bundle; +import android.support.v4.app.DialogFragment; import android.support.v4.app.FragmentActivity; -import android.util.AttributeSet; import android.util.Log; -import android.view.View; public class OpenRocketLoader extends FragmentActivity { private static final String TAG = "OpenRocketLoader"; @@ -52,11 +53,10 @@ public class OpenRocketLoader extends FragmentActivity { * @see android.os.AsyncTask#onPostExecute(java.lang.Object) */ @Override - protected void onPostExecute(OpenRocketDocument result) { + protected void onPostExecute(OpenRocketLoaderResult result) { super.onPostExecute(result); - ((Application)OpenRocketLoader.this.getApplication()).setRocketDocument( result ); Log.d(TAG,"Finished loading " + OpenRocketLoader.this); - finishedLoading(); + finishedLoading(result); } }; @@ -65,15 +65,66 @@ public class OpenRocketLoader extends FragmentActivity { } - private void finishedLoading() { + private void finishedLoading(OpenRocketLoaderResult result) { if ( progress.isShowing() ) { progress.dismiss(); } - - Intent i = new Intent(this,OpenRocketViewer.class); - startActivity(i); - finish(); + + WarningSet warnings = result.warnings; + if (warnings == null || warnings.isEmpty()) { + ((Application)OpenRocketLoader.this.getApplication()).setRocketDocument( result.rocket ); + Intent i = new Intent(this,OpenRocketViewer.class); + startActivity(i); + finish(); + } else { + // TODO - Build a warning listing dialog + DialogFragment newFragment = WarningDialogFragment.newInstance(); + newFragment.show(getSupportFragmentManager(), "dialog"); + } } + public void doPositiveClick() { + // Do stuff here. + Log.i("FragmentAlertDialog", "Positive click!"); + finish(); + } + + public void doNegativeClick() { + // Do stuff here. + Log.i("FragmentAlertDialog", "Negative click!"); + finish(); + } + + public static class WarningDialogFragment extends DialogFragment { + public static WarningDialogFragment newInstance() { + WarningDialogFragment frag = new WarningDialogFragment(); + Bundle args = new Bundle(); + frag.setArguments(args); + return frag; + } + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + + return new AlertDialog.Builder(getActivity()) +// .setIcon(android.R.drawable.alert_dialog_icon) + .setTitle("Warnings") + .setPositiveButton("OK", + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int whichButton) { + ((OpenRocketLoader)getActivity()).doPositiveClick(); + } + } + ) + .setNegativeButton("Cancel", + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int whichButton) { + ((OpenRocketLoader)getActivity()).doNegativeClick(); + } + } + ) + .create(); + } + } } diff --git a/android/src/net/sf/openrocket/android/rocket/OpenRocketLoaderResult.java b/android/src/net/sf/openrocket/android/rocket/OpenRocketLoaderResult.java new file mode 100644 index 00000000..ffb35397 --- /dev/null +++ b/android/src/net/sf/openrocket/android/rocket/OpenRocketLoaderResult.java @@ -0,0 +1,11 @@ +package net.sf.openrocket.android.rocket; + +import net.sf.openrocket.aerodynamics.WarningSet; +import net.sf.openrocket.document.OpenRocketDocument; + +public class OpenRocketLoaderResult { + + public WarningSet warnings; + public OpenRocketDocument rocket; + +} diff --git a/android/src/net/sf/openrocket/android/rocket/OpenRocketLoaderTask.java b/android/src/net/sf/openrocket/android/rocket/OpenRocketLoaderTask.java index aef2ace4..637d79e1 100644 --- a/android/src/net/sf/openrocket/android/rocket/OpenRocketLoaderTask.java +++ b/android/src/net/sf/openrocket/android/rocket/OpenRocketLoaderTask.java @@ -8,7 +8,7 @@ import net.sf.openrocket.file.openrocket.OpenRocketLoader; import android.os.AsyncTask; import android.util.Log; -public class OpenRocketLoaderTask extends AsyncTask { +public class OpenRocketLoaderTask extends AsyncTask { private final static String TAG = "OpenRocketLoaderTask"; @@ -16,13 +16,16 @@ public class OpenRocketLoaderTask extends AsyncTask