1
0
mirror of https://github.com/oliexdev/openScale.git synced 2025-08-09 18:26:38 +02:00

refactored data entry activity to dynamically set measurements

This commit is contained in:
OliE
2017-03-18 21:15:12 +01:00
parent 026e5e0733
commit ebfa0aed6e
9 changed files with 295 additions and 482 deletions

View File

@@ -29,7 +29,7 @@ import android.view.Window;
import android.widget.Button; import android.widget.Button;
import android.widget.DatePicker; import android.widget.DatePicker;
import android.widget.EditText; import android.widget.EditText;
import android.widget.TableRow; import android.widget.TableLayout;
import android.widget.TextView; import android.widget.TextView;
import android.widget.TimePicker; import android.widget.TimePicker;
import android.widget.Toast; import android.widget.Toast;
@@ -37,12 +37,12 @@ import android.widget.Toast;
import com.health.openscale.R; import com.health.openscale.R;
import com.health.openscale.core.OpenScale; import com.health.openscale.core.OpenScale;
import com.health.openscale.core.ScaleData; import com.health.openscale.core.ScaleData;
import com.health.openscale.core.ScaleUser;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.ListIterator; import java.util.ListIterator;
@@ -50,17 +50,21 @@ public class DataEntryActivity extends Activity {
public static final int ADD_DATA_REQUEST = 0; public static final int ADD_DATA_REQUEST = 0;
public static final int EDIT_DATA_REQUEST = 1; public static final int EDIT_DATA_REQUEST = 1;
private TextView txtDataNr; private ArrayList<MeasurementView> dataEntryMeasurements;
private EditText txtWeight; private TableLayout tableLayoutDataEntry;
private EditText txtFat;
private EditText txtWater; private WeightMeasurementView weightMeasurement;
private EditText txtMuscle; private WaterMeasurementView waterMeasurement;
private EditText txtWaist; private MuscleMeasurementView muscleMeasurement;
private EditText txtHip; private FatMeasurementView fatMeasurement;
private EditText txtDate; private WaistMeasurementView waistMeasurement;
private EditText txtTime; private HipMeasurementView hipMeasurement;
private EditText txtDate;
private EditText txtTime;
private EditText txtComment; private EditText txtComment;
private TextView txtDataNr;
private Button btnAdd; private Button btnAdd;
private Button btnOk; private Button btnOk;
private Button btnCancel; private Button btnCancel;
@@ -85,18 +89,35 @@ public class DataEntryActivity extends Activity {
context = this; context = this;
tableLayoutDataEntry = (TableLayout) findViewById(R.id.tableLayoutDataEntry);
weightMeasurement = new WeightMeasurementView(context);
waterMeasurement = new WaterMeasurementView(context);
muscleMeasurement = new MuscleMeasurementView(context);
fatMeasurement = new FatMeasurementView(context);
waistMeasurement = new WaistMeasurementView(context);
hipMeasurement = new HipMeasurementView(context);
dataEntryMeasurements = new ArrayList<>();
dataEntryMeasurements.add(weightMeasurement);
dataEntryMeasurements.add(waterMeasurement);
dataEntryMeasurements.add(muscleMeasurement);
dataEntryMeasurements.add(fatMeasurement);
dataEntryMeasurements.add(waistMeasurement);
dataEntryMeasurements.add(hipMeasurement);
Collections.reverse(dataEntryMeasurements);
for (MeasurementView measuremt : dataEntryMeasurements) {
tableLayoutDataEntry.addView(measuremt, 0);
measuremt.setEditMode(true);
}
txtDataNr = (TextView) findViewById(R.id.txtDataNr); txtDataNr = (TextView) findViewById(R.id.txtDataNr);
txtWeight = (EditText) findViewById(R.id.txtWeight);
txtWeight.setHint(getResources().getString(R.string.info_enter_value_unit) + " " + ScaleUser.UNIT_STRING[OpenScale.getInstance(context).getSelectedScaleUser().scale_unit]);
txtFat = (EditText) findViewById(R.id.txtFat);
txtWater = (EditText) findViewById(R.id.txtWater);
txtMuscle = (EditText) findViewById(R.id.txtMuscle);
txtWaist = (EditText) findViewById(R.id.txtWaist);
txtHip = (EditText) findViewById(R.id.txtHip);
txtDate = (EditText) findViewById(R.id.txtDate); txtDate = (EditText) findViewById(R.id.txtDate);
txtTime = (EditText) findViewById(R.id.txtTime); txtTime = (EditText) findViewById(R.id.txtTime);
txtComment = (EditText) findViewById(R.id.txtComment); txtComment = (EditText) findViewById(R.id.txtComment);
btnAdd = (Button) findViewById(R.id.btnAdd); btnAdd = (Button) findViewById(R.id.btnAdd);
btnOk = (Button) findViewById(R.id.btnOk); btnOk = (Button) findViewById(R.id.btnOk);
btnCancel = (Button) findViewById(R.id.btnCancel); btnCancel = (Button) findViewById(R.id.btnCancel);
@@ -117,33 +138,13 @@ public class DataEntryActivity extends Activity {
updateOnView(); updateOnView();
} }
private void updateOnView() private void updateOnView()
{ {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
if(!prefs.getBoolean("fatEnable", true)) { for (MeasurementView measuremt : dataEntryMeasurements) {
TableRow row = (TableRow)findViewById(R.id.tableRowFat); measuremt.updatePreferences(prefs);
row.setVisibility(View.GONE);
}
if(!prefs.getBoolean("muscleEnable", true)) {
TableRow row = (TableRow)findViewById(R.id.tableRowMuscle);
row.setVisibility(View.GONE);
}
if(!prefs.getBoolean("waterEnable", true)) {
TableRow row = (TableRow)findViewById(R.id.tableRowWater);
row.setVisibility(View.GONE);
}
if(!prefs.getBoolean("waistEnable", false)) {
TableRow row = (TableRow)findViewById(R.id.tableRowWaist);
row.setVisibility(View.GONE);
}
if(!prefs.getBoolean("hipEnable", false)) {
TableRow row = (TableRow)findViewById(R.id.tableRowHip);
row.setVisibility(View.GONE);
} }
if (getIntent().getExtras().getInt("mode") == EDIT_DATA_REQUEST) { if (getIntent().getExtras().getInt("mode") == EDIT_DATA_REQUEST) {
@@ -171,13 +172,10 @@ public class DataEntryActivity extends Activity {
ScaleData editScaleData = openScale.getScaleData(id); ScaleData editScaleData = openScale.getScaleData(id);
txtDataNr.setText(DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT).format(editScaleData.date_time)); txtDataNr.setText(DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT).format(editScaleData.date_time));
txtWeight.setText(editScaleData.weight+"");
txtFat.setText(editScaleData.fat+""); for (MeasurementView measuremt : dataEntryMeasurements) {
txtWater.setText(editScaleData.water+""); measuremt.updateValue(editScaleData);
txtMuscle.setText(editScaleData.muscle+""); }
txtWaist.setText(editScaleData.waist+"");
txtHip.setText(editScaleData.hip+"");
txtComment.setText(editScaleData.comment);
txtDate.setText(dateFormat.format(editScaleData.date_time)); txtDate.setText(dateFormat.format(editScaleData.date_time));
txtTime.setText(timeFormat.format(editScaleData.date_time)); txtTime.setText(timeFormat.format(editScaleData.date_time));
@@ -196,114 +194,36 @@ public class DataEntryActivity extends Activity {
{ {
ScaleData lastScaleData = OpenScale.getInstance(this).getScaleDataList().get(0); ScaleData lastScaleData = OpenScale.getInstance(this).getScaleDataList().get(0);
txtFat.setText(Float.toString(lastScaleData.fat)); // show as default last scale data
txtWater.setText(Float.toString(lastScaleData.water)); for (MeasurementView measuremt : dataEntryMeasurements) {
txtMuscle.setText(Float.toString(lastScaleData.muscle)); measuremt.updateValue(lastScaleData);
txtWaist.setText(Float.toString(lastScaleData.waist)); }
txtHip.setText(Float.toString(lastScaleData.hip));
} else { } else {
txtFat.setText(Float.toString(0.0f)); // show default values
txtWater.setText(Float.toString(0.0f)); for (MeasurementView measuremt : dataEntryMeasurements) {
txtMuscle.setText(Float.toString(0.0f)); measuremt.updateValue(new ScaleData());
txtWaist.setText(Float.toString(0.0f)); }
txtHip.setText(Float.toString(0.0f));
} }
txtDate.setText(dateFormat.format(new Date())); txtDate.setText(dateFormat.format(new Date()));
txtTime.setText(timeFormat.format(new Date())); txtTime.setText(timeFormat.format(new Date()));
} }
private boolean validateInput() private boolean validateAllInput()
{ {
boolean validate = true; boolean isValidate = true;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); for (MeasurementView measuremt : dataEntryMeasurements) {
if (!measuremt.validateInput()) {
if (prefs.getBoolean("weightEnable", true)) { isValidate = false;
if (txtWeight.getText().toString().length() == 0) {
txtWeight.setError(getResources().getString(R.string.error_weight_value_required));
validate = false;
} else if (!isInRange(txtWeight.getText().toString(), 300)) {
txtWeight.setError(getResources().getString(R.string.error_value_range_0_300));
validate = false;
} }
} }
if (prefs.getBoolean("fatEnable", true)) { return isValidate;
if (txtFat.getText().toString().length() == 0) {
txtFat.setError(getResources().getString(R.string.error_fat_value_required));
validate = false;
} else if (!isInRange(txtFat.getText().toString(), 100)) {
txtFat.setError(getResources().getString(R.string.error_value_range_0_100));
validate = false;
}
}
if (prefs.getBoolean("waterEnable", true)) {
if (txtWater.getText().toString().length() == 0) {
txtWater.setError(getResources().getString(R.string.error_water_value_required));
validate = false;
} else if (!isInRange(txtWater.getText().toString(), 100)) {
txtWater.setError(getResources().getString(R.string.error_value_range_0_100));
validate = false;
}
}
if (prefs.getBoolean("muscleEnable", true)) {
if (txtMuscle.getText().toString().length() == 0) {
txtMuscle.setError(getResources().getString(R.string.error_muscle_value_required));
validate = false;
} else if (!isInRange(txtMuscle.getText().toString(), 100)) {
txtMuscle.setError(getResources().getString(R.string.error_value_range_0_100));
validate = false;
}
}
if (prefs.getBoolean("waistEnable", false)) {
if (txtWaist.getText().toString().length() == 0) {
txtWaist.setError(getResources().getString(R.string.error_waist_value_required));
validate = false;
} else if (!isInRange(txtWaist.getText().toString(), 300)) {
txtWaist.setError(getResources().getString(R.string.error_value_range_0_300));
validate = false;
}
}
if (prefs.getBoolean("hipEnable", false)) {
if (txtHip.getText().toString().length() == 0) {
txtHip.setError(getResources().getString(R.string.error_hip_value_required));
validate = false;
} else if (!isInRange(txtHip.getText().toString(), 300)) {
txtHip.setError(getResources().getString(R.string.error_value_range_0_300));
validate = false;
}
}
return validate;
}
private boolean isInRange(String value, int maxValue)
{
if (value.length() == 0)
return false;
float val = Float.valueOf(value);
if (val >= 0 && val <= maxValue)
return true;
return false;
} }
private void saveScaleData() { private void saveScaleData() {
if (validateInput()) { if (validateAllInput()) {
float weight = Float.valueOf(txtWeight.getText().toString());
float fat = Float.valueOf(txtFat.getText().toString());
float water = Float.valueOf(txtWater.getText().toString());
float muscle = Float.valueOf(txtMuscle.getText().toString());
float waist = Float.valueOf(txtWaist.getText().toString());
float hip = Float.valueOf(txtHip.getText().toString());
String comment = txtComment.getText().toString(); String comment = txtComment.getText().toString();
String date = txtDate.getText().toString(); String date = txtDate.getText().toString();
@@ -311,7 +231,15 @@ public class DataEntryActivity extends Activity {
OpenScale openScale = OpenScale.getInstance(context); OpenScale openScale = OpenScale.getInstance(context);
openScale.updateScaleData(id, date + " " + time, weight, fat, water, muscle, waist, hip, comment); openScale.updateScaleData(id,
date + " " + time,
weightMeasurement.getValue(),
fatMeasurement.getValue(),
waterMeasurement.getValue(),
muscleMeasurement.getValue(),
waistMeasurement.getValue(),
hipMeasurement.getValue(),
comment);
} }
} }
@@ -370,14 +298,14 @@ public class DataEntryActivity extends Activity {
private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() { private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {
@Override @Override
public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDay) { public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDay) {
txtDate.setText(String.format("%02d.%02d.%04d", selectedDay, selectedMonth+1, selectedYear)); // txtDate.setText(String.format("%02d.%02d.%04d", selectedDay, selectedMonth+1, selectedYear));
} }
}; };
private TimePickerDialog.OnTimeSetListener timePickerListener = new TimePickerDialog.OnTimeSetListener() { private TimePickerDialog.OnTimeSetListener timePickerListener = new TimePickerDialog.OnTimeSetListener() {
@Override @Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) { public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
txtTime.setText(String.format("%02d:%02d", hourOfDay, minute)); // txtTime.setText(String.format("%02d:%02d", hourOfDay, minute));
} }
}; };
@@ -385,7 +313,7 @@ public class DataEntryActivity extends Activity {
private class onClickListenerAdd implements View.OnClickListener { private class onClickListenerAdd implements View.OnClickListener {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (validateInput()) if (validateAllInput())
{ {
OpenScale openScale = OpenScale.getInstance(context); OpenScale openScale = OpenScale.getInstance(context);
@@ -401,18 +329,20 @@ public class DataEntryActivity extends Activity {
infoDialog.show(); infoDialog.show();
} else { } else {
float weight = Float.valueOf(txtWeight.getText().toString());
float fat = Float.valueOf(txtFat.getText().toString());
float water = Float.valueOf(txtWater.getText().toString());
float muscle = Float.valueOf(txtMuscle.getText().toString());
float waist = Float.valueOf(txtWaist.getText().toString());
float hip = Float.valueOf(txtHip.getText().toString());
String comment = txtComment.getText().toString(); String comment = txtComment.getText().toString();
String date = txtDate.getText().toString(); String date = txtDate.getText().toString();
String time = txtTime.getText().toString(); String time = txtTime.getText().toString();
openScale.addScaleData(selectedUserId, date + " " + time, weight, fat, water, muscle, waist, hip, comment); openScale.addScaleData(selectedUserId,
date + " " + time,
weightMeasurement.getValue(),
fatMeasurement.getValue(),
waterMeasurement.getValue(),
muscleMeasurement.getValue(),
waistMeasurement.getValue(),
hipMeasurement.getValue(),
comment);
finish(); finish();
} }
@@ -423,7 +353,7 @@ public class DataEntryActivity extends Activity {
private class onClickListenerOk implements View.OnClickListener { private class onClickListenerOk implements View.OnClickListener {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (validateInput()) { if (validateAllInput()) {
saveScaleData(); saveScaleData();
finish(); finish();
} }

View File

@@ -6,7 +6,10 @@ import android.graphics.Color;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.support.v4.content.ContextCompat; import android.support.v4.content.ContextCompat;
import android.text.Html; import android.text.Html;
import android.text.InputType;
import android.util.TypedValue;
import android.view.View; import android.view.View;
import android.widget.EditText;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.Space; import android.widget.Space;
import android.widget.TableLayout; import android.widget.TableLayout;
@@ -16,6 +19,7 @@ import android.widget.TextView;
import com.health.openscale.R; import com.health.openscale.R;
import com.health.openscale.core.EvaluationResult; import com.health.openscale.core.EvaluationResult;
import com.health.openscale.core.EvaluationSheet; import com.health.openscale.core.EvaluationSheet;
import com.health.openscale.core.OpenScale;
import com.health.openscale.core.ScaleCalculator; import com.health.openscale.core.ScaleCalculator;
import com.health.openscale.core.ScaleData; import com.health.openscale.core.ScaleData;
import com.health.openscale.core.ScaleUser; import com.health.openscale.core.ScaleUser;
@@ -37,12 +41,13 @@ abstract class MeasurementView extends TableLayout {
private String nameText; private String nameText;
protected ScaleUser scaleUser; private boolean editMode;
public MeasurementView(Context context, String text, Drawable icon) { public MeasurementView(Context context, String text, Drawable icon) {
super(context); super(context);
initView(context); initView(context);
editMode = false;
nameText = text; nameText = text;
nameView.setText(text); nameView.setText(text);
iconView.setImageDrawable(icon); iconView.setImageDrawable(icon);
@@ -69,17 +74,17 @@ abstract class MeasurementView extends TableLayout {
addView(measurementRow); addView(measurementRow);
addView(evaluatorRow); addView(evaluatorRow);
iconView.getLayoutParams().height = 80; iconView.getLayoutParams().height = pxImageDp(30);
iconView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); iconView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
nameView.setTextSize(20); nameView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15);
nameView.setTextColor(Color.BLACK); nameView.setTextColor(Color.BLACK);
nameView.setLines(2); nameView.setLines(2);
nameView.setLayoutParams(new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 0.92f)); nameView.setLayoutParams(new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0.90f));
valueView.setTextSize(20); valueView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15);
valueView.setTextColor(Color.BLACK); valueView.setTextColor(Color.BLACK);
valueView.setLayoutParams(new TableRow.LayoutParams(0, LayoutParams.MATCH_PARENT, 0.07f)); valueView.setLayoutParams(new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT, 0.01f));
indicatorView.setLayoutParams(new TableRow.LayoutParams(0, LayoutParams.MATCH_PARENT, 0.01f)); indicatorView.setLayoutParams(new TableRow.LayoutParams(0, LayoutParams.MATCH_PARENT, 0.01f));
indicatorView.setBackgroundColor(Color.GRAY); indicatorView.setBackgroundColor(Color.GRAY);
@@ -100,14 +105,44 @@ abstract class MeasurementView extends TableLayout {
abstract void updateValue(ScaleData updateData); abstract void updateValue(ScaleData updateData);
abstract void updateDiff(ScaleData updateData, ScaleData lastData); abstract void updateDiff(ScaleData updateData, ScaleData lastData);
abstract void updatePreferences(SharedPreferences preferences); abstract void updatePreferences(SharedPreferences preferences);
abstract String getFormat(); abstract String getUnit();
abstract EvaluationResult evaluateSheet(EvaluationSheet evalSheet, float value); abstract EvaluationResult evaluateSheet(EvaluationSheet evalSheet, float value);
abstract float getMinValue(); abstract float getMinValue();
abstract float getMaxValue(); abstract float getMaxValue();
abstract int getInputType();
public float getValue() {
if (valueView.getText().length() == 0) {
return -1;
}
return Float.valueOf(valueView.getText().toString());
}
public void setEditMode(boolean mode) {
editMode = mode;
if (editMode) {
valueView = new EditText(getContext());
valueView.setInputType(getInputType());
valueView.setHint(getContext().getResources().getString(R.string.info_enter_value_unit) + " " + getUnit());
measurementRow.addView(valueView);
indicatorView.setVisibility(View.GONE);
}
}
protected boolean isEditModeOn() {
return editMode;
}
protected void setValueOnView(float value) { protected void setValueOnView(float value) {
valueView.setText(String.format(getFormat(), value)); if (isEditModeOn()) {
evaluate(value); valueView.setText(String.valueOf(value));
} else {
valueView.setText(String.format("%.2f ", value) + getUnit());
evaluate(value);
}
} }
protected void setDiffOnView(float value, float lastValue) { protected void setDiffOnView(float value, float lastValue) {
@@ -127,7 +162,7 @@ abstract class MeasurementView extends TableLayout {
" <br> <font color='grey'>" + " <br> <font color='grey'>" +
symbol + symbol +
"<small> " + "<small> " +
String.format(getFormat(), diffValue) + String.format("%.2f ", diffValue) + getUnit() +
"</small></font>" "</small></font>"
) )
); );
@@ -141,8 +176,30 @@ abstract class MeasurementView extends TableLayout {
} }
} }
private int pxImageDp(float dp) {
return (int)(dp * getResources().getDisplayMetrics().density + 0.5f);
}
public boolean validateInput() {
if (measurementRow.getVisibility() == View.VISIBLE) {
if (valueView.getText().toString().length() == 0) {
valueView.setError(getResources().getString(R.string.error_value_required));
return false;
}
float value = Float.valueOf(valueView.getText().toString());
if (!(value >= 0 && value <= getMaxValue())) {
valueView.setError(getResources().getString(R.string.error_value_range));
return false;
}
}
return true;
}
private void evaluate(float value) { private void evaluate(float value) {
EvaluationSheet evalSheet = new EvaluationSheet(scaleUser); EvaluationSheet evalSheet = new EvaluationSheet(getScaleUser());
EvaluationResult evalResult = evaluateSheet(evalSheet, value); EvaluationResult evalResult = evaluateSheet(evalSheet, value);
evaluatorView.setMinMaxValue(getMinValue(), getMaxValue()); evaluatorView.setMinMaxValue(getMinValue(), getMaxValue());
@@ -166,13 +223,19 @@ abstract class MeasurementView extends TableLayout {
} }
} }
public void updateScaleUser(ScaleUser user) { protected ScaleUser getScaleUser() {
scaleUser = user; OpenScale openScale = OpenScale.getInstance(getContext());
return openScale.getSelectedScaleUser();
} }
private class onClickListenerEvaluation implements View.OnClickListener { private class onClickListenerEvaluation implements View.OnClickListener {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (isEditModeOn()) {
return;
}
if (evaluatorRow.getVisibility() == View.VISIBLE) { if (evaluatorRow.getVisibility() == View.VISIBLE) {
evaluatorRow.setVisibility(View.GONE); evaluatorRow.setVisibility(View.GONE);
} else { } else {
@@ -199,8 +262,8 @@ class WeightMeasurementView extends MeasurementView {
} }
@Override @Override
String getFormat() { String getUnit() {
return "%.1f " + ScaleUser.UNIT_STRING[scaleUser.scale_unit]; return ScaleUser.UNIT_STRING[getScaleUser().scale_unit];
} }
@Override @Override
@@ -222,6 +285,11 @@ class WeightMeasurementView extends MeasurementView {
float getMaxValue() { float getMaxValue() {
return 300; return 300;
} }
@Override
int getInputType() {
return InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED;
}
} }
class BMIMeasurementView extends MeasurementView { class BMIMeasurementView extends MeasurementView {
@@ -233,19 +301,19 @@ class BMIMeasurementView extends MeasurementView {
@Override @Override
void updateValue(ScaleData updateData) { void updateValue(ScaleData updateData) {
ScaleCalculator updateCalculator = new ScaleCalculator(updateData); ScaleCalculator updateCalculator = new ScaleCalculator(updateData);
setValueOnView(updateCalculator.getBMI(scaleUser.body_height)); setValueOnView(updateCalculator.getBMI(getScaleUser().body_height));
} }
@Override @Override
void updateDiff(ScaleData updateData, ScaleData lastData) { void updateDiff(ScaleData updateData, ScaleData lastData) {
ScaleCalculator updateCalculator = new ScaleCalculator(updateData); ScaleCalculator updateCalculator = new ScaleCalculator(updateData);
ScaleCalculator lastCalculator = new ScaleCalculator(lastData); ScaleCalculator lastCalculator = new ScaleCalculator(lastData);
setDiffOnView(updateCalculator.getBMI(scaleUser.body_height), lastCalculator.getBMI(scaleUser.body_height)); setDiffOnView(updateCalculator.getBMI(getScaleUser().body_height), lastCalculator.getBMI(getScaleUser().body_height));
} }
@Override @Override
String getFormat() { String getUnit() {
return "%.1f"; return "";
} }
@Override @Override
@@ -263,6 +331,11 @@ class BMIMeasurementView extends MeasurementView {
return 50; return 50;
} }
@Override
int getInputType() {
return 0;
}
@Override @Override
void updatePreferences(SharedPreferences preferences) { void updatePreferences(SharedPreferences preferences) {
setVisible(preferences.getBoolean("weightEnable", true)); setVisible(preferences.getBoolean("weightEnable", true));
@@ -286,8 +359,8 @@ class WaterMeasurementView extends MeasurementView {
} }
@Override @Override
String getFormat() { String getUnit() {
return "%.1f %%"; return "%";
} }
@Override @Override
@@ -309,6 +382,11 @@ class WaterMeasurementView extends MeasurementView {
float getMaxValue() { float getMaxValue() {
return 80; return 80;
} }
@Override
int getInputType() {
return InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED;
}
} }
class MuscleMeasurementView extends MeasurementView { class MuscleMeasurementView extends MeasurementView {
@@ -328,8 +406,8 @@ class MuscleMeasurementView extends MeasurementView {
} }
@Override @Override
String getFormat() { String getUnit() {
return "%.1f %%"; return "%";
} }
@Override @Override
@@ -351,6 +429,11 @@ class MuscleMeasurementView extends MeasurementView {
float getMaxValue() { float getMaxValue() {
return 80; return 80;
} }
@Override
int getInputType() {
return InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED;
}
} }
class FatMeasurementView extends MeasurementView { class FatMeasurementView extends MeasurementView {
@@ -370,8 +453,8 @@ class FatMeasurementView extends MeasurementView {
} }
@Override @Override
String getFormat() { String getUnit() {
return "%.1f %%"; return "%";
} }
@Override @Override
@@ -393,6 +476,11 @@ class FatMeasurementView extends MeasurementView {
float getMaxValue() { float getMaxValue() {
return 40; return 40;
} }
@Override
int getInputType() {
return InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED;
}
} }
class WaistMeasurementView extends MeasurementView { class WaistMeasurementView extends MeasurementView {
@@ -412,8 +500,8 @@ class WaistMeasurementView extends MeasurementView {
} }
@Override @Override
String getFormat() { String getUnit() {
return "%.1f cm"; return "cm";
} }
@Override @Override
@@ -435,6 +523,11 @@ class WaistMeasurementView extends MeasurementView {
float getMaxValue() { float getMaxValue() {
return 200; return 200;
} }
@Override
int getInputType() {
return InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED;
}
} }
class WHtRMeasurementView extends MeasurementView { class WHtRMeasurementView extends MeasurementView {
@@ -446,19 +539,19 @@ class WHtRMeasurementView extends MeasurementView {
@Override @Override
void updateValue(ScaleData updateData) { void updateValue(ScaleData updateData) {
ScaleCalculator updateCalculator = new ScaleCalculator(updateData); ScaleCalculator updateCalculator = new ScaleCalculator(updateData);
setValueOnView(updateCalculator.getWHtR(scaleUser.body_height)); setValueOnView(updateCalculator.getWHtR(getScaleUser().body_height));
} }
@Override @Override
void updateDiff(ScaleData updateData, ScaleData lastData) { void updateDiff(ScaleData updateData, ScaleData lastData) {
ScaleCalculator updateCalculator = new ScaleCalculator(updateData); ScaleCalculator updateCalculator = new ScaleCalculator(updateData);
ScaleCalculator lastCalculator = new ScaleCalculator(lastData); ScaleCalculator lastCalculator = new ScaleCalculator(lastData);
setDiffOnView(updateCalculator.getWHtR(scaleUser.body_height), lastCalculator.getWHtR(scaleUser.body_height)); setDiffOnView(updateCalculator.getWHtR(getScaleUser().body_height), lastCalculator.getWHtR(getScaleUser().body_height));
} }
@Override @Override
String getFormat() { String getUnit() {
return "%.2f"; return "";
} }
@Override @Override
@@ -480,6 +573,11 @@ class WHtRMeasurementView extends MeasurementView {
float getMaxValue() { float getMaxValue() {
return 1; return 1;
} }
@Override
int getInputType() {
return 0;
}
} }
class HipMeasurementView extends MeasurementView { class HipMeasurementView extends MeasurementView {
@@ -499,8 +597,8 @@ class HipMeasurementView extends MeasurementView {
} }
@Override @Override
String getFormat() { String getUnit() {
return "%.1f cm"; return "cm";
} }
@Override @Override
@@ -522,6 +620,11 @@ class HipMeasurementView extends MeasurementView {
float getMaxValue() { float getMaxValue() {
return 200; return 200;
} }
@Override
int getInputType() {
return InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED;
}
} }
class WHRMeasurementView extends MeasurementView { class WHRMeasurementView extends MeasurementView {
@@ -544,8 +647,8 @@ class WHRMeasurementView extends MeasurementView {
} }
@Override @Override
String getFormat() { String getUnit() {
return "%.2f"; return "";
} }
@Override @Override
@@ -568,4 +671,9 @@ class WHRMeasurementView extends MeasurementView {
return 1.5f; return 1.5f;
} }
@Override
int getInputType() {
return 0;
}
} }

View File

@@ -226,10 +226,6 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
userSelectedData = null; userSelectedData = null;
for (MeasurementView measuremt : overviewMeasurements) {
measuremt.updateScaleUser(currentScaleUser);
}
spinUserAdapter.clear(); spinUserAdapter.clear();
ArrayList<ScaleUser> scaleUserList = OpenScale.getInstance(overviewView.getContext()).getScaleUserList(); ArrayList<ScaleUser> scaleUserList = OpenScale.getInstance(overviewView.getContext()).getScaleUserList();

View File

@@ -87,8 +87,6 @@
<TableLayout <TableLayout
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:layout_weight="90"
android:stretchColumns="1"
android:id="@+id/tableLayoutMeasurements"> android:id="@+id/tableLayoutMeasurements">
</TableLayout> </TableLayout>

View File

@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="fill_parent"
android:layout_height="match_parent" android:layout_height="fill_parent"
android:orientation="vertical" android:orientation="vertical"
android:padding="5dp" > android:padding="5dp" >
<LinearLayout <LinearLayout
android:orientation="horizontal" android:orientation="horizontal"
android:layout_width="fill_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="5dp" android:layout_marginBottom="5dp"
android:gravity="center"> android:gravity="center">
@@ -46,13 +46,12 @@
</LinearLayout> </LinearLayout>
<ScrollView <ScrollView
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content" >
android:id="@+id/scrollView3" >
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:padding="5dp" > android:padding="5dp" >
@@ -60,301 +59,99 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="5dp" android:padding="5dp"
android:stretchColumns="2" > android:id="@+id/tableLayoutDataEntry">
<TableRow
android:id="@+id/tableRowWeight"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:id="@+id/imageView16"
android:layout_column="0"
android:src="@drawable/weight"
android:layout_gravity="center"
android:layout_marginRight="2dp" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_weight"
android:layout_column="1" />
<EditText
android:id="@+id/txtWeight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/info_enter_value_unit"
android:inputType="numberDecimal|numberSigned"
android:layout_column="2">
<requestFocus />
</EditText>
</TableRow>
<TableRow
android:id="@+id/tableRowFat"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:id="@+id/imageView17"
android:layout_column="0"
android:src="@drawable/fat"
android:layout_gravity="center"
android:layout_marginRight="2dp" />
<TextView
android:id="@+id/txtAvgWeight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_fat"
android:layout_column="1" />
<EditText
android:id="@+id/txtFat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/info_enter_value_percent"
android:inputType="numberDecimal|numberSigned"
android:layout_column="2" />
</TableRow>
<TableRow
android:id="@+id/tableRowWater"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:id="@+id/imageView18"
android:layout_column="0"
android:src="@drawable/water"
android:layout_gravity="center"
android:layout_marginRight="2dp" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_water"
android:layout_column="1" />
<EditText
android:id="@+id/txtWater"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/info_enter_value_percent"
android:inputType="numberDecimal|numberSigned"
android:layout_column="2" />
</TableRow>
<TableRow
android:id="@+id/tableRowMuscle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:id="@+id/imageView21"
android:layout_column="0"
android:src="@drawable/muscle"
android:layout_gravity="center"
android:layout_marginRight="2dp" />
<TextView
android:id="@+id/txtAvgFat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_muscle"
android:layout_column="1" />
<EditText
android:id="@+id/txtMuscle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/info_enter_value_percent"
android:inputType="numberDecimal|numberSigned"
android:layout_column="2" />
</TableRow>
<TableRow <TableRow
android:id="@+id/tableRowWaist" android:id="@+id/tableRowComment"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" > android:layout_height="wrap_content"
android:weightSum="1.0">
<ImageView <ImageView
android:layout_width="30dp"
android:layout_height="30dp" android:layout_height="30dp"
android:id="@+id/imageView10" android:src="@drawable/comment"
android:layout_column="0" android:layout_gravity="center" />
android:src="@drawable/waist"
android:layout_gravity="center"
android:layout_marginRight="2dp" />
<TextView <TextView
android:id="@+id/textView"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/label_waist" android:text="@string/label_comment"
android:layout_column="1" /> android:textSize="15sp"
android:layout_weight="0.9"/>
<EditText <EditText
android:id="@+id/txtWaist" android:id="@+id/txtComment"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ems="10" android:textSize="15sp"
android:hint="@string/info_enter_value_cm" android:layout_weight="0.01"
android:inputType="numberDecimal|numberSigned" android:inputType="text|textImeMultiLine|textMultiLine|textAutoComplete|textAutoCorrect"
android:layout_column="2" /> android:hint="@string/info_enter_comment" />
</TableRow> </TableRow>
<TableRow <TableRow
android:id="@+id/tableRowHip" android:id="@+id/tableRowDate"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" > android:layout_height="wrap_content"
android:weightSum="1.0">
<ImageView <ImageView
android:layout_width="30dp"
android:layout_height="30dp" android:layout_height="30dp"
android:id="@+id/imageView12" android:src="@drawable/lastmonth"
android:layout_column="0" android:layout_gravity="center" />
android:src="@drawable/hip"
android:layout_gravity="center"
android:layout_marginRight="2dp" />
<TextView <TextView
android:id="@+id/textView2"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/label_hip" android:text="@string/label_date"
android:layout_column="1" /> android:textSize="15sp"
android:layout_weight="0.9"/>
<EditText <EditText
android:id="@+id/txtHip" android:id="@+id/txtDate"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ems="10" android:layout_weight="0.01"
android:hint="@string/info_enter_value_cm" android:textSize="15sp"
android:inputType="numberDecimal|numberSigned" android:inputType="none"/>
android:layout_column="2" />
</TableRow> </TableRow>
<TableRow <TableRow
android:id="@+id/tableRowComment" android:id="@+id/tableRowTime"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<ImageView
android:layout_height="30dp"
android:src="@drawable/daysleft"
android:layout_gravity="center" />
<TextView
android:id="@+id/txtAvgWater"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" > android:layout_height="wrap_content"
android:textSize="15sp"
android:layout_weight="0.9"
android:text="@string/label_time" />
<ImageView <EditText
android:layout_width="30dp" android:id="@+id/txtTime"
android:layout_height="30dp"
android:id="@+id/imageView22"
android:layout_column="0"
android:src="@drawable/comment"
android:layout_gravity="center"
android:layout_marginRight="2dp" />
<TextView
android:id="@+id/txtView22"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_comment"
android:layout_column="1" />
<EditText
android:id="@+id/txtComment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:layout_column="2"
android:inputType="text|textImeMultiLine|textMultiLine|textAutoComplete|textAutoCorrect"
android:hint="@string/info_enter_comment" />
</TableRow>
<TableRow
android:id="@+id/tableRowDate"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" > android:layout_height="wrap_content"
android:layout_weight="0.01"
android:textSize="15sp"
android:inputType="none" />
<ImageView </TableRow>
android:layout_width="30dp"
android:layout_height="30dp"
android:id="@+id/imageView19"
android:layout_column="0"
android:src="@drawable/lastmonth"
android:layout_gravity="center"
android:layout_marginRight="2dp" />
<TextView </TableLayout>
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_date"
android:layout_column="1" />
<EditText
android:id="@+id/txtDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="5"
android:ems="10"
android:inputType="none"
android:layout_column="2" />
</TableRow>
<TableRow
android:id="@+id/tableRowTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:id="@+id/imageView20"
android:layout_column="0"
android:src="@drawable/daysleft"
android:layout_gravity="center"
android:layout_marginRight="2dp" />
<TextView
android:id="@+id/txtAvgWater"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_time"
android:layout_column="1" />
<EditText
android:id="@+id/txtTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="5"
android:ems="10"
android:layout_column="2"
android:inputType="none" />
</TableRow>
</TableLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" > android:layout_height="wrap_content" >
<Button <Button
android:id="@+id/btnCancel" android:id="@+id/btnCancel"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@@ -397,7 +194,7 @@
android:background="@drawable/flat_selector" android:background="@drawable/flat_selector"
android:text="@string/label_ok" /> android:text="@string/label_ok" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
</ScrollView> </ScrollView>
</LinearLayout> </LinearLayout>

View File

@@ -79,7 +79,6 @@
<TableLayout <TableLayout
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:stretchColumns="1"
android:id="@+id/tableLayoutMeasurements"> android:id="@+id/tableLayoutMeasurements">
</TableLayout> </TableLayout>

View File

@@ -4,15 +4,8 @@
<string name="action_settings">Einstellungen</string> <string name="action_settings">Einstellungen</string>
<string name="error_body_height_required">Fehler Körpergröße ist erforderlich</string> <string name="error_body_height_required">Fehler Körpergröße ist erforderlich</string>
<string name="error_exporting">Fehler beim Exportieren</string> <string name="error_exporting">Fehler beim Exportieren</string>
<string name="error_fat_value_required">Fettanteil ist erforderlich</string>
<string name="error_importing">Fehler beim Importieren</string> <string name="error_importing">Fehler beim Importieren</string>
<string name="error_muscle_value_required">Muskelanteil ist erforderlich</string>
<string name="error_user_name_required">Fehler Benutzername ist erfoderlich</string> <string name="error_user_name_required">Fehler Benutzername ist erfoderlich</string>
<string name="error_value_range_0_100">Der Wert muss zwischen 0 und 100 liegen</string>
<string name="error_value_range_0_300">Der Wert muss zwischen 0 und 300 liegen</string>
<string name="error_water_value_required">Wassergehalt ist erforderlich</string>
<string name="error_weight_value_required">Gewicht ist erforderlich</string>
<string name="error_waist_value_required">Bauchumfang ist erforderlich</string>
<string name="error_hip_value_required">Hüftumfang ist erforderlich</string> <string name="error_hip_value_required">Hüftumfang ist erforderlich</string>
<string name="info_data_all_deleted">Alle Datenbank Einträge wurden gelöscht</string> <string name="info_data_all_deleted">Alle Datenbank Einträge wurden gelöscht</string>
<string name="info_data_deleted">Datenbank Eintrag wurde gelöscht</string> <string name="info_data_deleted">Datenbank Eintrag wurde gelöscht</string>
@@ -121,4 +114,6 @@
<string name="Friday">Freitag</string> <string name="Friday">Freitag</string>
<string name="Saturday">Samstag</string> <string name="Saturday">Samstag</string>
<string name="Sunday">Sonntag</string> <string name="Sunday">Sonntag</string>
<string name="error_value_range">Fehler beim Wertebereich</string>
<string name="error_value_required">Wert ist erforderlich</string>
</resources> </resources>

View File

@@ -49,13 +49,7 @@
<string name="error_exporting">エクスポートに失敗しました</string> <string name="error_exporting">エクスポートに失敗しました</string>
<string name="error_importing">インポートに失敗しました</string> <string name="error_importing">インポートに失敗しました</string>
<string name="error_body_height_required">身長が必要です</string> <string name="error_body_height_required">身長が必要です</string>
<string name="error_fat_value_required">体脂肪率が必要です</string>
<string name="error_muscle_value_required">筋肉率が必要です</string>
<string name="error_user_name_required">ユーザー名が必要です</string> <string name="error_user_name_required">ユーザー名が必要です</string>
<string name="error_value_range_0_100">値は0から100の間でなければなりません</string>
<string name="error_value_range_0_300">値は0から300の間でなければなりません</string>
<string name="error_water_value_required">体内の水分が必要です</string>
<string name="error_weight_value_required">体重が必要です</string>
<string name="info_data_all_deleted">すべてのレコードが削除されます</string> <string name="info_data_all_deleted">すべてのレコードが削除されます</string>
<string name="info_data_deleted">レコードが削除されます</string> <string name="info_data_deleted">レコードが削除されます</string>
<string name="info_data_exported">レコードのエクスポート</string> <string name="info_data_exported">レコードのエクスポート</string>
@@ -88,7 +82,6 @@
<string name="info_is_not_enable">無効にします</string> <string name="info_is_not_enable">無効にします</string>
<string name="info_is_enable">有効にします</string> <string name="info_is_enable">有効にします</string>
<string name="error_hip_value_required">腰囲が必要です</string> <string name="error_hip_value_required">腰囲が必要です</string>
<string name="error_waist_value_required">胴囲が必要です</string>
<string name="label_waist">胴囲</string> <string name="label_waist">胴囲</string>
<string name="label_hip">腰囲</string> <string name="label_hip">腰囲</string>
<string name="info_your_waist">あなたは胴囲が</string> <string name="info_your_waist">あなたは胴囲が</string>
@@ -121,4 +114,6 @@
<string name="Tuesday">火曜日</string> <string name="Tuesday">火曜日</string>
<string name="Monday">月曜日</string> <string name="Monday">月曜日</string>
<string name="Sunday">日曜日</string> <string name="Sunday">日曜日</string>
<string name="error_value_required">値が必要です</string>
<string name="error_value_range">エラー値の範囲</string>
</resources> </resources>

View File

@@ -63,18 +63,13 @@
<string name="label_export">Export</string> <string name="label_export">Export</string>
<string name="label_delete_all">Delete all</string> <string name="label_delete_all">Delete all</string>
<string name="error_weight_value_required">Weight is required</string> <string name="error_value_required">Value is required</string>
<string name="error_fat_value_required">Body fat percentage is required</string> <string name="error_value_range">The value is not in range</string>
<string name="error_water_value_required">Water percentage is required</string>
<string name="error_muscle_value_required">Muscle percentage is required</string>
<string name="error_value_range_0_300">The value must be in range from 0 to 300</string>
<string name="error_value_range_0_100">The value must be in range from 0 to 100</string>
<string name="error_exporting">Error exporting</string> <string name="error_exporting">Error exporting</string>
<string name="error_importing">Error importing</string> <string name="error_importing">Error importing</string>
<string name="error_user_name_required">Error user name is required</string> <string name="error_user_name_required">Error user name is required</string>
<string name="error_body_height_required">Error body height is required</string> <string name="error_body_height_required">Error body height is required</string>
<string name="error_goal_weight_required">Error goal weight is required</string> <string name="error_goal_weight_required">Error goal weight is required</string>
<string name="error_waist_value_required">waist circumference is required</string>
<string name="error_hip_value_required">hip circumference is required</string> <string name="error_hip_value_required">hip circumference is required</string>
<string name="info_data_deleted">Database entry deleted</string> <string name="info_data_deleted">Database entry deleted</string>