1
0
mirror of https://github.com/oliexdev/openScale.git synced 2025-08-22 16:23:09 +02:00

add hip circumference and waist circumference

This commit is contained in:
OliE
2015-08-09 10:59:25 +02:00
parent 474eba9fa9
commit cba60f9eaa
17 changed files with 446 additions and 43 deletions

View File

@@ -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);
}

View File

@@ -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;
}
}

View File

@@ -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);

View File

@@ -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();
}
}
}

View File

@@ -142,6 +142,8 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
List<PointValue> valuesFat = new ArrayList<PointValue>();
List<PointValue> valuesWater = new ArrayList<PointValue>();
List<PointValue> valuesMuscle = new ArrayList<PointValue>();
List<PointValue> valuesWaist = new ArrayList<PointValue>();
List<PointValue> valuesHip = new ArrayList<PointValue>();
List<Line> lines = new ArrayList<Line>();
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).

View File

@@ -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<String> 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<ScaleData> 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) + " <br> <font color='grey'>&#x2197;<small> " + String.format("%.1f ", diffWeight) + ScaleUser.UNIT_STRING[currentScaleUser.scale_unit] + "</small></font>"));
@@ -294,6 +318,16 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
txtLabelWater.setText(Html.fromHtml(getResources().getString(R.string.label_water) + " <br> <font color='grey'>&#x2197;<small> " + String.format("%.1f", diffWater) + "%</small></font>"));
else
txtLabelWater.setText(Html.fromHtml(getResources().getString(R.string.label_water) + " <br> <font color='grey'>&#x2198;<small> " + String.format("%.1f", diffWater) + "%</small></font>"));
if (diffWaist > 0.0)
txtLabelWaist.setText(Html.fromHtml(getResources().getString(R.string.label_waist) + " <br> <font color='grey'>&#x2197;<small> " + String.format("%.1f", diffWaist) + "%</small></font>"));
else
txtLabelWaist.setText(Html.fromHtml(getResources().getString(R.string.label_waist) + " <br> <font color='grey'>&#x2198;<small> " + String.format("%.1f", diffWaist) + "%</small></font>"));
if (diffHip > 0.0)
txtLabelHip.setText(Html.fromHtml(getResources().getString(R.string.label_hip) + " <br> <font color='grey'>&#x2197;<small> " + String.format("%.1f", diffHip) + "%</small></font>"));
else
txtLabelHip.setText(Html.fromHtml(getResources().getString(R.string.label_hip) + " <br> <font color='grey'>&#x2198;<small> " + String.format("%.1f", diffHip) + "%</small></font>"));
}
}
@@ -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) + " <br> <font color='grey'><small> " + 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) + "</small></font>"));
txtLabelAvgMonth.setText(Html.fromHtml(getResources().getString(R.string.label_last_month) + " <br> <font color='grey'><small> " + 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) + "</small></font>"));
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] + "<br>", weekAvgWeight);
info_month += String.format("Ø-"+getResources().getString(R.string.label_weight)+": %.1f" + ScaleUser.UNIT_STRING[currentScaleUser.scale_unit] + "<br>", monthAvgWeight);
lines++;
info_week += String.format("Ø-"+getResources().getString(R.string.label_bmi)+": %.1f <br>", weekAvgBMI);
info_month += String.format("Ø-"+getResources().getString(R.string.label_bmi)+": %.1f <br>", monthAvgBMI);
lines++;
if(prefs.getBoolean("fatEnable", true)) {
info_week += String.format("Ø-"+getResources().getString(R.string.label_fat)+": %.1f%% <br>", weekAvgFat);
info_month += String.format("Ø-"+getResources().getString(R.string.label_fat)+": %.1f%% <br>", monthAvgFat);
lines++;
}
if(prefs.getBoolean("muscleEnable", true)) {
info_week += String.format("Ø-"+getResources().getString(R.string.label_muscle)+": %.1f%% <br>", weekAvgWater);
info_month += String.format("Ø-"+getResources().getString(R.string.label_muscle)+": %.1f%% <br>", monthAvgWater);
lines++;
}
if(prefs.getBoolean("waterEnable", true)) {
info_week += String.format("Ø-"+getResources().getString(R.string.label_water)+": %.1f%% <br>", weekAvgMuscle);
info_month += String.format("Ø-"+getResources().getString(R.string.label_water)+": %.1f%% <br>", monthAvgMuscle);
lines++;
}
if(prefs.getBoolean("waistEnable", true)) {
info_week += String.format("Ø-"+getResources().getString(R.string.label_waist)+": %.1f%% <br>", weekAvgWaist);
info_month += String.format("Ø-"+getResources().getString(R.string.label_waist)+": %.1f%% <br>", monthAvgWaist);
lines++;
}
if(prefs.getBoolean("hipEnable", true)) {
info_week += String.format("Ø-"+getResources().getString(R.string.label_hip)+": %.1f%% <br>", weekAvgHip);
info_month += String.format("Ø-"+getResources().getString(R.string.label_hip)+": %.1f%% <br>",monthAvgHip);
lines++;
}
txtLabelAvgWeek.setLines(lines);
txtLabelAvgMonth.setLines(lines);
txtLabelAvgWeek.setText(Html.fromHtml(getResources().getString(R.string.label_last_week) + " <br> <font color='grey'><small> " + info_week + "</small></font>"));
txtLabelAvgMonth.setText(Html.fromHtml(getResources().getString(R.string.label_last_month) + " <br> <font color='grey'><small> " + info_month + "</small></font>"));
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<PointValue> valuesFat = new ArrayList<PointValue>();
List<PointValue> valuesWater = new ArrayList<PointValue>();
List<PointValue> valuesMuscle = new ArrayList<PointValue>();
List<PointValue> valuesWaist = new ArrayList<PointValue>();
List<PointValue> valuesHip = new ArrayList<PointValue>();
List<Line> lines = new ArrayList<Line>();
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<lines>();
@@ -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);

