diff options
| author | krasimir <krasimir@chalmers.se> | 2016-06-03 11:09:39 +0000 |
|---|---|---|
| committer | krasimir <krasimir@chalmers.se> | 2016-06-03 11:09:39 +0000 |
| commit | ce856a2d177c2339705552f5a29b8eca8de18ab9 (patch) | |
| tree | 45166c02015b7048248d12a8ab3ed886d81ebaee /src/ui/android | |
| parent | e8fe5ad5f130864946bb5aab3c201279f042ff74 (diff) | |
added checkboxes in the Phrasebook UI
Diffstat (limited to 'src/ui/android')
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(); |
