From c43b0302bd729e713d5f77d0d1e0623f184952ce Mon Sep 17 00:00:00 2001
From: Maxime Graulich <maxime.graulich@gmail.com>
Date: Mon, 29 Jul 2013 14:33:56 +0000
Subject: [PATCH] Show all errors (Android)

---
 .../src/org/geuz/onelab/MainActivity.java     | 40 ++++++++++++++-----
 contrib/mobile/androidGModel.cpp              |  4 +-
 contrib/mobile/drawContext.cpp                | 12 ++++--
 3 files changed, 38 insertions(+), 18 deletions(-)

diff --git a/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java b/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java
index 40156b8e49..65f424248a 100644
--- a/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java
+++ b/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java
@@ -10,6 +10,7 @@ import android.os.Handler;
 import android.os.Vibrator;
 import android.app.Activity;
 import android.app.AlertDialog;
+import android.app.Dialog;
 import android.app.ProgressDialog;
 
 import android.content.Context;
@@ -53,6 +54,8 @@ public class MainActivity extends Activity {
 	private GLESRender renderer;
 	private ProgressDialog loading;
 	private AlertDialog.Builder dialogBuilder;
+	private ArrayList<String> errors;
+	private Dialog errorDialog;
 	private Gmsh gmsh;
 	private Button run, reset;
 	private UndragableViewPager pager;
@@ -66,7 +69,7 @@ public class MainActivity extends Activity {
     	
     	getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
 				WindowManager.LayoutParams.FLAG_FULLSCREEN);
-
+    	errors = new ArrayList<String>();
     	LinearLayout layout = new LinearLayout(this);
     	loading = new ProgressDialog(this);
     	layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
@@ -522,21 +525,36 @@ public class MainActivity extends Activity {
     	
     }
 
+    private void showError(){
+    	if(errors.size()>0){
+    		if(errorDialog != null && errorDialog.isShowing()) errorDialog.dismiss();
+	    	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
+				//get(size() - 1)
 				String message =(String) msg.obj;
-				dialogBuilder
-			    .setTitle("Erreur Gmsh/GetDP")
-			    .setMessage(message)
-			    .setPositiveButton("Continue", new DialogInterface.OnClickListener() {
-			        public void onClick(DialogInterface dialog, int which) { 
-			            dialog.dismiss();
-			        }
-			     })
-			     .show();
-
+				errors.add(message);
+				showError();
 				break;
 			case 1: // request render from gmsh library
 				if(glView != null)
diff --git a/contrib/mobile/androidGModel.cpp b/contrib/mobile/androidGModel.cpp
index bd6b784751..cc94026dc7 100644
--- a/contrib/mobile/androidGModel.cpp
+++ b/contrib/mobile/androidGModel.cpp
@@ -33,9 +33,7 @@ class MobileMessage : public GmshMessage
 	{
 		if(level == "Error")
 		{
-	 		LOGE("%s", message.c_str());
-			if(message.size() <= 26 || message.substr(message.size()-25,25) != "check the log for details")
-				return;
+	 		LOGE("Error:\t%s", message.c_str());
 			JNIEnv *env;
 			if(gJavaVM->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK || !gCallbackObject || (gJavaVM->AttachCurrentThread(&env, NULL)) < 0) return;
 			jstring jstr = env->NewStringUTF(message.c_str());
diff --git a/contrib/mobile/drawContext.cpp b/contrib/mobile/drawContext.cpp
index 49fbffd94f..67c6fcfc9b 100644
--- a/contrib/mobile/drawContext.cpp
+++ b/contrib/mobile/drawContext.cpp
@@ -457,12 +457,16 @@ void drawContext::drawScale()
 void drawContext::drawMesh()
 {
 	GModel::current()->fillVertexArrays();
-    glColor4f(0,0,0,1.);
+	unsigned int col = CTX::instance()->color.mesh.line;
+	glColor4ub((GLubyte)CTX::instance()->unpackRed(col),
+               (GLubyte)CTX::instance()->unpackGreen(col),
+               (GLubyte)CTX::instance()->unpackBlue(col),
+               (GLubyte)CTX::instance()->unpackAlpha(col));
 	for(GModel::fiter it = GModel::current()->firstFace(); it != GModel::current()->lastFace(); it++){
 		if(_fillMesh) drawArray((*it)->va_triangles, GL_TRIANGLES);
-		else drawArray((*it)->va_lines, GL_LINES);
+		else drawArray((*it)->va_lines, GL_LINES, true);
 	}
-    CTX::instance()->mesh.changed = 0;
+	CTX::instance()->mesh.changed = 0;
 }
 
 void drawContext::drawPost()
@@ -477,7 +481,7 @@ void drawContext::drawPost()
 
 void drawContext::drawGeom()
 {
-    unsigned int col = CTX::instance()->color.geom.line;
+	unsigned int col = CTX::instance()->color.geom.line;
 	glColor4ub((GLubyte)CTX::instance()->unpackRed(col),
                (GLubyte)CTX::instance()->unpackGreen(col),
                (GLubyte)CTX::instance()->unpackBlue(col),
-- 
GitLab