View File

@@ -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);
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -193,7 +193,69 @@
</TableRow>
<TableRow
<TableRow
android:id="@+id/tableRowWaist"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<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" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_waist"
android:layout_column="1" />
<EditText
android:id="@+id/txtWaist"
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" />
</TableRow>
<TableRow
android:id="@+id/tableRowHip"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<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" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_hip"
android:layout_column="1" />
<EditText
android:id="@+id/txtHip"
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" />
</TableRow>
<TableRow
android:id="@+id/tableRowComment"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >

View File

@@ -290,6 +290,86 @@
android:layout_marginRight="20dp" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:id="@+id/tableRowWaist"
android:layout_marginBottom="10dp">
<ImageView
android:layout_width="match_parent"
android:layout_height="40dp"
android:id="@+id/imageView45"
android:src="@drawable/waist"
android:layout_gravity="center" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Waist"
android:id="@+id/txtLabelWaist"
android:layout_column="1"
android:textAlignment="center"
android:singleLine="false"
android:layout_marginLeft="20dp"
android:password="false"
android:phoneNumber="false"
android:lines="2"
android:layout_marginRight="50dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="-1 %"
android:id="@+id/txtWaistLast"
android:layout_column="2"
android:layout_gravity="center_vertical"
android:layout_marginRight="20dp" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:id="@+id/tableRowHip"
android:layout_marginBottom="10dp">
<ImageView
android:layout_width="match_parent"
android:layout_height="40dp"
android:id="@+id/imageView16"
android:src="@drawable/hip"
android:layout_gravity="center" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Hip"
android:id="@+id/txtLabelHip"
android:layout_column="1"
android:textAlignment="center"
android:singleLine="false"
android:layout_marginLeft="20dp"
android:password="false"
android:phoneNumber="false"
android:lines="2"
android:layout_marginRight="50dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="-1 %"
android:id="@+id/txtHipLast"
android:layout_column="2"
android:layout_gravity="center_vertical"
android:layout_marginRight="20dp" />
</TableRow>
</TableLayout>
<TextView

