From 51a6aa6eb2fe7c2dbb0a9574c726b2b85fbc463a Mon Sep 17 00:00:00 2001
From: Maxime Graulich <maxime.graulich@gmail.com>
Date: Mon, 9 Sep 2013 12:12:55 +0000
Subject: [PATCH] Android: add run button in menu on OptionsActivity

---
 .../src/org/geuz/onelab/MainActivity.java     | 14 +++++++++-
 .../src/org/geuz/onelab/ModelList.java        |  2 +-
 .../src/org/geuz/onelab/OptionsActivity.java  | 26 ++++++++++++++++++-
 .../src/org/geuz/onelab/ParameterNumber.java  |  1 -
 .../geuz/onelab/PostProcessingActivity.java   |  2 ++
 5 files changed, 41 insertions(+), 4 deletions(-)

diff --git a/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java b/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java
index 766379f71f..8b78f363f3 100644
--- a/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java
+++ b/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java
@@ -99,7 +99,8 @@ public class MainActivity extends Activity{
     	if (item.getTitle().equals(getString(R.string.menu_parameters))) {
     		Intent intent = new Intent(this, OptionsActivity.class);
 		    intent.putExtra("Gmsh", (Parcelable)_gmsh);
-			startActivity(intent);
+		    intent.putExtra("Compute", _compute);
+			startActivityForResult(intent, 1);
 			_modelFragment.requestRender();
     	}
     	else if(item.getTitle().equals(getString(R.string.menu_run))){
@@ -135,6 +136,17 @@ public class MainActivity extends Activity{
     	return super.onMenuItemSelected(featureId, item);
     }
 	
+	@Override
+	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+		super.onActivityResult(requestCode, resultCode, data);
+		switch (requestCode) {
+		case 1:
+			if(resultCode == RESULT_OK)
+				if(!_compute && data.getBooleanExtra("Compute", false)) new Run().execute();
+			break;
+		}
+	}
+	
 	private class Run extends AsyncTask<Void, Void, Integer[]> {
 
     	@Override
diff --git a/contrib/mobile/Android/src/org/geuz/onelab/ModelList.java b/contrib/mobile/Android/src/org/geuz/onelab/ModelList.java
index 1e6d6829ec..e25d2c21af 100644
--- a/contrib/mobile/Android/src/org/geuz/onelab/ModelList.java
+++ b/contrib/mobile/Android/src/org/geuz/onelab/ModelList.java
@@ -78,7 +78,7 @@ public class ModelList extends Activity {
 				if(m.getUrl() != null) {
 					actions = new CharSequence[2];
 					actions[0] = "Open this model";
-					actions[1] = "More informations";
+					actions[1] = "More information";
 				}
 				else {
 					actions = new CharSequence[1];
diff --git a/contrib/mobile/Android/src/org/geuz/onelab/OptionsActivity.java b/contrib/mobile/Android/src/org/geuz/onelab/OptionsActivity.java
index 1c769ebc10..6ba536201e 100644
--- a/contrib/mobile/Android/src/org/geuz/onelab/OptionsActivity.java
+++ b/contrib/mobile/Android/src/org/geuz/onelab/OptionsActivity.java
@@ -1,27 +1,51 @@
 package org.geuz.onelab;
 
 import android.app.Activity;
+import android.content.Intent;
 import android.os.Bundle;
+import android.view.Menu;
 import android.view.MenuItem;
+import android.view.WindowManager;
 
 public class OptionsActivity extends Activity {
 
+	boolean _compute;
+
 	@Override
 	protected void onCreate(Bundle savedInstanceState) {
 		super.onCreate(savedInstanceState);
+		getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
 		setContentView(R.layout.activity_fragment);
 		Bundle extra = getIntent().getExtras();
 		Gmsh gmsh = extra.getParcelable("Gmsh");
+		_compute = extra.getBoolean("Compute", false);
 		getActionBar().setDisplayHomeAsUpEnabled(true);
 		getActionBar().setTitle(R.string.title_activity_options);
 		OptionsFragment optionsFragment = OptionsFragment.newInstance(gmsh);
 		getFragmentManager().beginTransaction().add(R.id.model_fragment, optionsFragment).commit();
 	}
+	
+	@Override
+	public boolean onCreateOptionsMenu(Menu menu) {
+		if(_compute) return super.onCreateOptionsMenu(menu);
+		MenuItem runStopMenuItem = menu.add(R.string.menu_run);
+    	runStopMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
+		return super.onCreateOptionsMenu(menu);
+	}
 
 	@Override
 	public boolean onMenuItemSelected(int featureId, MenuItem item) {
-		if(item.getItemId() == android.R.id.home)
+		if(item.getTitle().equals(getString(R.string.menu_run))) {
+			Intent returnIntent = new Intent();
+			returnIntent.putExtra("Compute", true);
+			this.setResult(RESULT_OK, returnIntent);     
+			this.finish();
+		}
+		else if(item.getItemId() == android.R.id.home) {
+			Intent returnIntent = new Intent();
+			this.setResult(RESULT_CANCELED, returnIntent);
 			this.finish();
+		}
 		return super.onMenuItemSelected(featureId, item);
 	}
 }
diff --git a/contrib/mobile/Android/src/org/geuz/onelab/ParameterNumber.java b/contrib/mobile/Android/src/org/geuz/onelab/ParameterNumber.java
index 5864797dee..8e91e8d118 100644
--- a/contrib/mobile/Android/src/org/geuz/onelab/ParameterNumber.java
+++ b/contrib/mobile/Android/src/org/geuz/onelab/ParameterNumber.java
@@ -167,7 +167,6 @@ public class ParameterNumber extends Parameter{
 			_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
 				public void onNothingSelected(AdapterView<?> arg0) {}
 				public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
-					setValue(_values.get(pos));
 					_gmsh.setParam(getType(), getName(), String.valueOf(_values.get(pos)));
 				}
 			});
diff --git a/contrib/mobile/Android/src/org/geuz/onelab/PostProcessingActivity.java b/contrib/mobile/Android/src/org/geuz/onelab/PostProcessingActivity.java
index 71b042549f..f0407e4805 100644
--- a/contrib/mobile/Android/src/org/geuz/onelab/PostProcessingActivity.java
+++ b/contrib/mobile/Android/src/org/geuz/onelab/PostProcessingActivity.java
@@ -3,11 +3,13 @@ package org.geuz.onelab;
 import android.app.Activity;
 import android.os.Bundle;
 import android.view.MenuItem;
+import android.view.WindowManager;
 
 public class PostProcessingActivity extends Activity{
 	@Override
 	protected void onCreate(Bundle savedInstanceState) {
 		super.onCreate(savedInstanceState);
+		getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
 		setContentView(R.layout.activity_fragment);
 		Bundle extra = getIntent().getExtras();
 		int id = extra.getInt("PView", 0);
-- 
GitLab