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

show goal and difference weight on overview fragment

This commit is contained in:
oliexdev
2020-09-20 16:44:50 +02:00
parent 10baf31d89
commit a6c85d7548
2 changed files with 119 additions and 5 deletions

View File

@@ -21,6 +21,10 @@ import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.style.RelativeSizeSpan;
import android.text.style.StyleSpan;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
@@ -47,13 +51,17 @@ import com.health.openscale.R;
import com.health.openscale.core.OpenScale;
import com.health.openscale.core.datatypes.ScaleMeasurement;
import com.health.openscale.core.datatypes.ScaleUser;
import com.health.openscale.core.utils.DateTimeHelpers;
import com.health.openscale.gui.measurement.ChartActionBarView;
import com.health.openscale.gui.measurement.ChartMeasurementView;
import com.health.openscale.gui.measurement.MeasurementEntryFragment;
import com.health.openscale.gui.measurement.MeasurementView;
import com.health.openscale.gui.measurement.WeightMeasurementView;
import com.health.openscale.gui.utils.ColorUtil;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
public class OverviewFragment extends Fragment {
@@ -76,6 +84,10 @@ public class OverviewFragment extends Fragment {
private ImageView editEntry;
private ImageView deleteEntry;
private TextView differenceWeightView;
private TextView initialWeightView;
private TextView goalWeightView;
private ScaleUser currentScaleUser;
private ArrayAdapter<String> spinUserAdapter;
@@ -92,6 +104,10 @@ public class OverviewFragment extends Fragment {
txtTitleUser = overviewView.findViewById(R.id.txtTitleUser);
differenceWeightView = overviewView.findViewById(R.id.differenceWeightView);
initialWeightView = overviewView.findViewById(R.id.initialWeightView);
goalWeightView = overviewView.findViewById(R.id.goalWeightView);
chartView = overviewView.findViewById(R.id.chartView);
chartView.setOnChartValueSelectedListener(new onChartSelectedListener());
chartView.setProgressBar(overviewView.findViewById(R.id.progressBar));
@@ -315,6 +331,69 @@ public class OverviewFragment extends Fragment {
int visibility = spinUserAdapter.getCount() < 2 ? View.GONE : View.VISIBLE;
txtTitleUser.setVisibility(visibility);
spinUser.setVisibility(visibility);
WeightMeasurementView weightMeasurementView = new WeightMeasurementView(getContext());
ScaleMeasurement initialWeightMeasurement = OpenScale.getInstance().getLastScaleMeasurement();
initialWeightMeasurement.setWeight(initialWeightMeasurement.getWeight());
weightMeasurementView.loadFrom(initialWeightMeasurement, null);
SpannableStringBuilder initialWeightValue = new SpannableStringBuilder();
initialWeightValue.append(getResources().getString(R.string.label_weight));
initialWeightValue.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 0, initialWeightValue.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
initialWeightValue.append("\n");
initialWeightValue.append(weightMeasurementView.getValueAsString(true));
initialWeightValue.append(("\n"));
int start = initialWeightValue.length();
initialWeightValue.append(DateFormat.getDateInstance(DateFormat.MEDIUM).format(initialWeightMeasurement.getDateTime()));
initialWeightValue.setSpan(new RelativeSizeSpan(0.8f), start, initialWeightValue.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
initialWeightView.setText(initialWeightValue);
ScaleMeasurement goalWeightMeasurement = new ScaleMeasurement();
goalWeightMeasurement.setWeight(currentScaleUser.getGoalWeight());
weightMeasurementView.loadFrom(goalWeightMeasurement, null);
SpannableStringBuilder goalWeightValue = new SpannableStringBuilder();
goalWeightValue.append(getResources().getString(R.string.label_goal_weight));
goalWeightValue.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 0, goalWeightValue.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
goalWeightValue.append("\n");
goalWeightValue.append(weightMeasurementView.getValueAsString(true));
goalWeightValue.append(("\n"));
start = goalWeightValue.length();
goalWeightValue.append(DateFormat.getDateInstance(DateFormat.MEDIUM).format(currentScaleUser.getGoalDate()));
goalWeightValue.setSpan(new RelativeSizeSpan(0.8f), start, goalWeightValue.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
goalWeightView.setText(goalWeightValue);
ScaleMeasurement differenceWeightMeasurement = new ScaleMeasurement();
if (initialWeightMeasurement.getWeight() > goalWeightMeasurement.getWeight()) {
differenceWeightMeasurement.setWeight(initialWeightMeasurement.getWeight() -goalWeightMeasurement.getWeight());
} else {
differenceWeightMeasurement.setWeight(goalWeightMeasurement.getWeight() - initialWeightMeasurement.getWeight());
}
weightMeasurementView.loadFrom(differenceWeightMeasurement, null);
Calendar initialCalendar = Calendar.getInstance();
initialCalendar.setTime(initialWeightMeasurement.getDateTime());
Calendar goalCalendar = Calendar.getInstance();
goalCalendar.setTime(currentScaleUser.getGoalDate());
int daysBetween = Math.max(0, DateTimeHelpers.daysBetween(initialCalendar, goalCalendar));
SpannableStringBuilder differenceWeightValue = new SpannableStringBuilder();
differenceWeightValue.append(getResources().getString(R.string.label_weight_difference));
differenceWeightValue.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 0, differenceWeightValue.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
differenceWeightValue.append("\n");
differenceWeightValue.append(weightMeasurementView.getValueAsString(true));
differenceWeightValue.append(("\n"));
start = differenceWeightValue.length();
differenceWeightValue.append(daysBetween + " " + getString(R.string.label_days_left));
differenceWeightValue.setSpan(new RelativeSizeSpan(0.8f), start, differenceWeightValue.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
differenceWeightView.setText(differenceWeightValue);
}
private class onChartSelectedListener implements OnChartValueSelectedListener {

View File

@@ -46,7 +46,7 @@
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:scaleType="centerInside"
android:tint="#d3d3d3"
app:tint="#d3d3d3"
app:srcCompat="@drawable/ic_show" />
<ImageView
@@ -55,7 +55,7 @@
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:scaleType="centerInside"
android:tint="#d3d3d3"
app:tint="#d3d3d3"
app:srcCompat="@drawable/ic_editable" />
<ImageView
@@ -64,7 +64,7 @@
android:layout_height="wrap_content"
android:layout_marginRight="20dp"
android:scaleType="centerInside"
android:tint="#d3d3d3"
app:tint="#d3d3d3"
app:srcCompat="@drawable/ic_delete" />
<ImageView
@@ -72,7 +72,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="centerInside"
android:tint="@android:color/white"
app:tint="@android:color/white"
app:srcCompat="@drawable/ic_options" />
</LinearLayout>
@@ -87,7 +87,42 @@
android:id="@+id/chartView"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_gravity="center" />
android:layout_gravity="center" >
</com.health.openscale.gui.measurement.ChartMeasurementView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/initialWeightView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:text="TextView" />
<TextView
android:id="@+id/differenceWeightView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:text="TextView" />
<TextView
android:id="@+id/goalWeightView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:text="TextView" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"