mirror of
https://github.com/oliexdev/openScale.git
synced 2025-08-16 21:54: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.graphics.Color;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.preference.PreferenceManager;
|
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.LayoutInflater;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@@ -47,13 +51,17 @@ import com.health.openscale.R;
|
|||||||
import com.health.openscale.core.OpenScale;
|
import com.health.openscale.core.OpenScale;
|
||||||
import com.health.openscale.core.datatypes.ScaleMeasurement;
|
import com.health.openscale.core.datatypes.ScaleMeasurement;
|
||||||
import com.health.openscale.core.datatypes.ScaleUser;
|
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.ChartActionBarView;
|
||||||
import com.health.openscale.gui.measurement.ChartMeasurementView;
|
import com.health.openscale.gui.measurement.ChartMeasurementView;
|
||||||
import com.health.openscale.gui.measurement.MeasurementEntryFragment;
|
import com.health.openscale.gui.measurement.MeasurementEntryFragment;
|
||||||
import com.health.openscale.gui.measurement.MeasurementView;
|
import com.health.openscale.gui.measurement.MeasurementView;
|
||||||
|
import com.health.openscale.gui.measurement.WeightMeasurementView;
|
||||||
import com.health.openscale.gui.utils.ColorUtil;
|
import com.health.openscale.gui.utils.ColorUtil;
|
||||||
|
|
||||||
|
import java.text.DateFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Calendar;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class OverviewFragment extends Fragment {
|
public class OverviewFragment extends Fragment {
|
||||||
@@ -76,6 +84,10 @@ public class OverviewFragment extends Fragment {
|
|||||||
private ImageView editEntry;
|
private ImageView editEntry;
|
||||||
private ImageView deleteEntry;
|
private ImageView deleteEntry;
|
||||||
|
|
||||||
|
private TextView differenceWeightView;
|
||||||
|
private TextView initialWeightView;
|
||||||
|
private TextView goalWeightView;
|
||||||
|
|
||||||
private ScaleUser currentScaleUser;
|
private ScaleUser currentScaleUser;
|
||||||
|
|
||||||
private ArrayAdapter<String> spinUserAdapter;
|
private ArrayAdapter<String> spinUserAdapter;
|
||||||
@@ -92,6 +104,10 @@ public class OverviewFragment extends Fragment {
|
|||||||
|
|
||||||
txtTitleUser = overviewView.findViewById(R.id.txtTitleUser);
|
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 = overviewView.findViewById(R.id.chartView);
|
||||||
chartView.setOnChartValueSelectedListener(new onChartSelectedListener());
|
chartView.setOnChartValueSelectedListener(new onChartSelectedListener());
|
||||||
chartView.setProgressBar(overviewView.findViewById(R.id.progressBar));
|
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;
|
int visibility = spinUserAdapter.getCount() < 2 ? View.GONE : View.VISIBLE;
|
||||||
txtTitleUser.setVisibility(visibility);
|
txtTitleUser.setVisibility(visibility);
|
||||||
spinUser.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 {
|
private class onChartSelectedListener implements OnChartValueSelectedListener {
|
||||||
|
@@ -46,7 +46,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginRight="10dp"
|
android:layout_marginRight="10dp"
|
||||||
android:scaleType="centerInside"
|
android:scaleType="centerInside"
|
||||||
android:tint="#d3d3d3"
|
app:tint="#d3d3d3"
|
||||||
app:srcCompat="@drawable/ic_show" />
|
app:srcCompat="@drawable/ic_show" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
@@ -55,7 +55,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginRight="10dp"
|
android:layout_marginRight="10dp"
|
||||||
android:scaleType="centerInside"
|
android:scaleType="centerInside"
|
||||||
android:tint="#d3d3d3"
|
app:tint="#d3d3d3"
|
||||||
app:srcCompat="@drawable/ic_editable" />
|
app:srcCompat="@drawable/ic_editable" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginRight="20dp"
|
android:layout_marginRight="20dp"
|
||||||
android:scaleType="centerInside"
|
android:scaleType="centerInside"
|
||||||
android:tint="#d3d3d3"
|
app:tint="#d3d3d3"
|
||||||
app:srcCompat="@drawable/ic_delete" />
|
app:srcCompat="@drawable/ic_delete" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
@@ -72,7 +72,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:scaleType="centerInside"
|
android:scaleType="centerInside"
|
||||||
android:tint="@android:color/white"
|
app:tint="@android:color/white"
|
||||||
app:srcCompat="@drawable/ic_options" />
|
app:srcCompat="@drawable/ic_options" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
@@ -87,7 +87,42 @@
|
|||||||
android:id="@+id/chartView"
|
android:id="@+id/chartView"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="200dp"
|
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
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/recyclerView"
|
android:id="@+id/recyclerView"
|
||||||
|
Reference in New Issue
Block a user