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