summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ui/android/src/org/grammaticalframework/ui/android/LexicalEntryActivity.java59
-rw-r--r--src/ui/android/src/org/grammaticalframework/ui/android/MainActivity.java42
-rw-r--r--src/ui/android/src/org/grammaticalframework/ui/android/Translator.java20
3 files changed, 116 insertions, 5 deletions
diff --git a/src/ui/android/src/org/grammaticalframework/ui/android/LexicalEntryActivity.java b/src/ui/android/src/org/grammaticalframework/ui/android/LexicalEntryActivity.java
index 8c692a471..23c3348c2 100644
--- a/src/ui/android/src/org/grammaticalframework/ui/android/LexicalEntryActivity.java
+++ b/src/ui/android/src/org/grammaticalframework/ui/android/LexicalEntryActivity.java
@@ -6,14 +6,19 @@ import java.util.List;
import android.app.Activity;
import android.app.ListActivity;
import android.content.Context;
+import android.os.AsyncTask;
import android.os.Bundle;
+import android.util.Log;
+import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
+import android.view.ViewParent;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.webkit.WebView;
import android.widget.ArrayAdapter;
+import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
@@ -38,9 +43,26 @@ public class LexicalEntryActivity extends ListActivity {
mShowLanguageView.setLanguages(mTranslator.getAvailableLanguages());
mShowLanguageView.setOnLanguageSelectedListener(new OnLanguageSelectedListener() {
@Override
- public void onLanguageSelected(Language language) {
- mTranslator.setTargetLanguage(language);
- updateTranslations();
+ public void onLanguageSelected(final Language language) {
+ new AsyncTask<Void,Void,Void>() {
+ @Override
+ protected void onPreExecute() {
+ showProgressBar();
+ }
+
+ @Override
+ protected Void doInBackground(Void... params) {
+ mTranslator.setTargetLanguage(language);
+ mTranslator.isTargetLanguageLoaded();
+ return null;
+ }
+
+ @Override
+ protected void onPostExecute(Void result) {
+ updateTranslations();
+ hideProgressBar();
+ }
+ }.execute();
}
});
@@ -48,7 +70,7 @@ public class LexicalEntryActivity extends ListActivity {
descrView.setText(getIntent().getExtras().getString("source"));
updateTranslations();
- }
+ }
@Override
protected void onResume() {
@@ -57,6 +79,35 @@ public class LexicalEntryActivity extends ListActivity {
mShowLanguageView.setSelectedLanguage(mTranslator.getTargetLanguage());
}
+ private View mProgressBar = null;
+
+ private void showProgressBar() {
+ TextView localTextView = (TextView) getWindow().findViewById(
+ android.R.id.title);
+ if (localTextView != null) {
+ ViewParent localViewParent = localTextView.getParent();
+ if (localViewParent != null && (localViewParent instanceof FrameLayout)) {
+ mProgressBar = ((LayoutInflater) getSystemService("layout_inflater"))
+ .inflate(R.layout.progress_bar, null);
+ FrameLayout.LayoutParams params =
+ new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT,
+ FrameLayout.LayoutParams.WRAP_CONTENT,
+ Gravity.RIGHT);
+ ((FrameLayout) localViewParent).addView(mProgressBar, params);
+ }
+ }
+ }
+
+ private void hideProgressBar() {
+ if (mProgressBar != null) {
+ ViewParent localViewParent = mProgressBar.getParent();
+
+ if (localViewParent != null && (localViewParent instanceof FrameLayout)) {
+ ((FrameLayout) localViewParent).removeView(mProgressBar);
+ }
+ }
+ }
+
private View expandedView;
private void updateTranslations() {
diff --git a/src/ui/android/src/org/grammaticalframework/ui/android/MainActivity.java b/src/ui/android/src/org/grammaticalframework/ui/android/MainActivity.java
index c8e15afb6..51a2b4cdd 100644
--- a/src/ui/android/src/org/grammaticalframework/ui/android/MainActivity.java
+++ b/src/ui/android/src/org/grammaticalframework/ui/android/MainActivity.java
@@ -1,4 +1,3 @@
-
package org.grammaticalframework.ui.android;
import java.io.Serializable;
@@ -11,12 +10,18 @@ import android.os.AsyncTask;
import android.os.Bundle;
import android.speech.SpeechRecognizer;
import android.util.Log;
+import android.view.Gravity;
+import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
+import android.view.ViewGroup;
+import android.view.ViewParent;
+import android.widget.FrameLayout;
import android.widget.ImageView;
+import android.widget.TextView;
import org.grammaticalframework.ui.android.ASR.State;
import org.grammaticalframework.ui.android.LanguageSelector.OnLanguageSelectedListener;
@@ -128,6 +133,35 @@ public class MainActivity extends Activity {
mTargetLanguageView.setSelectedLanguage(mTranslator.getTargetLanguage());
}
+ private View mProgressBar = null;
+
+ private void showProgressBar() {
+ TextView localTextView = (TextView) getWindow().findViewById(
+ android.R.id.title);
+ if (localTextView != null) {
+ ViewParent localViewParent = localTextView.getParent();
+ if (localViewParent != null && (localViewParent instanceof FrameLayout)) {
+ mProgressBar = ((LayoutInflater) getSystemService("layout_inflater"))
+ .inflate(R.layout.progress_bar, null);
+ FrameLayout.LayoutParams params =
+ new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT,
+ FrameLayout.LayoutParams.WRAP_CONTENT,
+ Gravity.RIGHT);
+ ((FrameLayout) localViewParent).addView(mProgressBar, params);
+ }
+ }
+ }
+
+ private void hideProgressBar() {
+ if (mProgressBar != null) {
+ ViewParent localViewParent = mProgressBar.getParent();
+
+ if (localViewParent != null && (localViewParent instanceof FrameLayout)) {
+ ((FrameLayout) localViewParent).removeView(mProgressBar);
+ }
+ }
+ }
+
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
@@ -243,6 +277,11 @@ public class MainActivity extends Activity {
mConversationView.updateLastUtterance(input, list);
new AsyncTask<Void,Void,String>() {
+ @Override
+ protected void onPreExecute() {
+ showProgressBar();
+ }
+
@Override
protected String doInBackground(Void... params) {
return mTranslator.translate(input);
@@ -251,6 +290,7 @@ public class MainActivity extends Activity {
@Override
protected void onPostExecute(String result) {
outputText(result);
+ hideProgressBar();
}
}.execute();
}
diff --git a/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java b/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java
index ea64a4214..fb897aae4 100644
--- a/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java
+++ b/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java
@@ -136,6 +136,16 @@ public class Translator {
mSourceLoader.start();
}
+ public boolean isSourceLanguageLoaded() {
+ try {
+ mSourceLoader.join();
+ return true;
+ } catch (InterruptedException e) {
+ Log.e(TAG, "Loading interrupted", e);
+ }
+ return false;
+ }
+
private Concr getSourceConcr() {
try {
mSourceLoader.join();
@@ -181,6 +191,16 @@ public class Translator {
mTargetLoader.start();
}
+ public boolean isTargetLanguageLoaded() {
+ try {
+ mTargetLoader.join();
+ return true;
+ } catch (InterruptedException e) {
+ Log.e(TAG, "Loading interrupted", e);
+ }
+ return false;
+ }
+
private Concr getTargetConcr() {
try {
mTargetLoader.join();