summaryrefslogtreecommitdiff
path: root/src/ui/android
diff options
context:
space:
mode:
authorkrasimir <krasimir@chalmers.se>2016-06-03 11:09:39 +0000
committerkrasimir <krasimir@chalmers.se>2016-06-03 11:09:39 +0000
commitce856a2d177c2339705552f5a29b8eca8de18ab9 (patch)
tree45166c02015b7048248d12a8ab3ed886d81ebaee /src/ui/android
parente8fe5ad5f130864946bb5aab3c201279f042ff74 (diff)
added checkboxes in the Phrasebook UI
Diffstat (limited to 'src/ui/android')
-rw-r--r--src/ui/android/res/layout/checkbox_input_list_item.xml13
-rw-r--r--src/ui/android/src/se/chalmers/phrasebook/backend/Model.java3
-rw-r--r--src/ui/android/src/se/chalmers/phrasebook/backend/syntax/SyntaxNodeBoolean.java7
-rw-r--r--src/ui/android/src/se/chalmers/phrasebook/gui/fragments/TranslatorFragment.java29
4 files changed, 51 insertions, 1 deletions
diff --git a/src/ui/android/res/layout/checkbox_input_list_item.xml b/src/ui/android/res/layout/checkbox_input_list_item.xml
new file mode 100644
index 000000000..255d0ae8d
--- /dev/null
+++ b/src/ui/android/res/layout/checkbox_input_list_item.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <CheckBox
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textSize="15sp"
+ android:id="@+id/choice_checkbox" />
+
+</LinearLayout>
diff --git a/src/ui/android/src/se/chalmers/phrasebook/backend/Model.java b/src/ui/android/src/se/chalmers/phrasebook/backend/Model.java
index fe49b0909..b5ebf430d 100644
--- a/src/ui/android/src/se/chalmers/phrasebook/backend/Model.java
+++ b/src/ui/android/src/se/chalmers/phrasebook/backend/Model.java
@@ -108,6 +108,9 @@ public class Model {
} else if (node.getNodeName().equals("option")) {
SyntaxNode[] options = constructSyntaxNodeList(node, ids, calls);
return new SyntaxNodeOption(desc, options);
+ } else if (node.getNodeName().equals("boolean")) {
+ SyntaxNode[] options = constructSyntaxNodeList(node, ids, calls);
+ return new SyntaxNodeBoolean(desc, options);
} else if (node.getNodeName().equals("call")) {
if (attributes.getNamedItem("ref") == null)
return null;
diff --git a/src/ui/android/src/se/chalmers/phrasebook/backend/syntax/SyntaxNodeBoolean.java b/src/ui/android/src/se/chalmers/phrasebook/backend/syntax/SyntaxNodeBoolean.java
new file mode 100644
index 000000000..da1e95e04
--- /dev/null
+++ b/src/ui/android/src/se/chalmers/phrasebook/backend/syntax/SyntaxNodeBoolean.java
@@ -0,0 +1,7 @@
+package se.chalmers.phrasebook.backend.syntax;
+
+public class SyntaxNodeBoolean extends SyntaxNodeOption {
+ public SyntaxNodeBoolean(String desc, SyntaxNode[] options) {
+ super(desc,options);
+ }
+}
diff --git a/src/ui/android/src/se/chalmers/phrasebook/gui/fragments/TranslatorFragment.java b/src/ui/android/src/se/chalmers/phrasebook/gui/fragments/TranslatorFragment.java
index d6a6edf87..cb5d50841 100644
--- a/src/ui/android/src/se/chalmers/phrasebook/gui/fragments/TranslatorFragment.java
+++ b/src/ui/android/src/se/chalmers/phrasebook/gui/fragments/TranslatorFragment.java
@@ -62,7 +62,9 @@ public class TranslatorFragment extends Fragment {
public View getView (int position, View convertView, ViewGroup parent) {
SyntacticChoice choice = mContext.getChoices().get(position);
View view = null;
- if (choice.getNode() instanceof SyntaxNodeOption) {
+ if (choice.getNode() instanceof SyntaxNodeBoolean) {
+ view = createCheckBoxInputView(inflater, choice, (SyntaxNodeBoolean) choice.getNode(), parent);
+ } else if (choice.getNode() instanceof SyntaxNodeOption) {
view = createSpinnerInputView(inflater, choice, (SyntaxNodeOption) choice.getNode(), parent);
} else if (choice.getNode() instanceof SyntaxNodeNumeral) {
view = createNumeralInputView(inflater, choice, (SyntaxNodeNumeral) choice.getNode(), parent);
@@ -215,6 +217,31 @@ public class TranslatorFragment extends Fragment {
return view;
}
+ private View createCheckBoxInputView(LayoutInflater inflater, final SyntacticChoice choice, final SyntaxNodeBoolean options, ViewGroup parent) {
+ View view = inflater.inflate(R.layout.checkbox_input_list_item, parent, false);
+ final CheckBox checkBox = (CheckBox) view.findViewById(R.id.choice_checkbox);
+
+ String label = options.getDesc();
+ if (label != null && !label.isEmpty()) {
+ checkBox.setText(label);
+ }
+
+ checkBox.setChecked(choice.getChoice() == 1);
+ checkBox.setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View view) {
+ int position = checkBox.isChecked() ? 1 : 0;
+ if (position != choice.getChoice()) {
+ choice.setChoice(position);
+ updateSyntax();
+ }
+ }
+ });
+
+ return view;
+ }
+
public void updateSyntax() {
mContext.reset();