diff --git a/app/src/main/java/edu/jhu/bme/cbid/healthassistantsclient/HelperMethods.java b/app/src/main/java/edu/jhu/bme/cbid/healthassistantsclient/HelperMethods.java
index 395b74240d..be824df6ea 100644
--- a/app/src/main/java/edu/jhu/bme/cbid/healthassistantsclient/HelperMethods.java
+++ b/app/src/main/java/edu/jhu/bme/cbid/healthassistantsclient/HelperMethods.java
@@ -1,13 +1,28 @@
package edu.jhu.bme.cbid.healthassistantsclient;
+import android.app.Activity;
+import android.app.DatePickerDialog;
import android.content.Context;
+import android.content.DialogInterface;
+import android.support.v7.app.AlertDialog;
+import android.text.InputType;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.DatePicker;
+import android.widget.EditText;
+import android.widget.NumberPicker;
+import android.widget.TextView;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.io.InputStream;
+import java.text.SimpleDateFormat;
import java.util.Calendar;
+import java.util.Date;
+
+import edu.jhu.bme.cbid.healthassistantsclient.objects.Node;
/**
* Created by tusharjois on 3/22/16.
@@ -62,5 +77,244 @@ public static JSONObject encodeJSON(Context context, String fileName) {
}
+ public static void askText(final Node node, Activity context) {
+ final AlertDialog.Builder textInput = new AlertDialog.Builder(context);
+ textInput.setTitle(R.string.question_text_input);
+ final EditText dialogEditText = new EditText(context);
+ dialogEditText.setInputType(InputType.TYPE_CLASS_TEXT);
+ textInput.setView(dialogEditText);
+ textInput.setPositiveButton(R.string.generic_ok, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ node.addLanguage(dialogEditText.getText().toString());
+ node.changeText(node.language());
+ node.setSelected();
+ }
+ });
+ textInput.setNegativeButton(R.string.generic_cancel, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+ });
+ textInput.show();
+ }
+
+ public static void askDate(final Node node, final Activity context) {
+ Calendar calendar = Calendar.getInstance();
+ DatePickerDialog datePickerDialog = new DatePickerDialog(context,
+ android.R.style.Theme_Holo_Light_Dialog_NoActionBar,
+ new DatePickerDialog.OnDateSetListener() {
+ @Override
+ public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
+ Calendar cal = Calendar.getInstance();
+ cal.setTimeInMillis(0);
+ cal.set(year, monthOfYear, dayOfMonth);
+ Date date = cal.getTime();
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MMM/yyyy", context.getResources().getConfiguration().locale);
+ String dateString = simpleDateFormat.format(date);
+ node.addLanguage(dateString);
+ node.changeText(node.language());
+ node.setSelected();
+ //TODO:: Check if the language is actually what is intended to be displayed
+ }
+ }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
+ datePickerDialog.setTitle(R.string.question_date_picker);
+ datePickerDialog.show();
+ }
+
+ public static void askLocation(final Node node, Activity context) {
+
+ final AlertDialog.Builder textInput = new AlertDialog.Builder(context);
+ textInput.setTitle(R.string.question_location_picker);
+
+ }
+
+ public static void askNumber(final Node node, Activity context) {
+
+ final AlertDialog.Builder numberDialog = new AlertDialog.Builder(context);
+ numberDialog.setTitle(R.string.question_number_picker);
+ final LayoutInflater inflater = context.getLayoutInflater();
+ View convertView = inflater.inflate(R.layout.dialog_1_number_picker, null);
+ numberDialog.setView(convertView);
+ final NumberPicker numberPicker = (NumberPicker) convertView.findViewById(R.id.dialog_1_number_picker);
+ numberPicker.setMinValue(0);
+ numberPicker.setMaxValue(100);
+ numberDialog.setPositiveButton(R.string.generic_ok, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ numberPicker.setValue(numberPicker.getValue());
+ String value = String.valueOf(numberPicker.getValue());
+ node.addLanguage(" " + value);
+ node.changeText(value);
+ node.setSelected();
+ dialog.dismiss();
+ }
+ });
+ numberDialog.setNegativeButton(R.string.generic_cancel, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+
+ }
+ });
+ numberDialog.show();
+
+ }
+
+ public static void askArea(final Node node, Activity context) {
+
+ final AlertDialog.Builder areaDialog = new AlertDialog.Builder(context);
+ areaDialog.setTitle(R.string.question_area_picker);
+ final LayoutInflater inflater = context.getLayoutInflater();
+ View convertView = inflater.inflate(R.layout.dialog_2_numbers_picker, null);
+ areaDialog.setView(convertView);
+ final NumberPicker widthPicker = (NumberPicker) convertView.findViewById(R.id.dialog_2_numbers_quantity);
+ final NumberPicker lengthPicker = (NumberPicker) convertView.findViewById(R.id.dialog_2_numbers_unit);
+ final TextView middleText = (TextView) convertView.findViewById(R.id.dialog_2_numbers_text);
+ middleText.setText("X");
+ widthPicker.setMinValue(0);
+ widthPicker.setMaxValue(100);
+ lengthPicker.setMinValue(0);
+ lengthPicker.setMaxValue(100);
+
+ areaDialog.setPositiveButton(R.string.generic_ok, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ widthPicker.setValue(widthPicker.getValue());
+ lengthPicker.setValue(lengthPicker.getValue());
+ String durationString = String.valueOf(widthPicker.getValue()) + " X " + lengthPicker.getValue();
+ node.addLanguage(" " + durationString);
+ node.changeText(durationString);
+ node.setSelected();
+ dialog.dismiss();
+ }
+ });
+ areaDialog.setNegativeButton(R.string.generic_cancel, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ }
+ });
+ areaDialog.show();
+
+ }
+
+
+ public static void askRange(final Node node, Activity context) {
+
+ final AlertDialog.Builder rangeDialog = new AlertDialog.Builder(context);
+ rangeDialog.setTitle(R.string.question_range_picker);
+ final LayoutInflater inflater = context.getLayoutInflater();
+ View convertView = inflater.inflate(R.layout.dialog_2_numbers_picker, null);
+ rangeDialog.setView(convertView);
+ final NumberPicker startPicker = (NumberPicker) convertView.findViewById(R.id.dialog_2_numbers_quantity);
+ final NumberPicker endPicker = (NumberPicker) convertView.findViewById(R.id.dialog_2_numbers_unit);
+ final TextView middleText = (TextView) convertView.findViewById(R.id.dialog_2_numbers_text);
+ middleText.setText(" - ");
+
+ startPicker.setMinValue(0);
+ startPicker.setMaxValue(100);
+ endPicker.setMinValue(0);
+ endPicker.setMaxValue(100);
+ rangeDialog.setPositiveButton(R.string.generic_ok, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ startPicker.setValue(startPicker.getValue());
+ endPicker.setValue(endPicker.getValue());
+ String durationString = String.valueOf(startPicker.getValue()) + " to " + endPicker.getValue();
+ //TODO gotta get the units of the range somehow. gotta see what they look like first
+ node.addLanguage(" " + durationString);
+ node.changeText(durationString);
+ node.setSelected();
+ dialog.dismiss();
+ }
+ });
+ rangeDialog.setNegativeButton(R.string.generic_cancel, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ }
+ });
+ rangeDialog.show();
+ }
+
+ public static void askFrequency(final Node node, Activity context) {
+
+ final AlertDialog.Builder frequencyDialog = new AlertDialog.Builder(context);
+ frequencyDialog.setTitle(R.string.question_frequency_picker);
+ final LayoutInflater inflater = context.getLayoutInflater();
+ View convertView = inflater.inflate(R.layout.dialog_2_numbers_picker, null);
+ frequencyDialog.setView(convertView);
+ final NumberPicker quantityPicker = (NumberPicker) convertView.findViewById(R.id.dialog_2_numbers_quantity);
+ final NumberPicker unitPicker = (NumberPicker) convertView.findViewById(R.id.dialog_2_numbers_unit);
+ final TextView middleText = (TextView) convertView.findViewById(R.id.dialog_2_numbers_text);
+ middleText.setVisibility(View.GONE);
+ final String[] units = new String[]{"per Hour", "per Day", "Per Week", "per Month", "per Year"};
+ final String[] doctorUnits = new String[]{"times per hour", "time per day", "times per week", "times per month", "times per year"};
+ unitPicker.setDisplayedValues(units);
+ quantityPicker.setMinValue(0);
+ quantityPicker.setMaxValue(24);
+ unitPicker.setMinValue(0);
+ unitPicker.setMaxValue(4);
+ frequencyDialog.setPositiveButton(R.string.generic_ok, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ quantityPicker.setValue(quantityPicker.getValue());
+ unitPicker.setValue(unitPicker.getValue());
+ String durationString = String.valueOf(quantityPicker.getValue()) + " " + doctorUnits[unitPicker.getValue()];
+ node.addLanguage(" " + durationString);
+ node.changeText(durationString);
+ node.setSelected();
+ dialog.dismiss();
+ }
+ });
+ frequencyDialog.setNegativeButton(R.string.generic_cancel, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ }
+ });
+ frequencyDialog.show();
+
+ }
+
+ public static void askDuration(final Node node, Activity context) {
+ final AlertDialog.Builder durationDialog = new AlertDialog.Builder(context);
+ durationDialog.setTitle(R.string.question_duration_picker);
+ final LayoutInflater inflater = context.getLayoutInflater();
+ View convertView = inflater.inflate(R.layout.dialog_2_numbers_picker, null);
+ durationDialog.setView(convertView);
+ final NumberPicker quantityPicker = (NumberPicker) convertView.findViewById(R.id.dialog_2_numbers_quantity);
+ final NumberPicker unitPicker = (NumberPicker) convertView.findViewById(R.id.dialog_2_numbers_unit);
+ final TextView middleText = (TextView) convertView.findViewById(R.id.dialog_2_numbers_text);
+ middleText.setVisibility(View.GONE);
+ final String[] units = new String[]{"Hours", "Days", "Weeks", "Months", "Years"};
+ unitPicker.setDisplayedValues(units);
+ quantityPicker.setMinValue(0);
+ quantityPicker.setMaxValue(24);
+ unitPicker.setMinValue(0);
+ unitPicker.setMaxValue(4);
+ durationDialog.setPositiveButton(R.string.generic_ok, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ quantityPicker.setValue(quantityPicker.getValue());
+ unitPicker.setValue(unitPicker.getValue());
+ String durationString = String.valueOf(quantityPicker.getValue()) + " " + units[unitPicker.getValue()];
+ node.addLanguage(" " + durationString);
+ node.changeText(durationString);
+ node.setSelected();
+ dialog.dismiss();
+ }
+ });
+ durationDialog.setNegativeButton(R.string.generic_cancel, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ }
+ });
+ durationDialog.show();
+ }
+
}
diff --git a/app/src/main/java/edu/jhu/bme/cbid/healthassistantsclient/QuestionNodeActivity.java b/app/src/main/java/edu/jhu/bme/cbid/healthassistantsclient/QuestionNodeActivity.java
index bbab57956c..9df2210009 100644
--- a/app/src/main/java/edu/jhu/bme/cbid/healthassistantsclient/QuestionNodeActivity.java
+++ b/app/src/main/java/edu/jhu/bme/cbid/healthassistantsclient/QuestionNodeActivity.java
@@ -1,25 +1,16 @@
package edu.jhu.bme.cbid.healthassistantsclient;
-import android.app.DatePickerDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
-import android.text.InputType;
import android.util.Log;
-import android.view.LayoutInflater;
import android.view.View;
-import android.widget.DatePicker;
-import android.widget.EditText;
import android.widget.ExpandableListView;
-import android.widget.NumberPicker;
-import java.text.SimpleDateFormat;
import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -107,7 +98,7 @@ public boolean onChildClick(ExpandableListView parent, View v, int groupPosition
adapter.notifyDataSetChanged();
}
if (!question.isTerminal()) {
- displayNextLevel(question);
+ //TODO: nth level parsing of nodes
}
//nextQuestion(groupPosition);
@@ -158,147 +149,30 @@ private void handleQuestion(Node questionNode) {
String type = questionNode.type();
switch (type) {
case "text":
- askText(questionNode);
+ HelperMethods.askText(questionNode, this);
break;
case "date":
- askDate(questionNode);
+ HelperMethods.askDate(questionNode, this);
break;
case "location":
- askLocation(questionNode);
+ HelperMethods.askLocation(questionNode, this);
break;
case "number":
- askNumber(questionNode);
+ HelperMethods.askNumber(questionNode, this);
break;
case "area":
- askArea(questionNode);
+ HelperMethods.askArea(questionNode, this);
break;
case "duration":
- askDuration(questionNode);
+ HelperMethods.askDuration(questionNode, this);
break;
case "range":
- askRange(questionNode);
+ HelperMethods.askRange(questionNode, this);
break;
case "frequency":
- askFrequency(questionNode);
+ HelperMethods.askFrequency(questionNode, this);
break;
}
}
- private void displayNextLevel(Node node) {
-
- }
-
- private void askText(final Node node) {
- final AlertDialog.Builder textInput = new AlertDialog.Builder(QuestionNodeActivity.this);
- textInput.setTitle(R.string.question_text_input);
- final EditText dialogEditText = new EditText(this);
- dialogEditText.setInputType(InputType.TYPE_CLASS_TEXT);
- textInput.setView(dialogEditText);
- textInput.setPositiveButton(R.string.generic_ok, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- node.addLanguage(dialogEditText.getText().toString());
- node.changeText(node.language());
- }
- });
- textInput.setNegativeButton(R.string.generic_cancel, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.cancel();
- }
- });
- textInput.show();
- }
-
- private void askDate(final Node node) {
-
- final AlertDialog.Builder textInput = new AlertDialog.Builder(QuestionNodeActivity.this);
- textInput.setTitle(R.string.question_date_picker);
- //DatePicker datePicker = new DatePicker()
-
-
- Calendar calendar = Calendar.getInstance();
- DatePickerDialog datePickerDialog = new DatePickerDialog(QuestionNodeActivity.this,
- android.R.style.Theme_Holo_Light_Dialog_NoActionBar,
- new DatePickerDialog.OnDateSetListener() {
- @Override
- public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
- Calendar cal = Calendar.getInstance();
- cal.setTimeInMillis(0);
- cal.set(year, monthOfYear, dayOfMonth);
- Date date = cal.getTime();
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MMM/yyyy", getResources().getConfiguration().locale);
- String dateString = simpleDateFormat.format(date);
- node.addLanguage(dateString);
- node.changeText(node.language());
- //TODO:: Check if the language is actually what is intended to be displayed
- }
- }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
- }
-
- private void askLocation(final Node node) {
-
- final AlertDialog.Builder textInput = new AlertDialog.Builder(QuestionNodeActivity.this);
- textInput.setTitle(R.string.question_text_input);
- }
-
- private void askNumber(final Node node) {
-
- final AlertDialog.Builder textInput = new AlertDialog.Builder(QuestionNodeActivity.this);
- textInput.setTitle(R.string.question_text_input);
- }
-
- private void askArea(final Node node) {
-
- final AlertDialog.Builder textInput = new AlertDialog.Builder(QuestionNodeActivity.this);
- textInput.setTitle(R.string.question_text_input);
- }
-
- private void askDuration(final Node node) {
- final AlertDialog.Builder durationPicker = new AlertDialog.Builder(QuestionNodeActivity.this);
- durationPicker.setTitle(R.string.question_duration_picker);
- final LayoutInflater inflater = getLayoutInflater();
- View convertView = inflater.inflate(R.layout.dialog_duration_picker, null);
- durationPicker.setView(convertView);
- final NumberPicker quantityPicker = (NumberPicker) convertView.findViewById(R.id.dialog_duration_quantity);
- final NumberPicker unitPicker = (NumberPicker) convertView.findViewById(R.id.dialog_duration_unit);
- final String[] units = new String[]{"Hours", "Days", "Weeks", "Months", "Years"};
- unitPicker.setDisplayedValues(units);
- quantityPicker.setMinValue(0);
- quantityPicker.setMaxValue(24);
- unitPicker.setMinValue(0);
- unitPicker.setMaxValue(4);
- durationPicker.setPositiveButton(R.string.generic_ok, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- quantityPicker.setValue(quantityPicker.getValue());
- unitPicker.setValue(unitPicker.getValue());
- String durationString = String.valueOf(quantityPicker.getValue()) + " " + units[unitPicker.getValue()];
- node.addLanguage(" " + durationString);
- node.changeText(durationString);
- node.setSelected();
- dialog.dismiss();
- }
- });
- durationPicker.setNegativeButton(R.string.generic_cancel, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- }
- });
- durationPicker.show();
- }
-
- private void askRange(final Node node) {
-
- final AlertDialog.Builder textInput = new AlertDialog.Builder(QuestionNodeActivity.this);
- textInput.setTitle(R.string.question_text_input);
- }
-
- private void askFrequency(final Node node) {
-
- final AlertDialog.Builder textInput = new AlertDialog.Builder(QuestionNodeActivity.this);
- textInput.setTitle(R.string.question_text_input);
- }
-
}
diff --git a/app/src/main/res/layout/dialog_1_number_picker.xml b/app/src/main/res/layout/dialog_1_number_picker.xml
new file mode 100644
index 0000000000..8ea06ab755
--- /dev/null
+++ b/app/src/main/res/layout/dialog_1_number_picker.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_duration_picker.xml b/app/src/main/res/layout/dialog_2_numbers_picker.xml
similarity index 61%
rename from app/src/main/res/layout/dialog_duration_picker.xml
rename to app/src/main/res/layout/dialog_2_numbers_picker.xml
index b5a0b45442..55f04c0d84 100644
--- a/app/src/main/res/layout/dialog_duration_picker.xml
+++ b/app/src/main/res/layout/dialog_2_numbers_picker.xml
@@ -8,13 +8,22 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
- android:id="@+id/dialog_duration_quantity">
+ android:id="@+id/dialog_2_numbers_quantity">
+
+
+
+
+ android:id="@+id/dialog_2_numbers_unit">
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3301984686..e8e0a195bb 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -190,7 +190,7 @@
Please select date
Please select locations
Please enter number
- Please enter the area
+ Please enter the area (width X length)
Please enter a range
Please enter how many times