forked from GitHub/gf-core
filter out identical duplicated translations from the Android UI
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
package org.grammaticalframework.ui.android;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
@@ -286,8 +288,27 @@ public class MainActivity extends Activity {
|
||||
private void handleSpeechInput(final String input) {
|
||||
final List<MorphoAnalysis> list = mTranslator.lookupMorpho(input);
|
||||
|
||||
mConversationView.updateLastUtterance(input);
|
||||
new AsyncTask<Void,Void,Pair<String,List<ExprProb>>>() {
|
||||
@Override
|
||||
protected void onPreExecute() {
|
||||
showProgressBar();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pair<String,List<ExprProb>> doInBackground(Void... params) {
|
||||
return mTranslator.translate(input);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Pair<String,List<ExprProb>> res) {
|
||||
String text = res.first;
|
||||
List<ExprProb> transl = res.second;
|
||||
Object alts = null;
|
||||
|
||||
// filter out duplicates
|
||||
int i = 0;
|
||||
if (list.size() > 0) {
|
||||
while (i < list.size()) {
|
||||
MorphoAnalysis an = list.get(i);
|
||||
boolean found = false;
|
||||
@@ -304,23 +325,27 @@ public class MainActivity extends Activity {
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
mConversationView.updateLastUtterance(input);
|
||||
new AsyncTask<Void,Void,Pair<String,List<ExprProb>>>() {
|
||||
@Override
|
||||
protected void onPreExecute() {
|
||||
showProgressBar();
|
||||
alts = list;
|
||||
} else {
|
||||
Set<String> strings = new HashSet<String>();
|
||||
while (i < transl.size()) {
|
||||
String s = mTranslator.linearize(transl.get(i).getExpr());
|
||||
if (s.length() > 0 &&
|
||||
(s.charAt(0) == '%' || s.charAt(0) == '*' || s.charAt(0) == '+')) {
|
||||
s = s.substring(2);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pair<String,List<ExprProb>> doInBackground(Void... params) {
|
||||
return mTranslator.translate(input);
|
||||
if (strings.contains(s))
|
||||
transl.remove(i);
|
||||
else {
|
||||
strings.add(s);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
alts = transl;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Pair<String,List<ExprProb>> res) {
|
||||
String text = res.first;
|
||||
Object alts = (list.size() == 0) ? res.second : list;
|
||||
if (DBG) Log.d(TAG, "Speaking: " + res.first);
|
||||
CharSequence text2 =
|
||||
mConversationView.addSecondPersonUtterance(input, text, alts);
|
||||
|
||||
Reference in New Issue
Block a user