diff --git a/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java b/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java index 9d99dc71b58239f7c076514cb5718783d407b79a..79e945052c249dfe31ffbf89890e9e5800bd1769 100644 --- a/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java +++ b/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java @@ -1,7 +1,12 @@ package org.geuz.onelab; +import java.util.ArrayList; + import android.app.ActionBar; import android.app.Activity; +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.DialogInterface; import android.content.Intent; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; @@ -22,6 +27,8 @@ public class MainActivity extends Activity implements OptionsDisplayFragment.OnO private MenuItem _runStopMenuItem, _switchFragmentMenuItem; private ModelFragment _modelFragment; private OptionsFragment _optionsFragment; + private ArrayList<String> _errors = new ArrayList<String>(); + private Dialog _errorDialog; public MainActivity() { } @@ -105,8 +112,18 @@ public class MainActivity extends Activity implements OptionsDisplayFragment.OnO } else if(item.getItemId() == android.R.id.home) { - if(this._compute) - ;//TODO loading.show(); + if(this._compute) { + AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); + _errorDialog = dialogBuilder.setTitle("Can't show the models list") + .setMessage("The compute have to be finished before you can select an other model.") + .setPositiveButton("OK", new DialogInterface.OnClickListener() { + + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + } + }) + .show(); + } else this.finish(); } @@ -140,7 +157,7 @@ public class MainActivity extends Activity implements OptionsDisplayFragment.OnO @Override protected Integer[] doInBackground(Void... params) { - _gmsh.onelabCB("compute"); + _gmsh.onelabCB("compute"); return new Integer[] {1}; } @@ -148,7 +165,6 @@ public class MainActivity extends Activity implements OptionsDisplayFragment.OnO protected void onPostExecute(Integer[] result) { //(Vibrator) getSystemService(Context.VIBRATOR_SERVICE).vibrate(350); _runStopMenuItem.setTitle(R.string.menu_run); - //reset.setEnabled(true); //loading.dismiss(); _compute = false; super.onPostExecute(result); @@ -158,13 +174,35 @@ public class MainActivity extends Activity implements OptionsDisplayFragment.OnO public void onRequestRender() { _modelFragment.requestRender(); } + private void showError(){ + if(_errors.size()>0){ + if(_errorDialog != null && _errorDialog.isShowing()) _errorDialog.dismiss(); + AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); + _errorDialog = dialogBuilder.setTitle("Gmsh/GetDP Error(s)") + .setMessage(_errors.get(_errors.size()-1)) + .setNegativeButton("Stop", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + _errors.clear(); + _errorDialog.dismiss(); + } + }) + .setPositiveButton("Continue", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + _errors.remove(_errors.size()-1); + _errorDialog.dismiss(); + showError(); + } + }) + .show(); + } + } private final Handler mainHandler = new Handler(){ public void handleMessage(android.os.Message msg) { switch (msg.what) { case 0: // we get a message from gmsh library - //String message =(String) msg.obj; - //errors.add(message); - //showError(); + String message =(String) msg.obj; + _errors.add(message); + showError(); break; case 1: // request render from gmsh library if(_modelFragment != null) _modelFragment.requestRender(); diff --git a/contrib/mobile/Android/src/org/geuz/onelab/OptionsFragment.java b/contrib/mobile/Android/src/org/geuz/onelab/OptionsFragment.java index 96438ef88436cc0fd3c2cc7c357fdc0347ff65c1..e9e7aaba38508751ee25a2b8379d1843d69df3d9 100644 --- a/contrib/mobile/Android/src/org/geuz/onelab/OptionsFragment.java +++ b/contrib/mobile/Android/src/org/geuz/onelab/OptionsFragment.java @@ -39,11 +39,15 @@ public class OptionsFragment extends Fragment{ _optionModelFragment = OptionsModelFragment.newInstance(_gmsh); getFragmentManager().beginTransaction().add(R.id.options_fragment, _optionModelFragment).commit(); _optionDisplayFragment = OptionsDisplayFragment.newInstance(_gmsh); - Button optionModel = (Button) rootView.findViewById(R.id.goto_options_model); - Button optionDisplay = (Button) rootView.findViewById(R.id.goto_options_display); + final Button optionModel = (Button) rootView.findViewById(R.id.goto_options_model); + final Button optionDisplay = (Button) rootView.findViewById(R.id.goto_options_display); + optionDisplay.setEnabled(true); + optionModel.setEnabled(false); optionModel.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { + optionModel.setEnabled(false); + optionDisplay.setEnabled(true); FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.replace(R.id.options_fragment, _optionModelFragment); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); @@ -53,6 +57,8 @@ public class OptionsFragment extends Fragment{ optionDisplay.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { + optionDisplay.setEnabled(false); + optionModel.setEnabled(true); FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.replace(R.id.options_fragment, _optionDisplayFragment); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); @@ -63,7 +69,7 @@ public class OptionsFragment extends Fragment{ } public void refresh() { - _optionDisplayFragment.refresh(); - _optionModelFragment.refresh(); + if(_optionDisplayFragment != null)_optionDisplayFragment.refresh(); + if(_optionModelFragment != null)_optionModelFragment.refresh(); } } diff --git a/contrib/mobile/drawContext.cpp b/contrib/mobile/drawContext.cpp index f3dfa6fbf9b55d97d3593f9c15843586cfdb47cd..02288084b169b3169148b7ef6a649164666320e5 100644 --- a/contrib/mobile/drawContext.cpp +++ b/contrib/mobile/drawContext.cpp @@ -168,7 +168,6 @@ void drawContext::buildRotationMatrix() void drawContext::OrthofFromGModel() { - if(locked) return; SBoundingBox3d bb = GModel::current()->bounds(); double ratio = (double)(this->_width ? this->_width : 1.) / (double)(this->_height ? this->_height : 1.); double xmin = -ratio, xmax = ratio, ymin = -1., ymax = 1.;