View File

@@ -75,6 +75,20 @@
android:textStyle="bold"
android:id="@+id/txtMuscleTableHeader" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_waist"
android:textStyle="bold"
android:id="@+id/txtWaistTableHeader" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_hip"
android:textStyle="bold"
android:id="@+id/txtHipTableHeader" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"

View File

@@ -12,6 +12,8 @@
<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_bluetooth_not_established">Bluetooth Verbindung konnte nicht hergestellt werden</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>
@@ -22,7 +24,7 @@
<string name="info_enter_comment">Gebe ein optionalen Kommentar ein</string>
<string name="info_enter_goal_weight">Gebe dein Gewicht in deiner Einheit an</string>
<string name="info_enter_user_name">Gebe dein Namen ein</string>
<string name="info_enter_value_cm">Gebe deine Körpergröße in cm an</string>
<string name="info_enter_value_cm">Gebe dein Wert in cm an</string>
<string name="info_enter_value_percent">Gebe dein Wert in % an</string>
<string name="info_enter_value_unit">Gebe dein Wert an in</string>
<string name="info_is_not_visible">ist nicht sichtbar</string>
@@ -48,11 +50,7 @@
<string name="label_delete">Löschen</string>
<string name="label_delete_all">Alles löschen</string>
<string name="label_device_name">Gerätename</string>
<string name="label_enable_fat">Körperfettanteil</string>
<string name="label_enable_labels">Notiz auf den Datenpunkten</string>
<string name="label_enable_muscle">Muskelanteil</string>
<string name="label_enable_water">Wassergehalt</string>
<string name="label_enable_weight">Gewicht</string>
<string name="label_export">Exportieren</string>
<string name="label_fat">Körperfettanteil</string>
<string name="label_gender">Geschlecht</string>
@@ -91,4 +89,6 @@
<string name="title_data">Daten</string>
<string name="info_is_not_enable">ist ausgeschaltet</string>
<string name="info_is_enable">ist eingeschaltet</string>
<string name="label_waist">Bauchumfang</string>
<string name="label_hip">Hüftumfang</string>
</resources>

View File

@@ -41,10 +41,6 @@
<string name="label_measures">計測</string>
<string name="label_title_last_measurement">最終の計測</string>
<string name="label_goal_date_is">目標期日は</string>
<string name="label_enable_muscle">筋肉率</string>
<string name="label_enable_water">体内の水分</string>
<string name="label_enable_weight">体重</string>
<string name="label_enable_fat">体脂肪</string>
<string name="label_delete_all">全てデリート</string>
<string name="label_bluetooth_enable">Bluetoothの体重計を探索する</string>
<string name="label_last_month">過去30日</string>
@@ -82,7 +78,7 @@
<string name="info_enter_user_name">あなたの名前を入力してください</string>
<string name="info_enter_goal_weight">あなたの体重をあなたの単位で入力してください</string>
<string name="info_enter_comment">任意でコメントを入力してください</string>
<string name="info_enter_value_cm">あなたの身長をcmで入力してください</string>
<string name="info_enter_value_cm">あなたのをcmで入力してください</string>
<string name="info_enter_value_percent">あなたの値を%で入力してください</string>
<string name="info_enter_value_unit">あなたの値を入力してください</string>
<string name="question_really_delete_all">あなたは本当にすべてのレコードを削除しますか</string>
@@ -91,4 +87,8 @@
<string name="title_data">データ</string>
<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>
</resources>

View File

