Bangle.js: Update preferences to use sub-screens

This commit is contained in:
José Rebelo 2024-03-16 17:50:01 +00:00
parent 9db60f16d1
commit d9ec993d14
5 changed files with 79 additions and 61 deletions

View File

@ -27,6 +27,7 @@ public enum DeviceSpecificSettingsScreen {
CONNECTION("pref_screen_connection", R.xml.devicesettings_root_connection), CONNECTION("pref_screen_connection", R.xml.devicesettings_root_connection),
DEVELOPER("pref_screen_developer", R.xml.devicesettings_root_developer), DEVELOPER("pref_screen_developer", R.xml.devicesettings_root_developer),
DISPLAY("pref_screen_display", R.xml.devicesettings_root_display), DISPLAY("pref_screen_display", R.xml.devicesettings_root_display),
LOCATION("pref_screen_location", R.xml.devicesettings_root_location),
NOTIFICATIONS("pref_screen_notifications", R.xml.devicesettings_root_notifications), NOTIFICATIONS("pref_screen_notifications", R.xml.devicesettings_root_notifications),
DATE_TIME("pref_screen_date_time", R.xml.devicesettings_root_date_time), DATE_TIME("pref_screen_date_time", R.xml.devicesettings_root_date_time),
WORKOUT("pref_screen_workout", R.xml.devicesettings_root_workout), WORKOUT("pref_screen_workout", R.xml.devicesettings_root_workout),

View File

@ -36,7 +36,9 @@ import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.BuildConfig; import nodomain.freeyourgadget.gadgetbridge.BuildConfig;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettings;
import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettingsCustomizer; import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettingsCustomizer;
import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettingsScreen;
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractBLEDeviceCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.AbstractBLEDeviceCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider; import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
@ -172,33 +174,47 @@ public class BangleJSCoordinator extends AbstractBLEDeviceCoordinator {
} }
@Override @Override
public int[] getSupportedDeviceSpecificSettings(final GBDevice device) { public DeviceSpecificSettings getDeviceSpecificSettings(final GBDevice device) {
final List<Integer> settings = new ArrayList<>(); final DeviceSpecificSettings deviceSpecificSettings = new DeviceSpecificSettings();
settings.add(R.xml.devicesettings_banglejs_location); deviceSpecificSettings.addRootScreen(
DeviceSpecificSettingsScreen.LOCATION,
R.xml.devicesettings_banglejs_location
);
settings.add(R.xml.devicesettings_header_notifications); deviceSpecificSettings.addRootScreen(
settings.add(R.xml.devicesettings_text_bitmaps); DeviceSpecificSettingsScreen.NOTIFICATIONS,
settings.add(R.xml.devicesettings_transliteration); R.xml.devicesettings_text_bitmaps,
R.xml.devicesettings_transliteration
);
settings.add(R.xml.devicesettings_header_calendar); deviceSpecificSettings.addRootScreen(
settings.add(R.xml.devicesettings_sync_calendar); DeviceSpecificSettingsScreen.CALENDAR,
R.xml.devicesettings_sync_calendar
);
settings.add(R.xml.devicesettings_header_connection); final List<Integer> connection = deviceSpecificSettings.addRootScreen(
settings.add(R.xml.devicesettings_high_mtu); DeviceSpecificSettingsScreen.CONNECTION,
if (BuildConfig.INTERNET_ACCESS) R.xml.devicesettings_high_mtu
settings.add(R.xml.devicesettings_device_internet_access); );
if (BuildConfig.INTERNET_ACCESS) {
connection.add(R.xml.devicesettings_device_internet_access);
}
settings.add(R.xml.devicesettings_banglejs_activity); deviceSpecificSettings.addRootScreen(
DeviceSpecificSettingsScreen.ACTIVITY_INFO,
R.xml.devicesettings_banglejs_activity
);
settings.add(R.xml.devicesettings_header_apps); deviceSpecificSettings.addRootScreen(R.xml.devicesettings_loyalty_cards);
settings.add(R.xml.devicesettings_loyalty_cards);
settings.add(R.xml.devicesettings_header_developer); deviceSpecificSettings.addRootScreen(
settings.add(R.xml.devicesettings_banglejs_apploader); DeviceSpecificSettingsScreen.DEVELOPER,
settings.add(R.xml.devicesettings_device_intents); R.xml.devicesettings_banglejs_apploader,
R.xml.devicesettings_device_intents
);
return ArrayUtils.toPrimitive(settings.toArray(new Integer[0])); return deviceSpecificSettings;
} }
@Override @Override

