mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2026-07-31 07:44:24 +02:00
Adjust default sleep range to 18:00
This is a saner default than 12:00, which cuts off sleep sessions that go past noon. We keep the previous noon-to-noon setting as an option, in case that is a better option for some users.
This commit is contained in:
+2
-1
@@ -421,7 +421,8 @@ public abstract class AbstractActivityChartFragment<D extends ChartsData> extend
|
||||
}
|
||||
|
||||
protected List<? extends ActivitySample> getSamplesofSleep(DBHandler db, GBDevice device) {
|
||||
int SLEEP_HOUR_LIMIT = 12;
|
||||
final String chartSleepRangeMode = GBApplication.getPrefs().getString("chart_sleep_range_mode", "18:00");
|
||||
final int SLEEP_HOUR_LIMIT = "18:00".equals(chartSleepRangeMode) ? 18 : 12;
|
||||
|
||||
int tsStart = getTSStart();
|
||||
Calendar day = GregorianCalendar.getInstance();
|
||||
|
||||
+3
-13
@@ -51,17 +51,12 @@ public class ActivitySleepChartFragment extends AbstractActivityChartFragment<De
|
||||
|
||||
private LineChart mChart;
|
||||
|
||||
private int mSmartAlarmFrom = -1;
|
||||
private int mSmartAlarmTo = -1;
|
||||
private int mTimestampFrom = -1;
|
||||
private int mSmartAlarmGoneOff = -1;
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
View rootView = inflater.inflate(R.layout.fragment_charts, container, false);
|
||||
|
||||
mChart = (LineChart) rootView.findViewById(R.id.activitysleepchart);
|
||||
mChart = rootView.findViewById(R.id.activitysleepchart);
|
||||
|
||||
setupChart();
|
||||
|
||||
@@ -114,12 +109,7 @@ public class ActivitySleepChartFragment extends AbstractActivityChartFragment<De
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
String action = intent.getAction();
|
||||
if (action.equals(ChartsHost.REFRESH)) {
|
||||
// TODO: use LimitLines to visualize smart alarms?
|
||||
mSmartAlarmFrom = intent.getIntExtra("smartalarm_from", -1);
|
||||
mSmartAlarmTo = intent.getIntExtra("smartalarm_to", -1);
|
||||
mTimestampFrom = intent.getIntExtra("recording_base_timestamp", -1);
|
||||
mSmartAlarmGoneOff = intent.getIntExtra("alarm_gone_off", -1);
|
||||
if (ChartsHost.REFRESH.equals(action)) {
|
||||
refresh();
|
||||
} else {
|
||||
super.onReceive(context, intent);
|
||||
@@ -140,7 +130,7 @@ public class ActivitySleepChartFragment extends AbstractActivityChartFragment<De
|
||||
mChart.getLegend().setTextColor(LEGEND_TEXT_COLOR);
|
||||
mChart.setData(null); // workaround for https://github.com/PhilJay/MPAndroidChart/issues/2317
|
||||
mChart.getXAxis().setValueFormatter(dcd.getXValueFormatter());
|
||||
mChart.setData((LineData) dcd.getData());
|
||||
mChart.setData(dcd.getData());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+1
-10
@@ -91,12 +91,8 @@ public class SleepDailyFragment extends SleepFragment<SleepDailyFragment.MyChart
|
||||
|
||||
private FragmentSleepchartBinding binding;
|
||||
|
||||
private int mSmartAlarmFrom = -1;
|
||||
private int mSmartAlarmTo = -1;
|
||||
private int mTimestampFrom = -1;
|
||||
private int mSmartAlarmGoneOff = -1;
|
||||
Prefs prefs = GBApplication.getPrefs();
|
||||
private final boolean CHARTS_SLEEP_RANGE_24H = prefs.getBoolean("chart_sleep_range_24h", false);
|
||||
private final boolean CHARTS_SLEEP_RANGE_24H = prefs.getString("chart_sleep_range_mode", "18:00").equals("24h");
|
||||
private final boolean SHOW_CHARTS_AVERAGE = prefs.getBoolean("charts_show_average", true);
|
||||
private final int sleepLinesLimit = prefs.getInt("chart_sleep_lines_limit", 6);
|
||||
|
||||
@@ -643,11 +639,6 @@ public class SleepDailyFragment extends SleepFragment<SleepDailyFragment.MyChart
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
String action = intent.getAction();
|
||||
if (action != null && action.equals(ChartsHost.REFRESH)) {
|
||||
// TODO: use LimitLines to visualize smart alarms?
|
||||
mSmartAlarmFrom = intent.getIntExtra("smartalarm_from", -1);
|
||||
mSmartAlarmTo = intent.getIntExtra("smartalarm_to", -1);
|
||||
mTimestampFrom = intent.getIntExtra("recording_base_timestamp", -1);
|
||||
mSmartAlarmGoneOff = intent.getIntExtra("alarm_gone_off", -1);
|
||||
refresh();
|
||||
} else {
|
||||
super.onReceive(context, intent);
|
||||
|
||||
+15
-13
@@ -77,7 +77,7 @@ public class SleepPeriodFragment extends SleepFragment<SleepPeriodFragment.MyCha
|
||||
protected Locale mLocale;
|
||||
protected int mTargetValue = 0;
|
||||
|
||||
private final int mOffsetHours = getOffsetHours();
|
||||
private final int mCutOffHour = GBApplication.getPrefs().getString("chart_sleep_range_mode", "18:00").equals("18:00") ? 18 : 12;
|
||||
|
||||
protected boolean SHOW_BALANCE;
|
||||
|
||||
@@ -475,7 +475,7 @@ public class SleepPeriodFragment extends SleepFragment<SleepPeriodFragment.MyCha
|
||||
}
|
||||
|
||||
int getOffsetHours() {
|
||||
return -12;
|
||||
return GBApplication.getPrefs().getString("chart_sleep_range_mode", "18:00").equals("18:00") ? -18 : -12;
|
||||
}
|
||||
|
||||
|
||||
@@ -627,7 +627,7 @@ public class SleepPeriodFragment extends SleepFragment<SleepPeriodFragment.MyCha
|
||||
ActivityAmounts amounts = null;
|
||||
|
||||
Activity activity = getActivity();
|
||||
int key = (int) (day.getTimeInMillis() / 1000) + (mOffsetHours * 3600);
|
||||
int key = (int) (day.getTimeInMillis() / 1000) + (-mCutOffHour * 3600);
|
||||
if (activity != null) {
|
||||
activityAmountCache = ((ActivityChartsActivity) activity).mActivityAmountCache;
|
||||
amounts = activityAmountCache.lookup(key);
|
||||
@@ -635,7 +635,7 @@ public class SleepPeriodFragment extends SleepFragment<SleepPeriodFragment.MyCha
|
||||
|
||||
if (amounts == null) {
|
||||
ActivityAnalysis analysis = new ActivityAnalysis();
|
||||
amounts = analysis.calculateActivityAmounts(getSamplesOfDay(db, day, mOffsetHours, device));
|
||||
amounts = analysis.calculateActivityAmounts(getSamplesOfDay(db, day, mCutOffHour, device));
|
||||
if (activityAmountCache != null) {
|
||||
activityAmountCache.add(key, amounts);
|
||||
}
|
||||
@@ -644,20 +644,22 @@ public class SleepPeriodFragment extends SleepFragment<SleepPeriodFragment.MyCha
|
||||
return amounts;
|
||||
}
|
||||
|
||||
private List<? extends ActivitySample> getSamplesOfDay(DBHandler db, Calendar day, int offsetHours, GBDevice device) {
|
||||
int startTs;
|
||||
int endTs;
|
||||
|
||||
private List<? extends ActivitySample> getSamplesOfDay(DBHandler db, Calendar day, int cutoffHour, GBDevice device) {
|
||||
day = (Calendar) day.clone(); // do not modify the caller's argument
|
||||
day.set(Calendar.HOUR_OF_DAY, 0);
|
||||
|
||||
day.set(Calendar.HOUR_OF_DAY, cutoffHour);
|
||||
day.set(Calendar.MINUTE, 0);
|
||||
day.set(Calendar.SECOND, 0);
|
||||
day.add(Calendar.HOUR, offsetHours);
|
||||
final int tsEnd = toTimestamp(day.getTime());
|
||||
|
||||
startTs = (int) (day.getTimeInMillis() / 1000);
|
||||
endTs = startTs + 24 * 60 * 60 - 1;
|
||||
int tsStart = tsEnd - 24 * 60 * 60;
|
||||
day.setTimeInMillis(tsStart * 1000L);
|
||||
day.set(Calendar.HOUR_OF_DAY, cutoffHour);
|
||||
day.set(Calendar.MINUTE, 0);
|
||||
day.set(Calendar.SECOND, 0);
|
||||
tsStart = toTimestamp(day.getTime());
|
||||
|
||||
return getSamples(db, device, startTs, endTs);
|
||||
return getSamples(db, device, tsStart, tsEnd);
|
||||
}
|
||||
|
||||
private int getRangeDays() {
|
||||
|
||||
+1
-2
@@ -80,7 +80,6 @@ public class StressDailyFragment extends StressFragment<StressDailyFragment.Stre
|
||||
private String STRESS_AVERAGE_LABEL;
|
||||
|
||||
private final Prefs prefs = GBApplication.getPrefs();
|
||||
private final boolean CHARTS_SLEEP_RANGE_24H = prefs.getBoolean("chart_sleep_range_24h", false);
|
||||
private final boolean SHOW_CHARTS_AVERAGE = prefs.getBoolean("charts_show_average", true);
|
||||
|
||||
private boolean showStressLevelInPercents = false;
|
||||
@@ -259,7 +258,7 @@ public class StressDailyFragment extends StressFragment<StressDailyFragment.Stre
|
||||
protected void setupLegend(final Chart<?> chart) {
|
||||
final List<LegendEntry> legendEntries = createLegendEntries(chart);
|
||||
|
||||
if (!CHARTS_SLEEP_RANGE_24H && SHOW_CHARTS_AVERAGE) {
|
||||
if (SHOW_CHARTS_AVERAGE) {
|
||||
final LegendEntry averageEntry = new LegendEntry();
|
||||
averageEntry.label = STRESS_AVERAGE_LABEL;
|
||||
averageEntry.formColor = Color.GRAY;
|
||||
|
||||
@@ -8,6 +8,7 @@ import org.slf4j.LoggerFactory;
|
||||
import nodomain.freeyourgadget.gadgetbridge.prefs.migrators.PreferenceMigrator55;
|
||||
import nodomain.freeyourgadget.gadgetbridge.prefs.migrators.PreferenceMigrator56;
|
||||
import nodomain.freeyourgadget.gadgetbridge.prefs.migrators.PreferenceMigrator57;
|
||||
import nodomain.freeyourgadget.gadgetbridge.prefs.migrators.PreferenceMigrator58;
|
||||
|
||||
public class GBPrefsMigrator {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(GBPrefsMigrator.class);
|
||||
@@ -15,7 +16,7 @@ public class GBPrefsMigrator {
|
||||
public static final String PREFS_VERSION = "shared_preferences_version";
|
||||
//if preferences have to be migrated, increment the following and add the migration logic in migratePrefs below
|
||||
// see http://stackoverflow.com/questions/16397848/how-can-i-migrate-android-preferences-with-a-new-version
|
||||
private static final int CURRENT_PREFS_VERSION = 57;
|
||||
private static final int CURRENT_PREFS_VERSION = 58;
|
||||
|
||||
public static void migratePrefsIfNeeded(final SharedPreferences sharedPrefs) {
|
||||
final int oldVersion = getPrefsFileVersion(sharedPrefs);
|
||||
@@ -28,6 +29,7 @@ public class GBPrefsMigrator {
|
||||
if (oldVersion < 55) new PreferenceMigrator55().migrate(oldVersion, sharedPrefs, editor);
|
||||
if (oldVersion < 56) new PreferenceMigrator56().migrate(oldVersion, sharedPrefs, editor);
|
||||
if (oldVersion < 57) new PreferenceMigrator57().migrate(oldVersion, sharedPrefs, editor);
|
||||
if (oldVersion < 58) new PreferenceMigrator58().migrate(oldVersion, sharedPrefs, editor);
|
||||
|
||||
editor.putString(PREFS_VERSION, Integer.toString(CURRENT_PREFS_VERSION));
|
||||
editor.apply();
|
||||
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package nodomain.freeyourgadget.gadgetbridge.prefs.migrators;
|
||||
|
||||
import android.content.SharedPreferences;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.prefs.AbstractPreferenceMigrator;
|
||||
|
||||
public class PreferenceMigrator58 extends AbstractPreferenceMigrator {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(PreferenceMigrator58.class);
|
||||
|
||||
@Override
|
||||
public void migrate(final int oldVersion, final SharedPreferences sharedPrefs, final SharedPreferences.Editor editor) {
|
||||
try {
|
||||
editor.putString("chart_sleep_range_mode", sharedPrefs.getBoolean("chart_sleep_range_24h", false) ? "24h" : "18:00");
|
||||
} catch (final Exception e) {
|
||||
LOG.error("Failed to migrate prefs to version 58", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5039,6 +5039,17 @@
|
||||
<item>23</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="sleep_range_entries">
|
||||
<item>@string/pref_chart_sleep_range_rolling_24h</item>
|
||||
<item>@string/pref_chart_sleep_range_noon</item>
|
||||
<item>@string/pref_chart_sleep_range_18h</item>
|
||||
</string-array>
|
||||
<string-array name="sleep_range_values">
|
||||
<item>24h</item>
|
||||
<item>12:00</item>
|
||||
<item>18:00</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="prefs_wena3_button_action_list">
|
||||
<item>@string/menuitem_nothing</item>
|
||||
<!-- <item>@string/menuitem_alexa</item> -->
|
||||
|
||||
@@ -1361,8 +1361,10 @@
|
||||
<string name="weekstepschart_steps_a_week_or_month">Steps per week/month</string>
|
||||
<string name="weeksleepchart_sleep_a_week_or_month">Sleep per week/month</string>
|
||||
<string name="pref_title_chart_sleep_rolling_24_hour">Sleep range</string>
|
||||
<string name="pref_chart_sleep_rolling_24_on">Past 24 hours</string>
|
||||
<string name="pref_chart_sleep_rolling_24_off">Noon to noon</string>
|
||||
<string name="pref_summary_chart_sleep_range">Determines which day a sleep session is assigned to</string>
|
||||
<string name="pref_chart_sleep_range_rolling_24h">Rolling 24 hours</string>
|
||||
<string name="pref_chart_sleep_range_noon">Noon (12:00)</string>
|
||||
<string name="pref_chart_sleep_range_18h">Evening (18:00)</string>
|
||||
<string name="activity_prefs_chart_min_steps_per_minute_for_run">Minimal steps per minute to detect run</string>
|
||||
<string name="activity_prefs_chart_min_steps_per_minute">Minimal steps per minute to detect activity</string>
|
||||
<string name="activity_prefs_chart_max_idle_phase_length">Pause length to separate activities (minutes)</string>
|
||||
|
||||
@@ -53,12 +53,12 @@
|
||||
android:title="@string/pref_title_charts_swipe"
|
||||
app:iconSpaceReserved="false" />
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
android:defaultValue="false"
|
||||
android:key="chart_sleep_range_24h"
|
||||
android:layout="@layout/preference_checkbox"
|
||||
android:summaryOff="@string/pref_chart_sleep_rolling_24_off"
|
||||
android:summaryOn="@string/pref_chart_sleep_rolling_24_on"
|
||||
<ListPreference
|
||||
android:defaultValue="18:00"
|
||||
android:entries="@array/sleep_range_entries"
|
||||
android:entryValues="@array/sleep_range_values"
|
||||
android:key="chart_sleep_range_mode"
|
||||
android:summary="@string/pref_summary_chart_sleep_range"
|
||||
android:title="@string/pref_title_chart_sleep_rolling_24_hour"
|
||||
app:iconSpaceReserved="false" />
|
||||
|
||||
|
||||
Reference in New Issue
Block a user