From cba60f9eaa1e614b3d4ee0960bf42abd6f00d23b Mon Sep 17 00:00:00 2001 From: OliE Date: Sun, 9 Aug 2015 10:59:25 +0200 Subject: [PATCH] add hip circumference and waist circumference --- .../com/health/openscale/core/OpenScale.java | 14 ++- .../com/health/openscale/core/ScaleData.java | 8 +- .../health/openscale/core/ScaleDatabase.java | 19 ++- .../openscale/gui/DataEntryActivity.java | 71 +++++++++-- .../health/openscale/gui/GraphFragment.java | 21 ++++ .../openscale/gui/OverviewFragment.java | 119 +++++++++++++++++- .../health/openscale/gui/TableFragment.java | 39 +++++- android_app/app/src/main/res/drawable/bmi.png | Bin 1633 -> 1345 bytes android_app/app/src/main/res/drawable/hip.png | Bin 0 -> 1840 bytes .../app/src/main/res/drawable/waist.png | Bin 0 -> 1803 bytes .../main/res/layout/activity_dataentry.xml | 64 +++++++++- .../src/main/res/layout/fragment_overview.xml | 80 ++++++++++++ .../src/main/res/layout/fragment_table.xml | 14 +++ .../app/src/main/res/values-de/strings.xml | 10 +- .../app/src/main/res/values-ja/strings.xml | 10 +- .../app/src/main/res/values/strings.xml | 10 +- .../app/src/main/res/xml/preferences.xml | 10 +- 17 files changed, 446 insertions(+), 43 deletions(-) create mode 100644 android_app/app/src/main/res/drawable/hip.png create mode 100644 android_app/app/src/main/res/drawable/waist.png diff --git a/android_app/app/src/main/java/com/health/openscale/core/OpenScale.java b/android_app/app/src/main/java/com/health/openscale/core/OpenScale.java index aaa6dc88..b1311652 100644 --- a/android_app/app/src/main/java/com/health/openscale/core/OpenScale.java +++ b/android_app/app/src/main/java/com/health/openscale/core/OpenScale.java @@ -149,7 +149,7 @@ public class OpenScale { } public void addScaleData(int user_id, String date_time, float weight, float fat, - float water, float muscle, String comment) { + float water, float muscle, float waist, float hip, String comment) { ScaleData scaleData = new ScaleData(); try { @@ -159,6 +159,8 @@ public class OpenScale { scaleData.fat = fat; scaleData.water = water; scaleData.muscle = muscle; + scaleData.waist = waist; + scaleData.hip = hip; scaleData.comment = comment; } catch (ParseException e) { Log.e("OpenScale", "Can't parse date time string while adding to the database"); @@ -169,7 +171,7 @@ public class OpenScale { updateScaleData(); } - public void updateScaleData(long id, String date_time, float weight, float fat, float water, float muscle, String comment) { + public void updateScaleData(long id, String date_time, float weight, float fat, float water, float muscle, float waist, float hip, String comment) { ScaleData scaleData = new ScaleData(); try { @@ -178,6 +180,8 @@ public class OpenScale { scaleData.fat = fat; scaleData.water = water; scaleData.muscle = muscle; + scaleData.waist = waist; + scaleData.hip = hip; scaleData.comment = comment; } catch (ParseException e) { Log.e("OpenScale", "Can't parse date time string while adding to the database"); @@ -216,7 +220,9 @@ public class OpenScale { newScaleData.fat = Float.parseFloat(csvField[2]); newScaleData.water = Float.parseFloat(csvField[3]); newScaleData.muscle = Float.parseFloat(csvField[4]); - newScaleData.comment = csvField[5]; + newScaleData.waist = Float.parseFloat(csvField[5]); + newScaleData.hip = Float.parseFloat(csvField[6]); + newScaleData.comment = csvField[7]; newScaleData.user_id = getSelectedScaleUser().id; @@ -249,6 +255,8 @@ public class OpenScale { csvWriter.append(Float.toString(scaleData.fat) + ","); csvWriter.append(Float.toString(scaleData.water) + ","); csvWriter.append(Float.toString(scaleData.muscle) + ","); + csvWriter.append(Float.toString(scaleData.waist) + ","); + csvWriter.append(Float.toString(scaleData.hip) + ","); if (!scaleData.comment.isEmpty()) { csvWriter.append(scaleData.comment); } diff --git a/android_app/app/src/main/java/com/health/openscale/core/ScaleData.java b/android_app/app/src/main/java/com/health/openscale/core/ScaleData.java index 3fe95da6..086f9e68 100644 --- a/android_app/app/src/main/java/com/health/openscale/core/ScaleData.java +++ b/android_app/app/src/main/java/com/health/openscale/core/ScaleData.java @@ -26,6 +26,8 @@ public class ScaleData { public float fat; public float water; public float muscle; + public float waist; + public float hip; public String comment; public ScaleData() @@ -36,13 +38,15 @@ public class ScaleData { weight = -1.0f; fat = -1.0f; water = -1.0f; - muscle = 1.0f; + muscle = -1.0f; + waist = -1.0f; + hip = -1.0f; comment = new String(); } @Override public String toString() { - return "ID : " + id + " USER_ID: " + user_id + " DATE_TIME: " + date_time.toString() + " WEIGHT: " + weight + " FAT: " + fat + " WATER: " + water + " MUSCLE: " + muscle + " COMMENT: " + comment; + return "ID : " + id + " USER_ID: " + user_id + " DATE_TIME: " + date_time.toString() + " WEIGHT: " + weight + " FAT: " + fat + " WATER: " + water + " MUSCLE: " + muscle + " WAIST: " + waist + " HIP: " + hip + " COMMENT: " + comment; } } diff --git a/android_app/app/src/main/java/com/health/openscale/core/ScaleDatabase.java b/android_app/app/src/main/java/com/health/openscale/core/ScaleDatabase.java index 1ce2e924..c02ba89e 100644 --- a/android_app/app/src/main/java/com/health/openscale/core/ScaleDatabase.java +++ b/android_app/app/src/main/java/com/health/openscale/core/ScaleDatabase.java @@ -31,7 +31,7 @@ import java.util.Calendar; import java.util.Locale; public class ScaleDatabase extends SQLiteOpenHelper { - private static final int DATABASE_VERSION = 2; + private static final int DATABASE_VERSION = 3; private static final String DATABASE_NAME = "openScaleDatabase.db"; private static final String TABLE_NAME = "scaledata"; @@ -42,6 +42,8 @@ public class ScaleDatabase extends SQLiteOpenHelper { private static final String COLUMN_NAME_FAT = "fat"; private static final String COLUMN_NAME_WATER = "water"; private static final String COLUMN_NAME_MUSCLE = "muscle"; + private static final String COLUMN_NAME_WAIST = "waist"; + private static final String COLUMN_NAME_HIP = "hip"; private static final String COLUMN_NAME_COMMENT = "comment"; private static final String SQL_CREATE_ENTRIES = @@ -53,6 +55,8 @@ public class ScaleDatabase extends SQLiteOpenHelper { COLUMN_NAME_FAT + " REAL," + COLUMN_NAME_WATER + " REAL," + COLUMN_NAME_MUSCLE + " REAL," + + COLUMN_NAME_WAIST + " REAL," + + COLUMN_NAME_HIP + " REAL," + COLUMN_NAME_COMMENT + " TEXT" + ")"; @@ -68,6 +72,8 @@ public class ScaleDatabase extends SQLiteOpenHelper { COLUMN_NAME_FAT, COLUMN_NAME_WATER, COLUMN_NAME_MUSCLE, + COLUMN_NAME_WAIST, + COLUMN_NAME_HIP, COLUMN_NAME_COMMENT }; @@ -87,6 +93,11 @@ public class ScaleDatabase extends SQLiteOpenHelper { if (oldVersion == 1 && newVersion == 2) { db.execSQL("ALTER TABLE " + TABLE_NAME + " ADD COLUMN " + COLUMN_NAME_COMMENT + " TEXT DEFAULT ''"); } + + if (oldVersion == 2 && newVersion == 3) { + db.execSQL("ALTER TABLE " + TABLE_NAME + " ADD COLUMN " + COLUMN_NAME_WAIST + " REAL DEFAULT 0"); + db.execSQL("ALTER TABLE " + TABLE_NAME + " ADD COLUMN " + COLUMN_NAME_HIP + " REAL DEFAULT 0"); + } } public void clearScaleData(int userId) { @@ -112,6 +123,8 @@ public class ScaleDatabase extends SQLiteOpenHelper { values.put(COLUMN_NAME_FAT, scaleData.fat); values.put(COLUMN_NAME_WATER, scaleData.water); values.put(COLUMN_NAME_MUSCLE, scaleData.muscle); + values.put(COLUMN_NAME_WAIST, scaleData.waist); + values.put(COLUMN_NAME_HIP, scaleData.hip); values.put(COLUMN_NAME_COMMENT, scaleData.comment); try @@ -137,6 +150,8 @@ public class ScaleDatabase extends SQLiteOpenHelper { values.put(COLUMN_NAME_FAT, scaleData.fat); values.put(COLUMN_NAME_WATER, scaleData.water); values.put(COLUMN_NAME_MUSCLE, scaleData.muscle); + values.put(COLUMN_NAME_WAIST, scaleData.waist); + values.put(COLUMN_NAME_HIP, scaleData.hip); values.put(COLUMN_NAME_COMMENT, scaleData.comment); db.update(TABLE_NAME, values, COLUMN_NAME_ID + "=" + id, null); @@ -271,6 +286,8 @@ public class ScaleDatabase extends SQLiteOpenHelper { scaleData.fat = cur.getFloat(cur.getColumnIndexOrThrow(COLUMN_NAME_FAT)); scaleData.water = cur.getFloat(cur.getColumnIndexOrThrow(COLUMN_NAME_WATER)); scaleData.muscle = cur.getFloat(cur.getColumnIndexOrThrow(COLUMN_NAME_MUSCLE)); + scaleData.waist = cur.getFloat(cur.getColumnIndexOrThrow(COLUMN_NAME_WAIST)); + scaleData.hip = cur.getFloat(cur.getColumnIndexOrThrow(COLUMN_NAME_HIP)); scaleData.comment = cur.getString(cur.getColumnIndexOrThrow(COLUMN_NAME_COMMENT)); scaleData.date_time = formatDateTime.parse(date_time); diff --git a/android_app/app/src/main/java/com/health/openscale/gui/DataEntryActivity.java b/android_app/app/src/main/java/com/health/openscale/gui/DataEntryActivity.java index b2581fb9..ba7683d1 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/DataEntryActivity.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/DataEntryActivity.java @@ -54,6 +54,8 @@ public class DataEntryActivity extends Activity { private EditText txtFat; private EditText txtWater; private EditText txtMuscle; + private EditText txtWaist; + private EditText txtHip; private EditText txtDate; private EditText txtTime; private EditText txtComment; @@ -88,7 +90,9 @@ public class DataEntryActivity extends Activity { txtFat = (EditText) findViewById(R.id.txtFat); txtWater = (EditText) findViewById(R.id.txtWater); txtMuscle = (EditText) findViewById(R.id.txtMuscle); - txtDate = (EditText) findViewById(R.id.txtDate); + txtWaist = (EditText) findViewById(R.id.txtWaist); + txtHip = (EditText) findViewById(R.id.txtHip); + txtDate = (EditText) findViewById(R.id.txtDate); txtTime = (EditText) findViewById(R.id.txtTime); txtComment = (EditText) findViewById(R.id.txtComment); @@ -131,6 +135,16 @@ public class DataEntryActivity extends Activity { row.setVisibility(View.GONE); } + if(!prefs.getBoolean("waistEnable", true)) { + TableRow row = (TableRow)findViewById(R.id.tableRowWaist); + row.setVisibility(View.GONE); + } + + if(!prefs.getBoolean("hipEnable", true)) { + TableRow row = (TableRow)findViewById(R.id.tableRowHip); + row.setVisibility(View.GONE); + } + if (getIntent().getExtras().getInt("mode") == EDIT_DATA_REQUEST) { editMode(); } @@ -160,6 +174,8 @@ public class DataEntryActivity extends Activity { txtFat.setText(editScaleData.fat+""); txtWater.setText(editScaleData.water+""); txtMuscle.setText(editScaleData.muscle+""); + txtWaist.setText(editScaleData.waist+""); + txtHip.setText(editScaleData.hip+""); txtComment.setText(editScaleData.comment); txtDate.setText(dateFormat.format(editScaleData.date_time)); @@ -182,10 +198,14 @@ public class DataEntryActivity extends Activity { 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)); } 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)); } txtDate.setText(dateFormat.format(new Date())); @@ -200,7 +220,7 @@ public class DataEntryActivity extends Activity { { txtWeight.setError(getResources().getString(R.string.error_weight_value_required)); validate = false; - } else if( !(Float.valueOf(txtWeight.getText().toString()) >= 0 && Float.valueOf(txtWeight.getText().toString()) <= 300) ) + } else if(!isInRange(txtWeight.getText().toString(), 300)) { txtWeight.setError(getResources().getString(R.string.error_value_range_0_300)); validate = false; @@ -210,7 +230,7 @@ public class DataEntryActivity extends Activity { { txtFat.setError(getResources().getString(R.string.error_fat_value_required)); validate = false; - } else if(!isInRange(txtFat.getText().toString())) + } else if(!isInRange(txtFat.getText().toString(), 100)) { txtFat.setError(getResources().getString(R.string.error_value_range_0_100)); validate = false; @@ -221,7 +241,7 @@ public class DataEntryActivity extends Activity { { txtWater.setError(getResources().getString(R.string.error_water_value_required)); validate = false; - } else if(!isInRange(txtWater.getText().toString())) + } else if(!isInRange(txtWater.getText().toString(), 100)) { txtWater.setError(getResources().getString(R.string.error_value_range_0_100)); validate = false; @@ -231,23 +251,43 @@ public class DataEntryActivity extends Activity { { txtMuscle.setError(getResources().getString(R.string.error_muscle_value_required)); validate = false; - } else if(!isInRange(txtMuscle.getText().toString())) + } else if(!isInRange(txtMuscle.getText().toString(), 100)) { txtMuscle.setError(getResources().getString(R.string.error_value_range_0_100)); validate = 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( 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) + private boolean isInRange(String value, int maxValue) { if (value.length() == 0) return false; float val = Float.valueOf(value); - if (val >= 0 && val <= 100) + if (val >= 0 && val <= maxValue) return true; return false; @@ -259,6 +299,9 @@ public class DataEntryActivity extends Activity { 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(); @@ -266,7 +309,7 @@ public class DataEntryActivity extends Activity { OpenScale openScale = OpenScale.getInstance(context); - openScale.updateScaleData(id, date + " " + time, weight, fat, water, muscle, comment); + openScale.updateScaleData(id, date + " " + time, weight, fat, water, muscle, waist, hip, comment); } } @@ -360,12 +403,14 @@ public class DataEntryActivity extends Activity { 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, comment); + openScale.addScaleData(selectedUserId, date + " " + time, weight, fat, water, muscle, waist, hip, comment); finish(); } @@ -376,8 +421,10 @@ public class DataEntryActivity extends Activity { private class onClickListenerOk implements View.OnClickListener { @Override public void onClick(View v) { - saveScaleData(); - finish(); + if (validateInput()) { + saveScaleData(); + finish(); + } } } diff --git a/android_app/app/src/main/java/com/health/openscale/gui/GraphFragment.java b/android_app/app/src/main/java/com/health/openscale/gui/GraphFragment.java index 6f75ab5c..b4fb94b8 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/GraphFragment.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/GraphFragment.java @@ -142,6 +142,8 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener { List valuesFat = new ArrayList(); List valuesWater = new ArrayList(); List valuesMuscle = new ArrayList(); + List valuesWaist = new ArrayList(); + List valuesHip = new ArrayList(); List lines = new ArrayList(); Calendar calDB = Calendar.getInstance(); @@ -154,6 +156,9 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener { valuesFat.add(new PointValue(calDB.get(Calendar.DAY_OF_MONTH)-1, scaleEntry.fat)); valuesWater.add(new PointValue(calDB.get(Calendar.DAY_OF_MONTH)-1, scaleEntry.water)); valuesMuscle.add(new PointValue(calDB.get(Calendar.DAY_OF_MONTH)-1, scaleEntry.muscle)); + valuesWaist.add(new PointValue(calDB.get(Calendar.DAY_OF_MONTH)-1, scaleEntry.waist)); + valuesHip.add(new PointValue(calDB.get(Calendar.DAY_OF_MONTH)-1, scaleEntry.hip)); + } @@ -173,6 +178,14 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener { setColor(ChartUtils.COLOR_GREEN). setHasLabels(prefs.getBoolean("labelsEnable", true)). setFormatter(new SimpleLineChartValueFormatter(1)); + Line lineWaist = new Line(valuesWaist). + setColor(Color.MAGENTA). + setHasLabels(prefs.getBoolean("labelsEnable", true)). + setFormatter(new SimpleLineChartValueFormatter(1)); + Line lineHip = new Line(valuesHip). + setColor(Color.YELLOW). + setHasLabels(prefs.getBoolean("labelsEnable", true)). + setFormatter(new SimpleLineChartValueFormatter(1)); if(prefs.getBoolean("weightEnable", true)) { @@ -191,6 +204,14 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener { lines.add(lineMuscle); } + if(prefs.getBoolean("waistEnable", true)) { + lines.add(lineWaist); + } + + if(prefs.getBoolean("hipEnable", true)) { + lines.add(lineHip); + } + LineChartData lineData = new LineChartData(lines); lineData.setAxisXBottom(new Axis(axisValues). setHasLines(true). diff --git a/android_app/app/src/main/java/com/health/openscale/gui/OverviewFragment.java b/android_app/app/src/main/java/com/health/openscale/gui/OverviewFragment.java index 0c6e3c08..272ddced 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/OverviewFragment.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/OverviewFragment.java @@ -74,6 +74,8 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener private TextView txtWaterLast; private TextView txtMuscleLast; private TextView txtFatLast; + private TextView txtWaistLast; + private TextView txtHipLast; private TextView txtGoalWeight; private TextView txtGoalDiff; @@ -87,6 +89,8 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener private TextView txtLabelFat; private TextView txtLabelMuscle; private TextView txtLabelWater; + private TextView txtLabelWaist; + private TextView txtLabelHip; private TextView txtLabelGoalWeight; private TextView txtLabelGoalDiff; @@ -129,6 +133,8 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener txtWaterLast = (TextView) overviewView.findViewById(R.id.txtWaterLast); txtMuscleLast = (TextView) overviewView.findViewById(R.id.txtMuscleLast); txtFatLast = (TextView) overviewView.findViewById(R.id.txtFatLast); + txtWaistLast = (TextView) overviewView.findViewById(R.id.txtWaistLast); + txtHipLast = (TextView) overviewView.findViewById(R.id.txtHipLast); txtGoalWeight = (TextView) overviewView.findViewById(R.id.txtGoalWeight); txtGoalDiff = (TextView) overviewView.findViewById(R.id.txtGoalDiff); @@ -142,6 +148,9 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener txtLabelFat = (TextView) overviewView.findViewById(R.id.txtLabelFat); txtLabelMuscle = (TextView) overviewView.findViewById(R.id.txtLabelMuscle); txtLabelWater = (TextView) overviewView.findViewById(R.id.txtLabelWater); + txtLabelWaist = (TextView) overviewView.findViewById(R.id.txtLabelWaist); + txtLabelHip = (TextView) overviewView.findViewById(R.id.txtLabelHip); + txtLabelGoalWeight = (TextView) overviewView.findViewById(R.id.txtLabelGoalWeight); txtLabelGoalDiff = (TextView) overviewView.findViewById(R.id.txtLabelGoalDiff); @@ -186,6 +195,16 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener row.setVisibility(View.GONE); } + if(!prefs.getBoolean("waistEnable", true)) { + TableRow row = (TableRow)overviewView.findViewById(R.id.tableRowWaist); + row.setVisibility(View.GONE); + } + + if(!prefs.getBoolean("hipEnable", true)) { + TableRow row = (TableRow)overviewView.findViewById(R.id.tableRowHip); + row.setVisibility(View.GONE); + } + spinUser.setOnItemSelectedListener(new spinUserSelectionListener()); ArrayList userItems = new ArrayList<>(); @@ -241,6 +260,8 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener txtFatLast.setText(lastScaleData.fat + " %"); txtWaterLast.setText(lastScaleData.water + " %"); txtMuscleLast.setText(lastScaleData.muscle + " %"); + txtWaistLast.setText(lastScaleData.waist + " cm"); + txtHipLast.setText(lastScaleData.hip + " cm"); } private void updateGoal(ArrayList scaleDataList) { @@ -268,6 +289,9 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener double diffFat = lastScaleData.fat - diffScaleData.fat; double diffMuscle = lastScaleData.muscle - diffScaleData.muscle; double diffWater = lastScaleData.water - diffScaleData.water; + double diffWaist = lastScaleData.waist - diffScaleData.waist; + double diffHip = lastScaleData.hip - diffScaleData.hip; + if (diffWeight > 0.0) txtLabelWeight.setText(Html.fromHtml(getResources().getString(R.string.label_weight) + "
" + String.format("%.1f ", diffWeight) + ScaleUser.UNIT_STRING[currentScaleUser.scale_unit] + "")); @@ -294,6 +318,16 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener txtLabelWater.setText(Html.fromHtml(getResources().getString(R.string.label_water) + "
" + String.format("%.1f", diffWater) + "%")); else txtLabelWater.setText(Html.fromHtml(getResources().getString(R.string.label_water) + "
" + String.format("%.1f", diffWater) + "%")); + + if (diffWaist > 0.0) + txtLabelWaist.setText(Html.fromHtml(getResources().getString(R.string.label_waist) + "
" + String.format("%.1f", diffWaist) + "%")); + else + txtLabelWaist.setText(Html.fromHtml(getResources().getString(R.string.label_waist) + "
" + String.format("%.1f", diffWaist) + "%")); + + if (diffHip > 0.0) + txtLabelHip.setText(Html.fromHtml(getResources().getString(R.string.label_hip) + "
" + String.format("%.1f", diffHip) + "%")); + else + txtLabelHip.setText(Html.fromHtml(getResources().getString(R.string.label_hip) + "
" + String.format("%.1f", diffHip) + "%")); } } @@ -314,6 +348,8 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener float weekAvgFat = 0; float weekAvgWater = 0; float weekAvgMuscle = 0; + float weekAvgWaist = 0; + float weekAvgHip = 0; int monthSize = 0; float monthAvgWeight = 0; @@ -321,6 +357,9 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener float monthAvgFat = 0; float monthAvgWater = 0; float monthAvgMuscle = 0; + float monthAvgWaist = 0; + float monthAvgHip = 0; + for (ScaleData scaleData : scaleDataList) { @@ -334,6 +373,8 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener weekAvgFat += scaleData.fat; weekAvgWater += scaleData.water; weekAvgMuscle += scaleData.muscle; + weekAvgWaist += scaleData.waist; + weekAvgHip += scaleData.hip; } if (monthPastDate.before(histDate)) { @@ -344,6 +385,8 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener monthAvgFat += scaleData.fat; monthAvgWater += scaleData.water; monthAvgMuscle += scaleData.muscle; + monthAvgWaist += scaleData.waist; + monthAvgHip += scaleData.hip; } else { break; } @@ -354,15 +397,65 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener weekAvgFat /= weekSize; weekAvgWater /= weekSize; weekAvgMuscle /= weekSize; + weekAvgWaist /= weekSize; + weekAvgHip /= weekSize; monthAvgWeight /= monthSize; monthAvgBMI /= monthSize; monthAvgFat /= monthSize; monthAvgWater /= monthSize; monthAvgMuscle /= monthSize; + monthAvgWaist /= monthSize; + monthAvgHip /= monthSize; - txtLabelAvgWeek.setText(Html.fromHtml(getResources().getString(R.string.label_last_week) + "
" + String.format("[Ø-"+getResources().getString(R.string.label_weight)+": %.1f" + ScaleUser.UNIT_STRING[currentScaleUser.scale_unit] + "] [Ø-"+getResources().getString(R.string.label_bmi)+": %.1f] [Ø-"+getResources().getString(R.string.label_fat)+": %.1f%%] [Ø-"+getResources().getString(R.string.label_muscle)+": %.1f%%] [Ø-"+getResources().getString(R.string.label_water)+": %.1f%%]", weekAvgWeight, weekAvgBMI, weekAvgFat, weekAvgMuscle, weekAvgWater) + "")); - txtLabelAvgMonth.setText(Html.fromHtml(getResources().getString(R.string.label_last_month) + "
" + String.format("[Ø-"+getResources().getString(R.string.label_weight)+": %.1f" + ScaleUser.UNIT_STRING[currentScaleUser.scale_unit] + "] [Ø-"+getResources().getString(R.string.label_bmi)+": %.1f] [Ø-"+getResources().getString(R.string.label_fat)+": %.1f%%] [Ø-"+getResources().getString(R.string.label_muscle)+": %.1f%%] [Ø-"+getResources().getString(R.string.label_water)+": %.1f%%]", monthAvgWeight, monthAvgBMI, monthAvgFat, monthAvgMuscle, monthAvgWater) + "")); + String info_week = new String(); + String info_month = new String(); + + int lines = 1; + + info_week += String.format("Ø-"+getResources().getString(R.string.label_weight)+": %.1f" + ScaleUser.UNIT_STRING[currentScaleUser.scale_unit] + "
", weekAvgWeight); + info_month += String.format("Ø-"+getResources().getString(R.string.label_weight)+": %.1f" + ScaleUser.UNIT_STRING[currentScaleUser.scale_unit] + "
", monthAvgWeight); + lines++; + + info_week += String.format("Ø-"+getResources().getString(R.string.label_bmi)+": %.1f
", weekAvgBMI); + info_month += String.format("Ø-"+getResources().getString(R.string.label_bmi)+": %.1f
", monthAvgBMI); + lines++; + + if(prefs.getBoolean("fatEnable", true)) { + info_week += String.format("Ø-"+getResources().getString(R.string.label_fat)+": %.1f%%
", weekAvgFat); + info_month += String.format("Ø-"+getResources().getString(R.string.label_fat)+": %.1f%%
", monthAvgFat); + lines++; + } + + if(prefs.getBoolean("muscleEnable", true)) { + info_week += String.format("Ø-"+getResources().getString(R.string.label_muscle)+": %.1f%%
", weekAvgWater); + info_month += String.format("Ø-"+getResources().getString(R.string.label_muscle)+": %.1f%%
", monthAvgWater); + lines++; + } + + if(prefs.getBoolean("waterEnable", true)) { + info_week += String.format("Ø-"+getResources().getString(R.string.label_water)+": %.1f%%
", weekAvgMuscle); + info_month += String.format("Ø-"+getResources().getString(R.string.label_water)+": %.1f%%
", monthAvgMuscle); + lines++; + } + + if(prefs.getBoolean("waistEnable", true)) { + info_week += String.format("Ø-"+getResources().getString(R.string.label_waist)+": %.1f%%
", weekAvgWaist); + info_month += String.format("Ø-"+getResources().getString(R.string.label_waist)+": %.1f%%
", monthAvgWaist); + lines++; + } + + if(prefs.getBoolean("hipEnable", true)) { + info_week += String.format("Ø-"+getResources().getString(R.string.label_hip)+": %.1f%%
", weekAvgHip); + info_month += String.format("Ø-"+getResources().getString(R.string.label_hip)+": %.1f%%
",monthAvgHip); + lines++; + } + + txtLabelAvgWeek.setLines(lines); + txtLabelAvgMonth.setLines(lines); + + txtLabelAvgWeek.setText(Html.fromHtml(getResources().getString(R.string.label_last_week) + "
" + info_week + "")); + txtLabelAvgMonth.setText(Html.fromHtml(getResources().getString(R.string.label_last_month) + "
" + info_month + "")); txtAvgWeek.setText(weekSize + " " + getResources().getString(R.string.label_measures)); txtAvgMonth.setText(monthSize + " " + getResources().getString(R.string.label_measures)); @@ -375,6 +468,8 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener List valuesFat = new ArrayList(); List valuesWater = new ArrayList(); List valuesMuscle = new ArrayList(); + List valuesWaist = new ArrayList(); + List valuesHip = new ArrayList(); List lines = new ArrayList(); int max_i = 7; @@ -399,6 +494,8 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener valuesFat.add(new PointValue(i, histData.fat)); valuesWater.add(new PointValue(i, histData.water)); valuesMuscle.add(new PointValue(i, histData.muscle)); + valuesWaist.add(new PointValue(i, histData.waist)); + valuesHip.add(new PointValue(i, histData.hip)); histDate.setTime(histData.date_time); @@ -427,6 +524,14 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener setColor(ChartUtils.COLOR_GREEN). setHasLabels(prefs.getBoolean("labelsEnable", true)). setFormatter(new SimpleLineChartValueFormatter(1)); + Line lineWaist = new Line(valuesWaist). + setColor(Color.MAGENTA). + setHasLabels(prefs.getBoolean("labelsEnable", true)). + setFormatter(new SimpleLineChartValueFormatter(1)); + Line lineHip = new Line(valuesHip). + setColor(Color.YELLOW). + setHasLabels(prefs.getBoolean("labelsEnable", true)). + setFormatter(new SimpleLineChartValueFormatter(1)); activeLines = new ArrayList(); @@ -450,6 +555,14 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener activeLines.add(OverviewFragment.lines.MUSCLE); } + if(prefs.getBoolean("waistEnable", true)) { + lines.add(lineWaist); + } + + if(prefs.getBoolean("hipEnable", true)) { + lines.add(lineHip); + } + LineChartData lineData = new LineChartData(lines); lineData.setAxisXBottom(new Axis(axisValues). setHasLines(true). @@ -462,8 +575,6 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener setTextColor(Color.BLACK) ); - - lineChartLast.setLineChartData(lineData); lineChartLast.setViewportCalculationEnabled(true); diff --git a/android_app/app/src/main/java/com/health/openscale/gui/TableFragment.java b/android_app/app/src/main/java/com/health/openscale/gui/TableFragment.java index 1426e537..01a99122 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/TableFragment.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/TableFragment.java @@ -86,6 +86,10 @@ public class TableFragment extends Fragment implements FragmentUpdateListener { txtWaterTableHeader.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 11); TextView txtMuscleTableHeader = (TextView)tableView.findViewById(R.id.txtMuscleTableHeader); txtMuscleTableHeader.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 11); + TextView txtWaistTableHeader = (TextView)tableView.findViewById(R.id.txtWaistTableHeader); + txtWaistTableHeader.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 11); + TextView txtHipTableHeader = (TextView)tableView.findViewById(R.id.txtHipTableHeader); + txtHipTableHeader.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 11); TextView txtCommentTableHeader = (TextView)tableView.findViewById(R.id.txtCommentTableHeader); txtCommentTableHeader.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 11); Button btnDeleteAll = (Button)tableView.findViewById(R.id.btnDeleteAll); @@ -109,6 +113,16 @@ public class TableFragment extends Fragment implements FragmentUpdateListener { txtWaterTableHeader.setVisibility(View.GONE); } + if(!prefs.getBoolean("waistEnable", true)) { + TextView txtWaistTableHeader = (TextView)tableView.findViewById(R.id.txtWaistTableHeader); + txtWaistTableHeader.setVisibility(View.GONE); + } + + if(!prefs.getBoolean("hipEnable", true)) { + TextView txtHipTableHeader = (TextView)tableView.findViewById(R.id.txtHipTableHeader); + txtHipTableHeader.setVisibility(View.GONE); + } + return tableView; } @@ -127,7 +141,13 @@ public class TableFragment extends Fragment implements FragmentUpdateListener { if(prefs.getBoolean("muscleEnable", true)) { tableDataView.setColumnStretchable(6, true); } - tableDataView.setColumnStretchable(7, true); + if(prefs.getBoolean("waistEnable", true)) { + tableDataView.setColumnStretchable(7, true); + } + if(prefs.getBoolean("hipEnable", true)) { + tableDataView.setColumnStretchable(8, true); + } + tableDataView.setColumnStretchable(9, true); TableRow headerRow = (TableRow) tableView.findViewById(R.id.tableHeader); tableDataView.removeAllViews(); @@ -187,6 +207,21 @@ public class TableFragment extends Fragment implements FragmentUpdateListener { } dataRow.addView(muscleView); + TextView waistView = new TextView(tableView.getContext()); + waistView.setText(Float.toString(scaleData.waist)); + waistView.setPadding(0, 5, 5, 5); + if(!prefs.getBoolean("waistEnable", true)) { + waistView.setVisibility(View.GONE); + } + dataRow.addView(waistView); + + TextView hipView = new TextView(tableView.getContext()); + hipView.setText(Float.toString(scaleData.hip)); + hipView.setPadding(0, 5, 5, 5); + if(!prefs.getBoolean("hipEnable", true)) { + hipView.setVisibility(View.GONE); + } + dataRow.addView(hipView); TextView commentView = new TextView(tableView.getContext()); commentView.setText(scaleData.comment); @@ -216,6 +251,8 @@ public class TableFragment extends Fragment implements FragmentUpdateListener { fatView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 11); waterView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 11); muscleView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 11); + waistView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 11); + hipView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 11); commentView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 11); } diff --git a/android_app/app/src/main/res/drawable/bmi.png b/android_app/app/src/main/res/drawable/bmi.png index 484ab7c30e934443a9881634f65d26ffeb87b8bc..eab7c02390549ca7d09af8329dd9a63b28dd23a9 100644 GIT binary patch literal 1345 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!n2Vh}LpV4%Za?&Y0OWEOctjR6 zFbJOlVMgW9{u4k!$r9IylHmNblJdl&REF~Ma=pyF?Be9af>gcyqV(DCY@`?%81Dx7 zgt-3y{~xG+-~bB)0~!K)l^Ddtz(4|GVql^cVq{<>4ly$_pdltk2D&1y*MHvvqjp|N zkY6wZBNH}`Jc?%XU zTDD@%+VvYZZP~Vc$L_uR_8&NSUg?1hD01rPLN<-oFLL;b3j95b^6nHsmUue4ms`0 z%iR7c^7DfPzuE~#%AC7e|7JZ;Z20COne=t`motaCmhBdJ%5|<{N8i3R8TtJywwUd3 zSZE>0_T*sb>rGCrQ-l+e*4|35XSPe|-&SoJ2w)zF+>E9Q^^ zzy5@Dj{x$`03%g9jp9n`Doq zUGtp55ac+8(cyy7iWA)(Zj4_$^j2^s@iOe*qosZ7sOWz!saH0F5DVLTbYto3#Q+m;#5JQrp$m?f|& zGKX+VOnBArU92{d?Zx8@_fN4KDX6&_si_@{)K@zeEPG-CcV{POKv(C*vcArVeBFZ1 zMhn>AO}}~J2&-9xK!d~u?vPj6>{soZ%dJkbwOA`k8q8(PXh=4m$kyV>v!O{!;4+hG z!+ORX2g8R|2Q_4FGW<+RVNR_M1wI=V~psNK7ScQVk{t{F#!_|`k;JN z4M8P}K|oSe6qKTbTA&5m<3rDt$<5u}d+&DJyR?%`=I(r+`Ole|^D!%`%0Lb&26z|* zU=V;DK}5!h$Q%)oVwjMKOc9akp&O`b)(Er!3OtvqZhuGM7NE=Gm{4s(bh^#}I1S85 z@Z@WOzl_#{z<R+C~`U zRU4oin3kZ)mjb(uw%tHkp#Vq&`)!~v69m8`&g##P+&Lb|jF>f&R0G{4t;^L!D0?PDyI)2;zWpyIR^a zae|19v>Txecu-YW1=QIH%m97?K24a)FcJ7)Ul3nR835(bvqdtj@J2)NtsLd+5-2!5 z>Ty9TfPXEzZGW5s(jt;cW87ltjc21e>;h432cJJQTRL7uMx2fI01t!`U_wCo*H&KC zT#yP`-V$I(XajcG&uPUBK#-+JY~@RVR#iQbq5bd9om|uaq@3tYdB66iKFD)WVL}aute}srE6_LsSGu=WFDS!3lPZyEfGK|>}$|MF%lpSwTY)Dnf0M6|m6rdSFW*ytA8_)jfKJQ5)XBfe@>;zy{nwyBTnHRf z)zcvsG%5#pD_jMf8<1a@q5f!JeqBKQk-$0jeQ`kD;l4359)f?WYG=p^Mcx95zXepa zBY%n&+S0Ot>KK`9>F#0$pfnE$#83x-Z?aUa5s~@!eU+1chlm`r@3EGqox0w>1*rAq zdkZ(w$**VX1dPr7z`7rsISyb+UOmM;0Jk~f<&b`|>Z~yu4&<_7W{as9t3TVh z&fbn7HTHH`>s_8SkyoejuIa3H~(jw@Hz!J1M z;V9Q2m(la;N`YU^Q{)2CX=3S9CLEO%c+yp-fHiUE zI{=~LpSg}umN~i zReyBodIEUeelAqi_hX5|z%qxOX60bb3Sc&{+c-h4!lIfrw+T03HHP*j0Nx z5(k)u<(;aJC;gFh0R4>)_sol<4&P}u|I>Ej7FAHyZvoFrG&hb#=q^ilnj5?rL$kA( zkpZX+Vee0R_|DQ1B9e{@K!v5-ix>cx_R6>bv=uP`N1X5T;{woC#8d!u#R5P?%IJ9= zLJ@d&a!HG^IlyC|mLdk=u(O4aMA8LBWHK;HRW}qd0EoyW^BjE^Ss5BAVep@$g8&Th Z@E^IsDx@d>Fm3<<002ovPDHLkV1je$^T+@I diff --git a/android_app/app/src/main/res/drawable/hip.png b/android_app/app/src/main/res/drawable/hip.png new file mode 100644 index 0000000000000000000000000000000000000000..08bec0af55d6797bd52d95a1e8efbc95d1781f3b GIT binary patch literal 1840 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!n2Vh}LpV4%Za?&Y0OWEOctjR6 zFfanyj1L%DU(NRf3QCr^MwA5SrF z;1lBd|NnoW`cW{#L*S9}(FMRDSW^<@7tFxO#LU9R&cVsW&C4esC?qT*DlQ=@C8waM zq^zQXYc6j;^yJ$<>Ma^7!(p39uXBC6C0P1n3SB7nwFlOlUq<& zR9sS8R#911UDwdm+|t_C(b?V8H(}D`DO0D-m^pjyf`yBgtX#8p-TDn1H*eXxZO6{N z2M!)OdhEo>(`U|JxOn->wd*%--nxD7{=-L)pFDl`{Kc!+Z{EK9@bS}^?>~P2`TI{o z>dI4KmU!&x;usa}O`W@sIN_O}(h1qei5+rl?FMzfrzgd24!2}ydY zXu9rt{@Z=u-Po7!s;YL`$)7xZZJt!*s+Tvlw66;2a$gM4)h^u-C}!p~cTI@%DxD=x zTi4uah>1MWD!r*l)F@R^c-^T}sT)o=$?Bax<$6Phd-lUcYyPwgYH=@Q<4;L#_`d1O zJjTcf)~}mF_*a|kma)+BZdY{Qyt>6D(yPVm>^sq9$4w$8$F$F8Ej?&__Mzl4ud~Z| zx=h=XG%n}t`YFB4vgPm6=*=E2Za+CVCiJ^`OxelhF@5`sd-pObz1z8FZsIi(QOTE_ zpqTII%yTPc8H3hScAwhNfBbF~Faax<4)b~xe?&GiES?AfLK1)$9 z?zI1U#khTWj`RLZVc-5F`KE+@&Zo(5*^^H{d216h@&394m6e=wM+BAkAGMI+nYP^a z!kWsAHrr2MB!W!&SAK|)o7R6>ctIt{i^Q6p%Vb+8&ze5DAmp-@WcQUlE`1kQ)|(y3 zsP()Q^fNOv$n&p8&V?zDcSy{CH+Pf!sh}l)uk7__(>rdubmm8WpO@KI;Zvs05s;Q! zQO|TZS$NXsu5+ee4WFL2I6F(k!l`{x*}R?iyVaAIeD{6b%)U0i%ALpN>plC;#$K{L zET?n@*PT|qRJZG)v6!9toNex>o?5A#TFYW&qFWQ4c5owiXu15>y|4c>*Z;b|)pl2O z>B9)eXWI&VPd5nd40X!>+WDr`C~@=2BfH)RUtJrZxxIZy?cTZKt1Mfe-Tl{f+j(cH zVcvspyUpUJJ<6_soYr$$b$g&xPWCqOdq3NPy_?deUTC_!-MaPm^&3(WQ@vU4Oga5) zlih(pX~kf{t$YjC=j@Hib849*^k9;j?wKs+wzAVl-YG87&0eS$+r(m->a=oM>UYMc zjGqJp_`alOM`@;<%Cvtowf*Q*z6vQd{Y3wRf%_ulz8$KweCph_XUV^&a|V?huUq0* zewxJevq-BYr84?AW1QYad+)eI?OQ)h<7q9@Y7+U`QNexQ*+lb+<(}RN{UREZE;HUx zjn}SP;5Yfzg7ns!w@u7NRvb5HDV8x@dOC@ZdE+caX}(jM@Lc9zr;bKVzHtpV$8foo5ixS64stEap+O|`q?RMn?t5%&cvDGU$VVEeh{1)dF7s{ k=+&$HJkt7j#Iq0mZ(V=+@%w+`dZ3cp)78&qol`;+012R8qyPW_ literal 0 HcmV?d00001 diff --git a/android_app/app/src/main/res/drawable/waist.png b/android_app/app/src/main/res/drawable/waist.png new file mode 100644 index 0000000000000000000000000000000000000000..a5b6a05a33ee51e6f79b8ac5227a492d8e0a85fd GIT binary patch literal 1803 zcmV+m2lV)fP)iA5{+Lp(O^u}7$f>gKVd>*WEG7Gn26{HEm$!GmmmfK35zJZ5-K1?+T(|Nhj*FI z%zJO<^-UZ2CzJbn=FU0i{^u^|o;wv)c39tb0OjpPKqau>8u~WvhC6;e>Ad|Jc|V`0u{n;h2RlIHyV`k4freN*Vi?_M z4Sv%B2zb#MmZOSAz;ve7H0Akx3$P@J*%d%#7WQAlFnm0LB4(fiFVeLpm4=)B}`>$Rgj(?!b6pt%yuk)l>eb zRrRolY{WEhEYOAk2U}EienH$W5JY4?9s$5pA@#;#NSG8v0?qX?g5St?c9SR6w4q?{rfjNYut1tn@#{u^m?7h{F><%mY8)w@JJZI(W zeL9v}`P)9ZxBY$8kyQiDR(`D`zst&wdNzUiR;EEiU@zIyfcJ*0fy)Er148Qe z^T`MJN`OAVW%lA2sUSnZ_YqZVL}Z5jeX}EskM_%jP zzf(kd*xw@qY-U!31PO`T$!sgzWMhD@Nw!rj%9UgYc+p=o@N>ZZ)nr2Dj*2yH@&UO* zL{}#yX4uDu82LxE_y=smnd2dAb+`tS56GP#e?fnY0Z^-i@Qn>T9$*jsV@- zjR0VhV*_eJ=oiVWP<8amTNt?-T3W zSzu^;5b%b>a^7d~Av!C7o(0m?A2@0KYbYoIz+lU)0>1-wg>bsi7x0?%l4ci@fTgsZ zv>GvawZMbXA~m=KxCM9>6PUF+{%t46;3%7s>o8ej#bk+Fd_**3!qVq4!BJ^DH@X_L z0b4@m%eAm;PA)nlcY`AG0Wi-tyw0*b2NQn}3wWf-_Kr=MEYWYkPE|b_YNV~rQlJ-b zwQ~&s?gehe1VDal#e~KmVvgmn$DDBAsH%}$@=yXqqz)5dl>%#2b%yW$2w)a)H!zCm z?9xF@w)r2-WaX7-fUA6s?G@5U7p<5xjCH^YRsF^B>sjC(`{yiG{U}mXM0Z<2raMi@ z(lxsQ6M==mcbJ|~$jr@2ObGraCLXDZ@TCVPP*dR3*h4@>Hes?p+g0_3NEU;iufeP! zLu}dC66Ic%z-dg6XmZN^z%I-X+NG)o^0d7ecpUf_v(yHD=m7-x0L%`{n^m7lYo<>y zS&kypd!|R#4ciV+!Q}kUVP@P;1y%h4@UleHqUwebFx8gZ)Et9%MtC1^Oo^%#Mu3;@ zipuwQbo^+`-Xc;NRw;~tZnlh_Z0rDVeGmP9AsYdmwflqliqu2*uu9noXepRG#fR&A z?gWTPInc%a+0jpSqTu?TcMtHo&+dY`Q+ymFGlY+aRSJv*MPxY8S5?=wk8j0+hz!G= t9DNyDCu%o%G2qgFj;8HE+PLTm_#amis#x0blMDa=002ovPDHLkV1nRHL#Y4& literal 0 HcmV?d00001 diff --git a/android_app/app/src/main/res/layout/activity_dataentry.xml b/android_app/app/src/main/res/layout/activity_dataentry.xml index 560144bc..ffb36a67 100644 --- a/android_app/app/src/main/res/layout/activity_dataentry.xml +++ b/android_app/app/src/main/res/layout/activity_dataentry.xml @@ -193,7 +193,69 @@ - + + + + + + + + + + + + + + + + + + diff --git a/android_app/app/src/main/res/layout/fragment_overview.xml b/android_app/app/src/main/res/layout/fragment_overview.xml index ba024d14..1ec1cb90 100644 --- a/android_app/app/src/main/res/layout/fragment_overview.xml +++ b/android_app/app/src/main/res/layout/fragment_overview.xml @@ -290,6 +290,86 @@ android:layout_marginRight="20dp" /> + + + + + + + + + + + + + + + + + + + + + + Der Wert muss zwischen 0 und 300 liegen
Wassergehalt ist erforderlich Gewicht ist erforderlich + Bauchumfang ist erforderlich + Hüftumfang ist erforderlich Bluetooth Verbindung konnte nicht hergestellt werden Alle Datenbank Einträge wurden gelöscht Datenbank Eintrag wurde gelöscht @@ -22,7 +24,7 @@ Gebe ein optionalen Kommentar ein Gebe dein Gewicht in deiner Einheit an Gebe dein Namen ein - Gebe deine Körpergröße in cm an + Gebe dein Wert in cm an Gebe dein Wert in % an Gebe dein Wert an in ist nicht sichtbar @@ -48,11 +50,7 @@ Löschen Alles löschen Gerätename - Körperfettanteil Notiz auf den Datenpunkten - Muskelanteil - Wassergehalt - Gewicht Exportieren Körperfettanteil Geschlecht @@ -91,4 +89,6 @@ Daten ist ausgeschaltet ist eingeschaltet + Bauchumfang + Hüftumfang \ No newline at end of file diff --git a/android_app/app/src/main/res/values-ja/strings.xml b/android_app/app/src/main/res/values-ja/strings.xml index 7058ac5d..bb8f87a2 100644 --- a/android_app/app/src/main/res/values-ja/strings.xml +++ b/android_app/app/src/main/res/values-ja/strings.xml @@ -41,10 +41,6 @@ 計測 最終の計測 目標期日は - 筋肉率 - 体内の水分 - 体重 - 体脂肪 全てデリート Bluetoothの体重計を探索する 過去30日 @@ -82,7 +78,7 @@ あなたの名前を入力してください あなたの体重をあなたの単位で入力してください 任意でコメントを入力してください - あなたの身長をcmで入力してください + あなたの値をcmで入力してください あなたの値を%で入力してください あなたの値を入力してください あなたは本当にすべてのレコードを削除しますか @@ -91,4 +87,8 @@ データ 無効にします 有効にします + 腰囲が必要です + 胴囲が必要です + 胴囲 + 腰囲 \ No newline at end of file diff --git a/android_app/app/src/main/res/values/strings.xml b/android_app/app/src/main/res/values/strings.xml index 7297ee1d..3b88d1be 100644 --- a/android_app/app/src/main/res/values/strings.xml +++ b/android_app/app/src/main/res/values/strings.xml @@ -24,6 +24,8 @@ Body fat percentage Water percentage Muscle percentage + Waist circumference + Hip circumference Comment days @@ -67,12 +69,15 @@ Error user name is required Error body height is required Error goal weight is required + waist circumference is required + hip circumference is required Database entry deleted All database entries deleted Data exported to Data imported from Set filename to + Enter value in cm Enter value in % Enter value in Enter an optional comment @@ -84,7 +89,6 @@ Clear all Bluetooth data Bluetooth data was successful cleared Bluetooth connection not established - Enter your height in cm Enter your name No user exist! Please create a new user in the settings @@ -96,10 +100,6 @@ Device Name Label on data point - Weight - Body fat percentage - Water percentage - Muscle percentage Your weight was Your body fat was diff --git a/android_app/app/src/main/res/xml/preferences.xml b/android_app/app/src/main/res/xml/preferences.xml index ba8f3d2f..aa4189b4 100644 --- a/android_app/app/src/main/res/xml/preferences.xml +++ b/android_app/app/src/main/res/xml/preferences.xml @@ -15,10 +15,12 @@ - - - - + + + + + +