View File

@ -1,23 +1,19 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" <androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"> xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory
android:key="pref_key_header_banglejs_activity"
android:title="@string/Activity">
<Preference <Preference
android:icon="@drawable/ic_refresh" android:icon="@drawable/ic_refresh"
android:key="pref_banglejs_activity_full_sync_trigger" android:key="pref_banglejs_activity_full_sync_trigger"
android:summary="@string/pref_activity_full_sync_trigger_summary" android:summary="@string/pref_activity_full_sync_trigger_summary"
android:title="@string/pref_activity_full_sync_trigger_title" /> android:title="@string/pref_activity_full_sync_trigger_title" />
<!-- dummy preference, just to trigger customizer notifications --> <!-- dummy preference, just to trigger customizer notifications -->
<EditTextPreference <EditTextPreference
android:defaultValue="NOT_RUNNING" android:defaultValue="NOT_RUNNING"
android:enabled="false" android:enabled="false"
android:key="pref_banglejs_activity_full_sync_status" android:key="pref_banglejs_activity_full_sync_status"
android:shouldDisableView="false" android:shouldDisableView="false"
android:title="pref_banglejs_activity_full_sync_status" android:title="pref_banglejs_activity_full_sync_status"
app:isPreferenceVisible="false" /> app:isPreferenceVisible="false" />
</PreferenceCategory>
</androidx.preference.PreferenceScreen> </androidx.preference.PreferenceScreen>

View File

@ -1,28 +1,24 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory <SwitchPreferenceCompat
android:key="pref_header_location" android:defaultValue="false"
android:title="@string/pref_header_location"> android:icon="@drawable/ic_gps_location"
<SwitchPreferenceCompat android:key="banglejs_gps_update"
android:defaultValue="false" android:summary="@string/pref_summary_banglejs_phone_gps_enbale"
android:icon="@drawable/ic_gps_location" android:title="@string/pref_title_banglejs_phone_gps_enbale" />
android:key="banglejs_gps_update" <EditTextPreference
android:summary="@string/pref_summary_banglejs_phone_gps_enbale" android:defaultValue="1000"
android:title="@string/pref_title_banglejs_phone_gps_enbale" /> android:dependency="banglejs_gps_update"
<EditTextPreference android:icon="@drawable/ic_access_time"
android:defaultValue="1000" android:inputType="number"
android:dependency="banglejs_gps_update" android:key="banglejs_gps_update_interval"
android:icon="@drawable/ic_access_time" android:summary="@string/pref_summary_banglejs_phone_gps_update_interval"
android:inputType="number" android:title="@string/pref_title_banglejs_phone_gps_update_interval" />
android:key="banglejs_gps_update_interval" <SwitchPreferenceCompat
android:summary="@string/pref_summary_banglejs_phone_gps_update_interval" android:defaultValue="false"
android:title="@string/pref_title_banglejs_phone_gps_update_interval" /> android:dependency="banglejs_gps_update"
<SwitchPreferenceCompat android:icon="@drawable/ic_gps_location"
android:defaultValue="false" android:key="banglejs_gps_use_network_only"
android:dependency="banglejs_gps_update" android:summary="@string/pref_summary_banglejs_phone_gps_network_only"
android:icon="@drawable/ic_gps_location" android:title="@string/pref_title_banglejs_phone_gps_network_only" />
android:key="banglejs_gps_use_network_only"
android:summary="@string/pref_summary_banglejs_phone_gps_network_only"
android:title="@string/pref_title_banglejs_phone_gps_network_only" />
</PreferenceCategory>
</androidx.preference.PreferenceScreen> </androidx.preference.PreferenceScreen>

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceScreen
android:icon="@drawable/ic_gps_location"
android:key="pref_screen_location"
android:persistent="false"
android:title="@string/pref_header_location">
</PreferenceScreen>
</androidx.preference.PreferenceScreen>