1
0
mirror of https://github.com/oliexdev/openScale.git synced 2025-08-07 01:06:57 +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.DatePicker;
import android.widget.EditText;
import android.widget.TableRow;
import android.widget.TableLayout;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;
@@ -37,12 +37,12 @@ import android.widget.Toast;
import com.health.openscale.R;
import com.health.openscale.core.OpenScale;
import com.health.openscale.core.ScaleData;
import com.health.openscale.core.ScaleUser;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
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 EDIT_DATA_REQUEST = 1;
private TextView txtDataNr;
private EditText txtWeight;
private EditText txtFat;
private EditText txtWater;
private EditText txtMuscle;
private EditText txtWaist;
private EditText txtHip;
private EditText txtDate;
private EditText txtTime;
private ArrayList<MeasurementView> dataEntryMeasurements;
private TableLayout tableLayoutDataEntry;
private WeightMeasurementView weightMeasurement;
private WaterMeasurementView waterMeasurement;
private MuscleMeasurementView muscleMeasurement;
private FatMeasurementView fatMeasurement;
private WaistMeasurementView waistMeasurement;
private HipMeasurementView hipMeasurement;
private EditText txtDate;
private EditText txtTime;
private EditText txtComment;
private TextView txtDataNr;
private Button btnAdd;
private Button btnOk;
private Button btnCancel;
@@ -85,18 +89,35 @@ public class DataEntryActivity extends Activity {
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);
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);
txtTime = (EditText) findViewById(R.id.txtTime);
txtTime = (EditText) findViewById(R.id.txtTime);
txtComment = (EditText) findViewById(R.id.txtComment);
btnAdd = (Button) findViewById(R.id.btnAdd);
btnOk = (Button) findViewById(R.id.btnOk);
btnCancel = (Button) findViewById(R.id.btnCancel);
@@ -117,33 +138,13 @@ public class DataEntryActivity extends Activity {
updateOnView();
}
private void updateOnView()
{
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
if(!prefs.getBoolean("fatEnable", true)) {
TableRow row = (TableRow)findViewById(R.id.tableRowFat);
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);
for (MeasurementView measuremt : dataEntryMeasurements) {
measuremt.updatePreferences(prefs);
}
if (getIntent().getExtras().getInt("mode") == EDIT_DATA_REQUEST) {
@@ -171,13 +172,10 @@ public class DataEntryActivity extends Activity {
ScaleData editScaleData = openScale.getScaleData(id);
txtDataNr.setText(DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT).format(editScaleData.date_time));
txtWeight.setText(editScaleData.weight+"");
txtFat.setText(editScaleData.fat+"");
txtWater.setText(editScaleData.water+"");
txtMuscle.setText(editScaleData.muscle+"");
txtWaist.setText(editScaleData.waist+"");
txtHip.setText(editScaleData.hip+"");
txtComment.setText(editScaleData.comment);
for (MeasurementView measuremt : dataEntryMeasurements) {
measuremt.updateValue(editScaleData);
}
txtDate.setText(dateFormat.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);
txtFat.setText(Float.toString(lastScaleData.fat));
txtWater.setText(Float.toString(lastScaleData.water));
txtMuscle.setText(Float.toString(lastScaleData.muscle));
txtWaist.setText(Float.toString(lastScaleData.waist));
txtHip.setText(Float.toString(lastScaleData.hip));
// show as default last scale data
for (MeasurementView measuremt : dataEntryMeasurements) {
measuremt.updateValue(lastScaleData);
}
} else {
txtFat.setText(Float.toString(0.0f));
txtWater.setText(Float.toString(0.0f));
txtMuscle.setText(Float.toString(0.0f));
txtWaist.setText(Float.toString(0.0f));
txtHip.setText(Float.toString(0.0f));
// show default values
for (MeasurementView measuremt : dataEntryMeasurements) {
measuremt.updateValue(new ScaleData());
}
}
txtDate.setText(dateFormat.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);
if (prefs.getBoolean("weightEnable", true)) {
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;
for (MeasurementView measuremt : dataEntryMeasurements) {
if (!measuremt.validateInput()) {
isValidate = false;
}
}
if (prefs.getBoolean("fatEnable", true)) {
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;
return isValidate;
}
private void saveScaleData() {
if (validateInput()) {
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());
if (validateAllInput()) {
String comment = txtComment.getText().toString();
String date = txtDate.getText().toString();
@@ -311,7 +231,15 @@ public class DataEntryActivity extends Activity {
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() {
@Override
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() {
@Override
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 {
@Override
public void onClick(View v) {
if (validateInput())
if (validateAllInput())
{
OpenScale openScale = OpenScale.getInstance(context);
@@ -401,18 +329,20 @@ public class DataEntryActivity extends Activity {
infoDialog.show();
} 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 date = txtDate.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();
}
@@ -423,7 +353,7 @@ public class DataEntryActivity extends Activity {
private class onClickListenerOk implements View.OnClickListener {
@Override
public void onClick(View v) {
if (validateInput()) {
if (validateAllInput()) {
saveScaleData();
finish();
}

View File

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

View File

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

View File

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

View File

@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="5dp" >
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:gravity="center">
@@ -46,13 +46,12 @@
</LinearLayout>
<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/scrollView3" >
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="5dp" >
@@ -60,301 +59,99 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
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
android:id="@+id/tableRowWaist"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
android:id="@+id/tableRowComment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="1.0">
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:id="@+id/imageView10"
android:layout_column="0"
android:src="@drawable/waist"
android:layout_gravity="center"
android:layout_marginRight="2dp" />
android:src="@drawable/comment"
android:layout_gravity="center" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_waist"
android:layout_column="1" />
android:text="@string/label_comment"
android:textSize="15sp"
android:layout_weight="0.9"/>
<EditText
android:id="@+id/txtWaist"
android:id="@+id/txtComment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/info_enter_value_cm"
android:inputType="numberDecimal|numberSigned"
android:layout_column="2" />
android:textSize="15sp"
android:layout_weight="0.01"
android:inputType="text|textImeMultiLine|textMultiLine|textAutoComplete|textAutoCorrect"
android:hint="@string/info_enter_comment" />
</TableRow>
<TableRow
android:id="@+id/tableRowHip"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
android:id="@+id/tableRowDate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="1.0">
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:id="@+id/imageView12"
android:layout_column="0"
android:src="@drawable/hip"
android:layout_gravity="center"
android:layout_marginRight="2dp" />
android:src="@drawable/lastmonth"
android:layout_gravity="center" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_hip"
android:layout_column="1" />
android:text="@string/label_date"
android:textSize="15sp"
android:layout_weight="0.9"/>
<EditText
android:id="@+id/txtHip"
android:id="@+id/txtDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/info_enter_value_cm"
android:inputType="numberDecimal|numberSigned"
android:layout_column="2" />
android:layout_weight="0.01"
android:textSize="15sp"
android:inputType="none"/>
</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_height="wrap_content" >
android:layout_height="wrap_content"
android:textSize="15sp"
android:layout_weight="0.9"
android:text="@string/label_time" />
<ImageView
android:layout_width="30dp"
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"
<EditText
android:id="@+id/txtTime"
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
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" />
</TableRow>
<TextView
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>
</TableLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<Button
android:id="@+id/btnCancel"
android:layout_width="wrap_content"
@@ -397,7 +194,7 @@
android:background="@drawable/flat_selector"
android:text="@string/label_ok" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
</LinearLayout>

View File

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

View File

@@ -4,15 +4,8 @@
<string name="action_settings">Einstellungen</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_fat_value_required">Fettanteil ist erforderlich</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_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="info_data_all_deleted">Alle Datenbank Einträge wurden 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="Saturday">Samstag</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>

View File

@@ -49,13 +49,7 @@
<string name="error_exporting">エクスポートに失敗しました</string>
<string name="error_importing">インポートに失敗しました</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_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_deleted">レコードが削除されます</string>
<string name="info_data_exported">レコードのエクスポート</string>
@@ -88,7 +82,6 @@
<string name="info_is_not_enable">無効にします</string>
<string name="info_is_enable">有効にします</string>
<string name="error_hip_value_required">腰囲が必要です</string>
<string name="error_waist_value_required">胴囲が必要です</string>
<string name="label_waist">胴囲</string>
<string name="label_hip">腰囲</string>
<string name="info_your_waist">あなたは胴囲が</string>
@@ -121,4 +114,6 @@
<string name="Tuesday">火曜日</string>
<string name="Monday">月曜日</string>
<string name="Sunday">日曜日</string>
<string name="error_value_required">値が必要です</string>
<string name="error_value_range">エラー値の範囲</string>
</resources>

View File

@@ -63,18 +63,13 @@
<string name="label_export">Export</string>
<string name="label_delete_all">Delete all</string>
<string name="error_weight_value_required">Weight is required</string>
<string name="error_fat_value_required">Body fat percentage is required</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_value_required">Value is required</string>
<string name="error_value_range">The value is not in range</string>
<string name="error_exporting">Error exporting</string>
<string name="error_importing">Error importing</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_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="info_data_deleted">Database entry deleted</string>