diff --git a/android_app/app/src/main/AndroidManifest.xml b/android_app/app/src/main/AndroidManifest.xml index d3e357bb..31147b3b 100644 --- a/android_app/app/src/main/AndroidManifest.xml +++ b/android_app/app/src/main/AndroidManifest.xml @@ -23,8 +23,8 @@ - - + + diff --git a/android_app/app/src/main/java/com/health/openscale/core/OpenScale.java b/android_app/app/src/main/java/com/health/openscale/core/OpenScale.java index 7ae871c5..654e2606 100644 --- a/android_app/app/src/main/java/com/health/openscale/core/OpenScale.java +++ b/android_app/app/src/main/java/com/health/openscale/core/OpenScale.java @@ -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"); } diff --git a/android_app/app/src/main/java/com/health/openscale/core/ScaleData.java b/android_app/app/src/main/java/com/health/openscale/core/ScaleData.java index 0525565c..9d7a1c6d 100644 --- a/android_app/app/src/main/java/com/health/openscale/core/ScaleData.java +++ b/android_app/app/src/main/java/com/health/openscale/core/ScaleData.java @@ -26,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; } } diff --git a/android_app/app/src/main/java/com/health/openscale/core/ScaleDatabase.java b/android_app/app/src/main/java/com/health/openscale/core/ScaleDatabase.java index e1d4b4ff..c566796d 100644 --- a/android_app/app/src/main/java/com/health/openscale/core/ScaleDatabase.java +++ b/android_app/app/src/main/java/com/health/openscale/core/ScaleDatabase.java @@ -31,7 +31,7 @@ import java.util.Calendar; import java.util.Locale; public class ScaleDatabase extends SQLiteOpenHelper { - private static final int DATABASE_VERSION = 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,8 +366,9 @@ 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.date_time = formatDateTime.parse(date_time); + scaleData.comment = cursorScaleDB.getString(cursorScaleDB.getColumnIndexOrThrow(COLUMN_NAME_COMMENT)); + + scaleData.date_time = formatDateTime.parse(date_time); scaleDataList.add(scaleData); diff --git a/android_app/app/src/main/java/com/health/openscale/gui/EditDataActivity.java b/android_app/app/src/main/java/com/health/openscale/gui/EditDataActivity.java index 86ffa533..fbdba1c2 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/EditDataActivity.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/EditDataActivity.java @@ -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,25 +72,89 @@ 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) { - 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()); + 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 openScale = OpenScale.getInstance(context); - openScale.updateScaleData(id, weight, fat, water, muscle); + openScale.updateScaleData(id, weight, fat, water, muscle, comment); - finish(); + finish(); + } } } diff --git a/android_app/app/src/main/java/com/health/openscale/gui/GraphFragment.java b/android_app/app/src/main/java/com/health/openscale/gui/GraphFragment.java index 244b26c5..8b928ef2 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/GraphFragment.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/GraphFragment.java @@ -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 scaleDataList; - private enum lines {WEIGHT, FAT, WATER, MUSCLE} - private ArrayList 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(); 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 diff --git a/android_app/app/src/main/java/com/health/openscale/gui/NewEntryActivity.java b/android_app/app/src/main/java/com/health/openscale/gui/NewEntryActivity.java index f72588d9..bb427ddd 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/NewEntryActivity.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/NewEntryActivity.java @@ -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(); } diff --git a/android_app/app/src/main/java/com/health/openscale/gui/OverviewFragment.java b/android_app/app/src/main/java/com/health/openscale/gui/OverviewFragment.java index 189fa596..7cdd4d0e 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/OverviewFragment.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/OverviewFragment.java @@ -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 activeLines; + private SharedPreferences prefs; private ScaleData lastScaleData; private ScaleUser currentScaleUser; + private List 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(); + for (int i=0; i(); + 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() { + + } + } } diff --git a/android_app/app/src/main/java/com/health/openscale/gui/TableFragment.java b/android_app/app/src/main/java/com/health/openscale/gui/TableFragment.java index a879e819..03067666 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/TableFragment.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/TableFragment.java @@ -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)); diff --git a/android_app/app/src/main/res/drawable/comment.png b/android_app/app/src/main/res/drawable/comment.png new file mode 100644 index 00000000..0c648e3a Binary files /dev/null and b/android_app/app/src/main/res/drawable/comment.png differ diff --git a/android_app/app/src/main/res/layout/activity_editdata.xml b/android_app/app/src/main/res/layout/activity_editdata.xml index faf1b06b..b97eb61f 100644 --- a/android_app/app/src/main/res/layout/activity_editdata.xml +++ b/android_app/app/src/main/res/layout/activity_editdata.xml @@ -9,25 +9,36 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="5dp" - android:stretchColumns="*" > + android:stretchColumns="2" > - + + + android:text="@string/label_weight" + android:layout_column="1" /> + android:inputType="numberDecimal|numberSigned" + android:layout_column="2"> @@ -39,17 +50,28 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" > + + + android:text="@string/label_fat" + android:layout_column="1" /> + android:inputType="numberDecimal|numberSigned" + android:layout_column="2" /> @@ -58,11 +80,21 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" > + + + android:text="@string/label_water" + android:layout_column="1" /> + android:inputType="numberDecimal|numberSigned" + android:layout_column="2" /> - - + + + android:text="@string/label_muscle" + android:layout_column="1" /> - + android:inputType="numberDecimal|numberSigned" + android:layout_column="2" /> - + + + + + + + + + + + + + android:stretchColumns="2" > + + + android:text="@string/label_weight" + android:layout_column="1" /> + android:inputType="numberDecimal" + android:layout_column="2"> @@ -40,11 +51,21 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" > + + + android:text="@string/label_fat" + android:layout_column="1" /> + android:inputType="numberDecimal" + android:layout_column="2" /> @@ -61,11 +83,21 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" > + + + android:text="@string/label_water" + android:layout_column="1" /> + android:inputType="numberDecimal" + android:layout_column="2" /> @@ -82,11 +115,21 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" > + + + android:text="@string/label_muscle" + android:layout_column="1" /> + android:inputType="numberDecimal" + android:layout_column="2" /> + + + + + + + + + + + + android:text="@string/label_date" + android:layout_column="1" /> + android:inputType="date" + android:layout_column="2" />