diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsActivity.java index 4512ad355..4e36b43e8 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsActivity.java @@ -65,7 +65,7 @@ public class ChartsActivity extends AbstractGBFragmentActivity implements Charts LimitedQueue mActivityAmountCache = new LimitedQueue(60); - private static class ShowDurationDialog extends Dialog { + public static class ShowDurationDialog extends Dialog { private final String mDuration; private TextView durationLabel; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/SleepChartFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/SleepChartFragment.java index 2af4092ec..d345275b0 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/SleepChartFragment.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/SleepChartFragment.java @@ -28,6 +28,8 @@ import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; +import androidx.constraintlayout.widget.ConstraintLayout; + import com.github.mikephil.charting.animation.Easing; import com.github.mikephil.charting.charts.Chart; import com.github.mikephil.charting.charts.LineChart; @@ -73,7 +75,10 @@ public class SleepChartFragment extends AbstractChartFragment { private PieChart mSleepAmountChart; private TextView mSleepchartInfo; private TextView heartRateAverageLabel; - private ImageView heartRateWidget; + private ImageView heartRateIcon; + private int heartRateMin = 0; + private int heartRateMax = 0; + private int mSmartAlarmFrom = -1; private int mSmartAlarmTo = -1; @@ -192,6 +197,8 @@ public class SleepChartFragment extends AbstractChartFragment { mActivityChart.getXAxis().setValueFormatter(mcd.getChartsData().getXValueFormatter()); mActivityChart.setData(mcd.getChartsData().getData()); mSleepchartInfo.setText(buildYouSleptText(pieData)); + heartRateMin = mcd.getHeartRateAxisMin(); + heartRateMax = mcd.getHeartRateAxisMax(); if (!CHARTS_SLEEP_RANGE_24H && supportsHeartrate(getChartsHost().getDevice()) @@ -289,8 +296,17 @@ public class SleepChartFragment extends AbstractChartFragment { mActivityChart = rootView.findViewById(R.id.sleepchart); mSleepAmountChart = rootView.findViewById(R.id.sleepchart_pie_light_deep); mSleepchartInfo = rootView.findViewById(R.id.sleepchart_info); - heartRateWidget = rootView.findViewById(R.id.heartrate_widget_icon); + heartRateIcon = rootView.findViewById(R.id.heartrate_widget_icon); heartRateAverageLabel = rootView.findViewById(R.id.heartrate_widget_label); + ConstraintLayout heartRateWidgetLayout = rootView.findViewById(R.id.heartrate_widget_layout); + + heartRateWidgetLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + String detailedDuration = String.format(getString(R.string.charts_min_max_heartrate_popup), heartRateMin, heartRateMax); + new ChartsActivity.ShowDurationDialog(detailedDuration, getContext()).show(); + } + }); setupActivityChart(); setupSleepAmountChart(); @@ -372,7 +388,7 @@ public class SleepChartFragment extends AbstractChartFragment { deepSleepEntry.label = akDeepSleep.label; deepSleepEntry.formColor = akDeepSleep.color; legendEntries.add(deepSleepEntry); - heartRateWidget.setVisibility(View.GONE); //hide heart icon + heartRateIcon.setVisibility(View.GONE); //hide heart icon if (supportsHeartrate(getChartsHost().getDevice())) { LegendEntry hrEntry = new LegendEntry(); @@ -384,7 +400,7 @@ public class SleepChartFragment extends AbstractChartFragment { hrAverageEntry.label = HEARTRATE_AVERAGE_LABEL; hrAverageEntry.formColor = Color.RED; legendEntries.add(hrAverageEntry); - heartRateWidget.setVisibility(View.VISIBLE); + heartRateIcon.setVisibility(View.VISIBLE); } } chart.getLegend().setCustom(legendEntries); @@ -432,12 +448,12 @@ public class SleepChartFragment extends AbstractChartFragment { private final DefaultChartsData chartsData; private final MySleepChartsData pieData; private final float heartRateAverage; - private float heartRateAxisMax; - private float heartRateAxisMin; + private int heartRateAxisMax; + private int heartRateAxisMin; private float intensityAxisMax; private float intensityAxisMin; - public MyChartsData(MySleepChartsData pieData, DefaultChartsData chartsData, float heartRateAverage, float heartRateAxisMin, float heartRateAxisMax, float intensityAxisMin, float intensityAxisMax) { + public MyChartsData(MySleepChartsData pieData, DefaultChartsData chartsData, float heartRateAverage, int heartRateAxisMin, int heartRateAxisMax, float intensityAxisMin, float intensityAxisMax) { this.pieData = pieData; this.chartsData = chartsData; this.heartRateAverage = heartRateAverage; @@ -457,13 +473,11 @@ public class SleepChartFragment extends AbstractChartFragment { return heartRateAverage; } - public float getHeartRateAxisMax() { + public int getHeartRateAxisMax() { return heartRateAxisMax; } - public float getHeartRateAxisMin() { - return heartRateAxisMin; - } + public int getHeartRateAxisMin() { return heartRateAxisMin; } public float getIntensityAxisMax() { return intensityAxisMax; diff --git a/app/src/main/res/layout/activity_charts_durationdialog.xml b/app/src/main/res/layout/activity_charts_durationdialog.xml index 20247d687..6f1080f12 100644 --- a/app/src/main/res/layout/activity_charts_durationdialog.xml +++ b/app/src/main/res/layout/activity_charts_durationdialog.xml @@ -1,12 +1,13 @@ + android:layout_height="match_parent" + android:orientation="vertical"> + android:layout_height="wrap_content" + android:padding="5dp" /> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f704df49d..70a67471c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -509,6 +509,7 @@ Not worn You slept from %1$s to %2$s You did not sleep + Lowest heart rate: %1$d \nHighest heart rate: %2$d Not connected. All alarms disabled Keep activity data on device