From e17f670076437cab3a925479a36d3f6ff04e2c45 Mon Sep 17 00:00:00 2001 From: "kr.angelov" Date: Tue, 17 Dec 2013 16:21:56 +0000 Subject: [PATCH] show progress bar when translating or when reloading a language in the lexical activity --- .../ui/android/LexicalEntryActivity.java | 59 +++++++++++++++++-- .../ui/android/MainActivity.java | 42 ++++++++++++- .../ui/android/Translator.java | 20 +++++++ 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() { + @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() { + @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();