From cac41ea945e2def8ca7fd099a75df2abd0aaabb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Rebelo?= Date: Mon, 24 Jul 2023 23:54:32 +0100 Subject: [PATCH] Upgrade charts preferences to androidx --- .../charts/ChartsPreferencesActivity.java | 76 ++++++++++--------- app/src/main/res/xml/charts_preferences.xml | 36 +++++---- 2 files changed, 64 insertions(+), 48 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsPreferencesActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsPreferencesActivity.java index 2bf7eeb21..6e2a893a7 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsPreferencesActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsPreferencesActivity.java @@ -1,5 +1,5 @@ -/* Copyright (C) 2015-2020 Andreas Shimokawa, Carsten Pfeiffer, Lem Dulfo, - vanous +/* Copyright (C) 2015-2023 Andreas Shimokawa, Carsten Pfeiffer, Lem Dulfo, + vanous, José Rebelo This file is part of Gadgetbridge. @@ -19,49 +19,57 @@ package nodomain.freeyourgadget.gadgetbridge.activities.charts; import android.content.Intent; import android.os.Bundle; -import android.preference.Preference; +import android.text.InputType; + +import androidx.fragment.app.Fragment; +import androidx.preference.Preference; -import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.activities.AboutUserPreferencesActivity; -import nodomain.freeyourgadget.gadgetbridge.activities.AbstractSettingsActivity; -import nodomain.freeyourgadget.gadgetbridge.activities.SettingsActivity; +import nodomain.freeyourgadget.gadgetbridge.activities.AbstractGBActivity; import nodomain.freeyourgadget.gadgetbridge.util.GBPrefs; -import nodomain.freeyourgadget.gadgetbridge.util.Prefs; -public class ChartsPreferencesActivity extends AbstractSettingsActivity { +public class ChartsPreferencesActivity extends AbstractGBActivity { @Override - protected void onCreate(Bundle savedInstanceState) { + protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); - addPreferencesFromResource(R.xml.charts_preferences); - } - @Override - protected void onPostCreate(Bundle savedInstanceState) { - super.onPostCreate(savedInstanceState); + setContentView(R.layout.activity_device_settings); - Preference pref = findPreference("pref_category_activity_personal"); - pref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { - public boolean onPreferenceClick(Preference preference) { - Intent enableIntent = new Intent(ChartsPreferencesActivity.this, AboutUserPreferencesActivity.class); - startActivity(enableIntent); - return true; + if (savedInstanceState == null) { + Fragment fragment = getSupportFragmentManager().findFragmentByTag(ChartsPreferencesFragment.FRAGMENT_TAG); + if (fragment == null) { + fragment = new ChartsPreferencesFragment(); } - }); - + getSupportFragmentManager() + .beginTransaction() + .replace(R.id.settings_container, fragment, ChartsPreferencesFragment.FRAGMENT_TAG) + .commit(); + } } + public static class ChartsPreferencesFragment extends AbstractPreferenceFragment { + static final String FRAGMENT_TAG = "CHARTS_PREFERENCES_FRAGMENT"; - @Override - protected String[] getPreferenceKeysWithSummary() { - return new String[]{ - "chart_list_min_session_length", - "chart_list_max_idle_phase_length", - "chart_list_min_steps_per_minute", - "chart_list_min_steps_per_minute_for_run", - GBPrefs.CHART_MAX_HEART_RATE, - GBPrefs.CHART_MIN_HEART_RATE, - "chart_sleep_lines_limit", - }; + @Override + public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) { + addPreferencesFromResource(R.xml.charts_preferences); + + setInputTypeFor(GBPrefs.CHART_MAX_HEART_RATE, InputType.TYPE_CLASS_NUMBER); + setInputTypeFor(GBPrefs.CHART_MIN_HEART_RATE, InputType.TYPE_CLASS_NUMBER); + setInputTypeFor("chart_sleep_lines_limit", InputType.TYPE_CLASS_NUMBER); + setInputTypeFor("chart_list_min_session_length", InputType.TYPE_CLASS_NUMBER); + setInputTypeFor("chart_list_max_idle_phase_length", InputType.TYPE_CLASS_NUMBER); + setInputTypeFor("chart_list_min_steps_per_minute", InputType.TYPE_CLASS_NUMBER); + setInputTypeFor("chart_list_min_steps_per_minute_for_run", InputType.TYPE_CLASS_NUMBER); + + final Preference aboutUserPref = findPreference("pref_category_activity_personal"); + if (aboutUserPref != null) { + aboutUserPref.setOnPreferenceClickListener(preference -> { + final Intent enableIntent = new Intent(getActivity(), AboutUserPreferencesActivity.class); + startActivity(enableIntent); + return true; + }); + } + } } - } diff --git a/app/src/main/res/xml/charts_preferences.xml b/app/src/main/res/xml/charts_preferences.xml index 67d3f01f9..821446169 100644 --- a/app/src/main/res/xml/charts_preferences.xml +++ b/app/src/main/res/xml/charts_preferences.xml @@ -1,5 +1,6 @@ - + @@ -9,47 +10,49 @@ android:inputType="number" android:key="chart_max_heart_rate" android:maxLength="3" - android:title="@string/activity_prefs_chart_max_heart_rate" /> + android:title="@string/activity_prefs_chart_max_heart_rate" + app:useSimpleSummaryProvider="true" /> + android:title="@string/activity_prefs_chart_min_heart_rate" + app:useSimpleSummaryProvider="true" /> - - - - - - @@ -59,7 +62,8 @@ android:inputType="number" android:key="chart_sleep_lines_limit" android:maxLength="2" - android:title="@string/pref_chart_sleep_lines_limit" /> + android:title="@string/pref_chart_sleep_lines_limit" + app:useSimpleSummaryProvider="true" /> @@ -72,28 +76,32 @@ android:inputType="number" android:key="chart_list_min_session_length" android:maxLength="2" - android:title="@string/activity_prefs_chart_min_session_length" /> + android:title="@string/activity_prefs_chart_min_session_length" + app:useSimpleSummaryProvider="true" /> + android:title="@string/activity_prefs_chart_max_idle_phase_length" + app:useSimpleSummaryProvider="true" /> + android:title="@string/activity_prefs_chart_min_steps_per_minute" + app:useSimpleSummaryProvider="true" /> + android:title="@string/activity_prefs_chart_min_steps_per_minute_for_run" + app:useSimpleSummaryProvider="true" />