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:
@@ -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 {
|
||||
|
@@ -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"
|
||||
|
Reference in New Issue
Block a user