@@ -24,6 +24,8 @@
<string name="label_fat">Body fat percentage</string>
<string name="label_water">Water percentage</string>
<string name="label_muscle">Muscle percentage</string>
<string name="label_waist">Waist circumference</string>
<string name="label_hip">Hip circumference</string>
<string name="label_comment">Comment</string>
<string name="label_days">days</string>
@@ -67,12 +69,15 @@
<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>
<string name="info_data_all_deleted">All database entries deleted</string>
<string name="info_data_exported">Data exported to</string>
<string name="info_data_imported">Data imported from</string>
<string name="info_set_filename">Set filename to</string>
<string name="info_enter_value_cm">Enter value in cm</string>
<string name="info_enter_value_percent">Enter value in %</string>
<string name="info_enter_value_unit">Enter value in</string>
<string name="info_enter_comment">Enter an optional comment</string>
@@ -84,7 +89,6 @@
<string name="info_delete_bluetooth_data">Clear all Bluetooth data</string>
<string name="info_delete_bluetooth_data_success">Bluetooth data was successful cleared</string>
<string name="info_bluetooth_not_established">Bluetooth connection not established</string>
<string name="info_enter_value_cm">Enter your height in cm</string>
<string name="info_enter_user_name">Enter your name</string>
<string name="info_no_selected_user">No user exist! Please create a new user in the settings</string>
@@ -96,10 +100,6 @@
<string name="label_device_name">Device Name</string>
<string name="label_enable_labels">Label on data point</string>
<string name="label_enable_weight">Weight </string>
<string name="label_enable_fat">Body fat percentage </string>
<string name="label_enable_water">Water percentage </string>
<string name="label_enable_muscle">Muscle percentage </string>
<string name="info_your_weight">Your weight was</string>
<string name="info_your_fat">Your body fat was</string>

View File

@@ -15,10 +15,12 @@
</PreferenceCategory>
<PreferenceCategory android:title="@string/title_data">
<CheckBoxPreference android:title="@string/label_enable_weight" android:summaryOn="@string/info_is_enable" android:summaryOff="@string/info_is_not_enable" android:key="weightEnable" android:defaultValue="true"/>
<CheckBoxPreference android:title="@string/label_enable_fat" android:summaryOn="@string/info_is_enable" android:summaryOff="@string/info_is_not_enable" android:key="fatEnable" android:defaultValue="true"/>
<CheckBoxPreference android:title="@string/label_enable_water" android:summaryOn="@string/info_is_enable" android:summaryOff="@string/info_is_not_enable" android:key="waterEnable" android:defaultValue="true"/>
<CheckBoxPreference android:title="@string/label_enable_muscle" android:summaryOn="@string/info_is_enable" android:summaryOff="@string/info_is_not_enable" android:key="muscleEnable" android:defaultValue="true"/>
<CheckBoxPreference android:title="@string/label_weight" android:summaryOn="@string/info_is_enable" android:summaryOff="@string/info_is_not_enable" android:key="weightEnable" android:defaultValue="true"/>
<CheckBoxPreference android:title="@string/label_fat" android:summaryOn="@string/info_is_enable" android:summaryOff="@string/info_is_not_enable" android:key="fatEnable" android:defaultValue="true"/>
<CheckBoxPreference android:title="@string/label_water" android:summaryOn="@string/info_is_enable" android:summaryOff="@string/info_is_not_enable" android:key="waterEnable" android:defaultValue="true"/>
<CheckBoxPreference android:title="@string/label_muscle" android:summaryOn="@string/info_is_enable" android:summaryOff="@string/info_is_not_enable" android:key="muscleEnable" android:defaultValue="true"/>
<CheckBoxPreference android:title="@string/label_waist" android:summaryOn="@string/info_is_enable" android:summaryOff="@string/info_is_not_enable" android:key="waistEnable" android:defaultValue="false"/>
<CheckBoxPreference android:title="@string/label_hip" android:summaryOn="@string/info_is_enable" android:summaryOff="@string/info_is_not_enable" android:key="hipEnable" android:defaultValue="false"/>
</PreferenceCategory>
</PreferenceScreen>