mirror of
https://github.com/oliexdev/openScale.git
synced 2025-08-13 12:14:19 +02:00
add an optional comment field for every data entry
This commit is contained in:
@@ -23,8 +23,8 @@
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity android:name="com.health.openscale.gui.SettingsActivity"></activity>
|
||||
<activity android:name="com.health.openscale.gui.NewEntryActivity" android:theme="@android:style/Theme.Holo.Dialog" android:label="@string/title_new_data_entry"></activity>
|
||||
<activity android:name="com.health.openscale.gui.EditDataActivity" android:theme="@android:style/Theme.Holo.Dialog" android:label="@string/title_edit_data_entry"></activity>
|
||||
<activity android:name="com.health.openscale.gui.NewEntryActivity" android:theme="@android:style/Theme.Holo.Light.Dialog" android:label="@string/title_new_data_entry"></activity>
|
||||
<activity android:name="com.health.openscale.gui.EditDataActivity" android:theme="@android:style/Theme.Holo.Light.Dialog" android:label="@string/title_edit_data_entry"></activity>
|
||||
<activity android:name=".gui.UserSettingsActivity" android:theme="@android:style/Theme.Holo.Dialog" android:label="@string/title_user"></activity>
|
||||
</application>
|
||||
|
||||
|
@@ -155,7 +155,7 @@ public class OpenScale {
|
||||
}
|
||||
|
||||
public void addScaleData(int user_id, String date_time, float weight, float fat,
|
||||
float water, float muscle) {
|
||||
float water, float muscle, String comment) {
|
||||
ScaleData scaleData = new ScaleData();
|
||||
|
||||
try {
|
||||
@@ -165,6 +165,7 @@ public class OpenScale {
|
||||
scaleData.fat = fat;
|
||||
scaleData.water = water;
|
||||
scaleData.muscle = muscle;
|
||||
scaleData.comment = comment;
|
||||
} catch (ParseException e) {
|
||||
Log.e("OpenScale", "Can't parse date time string while adding to the database");
|
||||
}
|
||||
@@ -174,13 +175,14 @@ public class OpenScale {
|
||||
updateScaleData();
|
||||
}
|
||||
|
||||
public void updateScaleData(long id, float weight, float fat, float water, float muscle) {
|
||||
public void updateScaleData(long id, float weight, float fat, float water, float muscle, String comment) {
|
||||
ScaleData scaleData = new ScaleData();
|
||||
|
||||
scaleData.weight = weight;
|
||||
scaleData.fat = fat;
|
||||
scaleData.water = water;
|
||||
scaleData.muscle = muscle;
|
||||
scaleData.comment = comment;
|
||||
|
||||
scaleDB.updateEntry(id, scaleData);
|
||||
|
||||
@@ -215,6 +217,7 @@ 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.user_id = getSelectedScaleUser().id;
|
||||
|
||||
@@ -246,7 +249,8 @@ public class OpenScale {
|
||||
csvWriter.append(Float.toString(scaleData.weight) + ",");
|
||||
csvWriter.append(Float.toString(scaleData.fat) + ",");
|
||||
csvWriter.append(Float.toString(scaleData.water) + ",");
|
||||
csvWriter.append(Float.toString(scaleData.muscle));
|
||||
csvWriter.append(Float.toString(scaleData.muscle) + ",");
|
||||
csvWriter.append(scaleData.comment);
|
||||
csvWriter.append("\n");
|
||||
}
|
||||
|
||||
|
@@ -26,10 +26,11 @@ public class ScaleData {
|
||||
public float fat;
|
||||
public float water;
|
||||
public float muscle;
|
||||
public String comment;
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "ID : " + id + " USER_ID: " + user_id + " DATE_TIME: " + date_time.toString() + " WEIGHT: " + weight + " FAT: " + fat + " WATER: " + water + " MUSCLE: " + muscle;
|
||||
return "ID : " + id + " USER_ID: " + user_id + " DATE_TIME: " + date_time.toString() + " WEIGHT: " + weight + " FAT: " + fat + " WATER: " + water + " MUSCLE: " + muscle + " COMMENT: " + comment;
|
||||
}
|
||||
}
|
||||
|
@@ -31,7 +31,7 @@ import java.util.Calendar;
|
||||
import java.util.Locale;
|
||||
|
||||
public class ScaleDatabase extends SQLiteOpenHelper {
|
||||
private static final int DATABASE_VERSION = 1;
|
||||
private static final int DATABASE_VERSION = 2;
|
||||
private static final String DATABASE_NAME = "openScaleDatabase.db";
|
||||
|
||||
private static final String TABLE_NAME = "scaledata";
|
||||
@@ -42,6 +42,7 @@ 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_COMMENT = "comment";
|
||||
|
||||
private static final String SQL_CREATE_ENTRIES =
|
||||
"CREATE TABLE " + TABLE_NAME + " (" +
|
||||
@@ -51,7 +52,8 @@ public class ScaleDatabase extends SQLiteOpenHelper {
|
||||
COLUMN_NAME_WEIGHT + " REAL," +
|
||||
COLUMN_NAME_FAT + " REAL," +
|
||||
COLUMN_NAME_WATER + " REAL," +
|
||||
COLUMN_NAME_MUSCLE + " REAL" +
|
||||
COLUMN_NAME_MUSCLE + " REAL," +
|
||||
COLUMN_NAME_COMMENT + " TEXT" +
|
||||
")";
|
||||
|
||||
private static final String SQL_DELETE_ENTRIES =
|
||||
@@ -70,8 +72,9 @@ public class ScaleDatabase extends SQLiteOpenHelper {
|
||||
|
||||
@Override
|
||||
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
|
||||
db.execSQL(SQL_DELETE_ENTRIES);
|
||||
onCreate(db);
|
||||
if (oldVersion == 1 && newVersion == 2) {
|
||||
db.execSQL("ALTER TABLE " + TABLE_NAME + " ADD COLUMN " + COLUMN_NAME_COMMENT + " TEXT DEFAULT ''");
|
||||
}
|
||||
}
|
||||
|
||||
public void clearScaleData(int userId) {
|
||||
@@ -97,6 +100,7 @@ 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_COMMENT, scaleData.comment);
|
||||
|
||||
try
|
||||
{
|
||||
@@ -120,6 +124,7 @@ 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_COMMENT, scaleData.comment);
|
||||
|
||||
db.update(TABLE_NAME, values, COLUMN_NAME_ID + "=" + id, null);
|
||||
}
|
||||
@@ -136,7 +141,8 @@ public class ScaleDatabase extends SQLiteOpenHelper {
|
||||
COLUMN_NAME_WEIGHT,
|
||||
COLUMN_NAME_FAT,
|
||||
COLUMN_NAME_WATER,
|
||||
COLUMN_NAME_MUSCLE
|
||||
COLUMN_NAME_MUSCLE,
|
||||
COLUMN_NAME_COMMENT
|
||||
};
|
||||
|
||||
Cursor cursorScaleDB = db.query(
|
||||
@@ -159,6 +165,7 @@ public class ScaleDatabase extends SQLiteOpenHelper {
|
||||
scaleData.fat = cursorScaleDB.getFloat(cursorScaleDB.getColumnIndexOrThrow(COLUMN_NAME_FAT));
|
||||
scaleData.water = cursorScaleDB.getFloat(cursorScaleDB.getColumnIndexOrThrow(COLUMN_NAME_WATER));
|
||||
scaleData.muscle = cursorScaleDB.getFloat(cursorScaleDB.getColumnIndexOrThrow(COLUMN_NAME_MUSCLE));
|
||||
scaleData.comment = cursorScaleDB.getString(cursorScaleDB.getColumnIndexOrThrow(COLUMN_NAME_COMMENT));
|
||||
|
||||
scaleData.date_time = formatDateTime.parse(date_time);
|
||||
|
||||
@@ -265,7 +272,8 @@ public class ScaleDatabase extends SQLiteOpenHelper {
|
||||
COLUMN_NAME_WEIGHT,
|
||||
COLUMN_NAME_FAT,
|
||||
COLUMN_NAME_WATER,
|
||||
COLUMN_NAME_MUSCLE
|
||||
COLUMN_NAME_MUSCLE,
|
||||
COLUMN_NAME_COMMENT
|
||||
};
|
||||
|
||||
String sortOrder = COLUMN_NAME_DATE_TIME + " DESC";
|
||||
@@ -300,6 +308,7 @@ public class ScaleDatabase extends SQLiteOpenHelper {
|
||||
scaleData.fat = cursorScaleDB.getFloat(cursorScaleDB.getColumnIndexOrThrow(COLUMN_NAME_FAT));
|
||||
scaleData.water = cursorScaleDB.getFloat(cursorScaleDB.getColumnIndexOrThrow(COLUMN_NAME_WATER));
|
||||
scaleData.muscle = cursorScaleDB.getFloat(cursorScaleDB.getColumnIndexOrThrow(COLUMN_NAME_MUSCLE));
|
||||
scaleData.comment = cursorScaleDB.getString(cursorScaleDB.getColumnIndexOrThrow(COLUMN_NAME_COMMENT));
|
||||
|
||||
scaleData.date_time = formatDateTime.parse(date_time);
|
||||
|
||||
@@ -328,7 +337,8 @@ public class ScaleDatabase extends SQLiteOpenHelper {
|
||||
COLUMN_NAME_WEIGHT,
|
||||
COLUMN_NAME_FAT,
|
||||
COLUMN_NAME_WATER,
|
||||
COLUMN_NAME_MUSCLE
|
||||
COLUMN_NAME_MUSCLE,
|
||||
COLUMN_NAME_COMMENT
|
||||
};
|
||||
|
||||
String sortOrder = COLUMN_NAME_DATE_TIME + " DESC";
|
||||
@@ -356,6 +366,7 @@ public class ScaleDatabase extends SQLiteOpenHelper {
|
||||
scaleData.fat = cursorScaleDB.getFloat(cursorScaleDB.getColumnIndexOrThrow(COLUMN_NAME_FAT));
|
||||
scaleData.water = cursorScaleDB.getFloat(cursorScaleDB.getColumnIndexOrThrow(COLUMN_NAME_WATER));
|
||||
scaleData.muscle = cursorScaleDB.getFloat(cursorScaleDB.getColumnIndexOrThrow(COLUMN_NAME_MUSCLE));
|
||||
scaleData.comment = cursorScaleDB.getString(cursorScaleDB.getColumnIndexOrThrow(COLUMN_NAME_COMMENT));
|
||||
|
||||
scaleData.date_time = formatDateTime.parse(date_time);
|
||||
|
||||
|
@@ -34,6 +34,7 @@ public class EditDataActivity extends Activity {
|
||||
private EditText txtFat;
|
||||
private EditText txtWater;
|
||||
private EditText txtMuscle;
|
||||
private EditText txtComment;
|
||||
|
||||
private Button btnOk;
|
||||
private Button btnCancel;
|
||||
@@ -53,6 +54,7 @@ public class EditDataActivity extends Activity {
|
||||
txtFat = (EditText) findViewById(R.id.txtFat);
|
||||
txtWater = (EditText) findViewById(R.id.txtWater);
|
||||
txtMuscle = (EditText) findViewById(R.id.txtMuscle);
|
||||
txtComment = (EditText) findViewById(R.id.txtComment);
|
||||
|
||||
btnOk = (Button)findViewById(R.id.btnOk);
|
||||
btnCancel = (Button)findViewById(R.id.btnCancel);
|
||||
@@ -70,27 +72,91 @@ public class EditDataActivity extends Activity {
|
||||
txtFat.setText(editScaleData.fat+"");
|
||||
txtWater.setText(editScaleData.water+"");
|
||||
txtMuscle.setText(editScaleData.muscle+"");
|
||||
txtComment.setText(editScaleData.comment);
|
||||
|
||||
setTitle(getResources().getString(R.string.title_edit_data_entry) + ": " + new SimpleDateFormat("dd. MMM yyyy (EE) HH:mm").format(editScaleData.date_time));
|
||||
|
||||
}
|
||||
|
||||
private boolean validateInput()
|
||||
{
|
||||
boolean validate = true;
|
||||
|
||||
if( txtWeight.getText().toString().length() == 0 )
|
||||
{
|
||||
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) )
|
||||
{
|
||||
txtWeight.setError(getResources().getString(R.string.error_value_range_0_300));
|
||||
validate = false;
|
||||
}
|
||||
|
||||
if( txtFat.getText().toString().length() == 0 )
|
||||
{
|
||||
txtFat.setError(getResources().getString(R.string.error_fat_value_required));
|
||||
validate = false;
|
||||
} else if(!isInRange(txtFat.getText().toString()))
|
||||
{
|
||||
txtFat.setError(getResources().getString(R.string.error_value_range_0_100));
|
||||
validate = false;
|
||||
}
|
||||
|
||||
|
||||
if( txtWater.getText().toString().length() == 0 )
|
||||
{
|
||||
txtWater.setError(getResources().getString(R.string.error_water_value_required));
|
||||
validate = false;
|
||||
} else if(!isInRange(txtWater.getText().toString()))
|
||||
{
|
||||
txtWater.setError(getResources().getString(R.string.error_value_range_0_100));
|
||||
validate = false;
|
||||
}
|
||||
|
||||
if( txtMuscle.getText().toString().length() == 0 )
|
||||
{
|
||||
txtMuscle.setError(getResources().getString(R.string.error_muscle_value_required));
|
||||
validate = false;
|
||||
} else if(!isInRange(txtMuscle.getText().toString()))
|
||||
{
|
||||
txtMuscle.setError(getResources().getString(R.string.error_value_range_0_100));
|
||||
validate = false;
|
||||
}
|
||||
|
||||
return validate;
|
||||
}
|
||||
|
||||
private boolean isInRange(String value)
|
||||
{
|
||||
if (value.length() == 0)
|
||||
return false;
|
||||
|
||||
float val = Float.valueOf(value);
|
||||
|
||||
if (val >= 0 && val <= 100)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private class onClickListenerOk implements View.OnClickListener {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (validateInput()) {
|
||||
float weight = Float.valueOf(txtWeight.getText().toString());
|
||||
float fat = Float.valueOf(txtFat.getText().toString());
|
||||
float water = Float.valueOf(txtWater.getText().toString());
|
||||
float muscle = Float.valueOf(txtMuscle.getText().toString());
|
||||
String comment = txtComment.getText().toString();
|
||||
|
||||
OpenScale openScale = OpenScale.getInstance(context);
|
||||
|
||||
openScale.updateScaleData(id, weight, fat, water, muscle);
|
||||
openScale.updateScaleData(id, weight, fat, water, muscle, comment);
|
||||
|
||||
finish();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class onClickListenerCancel implements View.OnClickListener {
|
||||
@Override
|
||||
|
@@ -17,6 +17,7 @@
|
||||
package com.health.openscale.gui;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.ActivityInfo;
|
||||
import android.graphics.Color;
|
||||
@@ -27,12 +28,10 @@ import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.health.openscale.R;
|
||||
import com.health.openscale.core.OpenScale;
|
||||
import com.health.openscale.core.ScaleData;
|
||||
import com.health.openscale.core.ScaleUser;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
@@ -72,9 +71,6 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
|
||||
|
||||
private ArrayList<ScaleData> scaleDataList;
|
||||
|
||||
private enum lines {WEIGHT, FAT, WATER, MUSCLE}
|
||||
private ArrayList<lines> activeLines;
|
||||
|
||||
public GraphFragment() {
|
||||
calYears = Calendar.getInstance();
|
||||
calLastSelected = Calendar.getInstance();
|
||||
@@ -180,26 +176,21 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
|
||||
setHasLabels(prefs.getBoolean("labelsEnable", true)).
|
||||
setFormatter(new SimpleLineChartValueFormatter(1));
|
||||
|
||||
activeLines = new ArrayList<lines>();
|
||||
|
||||
if(prefs.getBoolean("weightEnable", true)) {
|
||||
lines.add(lineWeight);
|
||||
activeLines.add(GraphFragment.lines.WEIGHT);
|
||||
}
|
||||
|
||||
if(prefs.getBoolean("fatEnable", true)) {
|
||||
lines.add(lineFat);
|
||||
activeLines.add(GraphFragment.lines.FAT);
|
||||
}
|
||||
|
||||
if(prefs.getBoolean("waterEnable", true)) {
|
||||
lines.add(lineWater);
|
||||
activeLines.add(GraphFragment.lines.WATER);
|
||||
}
|
||||
|
||||
if(prefs.getBoolean("muscleEnable", true)) {
|
||||
lines.add(lineMuscle);
|
||||
activeLines.add(GraphFragment.lines.MUSCLE);
|
||||
}
|
||||
|
||||
LineChartData lineData = new LineChartData(lines);
|
||||
@@ -291,24 +282,12 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
|
||||
@Override
|
||||
public void onValueSelected(int lineIndex, int pointIndex, PointValue pointValue) {
|
||||
ScaleData scaleData = scaleDataList.get(pointIndex);
|
||||
lines selectedLine = activeLines.get(lineIndex);
|
||||
|
||||
String date_time = new SimpleDateFormat("dd. MMM yyyy (EE) HH:mm").format(scaleData.date_time);
|
||||
long id = scaleData.id;
|
||||
|
||||
switch (selectedLine) {
|
||||
case WEIGHT:
|
||||
Toast.makeText(getActivity(), getResources().getString(R.string.info_your_weight) + " " + scaleData.weight + ScaleUser.UNIT_STRING[OpenScale.getInstance(graphView.getContext()).getSelectedScaleUser().scale_unit] + " " + getResources().getString(R.string.info_on_date) + " " + date_time, Toast.LENGTH_SHORT).show();
|
||||
break;
|
||||
case FAT:
|
||||
Toast.makeText(getActivity(), getResources().getString(R.string.info_your_fat) + " " + scaleData.fat + "% " + getResources().getString(R.string.info_on_date) + " " + date_time, Toast.LENGTH_SHORT).show();
|
||||
break;
|
||||
case WATER:
|
||||
Toast.makeText(getActivity(), getResources().getString(R.string.info_your_water) + " " + scaleData.water + "% " + getResources().getString(R.string.info_on_date) + " " + date_time, Toast.LENGTH_SHORT).show();
|
||||
break;
|
||||
case MUSCLE:
|
||||
Toast.makeText(getActivity(), getResources().getString(R.string.info_your_muscle) + " " + scaleData.muscle + "% " + getResources().getString(R.string.info_on_date) + " " + date_time, Toast.LENGTH_SHORT).show();
|
||||
break;
|
||||
}
|
||||
Intent intent = new Intent(graphView.getContext(), EditDataActivity.class);
|
||||
intent.putExtra("id", id);
|
||||
startActivityForResult(intent, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -46,6 +46,7 @@ public class NewEntryActivity extends Activity {
|
||||
private EditText txtMuscle;
|
||||
private EditText txtDate;
|
||||
private EditText txtTime;
|
||||
private EditText txtComment;
|
||||
|
||||
private SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
|
||||
private SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm");
|
||||
@@ -65,6 +66,7 @@ public class NewEntryActivity extends Activity {
|
||||
txtMuscle = (EditText) findViewById(R.id.txtMuscle);
|
||||
txtDate = (EditText) findViewById(R.id.txtDate);
|
||||
txtTime = (EditText) findViewById(R.id.txtTime);
|
||||
txtComment = (EditText) findViewById(R.id.txtComment);
|
||||
Button btnDateSet = (Button) findViewById(R.id.btnDateSet);
|
||||
Button btnTimeSet = (Button) findViewById(R.id.btnTimeSet);
|
||||
|
||||
@@ -192,11 +194,12 @@ public class NewEntryActivity extends Activity {
|
||||
float fat = Float.valueOf(txtFat.getText().toString());
|
||||
float water = Float.valueOf(txtWater.getText().toString());
|
||||
float muscle = Float.valueOf(txtMuscle.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);
|
||||
openScale.addScaleData(selectedUserId, date + " " + time, weight, fat, water, muscle, comment);
|
||||
|
||||
finish();
|
||||
}
|
||||
|
@@ -43,6 +43,7 @@ import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import lecho.lib.hellocharts.formatter.SimpleLineChartValueFormatter;
|
||||
import lecho.lib.hellocharts.listener.LineChartOnValueSelectListener;
|
||||
import lecho.lib.hellocharts.listener.PieChartOnValueSelectListener;
|
||||
import lecho.lib.hellocharts.model.Axis;
|
||||
import lecho.lib.hellocharts.model.AxisValue;
|
||||
@@ -92,11 +93,16 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
|
||||
private PieChartView pieChartLast;
|
||||
private LineChartView lineChartLast;
|
||||
|
||||
private enum lines {WEIGHT, FAT, WATER, MUSCLE}
|
||||
private ArrayList<lines> activeLines;
|
||||
|
||||
private SharedPreferences prefs;
|
||||
|
||||
private ScaleData lastScaleData;
|
||||
private ScaleUser currentScaleUser;
|
||||
|
||||
private List<ScaleData> scaleDataLastDays;
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
|
||||
{
|
||||
@@ -136,6 +142,8 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
|
||||
pieChartLast = (PieChartView) overviewView.findViewById(R.id.pieChartLast);
|
||||
lineChartLast = (LineChartView) overviewView.findViewById(R.id.lineChartLast);
|
||||
|
||||
lineChartLast.setOnValueTouchListener(new LineChartTouchListener());
|
||||
|
||||
pieChartLast.setOnValueTouchListener(new PieChartLastTouchListener());
|
||||
pieChartLast.setChartRotationEnabled(false);
|
||||
|
||||
@@ -329,9 +337,13 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
|
||||
|
||||
lastDate.setTime(scaleDataList.get(0).date_time);
|
||||
|
||||
scaleDataLastDays = new ArrayList<ScaleData>();
|
||||
|
||||
for (int i=0; i<max_i; i++) {
|
||||
ScaleData histData = scaleDataList.get(max_i - i - 1);
|
||||
|
||||
scaleDataLastDays.add(histData);
|
||||
|
||||
valuesWeight.add(new PointValue(i, histData.weight));
|
||||
valuesFat.add(new PointValue(i, histData.fat));
|
||||
valuesWater.add(new PointValue(i, histData.water));
|
||||
@@ -365,20 +377,26 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
|
||||
setHasLabels(prefs.getBoolean("labelsEnable", true)).
|
||||
setFormatter(new SimpleLineChartValueFormatter(1));
|
||||
|
||||
activeLines = new ArrayList<lines>();
|
||||
|
||||
if(prefs.getBoolean("weightEnable", true)) {
|
||||
lines.add(lineWeight);
|
||||
activeLines.add(OverviewFragment.lines.WEIGHT);
|
||||
}
|
||||
|
||||
if(prefs.getBoolean("fatEnable", true)) {
|
||||
lines.add(lineFat);
|
||||
activeLines.add(OverviewFragment.lines.FAT);
|
||||
}
|
||||
|
||||
if(prefs.getBoolean("waterEnable", true)) {
|
||||
lines.add(lineWater);
|
||||
activeLines.add(OverviewFragment.lines.WATER);
|
||||
}
|
||||
|
||||
if(prefs.getBoolean("muscleEnable", true)) {
|
||||
lines.add(lineMuscle);
|
||||
activeLines.add(OverviewFragment.lines.MUSCLE);
|
||||
}
|
||||
|
||||
LineChartData lineData = new LineChartData(lines);
|
||||
@@ -490,4 +508,34 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class LineChartTouchListener implements LineChartOnValueSelectListener {
|
||||
@Override
|
||||
public void onValueSelected(int lineIndex, int pointIndex, PointValue pointValue) {
|
||||
ScaleData scaleData = scaleDataLastDays.get(pointIndex);
|
||||
lines selectedLine = activeLines.get(lineIndex);
|
||||
|
||||
String date_time = new SimpleDateFormat("dd. MMM yyyy (EE) HH:mm").format(scaleData.date_time);
|
||||
|
||||
switch (selectedLine) {
|
||||
case WEIGHT:
|
||||
Toast.makeText(getActivity(), getResources().getString(R.string.info_your_weight) + " " + scaleData.weight + ScaleUser.UNIT_STRING[OpenScale.getInstance(overviewView.getContext()).getSelectedScaleUser().scale_unit] + " " + getResources().getString(R.string.info_on_date) + " " + date_time, Toast.LENGTH_SHORT).show();
|
||||
break;
|
||||
case FAT:
|
||||
Toast.makeText(getActivity(), getResources().getString(R.string.info_your_fat) + " " + scaleData.fat + "% " + getResources().getString(R.string.info_on_date) + " " + date_time, Toast.LENGTH_SHORT).show();
|
||||
break;
|
||||
case WATER:
|
||||
Toast.makeText(getActivity(), getResources().getString(R.string.info_your_water) + " " + scaleData.water + "% " + getResources().getString(R.string.info_on_date) + " " + date_time, Toast.LENGTH_SHORT).show();
|
||||
break;
|
||||
case MUSCLE:
|
||||
Toast.makeText(getActivity(), getResources().getString(R.string.info_your_muscle) + " " + scaleData.muscle + "% " + getResources().getString(R.string.info_on_date) + " " + date_time, Toast.LENGTH_SHORT).show();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onValueDeselected() {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -84,6 +84,8 @@ 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 txtCommentTableHeader = (TextView)tableView.findViewById(R.id.txtCommentTableHeader);
|
||||
txtCommentTableHeader.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 11);
|
||||
Button btnDeleteAll = (Button)tableView.findViewById(R.id.btnDeleteAll);
|
||||
btnDeleteAll.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 11);
|
||||
}
|
||||
@@ -143,6 +145,12 @@ public class TableFragment extends Fragment implements FragmentUpdateListener {
|
||||
muscleView.setPadding(0, 5, 5, 5);
|
||||
dataRow.addView(muscleView);
|
||||
|
||||
|
||||
TextView commentView = new TextView(tableView.getContext());
|
||||
commentView.setText(scaleData.comment);
|
||||
commentView.setPadding(0, 5, 5, 5);
|
||||
dataRow.addView(commentView);
|
||||
|
||||
Button deleteButton = new Button(tableView.getContext());
|
||||
deleteButton.setText("X");
|
||||
deleteButton.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 10);
|
||||
@@ -166,6 +174,7 @@ 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);
|
||||
commentView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 11);
|
||||
}
|
||||
|
||||
tableDataView.addView(dataRow, new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
|
||||
|
BIN
android_app/app/src/main/res/drawable/comment.png
Normal file
BIN
android_app/app/src/main/res/drawable/comment.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 998 B |
@@ -9,25 +9,36 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="5dp"
|
||||
android:stretchColumns="*" >
|
||||
android:stretchColumns="2" >
|
||||
|
||||
<TableRow
|
||||
android:id="@+id/tableRow1"
|
||||
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/weight"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginRight="2dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/label_weight" />
|
||||
android:text="@string/label_weight"
|
||||
android:layout_column="1" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/txtWeight"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:ems="10"
|
||||
android:inputType="numberDecimal|numberSigned">
|
||||
android:inputType="numberDecimal|numberSigned"
|
||||
android:layout_column="2">
|
||||
|
||||
<requestFocus />
|
||||
</EditText>
|
||||
@@ -39,17 +50,28 @@
|
||||
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/fat"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginRight="2dp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/label_fat" />
|
||||
android:text="@string/label_fat"
|
||||
android:layout_column="1" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/txtFat"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:ems="10"
|
||||
android:inputType="numberDecimal|numberSigned" />
|
||||
android:inputType="numberDecimal|numberSigned"
|
||||
android:layout_column="2" />
|
||||
|
||||
</TableRow>
|
||||
|
||||
@@ -58,11 +80,21 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" >
|
||||
|
||||
<ImageView
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:id="@+id/imageView13"
|
||||
android:layout_column="0"
|
||||
android:src="@drawable/water"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginRight="2dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView5"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/label_water" />
|
||||
android:text="@string/label_water"
|
||||
android:layout_column="1" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/txtWater"
|
||||
@@ -70,7 +102,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="5"
|
||||
android:ems="10"
|
||||
android:inputType="numberDecimal|numberSigned" />
|
||||
android:inputType="numberDecimal|numberSigned"
|
||||
android:layout_column="2" />
|
||||
|
||||
</TableRow>
|
||||
|
||||
@@ -79,17 +112,58 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" >
|
||||
|
||||
<ImageView
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:id="@+id/imageView14"
|
||||
android:layout_column="0"
|
||||
android:src="@drawable/muscle"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginRight="2dp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/label_muscle" />
|
||||
android:text="@string/label_muscle"
|
||||
android:layout_column="1" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/txtMuscle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:ems="10"
|
||||
android:inputType="numberDecimal|numberSigned" />
|
||||
android:inputType="numberDecimal|numberSigned"
|
||||
android:layout_column="2" />
|
||||
|
||||
</TableRow>
|
||||
|
||||
<TableRow
|
||||
android:id="@+id/tableRow12"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:id="@+id/imageView15"
|
||||
android:layout_column="0"
|
||||
android:src="@drawable/comment"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginRight="2dp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/label_comment"
|
||||
android:layout_column="1" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/txtComment"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:ems="10"
|
||||
android:layout_column="2"
|
||||
android:inputType="text|textImeMultiLine|textMultiLine|textAutoComplete|textAutoCorrect" />
|
||||
</TableRow>
|
||||
|
||||
</TableLayout>
|
||||
|
@@ -9,18 +9,28 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="5dp"
|
||||
android:stretchColumns="*" >
|
||||
android:stretchColumns="2" >
|
||||
|
||||
<TableRow
|
||||
android:id="@+id/tableRow1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" >
|
||||
|
||||
<ImageView
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:id="@+id/imageView16"
|
||||
android:layout_column="0"
|
||||
android:src="@drawable/weight"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginRight="2dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/label_weight" />
|
||||
android:text="@string/label_weight"
|
||||
android:layout_column="1" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/txtWeight"
|
||||
@@ -28,7 +38,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:ems="10"
|
||||
android:hint="@string/info_enter_value_unit"
|
||||
android:inputType="numberDecimal" >
|
||||
android:inputType="numberDecimal"
|
||||
android:layout_column="2">
|
||||
|
||||
<requestFocus />
|
||||
</EditText>
|
||||
@@ -40,11 +51,21 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" >
|
||||
|
||||
<ImageView
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:id="@+id/imageView17"
|
||||
android:layout_column="0"
|
||||
android:src="@drawable/fat"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginRight="2dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtAvgWeight"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/label_fat" />
|
||||
android:text="@string/label_fat"
|
||||
android:layout_column="1" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/txtFat"
|
||||
@@ -52,7 +73,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:ems="10"
|
||||
android:hint="@string/info_enter_value_percent"
|
||||
android:inputType="numberDecimal" />
|
||||
android:inputType="numberDecimal"
|
||||
android:layout_column="2" />
|
||||
|
||||
</TableRow>
|
||||
|
||||
@@ -61,11 +83,21 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" >
|
||||
|
||||
<ImageView
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:id="@+id/imageView18"
|
||||
android:layout_column="0"
|
||||
android:src="@drawable/water"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginRight="2dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView3"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/label_water" />
|
||||
android:text="@string/label_water"
|
||||
android:layout_column="1" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/txtWater"
|
||||
@@ -73,7 +105,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:ems="10"
|
||||
android:hint="@string/info_enter_value_percent"
|
||||
android:inputType="numberDecimal" />
|
||||
android:inputType="numberDecimal"
|
||||
android:layout_column="2" />
|
||||
|
||||
</TableRow>
|
||||
|
||||
@@ -82,11 +115,21 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" >
|
||||
|
||||
<ImageView
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:id="@+id/imageView21"
|
||||
android:layout_column="0"
|
||||
android:src="@drawable/muscle"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginRight="2dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtAvgFat"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/label_muscle" />
|
||||
android:text="@string/label_muscle"
|
||||
android:layout_column="1" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/txtMuscle"
|
||||
@@ -94,20 +137,62 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:ems="10"
|
||||
android:hint="@string/info_enter_value_percent"
|
||||
android:inputType="numberDecimal" />
|
||||
android:inputType="numberDecimal"
|
||||
android:layout_column="2" />
|
||||
|
||||
</TableRow>
|
||||
|
||||
<TableRow
|
||||
android:id="@+id/tableRow13"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" >
|
||||
|
||||
<ImageView
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:id="@+id/imageView22"
|
||||
android:layout_column="0"
|
||||
android:src="@drawable/comment"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginRight="2dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtView22"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/label_comment"
|
||||
android:layout_column="1" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/txtComment"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:ems="10"
|
||||
android:layout_column="2"
|
||||
android:inputType="text|textImeMultiLine|textMultiLine|textAutoComplete|textAutoCorrect"
|
||||
android:hint="@string/info_enter_comment" />
|
||||
</TableRow>
|
||||
|
||||
<TableRow
|
||||
android:id="@+id/tableRow5"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" >
|
||||
|
||||
<ImageView
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:id="@+id/imageView19"
|
||||
android:layout_column="0"
|
||||
android:src="@drawable/lastmonth"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginRight="2dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView5"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/label_date" />
|
||||
android:text="@string/label_date"
|
||||
android:layout_column="1" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/txtDate"
|
||||
@@ -116,14 +201,16 @@
|
||||
android:layout_weight="5"
|
||||
android:ems="10"
|
||||
android:enabled="false"
|
||||
android:inputType="date" />
|
||||
android:inputType="date"
|
||||
android:layout_column="2" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnDateSet"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/label_set"
|
||||
android:textSize="15sp" />
|
||||
android:textSize="15sp"
|
||||
android:layout_column="3" />
|
||||
|
||||
</TableRow>
|
||||
|
||||
@@ -132,11 +219,21 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" >
|
||||
|
||||
<ImageView
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:id="@+id/imageView20"
|
||||
android:layout_column="0"
|
||||
android:src="@drawable/daysleft"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginRight="2dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtAvgWater"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/label_time" />
|
||||
android:text="@string/label_time"
|
||||
android:layout_column="1" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/txtTime"
|
||||
@@ -145,14 +242,16 @@
|
||||
android:layout_weight="5"
|
||||
android:ems="10"
|
||||
android:enabled="false"
|
||||
android:inputType="time" />
|
||||
android:inputType="time"
|
||||
android:layout_column="2" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnTimeSet"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/label_set"
|
||||
android:textSize="15sp" />
|
||||
android:textSize="15sp"
|
||||
android:layout_column="3" />
|
||||
|
||||
</TableRow>
|
||||
|
||||
|
@@ -17,9 +17,9 @@
|
||||
android:id="@+id/tableDataView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:shrinkColumns="*"
|
||||
android:measureWithLargestChild="false"
|
||||
android:stretchColumns="1,2,3,4,5,6">
|
||||
android:stretchColumns="1,2,3,4,5,6,7"
|
||||
android:shrinkColumns="*">
|
||||
|
||||
<TableRow
|
||||
android:id="@+id/tableHeader"
|
||||
@@ -76,6 +76,13 @@
|
||||
android:textStyle="bold"
|
||||
android:id="@+id/txtMuscleTableHeader" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/label_comment"
|
||||
android:textStyle="bold"
|
||||
android:id="@+id/txtCommentTableHeader" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnDeleteAll"
|
||||
android:layout_width="wrap_content"
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<string name="title_frag">Table</string>
|
||||
<string name="title_user">User</string>
|
||||
<string name="title_new_data_entry">Data entry</string>
|
||||
<string name="title_edit_data_entry">Edit data entry</string>
|
||||
<string name="title_edit_data_entry">Edit</string>
|
||||
|
||||
<string name="action_settings">Settings</string>
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
<string name="label_fat">Fat</string>
|
||||
<string name="label_water">Water</string>
|
||||
<string name="label_muscle">Muscle</string>
|
||||
<string name="label_comment">Comment</string>
|
||||
|
||||
<string name="label_days">days</string>
|
||||
<string name="label_measures">measures</string>
|
||||
@@ -75,6 +76,7 @@
|
||||
<string name="info_set_filename">Set filename to</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>
|
||||
<string name="info_enter_goal_weight">Enter your goal weight in your scale unit</string>
|
||||
<string name="info_is_visible">Is visible</string>
|
||||
<string name="info_is_not_visible">Is not visible</string>
|
||||
|
Reference in New Issue
Block a user