1
0
forked from GitHub/gf-core

show progress bar when translating or when reloading a language in the lexical activity

This commit is contained in:
kr.angelov
2013-12-17 16:21:56 +00:00
parent 9c43c2bae3
commit a2526e59cd
3 changed files with 116 additions and 5 deletions

View File

@@ -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() {

View File

@@ -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();
}

View File

@@ -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();