mirror of
https://github.com/oliexdev/openScale.git
synced 2025-08-01 06:20:33 +02:00
Introduce class Measurement for gui operations
* makes it easier to add a new Measurement without having to search through the OverviewFragment where to add new Labels and Texts * the inherited XyzMeasurement classes focus on the properties that are different
This commit is contained in:
@@ -267,6 +267,10 @@ public class EvaluationSheet {
|
||||
return evaluateSheet(whr, bodyEvaluateSheet);
|
||||
}
|
||||
|
||||
public EvaluationResult evaluateHip(float hip) {
|
||||
return evaluateSheet(hip, new ArrayList<sheetEntry>());
|
||||
}
|
||||
|
||||
private EvaluationResult evaluateSheet(float value, List<sheetEntry> sheet) {
|
||||
for (int i=0; i < sheet.size(); i++) {
|
||||
sheetEntry curEntry = sheet.get(i);
|
||||
|
@@ -0,0 +1,686 @@
|
||||
package com.health.openscale.gui;
|
||||
|
||||
import android.app.Fragment;
|
||||
import android.content.SharedPreferences;
|
||||
import android.graphics.Color;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TableLayout;
|
||||
import android.widget.TableRow;
|
||||
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.LinearGaugeView;
|
||||
import com.health.openscale.core.ScaleUser;
|
||||
|
||||
import lecho.lib.hellocharts.util.ChartUtils;
|
||||
|
||||
abstract class Measurement {
|
||||
private TextView txtLabel;
|
||||
private TextView txtView;
|
||||
private final String label;
|
||||
private LinearGaugeView linearGaugeView;
|
||||
private ImageView imageView;
|
||||
private TableRow tableRow;
|
||||
|
||||
ScaleUser scaleUser;
|
||||
|
||||
public Measurement(View overviewView) {
|
||||
txtLabel = (TextView) overviewView.findViewById(getTxtLabelId());
|
||||
txtView = (TextView) overviewView.findViewById(getTxtViewId());
|
||||
linearGaugeView = (LinearGaugeView) overviewView.findViewById(getLinearGaugeViewId());
|
||||
imageView = (ImageView)overviewView.findViewById(getImageViewId());
|
||||
|
||||
label = overviewView.getResources().getString(getLabelId());
|
||||
|
||||
tableRow = (TableRow)overviewView.findViewById(getTableRowId());
|
||||
tableRow.setOnClickListener(new onClickListenerEvaluation());
|
||||
}
|
||||
|
||||
public void updateValue(float value) {
|
||||
setText(value);
|
||||
evaluate(value);
|
||||
}
|
||||
|
||||
abstract int getTxtLabelId();
|
||||
abstract int getTxtViewId();
|
||||
abstract int getLabelId();
|
||||
abstract int getLinearGaugeViewId();
|
||||
abstract int getImageViewId();
|
||||
abstract int getTableRowId();
|
||||
|
||||
abstract String getFormat();
|
||||
|
||||
abstract EvaluationResult evaluateSheet(EvaluationSheet evalSheet, float value);
|
||||
|
||||
abstract int getMinValue();
|
||||
|
||||
abstract int getMaxValue();
|
||||
|
||||
private void setText(float value) {
|
||||
txtView.setText(String.format(getFormat(), value));
|
||||
}
|
||||
|
||||
private void evaluate(float value) {
|
||||
EvaluationSheet evalSheet = new EvaluationSheet(scaleUser);
|
||||
EvaluationResult evalResult = evaluateSheet(evalSheet, value);
|
||||
|
||||
linearGaugeView.setMinMaxValue(getMinValue(), getMaxValue());
|
||||
linearGaugeView.setLimits(evalResult.lowLimit, evalResult.highLimit);
|
||||
linearGaugeView.setValue(value);
|
||||
|
||||
switch(evalResult.eval_state)
|
||||
{
|
||||
case LOW:
|
||||
imageView.setBackgroundColor(ChartUtils.COLOR_BLUE);
|
||||
break;
|
||||
case NORMAL:
|
||||
imageView.setBackgroundColor(ChartUtils.COLOR_GREEN);
|
||||
break;
|
||||
case HIGH:
|
||||
imageView.setBackgroundColor(ChartUtils.COLOR_RED);
|
||||
break;
|
||||
case UNDEFINED:
|
||||
imageView.setBackgroundColor(Color.GRAY);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void setDiff(float value, float diffValue) {
|
||||
ScaleDiff.setDiff(
|
||||
txtLabel,
|
||||
value - diffValue,
|
||||
label,
|
||||
getFormat());
|
||||
}
|
||||
|
||||
public void updateVisibleRow(SharedPreferences preferences){
|
||||
if(isPreferenceSet(preferences)) {
|
||||
tableRow.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
tableRow.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
abstract boolean isPreferenceSet(SharedPreferences preferences);
|
||||
|
||||
private class onClickListenerEvaluation implements View.OnClickListener {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
TableRow row = (TableRow)v;
|
||||
|
||||
TableLayout tableLayout = (TableLayout)row.getParent();
|
||||
int index = tableLayout.indexOfChild(row);
|
||||
|
||||
TableRow rowEvaluation = (TableRow)tableLayout.getChildAt(index+1);
|
||||
|
||||
if (rowEvaluation.getVisibility() == View.VISIBLE) {
|
||||
rowEvaluation.setVisibility(View.GONE);
|
||||
} else {
|
||||
rowEvaluation.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class WeightMeasurement extends Measurement {
|
||||
|
||||
public WeightMeasurement(View overviewView) {
|
||||
super(overviewView);
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTxtLabelId() {
|
||||
return R.id.txtLabelWeight;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTxtViewId() {
|
||||
return R.id.txtWeightLast;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getLabelId() {
|
||||
return R.string.label_weight;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getLinearGaugeViewId() {
|
||||
return R.id.linearGaugeWeight;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getImageViewId() {
|
||||
return R.id.indicatorWeight;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTableRowId() {
|
||||
return R.id.tableRowWeight;
|
||||
}
|
||||
|
||||
@Override
|
||||
String getFormat() {
|
||||
return "%.1f " + ScaleUser.UNIT_STRING[scaleUser.scale_unit];
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isPreferenceSet(SharedPreferences preferences) {
|
||||
return preferences.getBoolean("weightEnable", true);
|
||||
}
|
||||
|
||||
@Override
|
||||
EvaluationResult evaluateSheet(EvaluationSheet evalSheet, float value) {
|
||||
return evalSheet.evaluateWeight(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMinValue() {
|
||||
return 30;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxValue() {
|
||||
return 300;
|
||||
}
|
||||
}
|
||||
|
||||
class BMIMeasurement extends Measurement {
|
||||
|
||||
public BMIMeasurement(View overviewView) {
|
||||
super(overviewView);
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTxtLabelId() {
|
||||
return R.id.txtLabelBMI;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTxtViewId() {
|
||||
return R.id.txtBMILast;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getLabelId() {
|
||||
return R.string.label_bmi;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getLinearGaugeViewId() {
|
||||
return R.id.linearGaugeBMI;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getImageViewId() {
|
||||
return R.id.indicatorBMI;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTableRowId() {
|
||||
return R.id.tableRowBMI;
|
||||
}
|
||||
|
||||
@Override
|
||||
String getFormat() {
|
||||
return "%.1f";
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isPreferenceSet(SharedPreferences preferences) {
|
||||
// TODO implement
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
EvaluationResult evaluateSheet(EvaluationSheet evalSheet, float value) {
|
||||
return evalSheet.evaluateBMI(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMinValue() {
|
||||
return 10;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxValue() {
|
||||
return 50;
|
||||
}
|
||||
}
|
||||
|
||||
class WaterMeasurement extends Measurement {
|
||||
|
||||
public WaterMeasurement(View overviewView) {
|
||||
super(overviewView);
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTxtLabelId() {
|
||||
return R.id.txtLabelWater;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTxtViewId() {
|
||||
return R.id.txtWaterLast;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getLabelId() {
|
||||
return R.string.label_water;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getLinearGaugeViewId() {
|
||||
return R.id.linearGaugeWater;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getImageViewId() {
|
||||
return R.id.indicatorWater;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTableRowId() {
|
||||
return R.id.tableRowWater;
|
||||
}
|
||||
|
||||
@Override
|
||||
String getFormat() {
|
||||
return "%.1f %%";
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isPreferenceSet(SharedPreferences preferences) {
|
||||
return preferences.getBoolean("waterEnable", true);
|
||||
}
|
||||
|
||||
@Override
|
||||
EvaluationResult evaluateSheet(EvaluationSheet evalSheet, float value) {
|
||||
return evalSheet.evaluateBodyWater(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMinValue() {
|
||||
return 30;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxValue() {
|
||||
return 80;
|
||||
}
|
||||
}
|
||||
|
||||
class MuscleMeasurement extends Measurement {
|
||||
|
||||
public MuscleMeasurement(View overviewView) {
|
||||
super(overviewView);
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTxtLabelId() {
|
||||
return R.id.txtLabelMuscle;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTxtViewId() {
|
||||
return R.id.txtMuscleLast;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getLabelId() {
|
||||
return R.string.label_muscle;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getLinearGaugeViewId() {
|
||||
return R.id.linearGaugeMuscle;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getImageViewId() {
|
||||
return R.id.indicatorMuscle;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTableRowId() {
|
||||
return R.id.tableRowMuscle;
|
||||
}
|
||||
|
||||
@Override
|
||||
String getFormat() {
|
||||
return "%.1f %%";
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isPreferenceSet(SharedPreferences preferences) {
|
||||
return preferences.getBoolean("muscleEnable", true);
|
||||
}
|
||||
|
||||
@Override
|
||||
EvaluationResult evaluateSheet(EvaluationSheet evalSheet, float value) {
|
||||
return evalSheet.evaluateBodyMuscle(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMinValue() {
|
||||
return 10;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxValue() {
|
||||
return 80;
|
||||
}
|
||||
}
|
||||
|
||||
class FatMeasurement extends Measurement {
|
||||
|
||||
public FatMeasurement(View overviewView) {
|
||||
super(overviewView);
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTxtLabelId() {
|
||||
return R.id.txtLabelFat;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTxtViewId() {
|
||||
return R.id.txtFatLast;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getLabelId() {
|
||||
return R.string.label_fat;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getLinearGaugeViewId() {
|
||||
return R.id.linearGaugeFat;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getImageViewId() {
|
||||
return R.id.indicatorFat;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTableRowId() {
|
||||
return R.id.tableRowFat;
|
||||
}
|
||||
|
||||
@Override
|
||||
String getFormat() {
|
||||
return "%.1f %%";
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isPreferenceSet(SharedPreferences preferences) {
|
||||
return preferences.getBoolean("fatEnable", true);
|
||||
}
|
||||
|
||||
@Override
|
||||
EvaluationResult evaluateSheet(EvaluationSheet evalSheet, float value) {
|
||||
return evalSheet.evaluateBodyFat(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMinValue() {
|
||||
return 10;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxValue() {
|
||||
return 40;
|
||||
}
|
||||
}
|
||||
|
||||
class WaistMeasurement extends Measurement {
|
||||
|
||||
public WaistMeasurement(View overviewView) {
|
||||
super(overviewView);
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTxtLabelId() {
|
||||
return R.id.txtLabelWaist;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTxtViewId() {
|
||||
return R.id.txtWaistLast;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getLabelId() {
|
||||
return R.string.label_waist;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getLinearGaugeViewId() {
|
||||
return R.id.linearGaugeWaist;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getImageViewId() {
|
||||
return R.id.indicatorWaist;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTableRowId() {
|
||||
return R.id.tableRowWaist;
|
||||
}
|
||||
|
||||
@Override
|
||||
String getFormat() {
|
||||
return "%.1f cm";
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isPreferenceSet(SharedPreferences preferences) {
|
||||
return preferences.getBoolean("waistEnable", true);
|
||||
}
|
||||
|
||||
@Override
|
||||
EvaluationResult evaluateSheet(EvaluationSheet evalSheet, float value) {
|
||||
return evalSheet.evaluateWaist(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMinValue() {
|
||||
return 30;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxValue() {
|
||||
return 200;
|
||||
}
|
||||
}
|
||||
|
||||
class WHtRMeasurement extends Measurement {
|
||||
|
||||
public WHtRMeasurement(View overviewView) {
|
||||
super(overviewView);
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTxtLabelId() {
|
||||
return R.id.txtLabelWHtR;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTxtViewId() {
|
||||
return R.id.txtWHtRLast;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getLabelId() {
|
||||
return R.string.label_whtr;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getLinearGaugeViewId() {
|
||||
return R.id.linearGaugeWHtR;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getImageViewId() {
|
||||
return R.id.indicatorWHtR;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTableRowId() {
|
||||
return R.id.tableRowWHtR;
|
||||
}
|
||||
|
||||
@Override
|
||||
String getFormat() {
|
||||
return "%.2f";
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isPreferenceSet(SharedPreferences preferences) {
|
||||
return preferences.getBoolean("waistEnable", true);
|
||||
}
|
||||
|
||||
@Override
|
||||
EvaluationResult evaluateSheet(EvaluationSheet evalSheet, float value) {
|
||||
return evalSheet.evaluateWHtR(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMinValue() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxValue() {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
class HipMeasurement extends Measurement {
|
||||
|
||||
public HipMeasurement(View overviewView) {
|
||||
super(overviewView);
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTxtLabelId() {
|
||||
return R.id.txtLabelHip;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTxtViewId() {
|
||||
return R.id.txtHipLast;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getLabelId() {
|
||||
return R.string.label_hip;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getLinearGaugeViewId() {
|
||||
return R.id.linearGaugeHip;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getImageViewId() {
|
||||
return R.id.indicatorHip;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTableRowId() {
|
||||
return R.id.tableRowHip;
|
||||
}
|
||||
|
||||
@Override
|
||||
String getFormat() {
|
||||
return "%.1f cm";
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isPreferenceSet(SharedPreferences preferences) {
|
||||
return preferences.getBoolean("hipEnable", true);
|
||||
}
|
||||
|
||||
@Override
|
||||
EvaluationResult evaluateSheet(EvaluationSheet evalSheet, float value) {
|
||||
return evalSheet.evaluateHip(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMinValue() {
|
||||
return 30;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxValue() {
|
||||
return 200;
|
||||
}
|
||||
}
|
||||
|
||||
class WHRMeasurement extends Measurement {
|
||||
|
||||
public WHRMeasurement(View overviewView) {
|
||||
super(overviewView);
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTxtLabelId() {
|
||||
return R.id.txtLabelWHR;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTxtViewId() {
|
||||
return R.id.txtWHRLast;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getLabelId() {
|
||||
return R.string.label_whr;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getLinearGaugeViewId() {
|
||||
return R.id.linearGaugeWHR;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getImageViewId() {
|
||||
return R.id.indicatorWHR;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getTableRowId() {
|
||||
return R.id.tableRowWHR;
|
||||
}
|
||||
|
||||
@Override
|
||||
String getFormat() {
|
||||
return "%.2f";
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isPreferenceSet(SharedPreferences preferences) {
|
||||
return preferences.getBoolean("hipEnable", true) && preferences.getBoolean("waistEnable", true);
|
||||
}
|
||||
|
||||
@Override
|
||||
EvaluationResult evaluateSheet(EvaluationSheet evalSheet, float value) {
|
||||
return evalSheet.evaluateWHR(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMinValue() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getMaxValue() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
}
|
@@ -67,6 +67,7 @@ import lecho.lib.hellocharts.view.LineChartView;
|
||||
import lecho.lib.hellocharts.view.PieChartView;
|
||||
|
||||
public class OverviewFragment extends Fragment implements FragmentUpdateListener {
|
||||
|
||||
private View overviewView;
|
||||
|
||||
private TextView txtTitleUser;
|
||||
@@ -74,15 +75,15 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
|
||||
private TextView txtTitleGoal;
|
||||
private TextView txtTitleStatistics;
|
||||
|
||||
private TextView txtWeightLast;
|
||||
private TextView txtBMILast;
|
||||
private TextView txtWaterLast;
|
||||
private TextView txtMuscleLast;
|
||||
private TextView txtFatLast;
|
||||
private TextView txtWaistLast;
|
||||
private TextView txtWHtRLast;
|
||||
private TextView txtHipLast;
|
||||
private TextView txtWHRLast;
|
||||
private Measurement measurementWeightLast;
|
||||
private Measurement measurementBMILast;
|
||||
private Measurement measurementWaterLast;
|
||||
private Measurement measurementMuscleLast;
|
||||
private Measurement measurementFatLast;
|
||||
private Measurement measurementWaistLast;
|
||||
private Measurement measurementWHtRLast;
|
||||
private Measurement measurementHipLast;
|
||||
private Measurement measurementWHRLast;
|
||||
|
||||
private TextView txtGoalWeight;
|
||||
private TextView txtGoalDiff;
|
||||
@@ -91,16 +92,6 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
|
||||
private TextView txtAvgWeek;
|
||||
private TextView txtAvgMonth;
|
||||
|
||||
private TextView txtLabelWeight;
|
||||
private TextView txtLabelBMI;
|
||||
private TextView txtLabelFat;
|
||||
private TextView txtLabelMuscle;
|
||||
private TextView txtLabelWater;
|
||||
private TextView txtLabelWaist;
|
||||
private TextView txtLabelWHtR;
|
||||
private TextView txtLabelHip;
|
||||
private TextView txtLabelWHR;
|
||||
|
||||
private TextView txtLabelGoalWeight;
|
||||
private TextView txtLabelGoalDiff;
|
||||
private TextView txtLabelDayLeft;
|
||||
@@ -113,16 +104,6 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
|
||||
|
||||
private Spinner spinUser;
|
||||
|
||||
private LinearGaugeView linearGaugeWeight;
|
||||
private LinearGaugeView linearGaugeBMI;
|
||||
private LinearGaugeView linearGaugeFat;
|
||||
private LinearGaugeView linearGaugeMuscle;
|
||||
private LinearGaugeView linearGaugeWater;
|
||||
private LinearGaugeView linearGaugeWaist;
|
||||
private LinearGaugeView linearGaugeWHtR;
|
||||
private LinearGaugeView linearGaugeHip;
|
||||
private LinearGaugeView linearGaugeWHR;
|
||||
|
||||
private SharedPreferences prefs;
|
||||
|
||||
private ScaleData lastScaleData;
|
||||
@@ -153,15 +134,15 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
|
||||
txtTitleGoal = (TextView) overviewView.findViewById(R.id.txtTitleGoal);
|
||||
txtTitleStatistics = (TextView) overviewView.findViewById(R.id.txtTitleStatistics);
|
||||
|
||||
txtWeightLast = (TextView) overviewView.findViewById(R.id.txtWeightLast);
|
||||
txtBMILast = (TextView) overviewView.findViewById(R.id.txtBMILast);
|
||||
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);
|
||||
txtWHtRLast = (TextView) overviewView.findViewById(R.id.txtWHtRLast);
|
||||
txtHipLast = (TextView) overviewView.findViewById(R.id.txtHipLast);
|
||||
txtWHRLast = (TextView) overviewView.findViewById(R.id.txtWHRLast);
|
||||
measurementWeightLast = new WeightMeasurement(overviewView);
|
||||
measurementBMILast = new BMIMeasurement(overviewView);
|
||||
measurementWaterLast = new WaterMeasurement(overviewView);
|
||||
measurementMuscleLast = new MuscleMeasurement(overviewView);
|
||||
measurementFatLast = new FatMeasurement(overviewView);
|
||||
measurementWaistLast = new WaistMeasurement(overviewView);
|
||||
measurementWHtRLast = new WHtRMeasurement(overviewView);
|
||||
measurementHipLast = new HipMeasurement(overviewView);
|
||||
measurementWHRLast = new WHRMeasurement(overviewView);
|
||||
|
||||
txtGoalWeight = (TextView) overviewView.findViewById(R.id.txtGoalWeight);
|
||||
txtGoalDiff = (TextView) overviewView.findViewById(R.id.txtGoalDiff);
|
||||
@@ -170,16 +151,6 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
|
||||
txtAvgWeek = (TextView) overviewView.findViewById(R.id.txtAvgWeek);
|
||||
txtAvgMonth = (TextView) overviewView.findViewById(R.id.txtAvgMonth);
|
||||
|
||||
txtLabelWeight = (TextView) overviewView.findViewById(R.id.txtLabelWeight);
|
||||
txtLabelBMI = (TextView) overviewView.findViewById(R.id.txtLabelBMI);
|
||||
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);
|
||||
txtLabelWHtR = (TextView) overviewView.findViewById(R.id.txtLabelWHtR);
|
||||
txtLabelHip = (TextView) overviewView.findViewById(R.id.txtLabelHip);
|
||||
txtLabelWHR = (TextView) overviewView.findViewById(R.id.txtLabelWHR);
|
||||
|
||||
txtLabelGoalWeight = (TextView) overviewView.findViewById(R.id.txtLabelGoalWeight);
|
||||
txtLabelGoalDiff = (TextView) overviewView.findViewById(R.id.txtLabelGoalDiff);
|
||||
txtLabelDayLeft = (TextView) overviewView.findViewById(R.id.txtLabelDayLeft);
|
||||
@@ -192,16 +163,6 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
|
||||
|
||||
spinUser = (Spinner) overviewView.findViewById(R.id.spinUser);
|
||||
|
||||
linearGaugeWeight = (LinearGaugeView) overviewView.findViewById(R.id.linearGaugeWeight);
|
||||
linearGaugeBMI = (LinearGaugeView) overviewView.findViewById(R.id.linearGaugeBMI);
|
||||
linearGaugeFat = (LinearGaugeView) overviewView.findViewById(R.id.linearGaugeFat);
|
||||
linearGaugeMuscle = (LinearGaugeView) overviewView.findViewById(R.id.linearGaugeMuscle);
|
||||
linearGaugeWater = (LinearGaugeView) overviewView.findViewById(R.id.linearGaugeWater);
|
||||
linearGaugeWaist = (LinearGaugeView) overviewView.findViewById(R.id.linearGaugeWaist);
|
||||
linearGaugeWHtR = (LinearGaugeView) overviewView.findViewById(R.id.linearGaugeWHtR);
|
||||
linearGaugeHip = (LinearGaugeView) overviewView.findViewById(R.id.linearGaugeHip);
|
||||
linearGaugeWHR = (LinearGaugeView) overviewView.findViewById(R.id.linearGaugeWHR);
|
||||
|
||||
lineChartLast.setOnValueTouchListener(new LineChartTouchListener());
|
||||
|
||||
pieChartLast.setOnValueTouchListener(new PieChartLastTouchListener());
|
||||
@@ -213,16 +174,6 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
|
||||
}
|
||||
});
|
||||
|
||||
overviewView.findViewById(R.id.tableRowWeight).setOnClickListener(new onClickListenerEvaluation());
|
||||
overviewView.findViewById(R.id.tableRowBMI).setOnClickListener(new onClickListenerEvaluation());
|
||||
overviewView.findViewById(R.id.tableRowFat).setOnClickListener(new onClickListenerEvaluation());
|
||||
overviewView.findViewById(R.id.tableRowMuscle).setOnClickListener(new onClickListenerEvaluation());
|
||||
overviewView.findViewById(R.id.tableRowWater).setOnClickListener(new onClickListenerEvaluation());
|
||||
overviewView.findViewById(R.id.tableRowWaist).setOnClickListener(new onClickListenerEvaluation());
|
||||
overviewView.findViewById(R.id.tableRowWHtR).setOnClickListener(new onClickListenerEvaluation());
|
||||
overviewView.findViewById(R.id.tableRowHip).setOnClickListener(new onClickListenerEvaluation());
|
||||
overviewView.findViewById(R.id.tableRowWHR).setOnClickListener(new onClickListenerEvaluation());
|
||||
|
||||
userSelectedData = null;
|
||||
|
||||
spinUserAdapter = new ArrayAdapter<>(overviewView.getContext(), R.layout.support_simple_spinner_dropdown_item, new ArrayList<String>());
|
||||
@@ -264,16 +215,25 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
|
||||
updateVisibleRows();
|
||||
updateLastPieChart();
|
||||
updateLastLineChart(scaleDataList);
|
||||
updateLastMeasurement();
|
||||
updateLastValues();
|
||||
updateGoal(scaleDataList);
|
||||
updateStatistics(scaleDataList);
|
||||
updateEvaluation();
|
||||
}
|
||||
|
||||
private void updateUserSelection() {
|
||||
|
||||
currentScaleUser = OpenScale.getInstance(overviewView.getContext()).getSelectedScaleUser();
|
||||
|
||||
measurementWeightLast.scaleUser = currentScaleUser;
|
||||
measurementBMILast.scaleUser = currentScaleUser;
|
||||
measurementWaterLast.scaleUser = currentScaleUser;
|
||||
measurementMuscleLast.scaleUser = currentScaleUser;
|
||||
measurementFatLast.scaleUser = currentScaleUser;
|
||||
measurementWaistLast.scaleUser = currentScaleUser;
|
||||
measurementWHtRLast.scaleUser = currentScaleUser;
|
||||
measurementHipLast.scaleUser = currentScaleUser;
|
||||
measurementWHRLast.scaleUser = currentScaleUser;
|
||||
|
||||
spinUserAdapter.clear();
|
||||
ArrayList<ScaleUser> scaleUserList = OpenScale.getInstance(overviewView.getContext()).getScaleUserList();
|
||||
|
||||
@@ -294,150 +254,31 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
|
||||
}
|
||||
|
||||
private void updateVisibleRows() {
|
||||
if(!prefs.getBoolean("fatEnable", true)) {
|
||||
TableRow row = (TableRow)overviewView.findViewById(R.id.tableRowFat);
|
||||
row.setVisibility(View.GONE);
|
||||
} else {
|
||||
TableRow row = (TableRow)overviewView.findViewById(R.id.tableRowFat);
|
||||
row.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
if(!prefs.getBoolean("muscleEnable", true)) {
|
||||
TableRow row = (TableRow)overviewView.findViewById(R.id.tableRowMuscle);
|
||||
row.setVisibility(View.GONE);
|
||||
} else {
|
||||
TableRow row = (TableRow)overviewView.findViewById(R.id.tableRowMuscle);
|
||||
row.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
if(!prefs.getBoolean("waterEnable", true)) {
|
||||
TableRow row = (TableRow)overviewView.findViewById(R.id.tableRowWater);
|
||||
row.setVisibility(View.GONE);
|
||||
} else {
|
||||
TableRow row = (TableRow)overviewView.findViewById(R.id.tableRowWater);
|
||||
row.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
if(!prefs.getBoolean("waistEnable", true)) {
|
||||
TableRow row = (TableRow)overviewView.findViewById(R.id.tableRowWaist);
|
||||
row.setVisibility(View.GONE);
|
||||
|
||||
row = (TableRow)overviewView.findViewById(R.id.tableRowWHtR);
|
||||
row.setVisibility(View.GONE);
|
||||
} else {
|
||||
TableRow row = (TableRow)overviewView.findViewById(R.id.tableRowWaist);
|
||||
row.setVisibility(View.VISIBLE);
|
||||
|
||||
row = (TableRow)overviewView.findViewById(R.id.tableRowWHtR);
|
||||
row.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
if(!prefs.getBoolean("hipEnable", true)) {
|
||||
TableRow row = (TableRow)overviewView.findViewById(R.id.tableRowHip);
|
||||
row.setVisibility(View.GONE);
|
||||
} else {
|
||||
TableRow row = (TableRow)overviewView.findViewById(R.id.tableRowHip);
|
||||
row.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
if(!prefs.getBoolean("hipEnable", true) || !prefs.getBoolean("waistEnable", true)) {
|
||||
TableRow row = (TableRow)overviewView.findViewById(R.id.tableRowWHR);
|
||||
row.setVisibility(View.GONE);
|
||||
} else {
|
||||
TableRow row = (TableRow)overviewView.findViewById(R.id.tableRowWHR);
|
||||
row.setVisibility(View.VISIBLE);
|
||||
}
|
||||
measurementWeightLast.updateVisibleRow(prefs);
|
||||
measurementBMILast.updateVisibleRow(prefs);
|
||||
measurementWaterLast.updateVisibleRow(prefs);
|
||||
measurementMuscleLast.updateVisibleRow(prefs);
|
||||
measurementHipLast.updateVisibleRow(prefs);
|
||||
measurementFatLast.updateVisibleRow(prefs);
|
||||
measurementWaistLast.updateVisibleRow(prefs);
|
||||
measurementWHRLast.updateVisibleRow(prefs);
|
||||
measurementWHtRLast.updateVisibleRow(prefs);
|
||||
}
|
||||
|
||||
private void updateEvaluation() {
|
||||
linearGaugeWeight.setMinMaxValue(30, 300);
|
||||
linearGaugeBMI.setMinMaxValue(10, 50);
|
||||
linearGaugeFat.setMinMaxValue(10, 40);
|
||||
linearGaugeMuscle.setMinMaxValue(10, 80);
|
||||
linearGaugeWater.setMinMaxValue(30, 80);
|
||||
linearGaugeWaist.setMinMaxValue(30, 200);
|
||||
linearGaugeWHtR.setMinMaxValue(0, 1);
|
||||
linearGaugeHip.setMinMaxValue(30, 200);
|
||||
linearGaugeWHR.setMinMaxValue(0, 1);
|
||||
|
||||
private void updateLastValues() {
|
||||
ScaleCalculator calculator = new ScaleCalculator();
|
||||
calculator.body_height = currentScaleUser.body_height;
|
||||
calculator.setScaleData(lastScaleData);
|
||||
|
||||
EvaluationSheet evalSheet = new EvaluationSheet(currentScaleUser);
|
||||
|
||||
EvaluationResult sheetWeight = evalSheet.evaluateWeight(lastScaleData.weight);
|
||||
EvaluationResult sheetBMI = evalSheet.evaluateBMI(calculator.getBMI());
|
||||
EvaluationResult sheetFat = evalSheet.evaluateBodyFat(lastScaleData.fat);
|
||||
EvaluationResult sheetMuscle = evalSheet.evaluateBodyMuscle(lastScaleData.muscle);
|
||||
EvaluationResult sheetWater = evalSheet.evaluateBodyWater(lastScaleData.water);
|
||||
EvaluationResult sheetWaist = evalSheet.evaluateWaist(lastScaleData.waist);
|
||||
EvaluationResult sheetWHtR = evalSheet.evaluateWHtR(calculator.getWHtR());
|
||||
EvaluationResult sheetWHR = evalSheet.evaluateWHR(calculator.getWHR());
|
||||
|
||||
updateIndicator((ImageView)overviewView.findViewById(R.id.indicatorWeight), sheetWeight.eval_state);
|
||||
updateIndicator((ImageView)overviewView.findViewById(R.id.indicatorBMI), sheetBMI.eval_state);
|
||||
updateIndicator((ImageView)overviewView.findViewById(R.id.indicatorFat), sheetFat.eval_state);
|
||||
updateIndicator((ImageView)overviewView.findViewById(R.id.indicatorMuscle), sheetMuscle.eval_state);
|
||||
updateIndicator((ImageView)overviewView.findViewById(R.id.indicatorWater), sheetWater.eval_state);
|
||||
updateIndicator((ImageView) overviewView.findViewById(R.id.indicatorWaist), sheetWaist.eval_state);
|
||||
updateIndicator((ImageView)overviewView.findViewById(R.id.indicatorWHtR), sheetWHtR.eval_state);
|
||||
updateIndicator((ImageView)overviewView.findViewById(R.id.indicatorHip), EvaluationResult.EVAL_STATE.UNDEFINED);
|
||||
updateIndicator((ImageView)overviewView.findViewById(R.id.indicatorWHR), sheetWHR.eval_state);
|
||||
|
||||
linearGaugeWeight.setLimits(sheetWeight.lowLimit, sheetWeight.highLimit);
|
||||
linearGaugeBMI.setLimits(sheetBMI.lowLimit, sheetBMI.highLimit);
|
||||
linearGaugeFat.setLimits(sheetFat.lowLimit, sheetFat.highLimit);
|
||||
linearGaugeMuscle.setLimits(sheetMuscle.lowLimit, sheetMuscle.highLimit);
|
||||
linearGaugeWater.setLimits(sheetWater.lowLimit, sheetWater.highLimit);
|
||||
linearGaugeWaist.setLimits(sheetWaist.lowLimit, sheetWaist.highLimit);
|
||||
linearGaugeWHtR.setLimits(sheetWHtR.lowLimit, sheetWHtR.highLimit);
|
||||
linearGaugeHip.setLimits(-1f, -1f);
|
||||
linearGaugeWHR.setLimits(sheetWHR.lowLimit, sheetWHR.highLimit);
|
||||
|
||||
linearGaugeWeight.setValue(lastScaleData.weight);
|
||||
linearGaugeBMI.setValue(calculator.getBMI());
|
||||
linearGaugeFat.setValue(lastScaleData.fat);
|
||||
linearGaugeMuscle.setValue(lastScaleData.muscle);
|
||||
linearGaugeWater.setValue(lastScaleData.water);
|
||||
linearGaugeWaist.setValue(lastScaleData.waist);
|
||||
linearGaugeWHtR.setValue(calculator.getWHtR());
|
||||
linearGaugeHip.setValue(lastScaleData.hip);
|
||||
linearGaugeWHR.setValue(calculator.getWHR());
|
||||
}
|
||||
|
||||
private void updateIndicator(ImageView view, EvaluationResult.EVAL_STATE state) {
|
||||
switch(state)
|
||||
{
|
||||
case LOW:
|
||||
view.setBackgroundColor(ChartUtils.COLOR_BLUE);
|
||||
break;
|
||||
case NORMAL:
|
||||
view.setBackgroundColor(ChartUtils.COLOR_GREEN);
|
||||
break;
|
||||
case HIGH:
|
||||
view.setBackgroundColor(ChartUtils.COLOR_RED);
|
||||
break;
|
||||
case UNDEFINED:
|
||||
view.setBackgroundColor(Color.GRAY);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void updateLastMeasurement() {
|
||||
ScaleCalculator calculator = new ScaleCalculator();
|
||||
calculator.body_height = currentScaleUser.body_height;
|
||||
calculator.setScaleData(lastScaleData);
|
||||
|
||||
txtWeightLast.setText(lastScaleData.weight + " " + ScaleUser.UNIT_STRING[currentScaleUser.scale_unit]);
|
||||
txtBMILast.setText(String.format("%.1f", calculator.getBMI()));
|
||||
txtFatLast.setText(lastScaleData.fat + " %");
|
||||
txtWaterLast.setText(lastScaleData.water + " %");
|
||||
txtMuscleLast.setText(lastScaleData.muscle + " %");
|
||||
txtWaistLast.setText(lastScaleData.waist + " cm");
|
||||
txtWHtRLast.setText(String.format("%.2f", calculator.getWHtR()));
|
||||
txtHipLast.setText(lastScaleData.hip + " cm");
|
||||
txtWHRLast.setText(String.format("%.2f", calculator.getWHR()));
|
||||
measurementWeightLast.updateValue(lastScaleData.weight);
|
||||
measurementBMILast.updateValue(calculator.getBMI());
|
||||
measurementFatLast.updateValue(lastScaleData.fat);
|
||||
measurementWaterLast.updateValue(lastScaleData.water);
|
||||
measurementMuscleLast.updateValue(lastScaleData.muscle);
|
||||
measurementWaistLast.updateValue(lastScaleData.waist);
|
||||
measurementWHtRLast.updateValue(calculator.getWHtR());
|
||||
measurementHipLast.updateValue(lastScaleData.hip);
|
||||
measurementWHRLast.updateValue(calculator.getWHR());
|
||||
}
|
||||
|
||||
private void updateGoal(ArrayList<ScaleData> scaleDataList) {
|
||||
@@ -505,69 +346,15 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
|
||||
diffScaleCalculator.body_height = currentScaleUser.body_height;
|
||||
diffScaleCalculator.setScaleData(diffScaleData);
|
||||
|
||||
ScaleDiff.setDiff(
|
||||
txtLabelWeight,
|
||||
lastScaleData.weight - diffScaleData.weight,
|
||||
getResources().getString(R.string.label_weight),
|
||||
"%.1f ",
|
||||
ScaleUser.UNIT_STRING[currentScaleUser.scale_unit]
|
||||
);
|
||||
ScaleDiff.setDiff(
|
||||
txtLabelBMI,
|
||||
lastScaleCalculator.getBMI() - diffScaleCalculator.getBMI(),
|
||||
getResources().getString(R.string.label_bmi),
|
||||
"%.1f ",
|
||||
""
|
||||
);
|
||||
ScaleDiff.setDiff(
|
||||
txtLabelFat,
|
||||
lastScaleData.fat - diffScaleData.fat,
|
||||
getResources().getString(R.string.label_fat),
|
||||
"%.1f ",
|
||||
"%"
|
||||
);
|
||||
ScaleDiff.setDiff(
|
||||
txtLabelMuscle,
|
||||
lastScaleData.muscle - diffScaleData.muscle,
|
||||
getResources().getString(R.string.label_muscle),
|
||||
"%.1f ",
|
||||
"%"
|
||||
);
|
||||
ScaleDiff.setDiff(
|
||||
txtLabelWater,
|
||||
lastScaleData.water - diffScaleData.water,
|
||||
getResources().getString(R.string.label_water),
|
||||
"%.1f ",
|
||||
"%"
|
||||
);
|
||||
ScaleDiff.setDiff(
|
||||
txtLabelWaist,
|
||||
lastScaleData.waist - diffScaleData.waist,
|
||||
getResources().getString(R.string.label_waist),
|
||||
"%.1f ",
|
||||
"cm"
|
||||
);
|
||||
ScaleDiff.setDiff(
|
||||
txtLabelWHtR,
|
||||
lastScaleCalculator.getWHtR() - diffScaleCalculator.getWHtR(),
|
||||
getResources().getString(R.string.label_whtr),
|
||||
"%.2f ",
|
||||
""
|
||||
);
|
||||
ScaleDiff.setDiff(
|
||||
txtLabelHip,
|
||||
lastScaleData.hip - diffScaleData.hip,
|
||||
getResources().getString(R.string.label_hip),
|
||||
"%.1f ",
|
||||
"cm"
|
||||
);
|
||||
ScaleDiff.setDiff(
|
||||
txtLabelWHR,
|
||||
lastScaleCalculator.getWHR() - diffScaleCalculator.getWHR(),
|
||||
getResources().getString(R.string.label_whr),
|
||||
"%.2f ",
|
||||
""
|
||||
);
|
||||
measurementWeightLast.setDiff(lastScaleData.weight, diffScaleData.weight);
|
||||
measurementBMILast.setDiff(lastScaleCalculator.getBMI(), diffScaleCalculator.getBMI());
|
||||
measurementMuscleLast.setDiff(lastScaleData.muscle, diffScaleData.muscle);
|
||||
measurementFatLast.setDiff(lastScaleData.fat, diffScaleData.fat);
|
||||
measurementWaterLast.setDiff(lastScaleData.water, diffScaleData.water);
|
||||
measurementWaistLast.setDiff(lastScaleData.waist, diffScaleData.waist);
|
||||
measurementWHtRLast.setDiff(lastScaleCalculator.getWHtR(), diffScaleCalculator.getWHtR());
|
||||
measurementHipLast.setDiff(lastScaleData.hip, diffScaleData.hip);
|
||||
measurementWHRLast.setDiff(lastScaleCalculator.getWHR(), diffScaleCalculator.getWHR());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -970,21 +757,4 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
|
||||
}
|
||||
}
|
||||
|
||||
private class onClickListenerEvaluation implements View.OnClickListener {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
TableRow row = (TableRow)v;
|
||||
|
||||
TableLayout tableLayout = (TableLayout)row.getParent();
|
||||
int index = tableLayout.indexOfChild(row);
|
||||
|
||||
TableRow rowEvaluation = (TableRow)tableLayout.getChildAt(index+1);
|
||||
|
||||
if (rowEvaluation.getVisibility() == View.VISIBLE) {
|
||||
rowEvaluation.setVisibility(View.GONE);
|
||||
} else {
|
||||
rowEvaluation.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -10,8 +10,7 @@ public class ScaleDiff {
|
||||
public static void setDiff(TextView txtLabel,
|
||||
double diff,
|
||||
String labelResource,
|
||||
String format,
|
||||
String unit) {
|
||||
String format) {
|
||||
|
||||
String symbol;
|
||||
|
||||
@@ -28,7 +27,6 @@ public class ScaleDiff {
|
||||
symbol +
|
||||
"<small> " +
|
||||
String.format(format, diff) +
|
||||
unit +
|
||||
"</small></font>"
|
||||
)
|
||||
);
|
||||
|
Reference in New Issue
Block a user