diff --git a/src/ui/android/res/values/strings.xml b/src/ui/android/res/values/strings.xml
index de23c3be0..26db54a03 100644
--- a/src/ui/android/res/values/strings.xml
+++ b/src/ui/android/res/values/strings.xml
@@ -10,6 +10,10 @@
Help
org.grammaticalframework.ui.android.GLOBAL_PREFERENCES
+ source_key
+ target_key
+ alternatives_key
+
Done
Go
diff --git a/src/ui/android/src/org/grammaticalframework/ui/android/ConversationView.java b/src/ui/android/src/org/grammaticalframework/ui/android/ConversationView.java
index f7f02584a..b36555706 100644
--- a/src/ui/android/src/org/grammaticalframework/ui/android/ConversationView.java
+++ b/src/ui/android/src/org/grammaticalframework/ui/android/ConversationView.java
@@ -1,7 +1,9 @@
package org.grammaticalframework.ui.android;
+import java.io.Serializable;
+import java.util.ArrayList;
+
import android.content.Context;
-import android.content.Intent;
import android.os.Bundle;
import android.util.AttributeSet;
import android.view.LayoutInflater;
@@ -11,7 +13,6 @@ import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;
import android.view.KeyEvent;
import android.widget.EditText;
-import android.widget.ImageView;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
@@ -22,7 +23,7 @@ public class ConversationView extends ScrollView {
private ViewGroup mContent;
- private OnAlternativesListener mAlternativesListener;
+ private OnClickListener mAlternativesListener;
private ASR.Listener mSpeechListener;
public ConversationView(Context context, AttributeSet attrs, int defStyle) {
@@ -109,6 +110,8 @@ public class ConversationView extends ScrollView {
else {
view = (TextView)
mInflater.inflate(R.layout.second_person_utterance, mContent, false);
+ if (mAlternativesListener != null)
+ view.setOnClickListener(mAlternativesListener);
mContent.addView(view);
post(new Runnable() {
public void run() {
@@ -119,13 +122,9 @@ public class ConversationView extends ScrollView {
mLastUtterance.setTag(view);
}
- view.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mAlternativesListener != null)
- mAlternativesListener.onAlternativesSelected(source, alternatives);
- }
- });
+ view.setTag(R.string.source_key, source);
+ view.setTag(R.string.target_key, target);
+ view.setTag(R.string.alternatives_key, alternatives);
// parse by words, marked by %, darkest red color
if (target.charAt(0) == '%') {
@@ -149,6 +148,10 @@ public class ConversationView extends ScrollView {
view.setBackgroundDrawable(getResources().getDrawable(R.drawable.second_person_best_utterance_bg));
target = target.subSequence(2, target.length()) ;
}
+
+ else {
+ view.setBackgroundDrawable(getResources().getDrawable(R.drawable.second_person_utterance_bg));
+ }
view.setText(target);
return target;
@@ -159,8 +162,18 @@ public class ConversationView extends ScrollView {
mLastUtterance.setText(text);
}
- public void setOnAlternativesListener(OnAlternativesListener listener) {
- mAlternativesListener = listener;
+ public void setOnAlternativesListener(final OnAlternativesListener listener) {
+ if (listener == null)
+ mAlternativesListener = null;
+ else
+ mAlternativesListener = new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String source = v.getTag(R.string.source_key).toString();
+ Object alternatives = v.getTag(R.string.alternatives_key);
+ listener.onAlternativesSelected(source, alternatives);
+ }
+ };
}
public void setSpeechInputListener(ASR.Listener listener) {
@@ -170,4 +183,48 @@ public class ConversationView extends ScrollView {
public interface OnAlternativesListener {
public void onAlternativesSelected(CharSequence word, Object lexicon);
}
+
+ public void saveConversation(Bundle state) {
+ ArrayList firstPersonUtterances = new ArrayList();
+ ArrayList secondPersonUtterances = new ArrayList();
+ ArrayList