2024-01-10 18:54:00 +01:00
|
|
|
/* Copyright (C) 2019-2024 akasaka / Genjitsu Labs, Alicia Hormann, Andreas
|
|
|
|
Böhler, Andreas Shimokawa, Arjan Schrijver, Cre3per, Damien Gaignon, Daniel
|
|
|
|
Dakhno, Daniele Gobbetti, Davis Mosenkovs, foxstidious, José Rebelo, mamucho,
|
|
|
|
NekoBox, opavlov, Petr Vaněk, Yoran Vulker, Yukai Li, Zhong Jianxin
|
2019-11-23 21:52:46 +01:00
|
|
|
|
|
|
|
This file is part of Gadgetbridge.
|
|
|
|
|
|
|
|
Gadgetbridge is free software: you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU Affero General Public License as published
|
|
|
|
by the Free Software Foundation, either version 3 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
Gadgetbridge is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU Affero General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU Affero General Public License
|
2024-01-10 18:54:00 +01:00
|
|
|
along with this program. If not, see <https://www.gnu.org/licenses/>. */
|
2019-04-21 21:18:08 +02:00
|
|
|
package nodomain.freeyourgadget.gadgetbridge.activities.devicesettings;
|
|
|
|
|
2024-04-12 23:02:39 +02:00
|
|
|
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.*;
|
|
|
|
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_CONTROL_CENTER_SORTABLE;
|
|
|
|
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_DISPLAY_ITEMS;
|
|
|
|
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_DISPLAY_ITEMS_SORTABLE;
|
|
|
|
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_EXPOSE_HR_THIRDPARTY;
|
|
|
|
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_SHORTCUTS;
|
|
|
|
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_SHORTCUTS_SORTABLE;
|
|
|
|
import static nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst.PREF_WORKOUT_ACTIVITY_TYPES_SORTABLE;
|
|
|
|
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI2_DATEFORMAT;
|
|
|
|
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MI2_ROTATE_WRIST_TO_SWITCH_INFO;
|
|
|
|
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_NIGHT_MODE;
|
|
|
|
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_NIGHT_MODE_END;
|
|
|
|
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_NIGHT_MODE_OFF;
|
|
|
|
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_NIGHT_MODE_SCHEDULED;
|
|
|
|
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_NIGHT_MODE_START;
|
|
|
|
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_SWIPE_UNLOCK;
|
|
|
|
|
2023-12-11 11:50:31 +01:00
|
|
|
import android.content.Context;
|
2021-11-18 12:22:43 +01:00
|
|
|
import android.content.Intent;
|
2023-12-11 11:50:31 +01:00
|
|
|
import android.media.AudioManager;
|
2019-04-21 21:18:08 +02:00
|
|
|
import android.os.Bundle;
|
2019-06-05 14:11:44 +02:00
|
|
|
import android.text.InputType;
|
2019-04-21 21:18:08 +02:00
|
|
|
|
2021-11-18 12:22:43 +01:00
|
|
|
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
2021-10-07 14:32:09 +02:00
|
|
|
import androidx.preference.ListPreference;
|
2019-05-22 00:42:22 +02:00
|
|
|
import androidx.preference.Preference;
|
2024-03-16 18:21:42 +01:00
|
|
|
import androidx.preference.PreferenceScreen;
|
2020-11-06 11:26:50 +01:00
|
|
|
|
2021-10-07 14:32:09 +02:00
|
|
|
import org.apache.commons.lang3.ArrayUtils;
|
2019-06-05 16:00:18 +02:00
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
2020-10-13 00:25:43 +02:00
|
|
|
import java.util.ArrayList;
|
2023-12-09 12:40:28 +01:00
|
|
|
import java.util.Collections;
|
2022-05-14 15:20:28 +02:00
|
|
|
import java.util.HashSet;
|
2024-03-16 18:21:42 +01:00
|
|
|
import java.util.List;
|
2019-06-05 16:00:18 +02:00
|
|
|
import java.util.Objects;
|
2022-05-14 15:20:28 +02:00
|
|
|
import java.util.Set;
|
2019-06-05 16:00:18 +02:00
|
|
|
|
2019-05-22 00:42:22 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
2021-10-07 14:32:09 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.R;
|
2024-04-12 23:02:39 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractPreferenceFragment;
|
2022-06-16 23:28:17 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.activities.CalBlacklistActivity;
|
2023-05-18 00:43:29 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.activities.ConfigureContacts;
|
2022-05-09 20:47:08 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.activities.ConfigureWorldClocks;
|
2023-09-23 12:31:41 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.activities.app_specific_notifications.AppSpecificNotificationSettingsActivity;
|
2023-07-04 00:19:19 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.activities.loyaltycards.LoyaltyCardsSettingsActivity;
|
|
|
|
import nodomain.freeyourgadget.gadgetbridge.activities.loyaltycards.LoyaltyCardsSettingsConst;
|
2023-12-11 23:00:16 +01:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.activities.widgets.WidgetScreensListActivity;
|
2022-08-25 11:07:23 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.capabilities.HeartRateCapability;
|
2022-07-05 20:29:16 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.capabilities.password.PasswordCapabilityImpl;
|
2022-05-09 20:47:08 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
2021-11-18 12:22:43 +01:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.devices.DeviceManager;
|
2019-11-14 12:33:36 +01:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst;
|
2019-05-22 10:49:59 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst;
|
2022-05-09 20:47:08 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
2020-10-13 00:25:43 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.model.CannedMessagesSpec;
|
2019-05-22 00:42:22 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
|
2019-04-21 21:18:08 +02:00
|
|
|
|
2023-07-25 00:33:56 +02:00
|
|
|
public class DeviceSpecificSettingsFragment extends AbstractPreferenceFragment implements DeviceSpecificSettingsHandler {
|
2021-11-28 01:34:29 +01:00
|
|
|
|
2019-06-05 16:00:18 +02:00
|
|
|
private static final Logger LOG = LoggerFactory.getLogger(DeviceSpecificSettingsFragment.class);
|
|
|
|
|
2019-05-22 00:42:22 +02:00
|
|
|
static final String FRAGMENT_TAG = "DEVICE_SPECIFIC_SETTINGS_FRAGMENT";
|
|
|
|
|
2022-01-14 23:01:42 +01:00
|
|
|
private DeviceSpecificSettingsCustomizer deviceSpecificSettingsCustomizer;
|
|
|
|
|
2022-05-09 20:47:08 +02:00
|
|
|
private GBDevice device;
|
|
|
|
|
2024-03-16 18:21:42 +01:00
|
|
|
private void setSettingsFileSuffix(String settingsFileSuffix) {
|
2019-04-21 21:18:08 +02:00
|
|
|
Bundle args = new Bundle();
|
|
|
|
args.putString("settingsFileSuffix", settingsFileSuffix);
|
2024-03-16 18:21:42 +01:00
|
|
|
setArguments(args);
|
|
|
|
}
|
|
|
|
|
|
|
|
private void setDeviceSpecificSettings(final DeviceSpecificSettings deviceSpecificSettings) {
|
|
|
|
final Bundle args = getArguments() != null ? getArguments() : new Bundle();
|
|
|
|
args.putParcelable("deviceSpecificSettings", deviceSpecificSettings);
|
2019-04-21 21:18:08 +02:00
|
|
|
setArguments(args);
|
|
|
|
}
|
|
|
|
|
2022-01-14 23:01:42 +01:00
|
|
|
private void setDeviceSpecificSettingsCustomizer(final DeviceSpecificSettingsCustomizer customizer) {
|
|
|
|
final Bundle args = getArguments() != null ? getArguments() : new Bundle();
|
|
|
|
args.putParcelable("deviceSpecificSettingsCustomizer", customizer);
|
|
|
|
setArguments(args);
|
|
|
|
}
|
2019-04-21 21:18:08 +02:00
|
|
|
|
2022-05-09 20:47:08 +02:00
|
|
|
private void setDevice(final GBDevice device) {
|
|
|
|
final Bundle args = getArguments() != null ? getArguments() : new Bundle();
|
|
|
|
args.putParcelable("device", device);
|
|
|
|
setArguments(args);
|
|
|
|
}
|
|
|
|
|
2019-04-21 21:18:08 +02:00
|
|
|
@Override
|
|
|
|
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
2019-05-22 00:42:22 +02:00
|
|
|
Bundle arguments = getArguments();
|
|
|
|
if (arguments == null) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
String settingsFileSuffix = arguments.getString("settingsFileSuffix", null);
|
2024-03-16 18:21:42 +01:00
|
|
|
DeviceSpecificSettings deviceSpecificSettings = arguments.getParcelable("deviceSpecificSettings");
|
2022-01-14 23:01:42 +01:00
|
|
|
this.deviceSpecificSettingsCustomizer = arguments.getParcelable("deviceSpecificSettingsCustomizer");
|
2022-05-09 20:47:08 +02:00
|
|
|
this.device = arguments.getParcelable("device");
|
2021-10-07 14:32:09 +02:00
|
|
|
|
2024-03-16 18:21:42 +01:00
|
|
|
if (settingsFileSuffix == null || deviceSpecificSettings == null) {
|
2019-05-22 00:42:22 +02:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2019-04-21 21:18:08 +02:00
|
|
|
getPreferenceManager().setSharedPreferencesName("devicesettings_" + settingsFileSuffix);
|
2019-05-22 00:42:22 +02:00
|
|
|
|
|
|
|
if (rootKey == null) {
|
|
|
|
// we are the main preference screen
|
|
|
|
boolean first = true;
|
2024-03-16 18:21:42 +01:00
|
|
|
for (int setting : deviceSpecificSettings.getRootScreens()) {
|
2019-05-22 00:42:22 +02:00
|
|
|
if (first) {
|
|
|
|
setPreferencesFromResource(setting, null);
|
|
|
|
first = false;
|
|
|
|
} else {
|
|
|
|
addPreferencesFromResource(setting);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
2024-03-16 18:21:42 +01:00
|
|
|
// First attempt to find a known screen for this key
|
|
|
|
final List<Integer> screenSettings = deviceSpecificSettings.getScreen(rootKey);
|
|
|
|
if (screenSettings != null) {
|
|
|
|
boolean first = true;
|
|
|
|
for (int setting : screenSettings) {
|
|
|
|
if (first) {
|
|
|
|
// Use the root key here to set the root screen, so that the actionbar title gets updated
|
|
|
|
setPreferencesFromResource(setting, rootKey);
|
|
|
|
first = false;
|
|
|
|
} else {
|
|
|
|
addPreferencesFromResource(setting);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
// Now, this is ugly: search all the xml files for the rootKey
|
|
|
|
// This means that this device is using the deprecated getSupportedDeviceSpecificSettings,
|
|
|
|
// or that we're on a sub-screen
|
|
|
|
final List<Integer> allScreens = deviceSpecificSettings.getAllScreens();
|
|
|
|
for (int setting : allScreens) {
|
|
|
|
try {
|
|
|
|
setPreferencesFromResource(setting, rootKey);
|
|
|
|
} catch (Exception ignore) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
break;
|
2019-05-22 00:42:22 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2024-03-16 18:21:42 +01:00
|
|
|
|
|
|
|
// Since all root preference screens are empty, clicking them will not do anything
|
|
|
|
// add on-click listeners
|
|
|
|
for (final DeviceSpecificSettingsScreen value : DeviceSpecificSettingsScreen.values()) {
|
|
|
|
final PreferenceScreen prefScreen = findPreference(value.getKey());
|
|
|
|
if (prefScreen != null) {
|
|
|
|
prefScreen.setOnPreferenceClickListener(p -> {
|
|
|
|
onNavigateToScreen(prefScreen);
|
|
|
|
return true;
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-05-22 00:42:22 +02:00
|
|
|
setChangeListener();
|
2019-04-21 21:18:08 +02:00
|
|
|
}
|
|
|
|
|
2019-05-22 00:42:22 +02:00
|
|
|
/*
|
|
|
|
* delayed execution so that the preferences are applied first
|
|
|
|
*/
|
|
|
|
private void invokeLater(Runnable runnable) {
|
|
|
|
getListView().post(runnable);
|
|
|
|
}
|
|
|
|
|
2022-01-15 00:50:00 +01:00
|
|
|
/*
|
|
|
|
* delayed execution so that the preferences are applied first
|
|
|
|
*/
|
|
|
|
@Override
|
|
|
|
public void notifyPreferenceChanged(final String preferenceKey) {
|
|
|
|
invokeLater(new Runnable() {
|
|
|
|
@Override
|
|
|
|
public void run() {
|
2022-08-01 23:04:41 +02:00
|
|
|
GBApplication.deviceService(device).onSendConfiguration(preferenceKey);
|
2022-01-15 00:50:00 +01:00
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2019-05-22 00:42:22 +02:00
|
|
|
private void setChangeListener() {
|
2023-09-27 23:11:02 +02:00
|
|
|
final DeviceCoordinator coordinator = device.getDeviceCoordinator();
|
2022-07-05 20:29:16 +02:00
|
|
|
|
2020-10-13 00:25:43 +02:00
|
|
|
final Prefs prefs = new Prefs(getPreferenceManager().getSharedPreferences());
|
2024-03-09 15:24:50 +01:00
|
|
|
|
|
|
|
final ListPreference languageListPreference = findPreference("language");
|
|
|
|
if (languageListPreference != null) {
|
|
|
|
final String[] supportedLanguages = coordinator.getSupportedLanguageSettings(device);
|
|
|
|
CharSequence[] entries = languageListPreference.getEntries();
|
|
|
|
CharSequence[] values = languageListPreference.getEntryValues();
|
|
|
|
for (int i = entries.length - 1; i >= 0; i--) {
|
|
|
|
if (!ArrayUtils.contains(supportedLanguages, values[i])) {
|
|
|
|
entries = ArrayUtils.remove(entries, i);
|
|
|
|
values = ArrayUtils.remove(values, i);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
languageListPreference.setEntries(entries);
|
|
|
|
languageListPreference.setEntryValues(values);
|
|
|
|
}
|
|
|
|
|
2019-05-24 23:46:20 +02:00
|
|
|
String disconnectNotificationState = prefs.getString(PREF_DISCONNECT_NOTIFICATION, PREF_DO_NOT_DISTURB_OFF);
|
|
|
|
boolean disconnectNotificationScheduled = disconnectNotificationState.equals(PREF_DO_NOT_DISTURB_SCHEDULED);
|
2019-05-22 00:42:22 +02:00
|
|
|
|
|
|
|
final Preference disconnectNotificationStart = findPreference(PREF_DISCONNECT_NOTIFICATION_START);
|
|
|
|
if (disconnectNotificationStart != null) {
|
|
|
|
disconnectNotificationStart.setEnabled(disconnectNotificationScheduled);
|
|
|
|
disconnectNotificationStart.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
2022-01-15 00:50:00 +01:00
|
|
|
notifyPreferenceChanged(PREF_DISCONNECT_NOTIFICATION_START);
|
2019-05-22 00:42:22 +02:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
final Preference disconnectNotificationEnd = findPreference(PREF_DISCONNECT_NOTIFICATION_END);
|
|
|
|
if (disconnectNotificationEnd != null) {
|
|
|
|
disconnectNotificationEnd.setEnabled(disconnectNotificationScheduled);
|
|
|
|
disconnectNotificationEnd.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
2022-01-15 00:50:00 +01:00
|
|
|
notifyPreferenceChanged(PREF_DISCONNECT_NOTIFICATION_END);
|
2019-05-22 00:42:22 +02:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
final Preference disconnectNotification = findPreference(PREF_DISCONNECT_NOTIFICATION);
|
|
|
|
if (disconnectNotification != null) {
|
|
|
|
disconnectNotification.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
2019-05-24 23:46:20 +02:00
|
|
|
final boolean scheduled = PREF_DO_NOT_DISTURB_SCHEDULED.equals(newVal.toString());
|
2019-05-22 00:42:22 +02:00
|
|
|
|
2019-06-05 16:00:18 +02:00
|
|
|
Objects.requireNonNull(disconnectNotificationStart).setEnabled(scheduled);
|
|
|
|
Objects.requireNonNull(disconnectNotificationEnd).setEnabled(scheduled);
|
2022-01-15 00:50:00 +01:00
|
|
|
notifyPreferenceChanged(PREF_DISCONNECT_NOTIFICATION);
|
2019-05-22 00:42:22 +02:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
2019-05-22 10:49:59 +02:00
|
|
|
|
|
|
|
String nightModeState = prefs.getString(MiBandConst.PREF_NIGHT_MODE, PREF_NIGHT_MODE_OFF);
|
|
|
|
boolean nightModeScheduled = nightModeState.equals(PREF_NIGHT_MODE_SCHEDULED);
|
|
|
|
|
|
|
|
final Preference nightModeStart = findPreference(PREF_NIGHT_MODE_START);
|
|
|
|
if (nightModeStart != null) {
|
|
|
|
nightModeStart.setEnabled(nightModeScheduled);
|
|
|
|
nightModeStart.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
2022-01-15 00:50:00 +01:00
|
|
|
notifyPreferenceChanged(PREF_NIGHT_MODE_START);
|
2019-05-22 10:49:59 +02:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
final Preference nightModeEnd = findPreference(PREF_NIGHT_MODE_END);
|
|
|
|
if (nightModeEnd != null) {
|
|
|
|
nightModeEnd.setEnabled(nightModeScheduled);
|
|
|
|
nightModeEnd.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
2022-01-15 00:50:00 +01:00
|
|
|
notifyPreferenceChanged(PREF_NIGHT_MODE_END);
|
2019-05-22 10:49:59 +02:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
final Preference nightMode = findPreference(PREF_NIGHT_MODE);
|
|
|
|
if (nightMode != null) {
|
|
|
|
|
|
|
|
nightMode.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
|
|
|
final boolean scheduled = PREF_NIGHT_MODE_SCHEDULED.equals(newVal.toString());
|
|
|
|
|
2019-06-05 16:00:18 +02:00
|
|
|
Objects.requireNonNull(nightModeStart).setEnabled(scheduled);
|
|
|
|
Objects.requireNonNull(nightModeEnd).setEnabled(scheduled);
|
2019-05-22 10:49:59 +02:00
|
|
|
|
2022-01-15 00:50:00 +01:00
|
|
|
notifyPreferenceChanged(PREF_NIGHT_MODE);
|
2019-05-22 10:49:59 +02:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2019-05-24 23:46:20 +02:00
|
|
|
|
2022-03-06 23:48:47 +01:00
|
|
|
String doNotDisturbState = prefs.getString(PREF_DO_NOT_DISTURB, PREF_DO_NOT_DISTURB_OFF);
|
2019-05-24 23:46:20 +02:00
|
|
|
boolean doNotDisturbScheduled = doNotDisturbState.equals(PREF_DO_NOT_DISTURB_SCHEDULED);
|
|
|
|
|
|
|
|
final Preference doNotDisturbStart = findPreference(PREF_DO_NOT_DISTURB_START);
|
|
|
|
if (doNotDisturbStart != null) {
|
|
|
|
doNotDisturbStart.setEnabled(doNotDisturbScheduled);
|
|
|
|
doNotDisturbStart.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
2022-01-15 00:50:00 +01:00
|
|
|
notifyPreferenceChanged(PREF_DO_NOT_DISTURB_START);
|
2019-05-24 23:46:20 +02:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
final Preference doNotDisturbEnd = findPreference(PREF_DO_NOT_DISTURB_END);
|
|
|
|
if (doNotDisturbEnd != null) {
|
|
|
|
doNotDisturbEnd.setEnabled(doNotDisturbScheduled);
|
|
|
|
doNotDisturbEnd.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
2022-01-15 00:50:00 +01:00
|
|
|
notifyPreferenceChanged(PREF_DO_NOT_DISTURB_END);
|
2019-05-24 23:46:20 +02:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
final Preference doNotDisturb = findPreference(PREF_DO_NOT_DISTURB);
|
|
|
|
if (doNotDisturb != null) {
|
|
|
|
doNotDisturb.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
|
|
|
final boolean scheduled = PREF_DO_NOT_DISTURB_SCHEDULED.equals(newVal.toString());
|
|
|
|
|
2019-06-05 16:00:18 +02:00
|
|
|
Objects.requireNonNull(doNotDisturbStart).setEnabled(scheduled);
|
|
|
|
Objects.requireNonNull(doNotDisturbEnd).setEnabled(scheduled);
|
2019-05-24 23:46:20 +02:00
|
|
|
|
2022-01-15 00:50:00 +01:00
|
|
|
notifyPreferenceChanged(PREF_DO_NOT_DISTURB);
|
2019-05-24 23:46:20 +02:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2022-08-18 23:03:28 +02:00
|
|
|
|
2019-06-05 12:16:10 +02:00
|
|
|
addPreferenceHandlerFor(PREF_SWIPE_UNLOCK);
|
|
|
|
addPreferenceHandlerFor(PREF_MI2_DATEFORMAT);
|
2019-08-02 00:11:11 +02:00
|
|
|
addPreferenceHandlerFor(PREF_DATEFORMAT);
|
|
|
|
addPreferenceHandlerFor(PREF_DISPLAY_ITEMS);
|
2020-11-06 21:47:54 +01:00
|
|
|
addPreferenceHandlerFor(PREF_DISPLAY_ITEMS_SORTABLE);
|
2022-05-09 15:05:08 +02:00
|
|
|
addPreferenceHandlerFor(PREF_WORKOUT_ACTIVITY_TYPES_SORTABLE);
|
2020-05-13 10:15:12 +02:00
|
|
|
addPreferenceHandlerFor(PREF_SHORTCUTS);
|
2020-11-06 21:47:54 +01:00
|
|
|
addPreferenceHandlerFor(PREF_SHORTCUTS_SORTABLE);
|
2022-10-22 21:53:45 +02:00
|
|
|
addPreferenceHandlerFor(PREF_CONTROL_CENTER_SORTABLE);
|
2019-08-02 00:11:11 +02:00
|
|
|
addPreferenceHandlerFor(PREF_LANGUAGE);
|
2019-08-27 11:13:45 +02:00
|
|
|
addPreferenceHandlerFor(PREF_EXPOSE_HR_THIRDPARTY);
|
2020-12-06 00:09:19 +01:00
|
|
|
addPreferenceHandlerFor(PREF_BT_CONNECTED_ADVERTISEMENT);
|
2019-10-05 22:35:30 +02:00
|
|
|
addPreferenceHandlerFor(PREF_WEARLOCATION);
|
2021-09-21 16:37:19 +02:00
|
|
|
addPreferenceHandlerFor(PREF_VIBRATION_ENABLE);
|
|
|
|
addPreferenceHandlerFor(PREF_NOTIFICATION_ENABLE);
|
2023-12-23 22:27:53 +01:00
|
|
|
addPreferenceHandlerFor(PREF_DEVICE_NAME);
|
2022-08-18 23:03:28 +02:00
|
|
|
addPreferenceHandlerFor(PREF_SCREEN_BRIGHTNESS);
|
2022-10-22 21:53:45 +02:00
|
|
|
addPreferenceHandlerFor(PREF_SCREEN_AUTO_BRIGHTNESS);
|
2019-10-05 22:35:30 +02:00
|
|
|
addPreferenceHandlerFor(PREF_SCREEN_ORIENTATION);
|
2022-08-18 23:03:28 +02:00
|
|
|
addPreferenceHandlerFor(PREF_SCREEN_TIMEOUT);
|
2019-10-05 22:35:30 +02:00
|
|
|
addPreferenceHandlerFor(PREF_TIMEFORMAT);
|
2022-10-22 21:53:45 +02:00
|
|
|
addPreferenceHandlerFor(PREF_UPPER_BUTTON_LONG_PRESS);
|
|
|
|
addPreferenceHandlerFor(PREF_LOWER_BUTTON_SHORT_PRESS);
|
2020-10-13 03:06:05 +02:00
|
|
|
addPreferenceHandlerFor(PREF_BUTTON_1_FUNCTION_SHORT);
|
|
|
|
addPreferenceHandlerFor(PREF_BUTTON_2_FUNCTION_SHORT);
|
|
|
|
addPreferenceHandlerFor(PREF_BUTTON_3_FUNCTION_SHORT);
|
|
|
|
addPreferenceHandlerFor(PREF_BUTTON_1_FUNCTION_LONG);
|
|
|
|
addPreferenceHandlerFor(PREF_BUTTON_2_FUNCTION_LONG);
|
|
|
|
addPreferenceHandlerFor(PREF_BUTTON_3_FUNCTION_LONG);
|
|
|
|
addPreferenceHandlerFor(PREF_BUTTON_1_FUNCTION_DOUBLE);
|
|
|
|
addPreferenceHandlerFor(PREF_BUTTON_2_FUNCTION_DOUBLE);
|
|
|
|
addPreferenceHandlerFor(PREF_BUTTON_3_FUNCTION_DOUBLE);
|
2020-03-20 17:14:00 +01:00
|
|
|
addPreferenceHandlerFor(PREF_VIBRATION_STRENGH_PERCENTAGE);
|
2020-04-22 22:36:09 +02:00
|
|
|
addPreferenceHandlerFor(PREF_POWER_MODE);
|
|
|
|
addPreferenceHandlerFor(PREF_LIFTWRIST_NOSHED);
|
|
|
|
addPreferenceHandlerFor(PREF_DISCONNECTNOTIF_NOSHED);
|
|
|
|
addPreferenceHandlerFor(PREF_BUTTON_BP_CALIBRATE);
|
|
|
|
addPreferenceHandlerFor(PREF_ALTITUDE_CALIBRATE);
|
2022-03-07 14:33:10 +01:00
|
|
|
addPreferenceHandlerFor(PREF_INACTIVITY_ENABLE);
|
|
|
|
addPreferenceHandlerFor(PREF_INACTIVITY_START);
|
|
|
|
addPreferenceHandlerFor(PREF_INACTIVITY_END);
|
|
|
|
addPreferenceHandlerFor(PREF_INACTIVITY_THRESHOLD);
|
2022-05-29 21:18:53 +02:00
|
|
|
addPreferenceHandlerFor(PREF_INACTIVITY_THRESHOLD_EXTENDED);
|
2022-03-07 14:33:10 +01:00
|
|
|
addPreferenceHandlerFor(PREF_INACTIVITY_MO);
|
|
|
|
addPreferenceHandlerFor(PREF_INACTIVITY_TU);
|
|
|
|
addPreferenceHandlerFor(PREF_INACTIVITY_WE);
|
|
|
|
addPreferenceHandlerFor(PREF_INACTIVITY_TH);
|
|
|
|
addPreferenceHandlerFor(PREF_INACTIVITY_FR);
|
|
|
|
addPreferenceHandlerFor(PREF_INACTIVITY_SA);
|
|
|
|
addPreferenceHandlerFor(PREF_INACTIVITY_SU);
|
2022-03-07 15:51:54 +01:00
|
|
|
addPreferenceHandlerFor(PREF_INACTIVITY_DND);
|
|
|
|
addPreferenceHandlerFor(PREF_INACTIVITY_DND_START);
|
|
|
|
addPreferenceHandlerFor(PREF_INACTIVITY_DND_END);
|
2021-09-21 16:37:19 +02:00
|
|
|
addPreferenceHandlerFor(PREF_AUTOHEARTRATE_SWITCH);
|
|
|
|
addPreferenceHandlerFor(PREF_AUTOHEARTRATE_SLEEP);
|
|
|
|
addPreferenceHandlerFor(PREF_AUTOHEARTRATE_INTERVAL);
|
|
|
|
addPreferenceHandlerFor(PREF_AUTOHEARTRATE_START);
|
|
|
|
addPreferenceHandlerFor(PREF_AUTOHEARTRATE_END);
|
2022-05-16 18:42:02 +02:00
|
|
|
addPreferenceHandlerFor(PREF_HEARTRATE_ACTIVITY_MONITORING);
|
|
|
|
addPreferenceHandlerFor(PREF_HEARTRATE_ALERT_ENABLED);
|
|
|
|
addPreferenceHandlerFor(PREF_HEARTRATE_STRESS_MONITORING);
|
2022-08-18 23:03:28 +02:00
|
|
|
addPreferenceHandlerFor(PREF_HEARTRATE_STRESS_RELAXATION_REMINDER);
|
|
|
|
addPreferenceHandlerFor(PREF_HEARTRATE_SLEEP_BREATHING_QUALITY_MONITORING);
|
|
|
|
addPreferenceHandlerFor(PREF_SPO2_ALL_DAY_MONITORING);
|
|
|
|
addPreferenceHandlerFor(PREF_SPO2_LOW_ALERT_THRESHOLD);
|
2020-04-22 22:36:09 +02:00
|
|
|
addPreferenceHandlerFor(PREF_DO_NOT_DISTURB_NOAUTO);
|
2021-09-21 16:37:19 +02:00
|
|
|
addPreferenceHandlerFor(PREF_DO_NOT_DISTURB_NOAUTO_START);
|
|
|
|
addPreferenceHandlerFor(PREF_DO_NOT_DISTURB_NOAUTO_END);
|
2024-01-07 23:18:08 +01:00
|
|
|
addPreferenceHandlerFor(PREF_DO_NOT_DISTURB);
|
|
|
|
addPreferenceHandlerFor(PREF_DO_NOT_DISTURB_START);
|
|
|
|
addPreferenceHandlerFor(PREF_DO_NOT_DISTURB_END);
|
|
|
|
addPreferenceHandlerFor(PREF_DO_NOT_DISTURB_MO);
|
|
|
|
addPreferenceHandlerFor(PREF_DO_NOT_DISTURB_TU);
|
|
|
|
addPreferenceHandlerFor(PREF_DO_NOT_DISTURB_WE);
|
|
|
|
addPreferenceHandlerFor(PREF_DO_NOT_DISTURB_TH);
|
|
|
|
addPreferenceHandlerFor(PREF_DO_NOT_DISTURB_FR);
|
|
|
|
addPreferenceHandlerFor(PREF_DO_NOT_DISTURB_SA);
|
|
|
|
addPreferenceHandlerFor(PREF_DO_NOT_DISTURB_SU);
|
2021-12-12 00:15:33 +01:00
|
|
|
addPreferenceHandlerFor(PREF_DO_NOT_DISTURB_LIFT_WRIST);
|
2024-01-07 23:18:08 +01:00
|
|
|
addPreferenceHandlerFor(PREF_DO_NOT_DISTURB_NOT_WEAR);
|
2022-03-07 17:42:46 +01:00
|
|
|
addPreferenceHandlerFor(PREF_FIND_PHONE);
|
|
|
|
addPreferenceHandlerFor(PREF_FIND_PHONE_DURATION);
|
2020-12-20 00:22:35 +01:00
|
|
|
addPreferenceHandlerFor(PREF_AUTOLIGHT);
|
|
|
|
addPreferenceHandlerFor(PREF_AUTOREMOVE_MESSAGE);
|
2021-03-08 14:29:08 +01:00
|
|
|
addPreferenceHandlerFor(PREF_AUTOREMOVE_NOTIFICATIONS);
|
2023-09-30 17:22:00 +02:00
|
|
|
addPreferenceHandlerFor(PREF_PREVIEW_MESSAGE_IN_TITLE);
|
2023-10-08 21:55:55 +02:00
|
|
|
addPreferenceHandlerFor(PREF_CASIO_ALERT_EMAIL);
|
|
|
|
addPreferenceHandlerFor(PREF_CASIO_ALERT_SMS);
|
|
|
|
addPreferenceHandlerFor(PREF_CASIO_ALERT_CALL);
|
|
|
|
addPreferenceHandlerFor(PREF_CASIO_ALERT_CALENDAR);
|
|
|
|
addPreferenceHandlerFor(PREF_CASIO_ALERT_OTHER);
|
2022-08-18 23:03:28 +02:00
|
|
|
addPreferenceHandlerFor(PREF_SCREEN_ON_ON_NOTIFICATIONS);
|
2023-03-19 23:25:44 +01:00
|
|
|
addPreferenceHandlerFor(PREF_WORKOUT_KEEP_SCREEN_ON);
|
2020-12-20 00:22:35 +01:00
|
|
|
addPreferenceHandlerFor(PREF_KEY_VIBRATION);
|
|
|
|
addPreferenceHandlerFor(PREF_OPERATING_SOUNDS);
|
|
|
|
addPreferenceHandlerFor(PREF_FAKE_RING_DURATION);
|
2020-10-05 22:20:20 +02:00
|
|
|
addPreferenceHandlerFor(PREF_ANTILOST_ENABLED);
|
|
|
|
addPreferenceHandlerFor(PREF_HYDRATION_SWITCH);
|
|
|
|
addPreferenceHandlerFor(PREF_HYDRATION_PERIOD);
|
2024-01-28 19:46:13 +01:00
|
|
|
addPreferenceHandlerFor(PREF_HYDRATION_DND);
|
|
|
|
addPreferenceHandlerFor(PREF_HYDRATION_DND_START);
|
|
|
|
addPreferenceHandlerFor(PREF_HYDRATION_DND_END);
|
2020-10-05 22:20:20 +02:00
|
|
|
addPreferenceHandlerFor(PREF_AMPM_ENABLED);
|
2021-03-24 20:02:48 +01:00
|
|
|
addPreferenceHandlerFor(PREF_SOUNDS);
|
2023-03-19 23:35:02 +01:00
|
|
|
addPreferenceHandlerFor(PREF_CAMERA_REMOTE);
|
2023-09-23 12:31:41 +02:00
|
|
|
addPreferenceHandlerFor(PREF_SCREEN_LIFT_WRIST);
|
|
|
|
addPreferenceHandlerFor(PREF_SYNC_CALENDAR);
|
2019-06-05 14:11:44 +02:00
|
|
|
|
2023-04-02 19:50:58 +02:00
|
|
|
addPreferenceHandlerFor(PREF_BLUETOOTH_CALLS_ENABLED);
|
|
|
|
addPreferenceHandlerFor(PREF_DISPLAY_CALLER);
|
|
|
|
addPreferenceHandlerFor(PREF_NOTIFICATION_DELAY_CALLS);
|
2023-10-18 15:59:00 +02:00
|
|
|
addPreferenceHandlerFor(PREF_CALL_REJECT_METHOD);
|
2024-02-20 16:16:58 +01:00
|
|
|
addPreferenceHandlerFor(PREF_AUTO_REPLY_INCOMING_CALL);
|
2023-04-02 19:50:58 +02:00
|
|
|
|
2022-10-22 21:53:45 +02:00
|
|
|
addPreferenceHandlerFor(PREF_SLEEP_MODE_SLEEP_SCREEN);
|
|
|
|
addPreferenceHandlerFor(PREF_SLEEP_MODE_SMART_ENABLE);
|
|
|
|
|
2020-04-12 03:57:13 +02:00
|
|
|
addPreferenceHandlerFor(PREF_HYBRID_HR_DRAW_WIDGET_CIRCLES);
|
|
|
|
addPreferenceHandlerFor(PREF_HYBRID_HR_FORCE_WHITE_COLOR);
|
2020-04-22 01:27:06 +02:00
|
|
|
addPreferenceHandlerFor(PREF_HYBRID_HR_SAVE_RAW_ACTIVITY_FILES);
|
2021-05-31 10:16:33 +02:00
|
|
|
addPreferenceHandlerFor(PREF_HYBRID_HR_DANGEROUS_EXTERNAL_INTENTS);
|
2023-02-04 11:55:56 +01:00
|
|
|
addPreferenceHandlerFor(PREF_HYBRID_HR_ACTIVITY_RECOGNITION_RUNNING_ENABLED);
|
|
|
|
addPreferenceHandlerFor(PREF_HYBRID_HR_ACTIVITY_RECOGNITION_RUNNING_ASK_FIRST);
|
|
|
|
addPreferenceHandlerFor(PREF_HYBRID_HR_ACTIVITY_RECOGNITION_RUNNING_MINUTES);
|
|
|
|
addPreferenceHandlerFor(PREF_HYBRID_HR_ACTIVITY_RECOGNITION_BIKING_ENABLED);
|
|
|
|
addPreferenceHandlerFor(PREF_HYBRID_HR_ACTIVITY_RECOGNITION_BIKING_ASK_FIRST);
|
|
|
|
addPreferenceHandlerFor(PREF_HYBRID_HR_ACTIVITY_RECOGNITION_BIKING_MINUTES);
|
|
|
|
addPreferenceHandlerFor(PREF_HYBRID_HR_ACTIVITY_RECOGNITION_WALKING_ENABLED);
|
|
|
|
addPreferenceHandlerFor(PREF_HYBRID_HR_ACTIVITY_RECOGNITION_WALKING_ASK_FIRST);
|
|
|
|
addPreferenceHandlerFor(PREF_HYBRID_HR_ACTIVITY_RECOGNITION_WALKING_MINUTES);
|
|
|
|
addPreferenceHandlerFor(PREF_HYBRID_HR_ACTIVITY_RECOGNITION_ROWING_ENABLED);
|
|
|
|
addPreferenceHandlerFor(PREF_HYBRID_HR_ACTIVITY_RECOGNITION_ROWING_ASK_FIRST);
|
|
|
|
addPreferenceHandlerFor(PREF_HYBRID_HR_ACTIVITY_RECOGNITION_ROWING_MINUTES);
|
2020-04-12 03:57:13 +02:00
|
|
|
|
2020-10-02 21:58:48 +02:00
|
|
|
addPreferenceHandlerFor(PREF_SONYSWR12_STAMINA);
|
|
|
|
addPreferenceHandlerFor(PREF_SONYSWR12_LOW_VIBRATION);
|
|
|
|
addPreferenceHandlerFor(PREF_SONYSWR12_SMART_INTERVAL);
|
2020-04-22 22:36:09 +02:00
|
|
|
|
2021-09-30 22:40:18 +02:00
|
|
|
addPreferenceHandlerFor(PREF_NOTHING_EAR1_INEAR);
|
|
|
|
addPreferenceHandlerFor(PREF_NOTHING_EAR1_AUDIOMODE);
|
|
|
|
|
2021-10-24 10:02:45 +02:00
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_BUDS_AMBIENT_VOICE_FOCUS);
|
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_BUDS_AMBIENT_VOLUME);
|
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_BUDS_LOCK_TOUCH);
|
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_BUDS_GAME_MODE);
|
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_BUDS_EQUALIZER);
|
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_BUDS_EQUALIZER_DOLBY);
|
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_BUDS_EQUALIZER_MODE);
|
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_BUDS_TOUCH_LEFT);
|
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_BUDS_TOUCH_RIGHT);
|
2021-11-03 22:06:35 +01:00
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_BUDS_LIVE_ANC);
|
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_BUDS_PRESSURE_RELIEF);
|
2022-05-17 22:18:49 +02:00
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_BUDS_PRO_ANC_LEVEL);
|
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_BUDS_AMBIENT_SOUND);
|
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_PRO_DOUBLE_TAP_EDGE);
|
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_BUDS_PRO_IN_EAR_DETECTION);
|
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_BUDS_PRO_VOICE_DETECT);
|
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_BUDS_PRO_VOICE_DETECT_DURATION);
|
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_BUDS_PRO_BALANCE);
|
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_BUDS_PRO_READ_NOTIFICATIONS_OUTLOUD);
|
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_BUDS_AMBIENT_MODE_DURING_CALL);
|
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_BUDS_PRO_AMBIENT_VOLUME_RIGHT);
|
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_BUDS_PRO_AMBIENT_VOLUME_LEFT);
|
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_BUDS_PRO_AMBIENT_SOUND_TONE);
|
|
|
|
addPreferenceHandlerFor(PREFS_NOISE_CONTROL_WITH_ONE_EARBUD);
|
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_BUDS_AMBIENT_MODE);
|
|
|
|
addPreferenceHandlerFor(PREFS_GALAXY_BUDS_SEAMLESS_CONNECTION);
|
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_BUDS_TOUCH_LEFT_SWITCH);
|
|
|
|
addPreferenceHandlerFor(PREF_GALAXY_BUDS_TOUCH_RIGHT_SWITCH);
|
2021-10-24 10:02:45 +02:00
|
|
|
|
2023-04-01 21:58:21 +02:00
|
|
|
addPreferenceHandlerFor(MORNING_UPDATES_ENABLED);
|
|
|
|
addPreferenceHandlerFor(MORNING_UPDATES_CATEGORIES_SORTABLE);
|
|
|
|
|
2023-04-24 20:12:22 +02:00
|
|
|
addPreferenceHandlerFor(SHORTCUT_CARDS_SORTABLE);
|
|
|
|
|
2023-04-24 21:20:43 +02:00
|
|
|
addPreferenceHandlerFor(PREF_WATCHFACE);
|
|
|
|
|
2021-11-18 22:33:07 +01:00
|
|
|
addPreferenceHandlerFor(PREF_SONY_AMBIENT_SOUND_CONTROL);
|
2022-12-30 19:07:18 +01:00
|
|
|
addPreferenceHandlerFor(PREF_SONY_AMBIENT_SOUND_CONTROL_BUTTON_MODE);
|
2021-11-18 22:33:07 +01:00
|
|
|
addPreferenceHandlerFor(PREF_SONY_FOCUS_VOICE);
|
|
|
|
addPreferenceHandlerFor(PREF_SONY_AMBIENT_SOUND_LEVEL);
|
|
|
|
addPreferenceHandlerFor(PREF_SONY_SOUND_POSITION);
|
|
|
|
addPreferenceHandlerFor(PREF_SONY_SURROUND_MODE);
|
|
|
|
addPreferenceHandlerFor(PREF_SONY_EQUALIZER_MODE);
|
2021-12-12 19:48:14 +01:00
|
|
|
addPreferenceHandlerFor(PREF_SONY_EQUALIZER_BAND_400);
|
|
|
|
addPreferenceHandlerFor(PREF_SONY_EQUALIZER_BAND_1000);
|
|
|
|
addPreferenceHandlerFor(PREF_SONY_EQUALIZER_BAND_2500);
|
|
|
|
addPreferenceHandlerFor(PREF_SONY_EQUALIZER_BAND_6300);
|
|
|
|
addPreferenceHandlerFor(PREF_SONY_EQUALIZER_BAND_16000);
|
|
|
|
addPreferenceHandlerFor(PREF_SONY_EQUALIZER_BASS);
|
|
|
|
addPreferenceHandlerFor(PREF_SONY_AUDIO_UPSAMPLING);
|
2021-11-18 22:33:07 +01:00
|
|
|
addPreferenceHandlerFor(PREF_SONY_TOUCH_SENSOR);
|
2021-12-24 15:20:57 +01:00
|
|
|
addPreferenceHandlerFor(PREF_SONY_PAUSE_WHEN_TAKEN_OFF);
|
|
|
|
addPreferenceHandlerFor(PREF_SONY_BUTTON_MODE_LEFT);
|
|
|
|
addPreferenceHandlerFor(PREF_SONY_BUTTON_MODE_RIGHT);
|
2022-12-30 19:07:18 +01:00
|
|
|
addPreferenceHandlerFor(PREF_SONY_QUICK_ACCESS_DOUBLE_TAP);
|
|
|
|
addPreferenceHandlerFor(PREF_SONY_QUICK_ACCESS_TRIPLE_TAP);
|
2021-11-18 22:33:07 +01:00
|
|
|
addPreferenceHandlerFor(PREF_SONY_AUTOMATIC_POWER_OFF);
|
|
|
|
addPreferenceHandlerFor(PREF_SONY_NOTIFICATION_VOICE_GUIDE);
|
2022-01-09 12:56:29 +01:00
|
|
|
addPreferenceHandlerFor(PREF_SONY_SPEAK_TO_CHAT);
|
|
|
|
addPreferenceHandlerFor(PREF_SONY_SPEAK_TO_CHAT_SENSITIVITY);
|
|
|
|
addPreferenceHandlerFor(PREF_SONY_SPEAK_TO_CHAT_FOCUS_ON_VOICE);
|
|
|
|
addPreferenceHandlerFor(PREF_SONY_SPEAK_TO_CHAT_TIMEOUT);
|
|
|
|
addPreferenceHandlerFor(PREF_SONY_CONNECT_TWO_DEVICES);
|
2024-03-16 00:36:50 +01:00
|
|
|
addPreferenceHandlerFor(PREF_SONY_ADAPTIVE_VOLUME_CONTROL);
|
|
|
|
addPreferenceHandlerFor(PREF_SONY_WIDE_AREA_TAP);
|
2023-10-15 15:37:41 +02:00
|
|
|
addPreferenceHandlerFor(PREF_FEMOMETER_MEASUREMENT_MODE);
|
2021-10-31 16:01:50 +01:00
|
|
|
|
2021-12-27 15:37:04 +01:00
|
|
|
addPreferenceHandlerFor(PREF_QC35_NOISE_CANCELLING_LEVEL);
|
2022-03-06 17:46:12 +01:00
|
|
|
addPreferenceHandlerFor(PREF_USER_FITNESS_GOAL);
|
2022-05-14 22:08:32 +02:00
|
|
|
addPreferenceHandlerFor(PREF_USER_FITNESS_GOAL_NOTIFICATION);
|
2023-12-10 12:02:22 +01:00
|
|
|
addPreferenceHandlerFor(PREF_USER_FITNESS_GOAL_SECONDARY);
|
2021-12-27 15:37:04 +01:00
|
|
|
|
2023-12-10 12:19:01 +01:00
|
|
|
addPreferenceHandlerFor(PREF_VITALITY_SCORE_7_DAY);
|
|
|
|
addPreferenceHandlerFor(PREF_VITALITY_SCORE_DAILY);
|
|
|
|
|
2022-04-15 02:08:51 +02:00
|
|
|
addPreferenceHandlerFor(PREF_UM25_SHOW_THRESHOLD_NOTIFICATION);
|
|
|
|
addPreferenceHandlerFor(PREF_UM25_SHOW_THRESHOLD);
|
2022-08-09 14:30:21 +02:00
|
|
|
addPreferenceHandlerFor(PREF_HOURLY_CHIME_ENABLE);
|
|
|
|
addPreferenceHandlerFor(PREF_HOURLY_CHIME_START);
|
|
|
|
addPreferenceHandlerFor(PREF_HOURLY_CHIME_END);
|
2022-04-15 02:08:51 +02:00
|
|
|
|
2022-10-22 21:53:45 +02:00
|
|
|
addPreferenceHandlerFor(PREF_WORKOUT_DETECTION_CATEGORIES);
|
|
|
|
addPreferenceHandlerFor(PREF_WORKOUT_DETECTION_ALERT);
|
|
|
|
addPreferenceHandlerFor(PREF_WORKOUT_DETECTION_SENSITIVITY);
|
|
|
|
|
|
|
|
addPreferenceHandlerFor(PREF_GPS_MODE_PRESET);
|
|
|
|
addPreferenceHandlerFor(PREF_GPS_BAND);
|
|
|
|
addPreferenceHandlerFor(PREF_GPS_COMBINATION);
|
|
|
|
addPreferenceHandlerFor(PREF_GPS_SATELLITE_SEARCH);
|
|
|
|
addPreferenceHandlerFor(PREF_AGPS_EXPIRY_REMINDER_ENABLED);
|
|
|
|
addPreferenceHandlerFor(PREF_AGPS_EXPIRY_REMINDER_TIME);
|
|
|
|
addPreferenceHandlerFor(PREF_ALWAYS_ON_DISPLAY_FOLLOW_WATCHFACE);
|
|
|
|
addPreferenceHandlerFor(PREF_ALWAYS_ON_DISPLAY_STYLE);
|
|
|
|
addPreferenceHandlerFor(PREF_WEARDIRECTION);
|
2023-12-10 19:03:17 +01:00
|
|
|
addPreferenceHandlerFor(PREF_WEARMODE);
|
2022-10-22 21:53:45 +02:00
|
|
|
|
|
|
|
addPreferenceHandlerFor(PREF_VOLUME);
|
|
|
|
addPreferenceHandlerFor(PREF_CROWN_VIBRATION);
|
|
|
|
addPreferenceHandlerFor(PREF_ALERT_TONE);
|
|
|
|
addPreferenceHandlerFor(PREF_COVER_TO_MUTE);
|
|
|
|
addPreferenceHandlerFor(PREF_VIBRATE_FOR_ALERT);
|
|
|
|
addPreferenceHandlerFor(PREF_TEXT_TO_SPEECH);
|
|
|
|
|
|
|
|
addPreferenceHandlerFor(PREF_OFFLINE_VOICE_RESPOND_TURN_WRIST);
|
|
|
|
addPreferenceHandlerFor(PREF_OFFLINE_VOICE_RESPOND_SCREEN_ON);
|
|
|
|
addPreferenceHandlerFor(PREF_OFFLINE_VOICE_RESPONSE_DURING_SCREEN_LIGHTING);
|
|
|
|
addPreferenceHandlerFor(PREF_OFFLINE_VOICE_LANGUAGE);
|
|
|
|
|
2023-06-10 18:05:09 +02:00
|
|
|
addPreferenceHandlerFor(PREF_VOICE_SERVICE_LANGUAGE);
|
|
|
|
|
2023-09-17 11:02:58 +02:00
|
|
|
addPreferenceHandlerFor(PREF_TEMPERATURE_SCALE_CF);
|
|
|
|
|
2023-10-02 20:48:46 +02:00
|
|
|
addPreferenceHandlerFor(PREF_PREFIX_NOTIFICATION_WITH_APP);
|
|
|
|
|
2023-10-08 15:08:43 +02:00
|
|
|
addPreferenceHandlerFor(PREF_SLEEP_MODE_SCHEDULE_ENABLED);
|
|
|
|
addPreferenceHandlerFor(PREF_SLEEP_MODE_SCHEDULE_START);
|
|
|
|
addPreferenceHandlerFor(PREF_SLEEP_MODE_SCHEDULE_END);
|
|
|
|
|
2023-12-19 21:08:25 +01:00
|
|
|
addPreferenceHandlerFor(PREF_CLAP_HANDS_TO_WAKEUP_DEVICE);
|
|
|
|
addPreferenceHandlerFor(PREF_POWER_SAVING);
|
|
|
|
|
2024-01-07 23:18:08 +01:00
|
|
|
addPreferenceHandlerFor(PREF_HEARTRATE_AUTOMATIC_ENABLE);
|
|
|
|
addPreferenceHandlerFor(PREF_SPO_AUTOMATIC_ENABLE);
|
|
|
|
|
2022-11-08 21:32:47 +01:00
|
|
|
addPreferenceHandlerFor("lock");
|
|
|
|
|
2021-09-21 16:37:19 +02:00
|
|
|
String sleepTimeState = prefs.getString(PREF_SLEEP_TIME, PREF_DO_NOT_DISTURB_OFF);
|
|
|
|
boolean sleepTimeScheduled = sleepTimeState.equals(PREF_DO_NOT_DISTURB_SCHEDULED);
|
|
|
|
|
|
|
|
final Preference sleepTimeInfo = findPreference(PREF_SLEEP_TIME);
|
|
|
|
if (sleepTimeInfo != null) {
|
|
|
|
//sleepTimeInfo.setEnabled(!PREF_DO_NOT_DISTURB_OFF.equals(sleepTimeInfo));
|
|
|
|
sleepTimeInfo.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
2022-01-15 00:50:00 +01:00
|
|
|
notifyPreferenceChanged(PREF_SLEEP_TIME);
|
2021-09-21 16:37:19 +02:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
final Preference sleepTimeStart = findPreference(PREF_SLEEP_TIME_START);
|
|
|
|
if (sleepTimeStart != null) {
|
|
|
|
sleepTimeStart.setEnabled(sleepTimeScheduled);
|
|
|
|
sleepTimeStart.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
2022-01-15 00:50:00 +01:00
|
|
|
notifyPreferenceChanged(PREF_SLEEP_TIME_START);
|
2021-09-21 16:37:19 +02:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
final Preference sleepTimeEnd = findPreference(PREF_SLEEP_TIME_END);
|
|
|
|
if (sleepTimeEnd != null) {
|
|
|
|
sleepTimeEnd.setEnabled(sleepTimeScheduled);
|
|
|
|
sleepTimeEnd.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
2022-01-15 00:50:00 +01:00
|
|
|
notifyPreferenceChanged(PREF_SLEEP_TIME_END);
|
2021-09-21 16:37:19 +02:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
final Preference sleepTime = findPreference(PREF_SLEEP_TIME);
|
|
|
|
if (sleepTime != null) {
|
|
|
|
sleepTime.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
|
|
|
final boolean scheduled = PREF_DO_NOT_DISTURB_SCHEDULED.equals(newVal.toString());
|
|
|
|
Objects.requireNonNull(sleepTimeStart).setEnabled(scheduled);
|
|
|
|
Objects.requireNonNull(sleepTimeEnd).setEnabled(scheduled);
|
|
|
|
if (sleepTimeInfo != null) {
|
|
|
|
//sleepTimeInfo.setEnabled(!PREF_DO_NOT_DISTURB_OFF.equals(newVal.toString()));
|
|
|
|
}
|
2022-01-15 00:50:00 +01:00
|
|
|
notifyPreferenceChanged(PREF_SLEEP_TIME);
|
2021-09-21 16:37:19 +02:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2019-06-05 16:00:18 +02:00
|
|
|
String displayOnLiftState = prefs.getString(PREF_ACTIVATE_DISPLAY_ON_LIFT, PREF_DO_NOT_DISTURB_OFF);
|
|
|
|
boolean displayOnLiftScheduled = displayOnLiftState.equals(PREF_DO_NOT_DISTURB_SCHEDULED);
|
2022-05-09 14:57:44 +02:00
|
|
|
boolean displayOnLiftOff = displayOnLiftState.equals(PREF_DO_NOT_DISTURB_OFF);
|
2019-06-05 16:00:18 +02:00
|
|
|
|
|
|
|
final Preference rotateWristCycleInfo = findPreference(PREF_MI2_ROTATE_WRIST_TO_SWITCH_INFO);
|
|
|
|
if (rotateWristCycleInfo != null) {
|
|
|
|
rotateWristCycleInfo.setEnabled(!PREF_DO_NOT_DISTURB_OFF.equals(displayOnLiftState));
|
|
|
|
rotateWristCycleInfo.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
2022-01-15 00:50:00 +01:00
|
|
|
notifyPreferenceChanged(PREF_MI2_ROTATE_WRIST_TO_SWITCH_INFO);
|
2019-06-05 16:00:18 +02:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2023-12-11 11:50:31 +01:00
|
|
|
final Preference phoneSilentMode = findPreference(PREF_PHONE_SILENT_MODE);
|
|
|
|
if (phoneSilentMode != null) {
|
|
|
|
phoneSilentMode.setOnPreferenceChangeListener((preference, newVal) -> {
|
|
|
|
final AudioManager audioManager = (AudioManager) requireContext().getSystemService(Context.AUDIO_SERVICE);
|
|
|
|
GBApplication.deviceService(device).onChangePhoneSilentMode(audioManager.getRingerMode());
|
|
|
|
return true;
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2022-08-18 23:03:28 +02:00
|
|
|
final String alwaysOnDisplayState = prefs.getString(PREF_ALWAYS_ON_DISPLAY_MODE, PREF_ALWAYS_ON_DISPLAY_OFF);
|
|
|
|
boolean alwaysOnDisplayScheduled = alwaysOnDisplayState.equals(PREF_ALWAYS_ON_DISPLAY_SCHEDULED);
|
|
|
|
boolean alwaysOnDisplayOff = alwaysOnDisplayState.equals(PREF_ALWAYS_ON_DISPLAY_OFF);
|
|
|
|
|
|
|
|
final Preference alwaysOnDisplayStart = findPreference(PREF_ALWAYS_ON_DISPLAY_START);
|
|
|
|
if (alwaysOnDisplayStart != null) {
|
|
|
|
alwaysOnDisplayStart.setEnabled(alwaysOnDisplayScheduled);
|
|
|
|
alwaysOnDisplayStart.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
|
|
|
notifyPreferenceChanged(PREF_ALWAYS_ON_DISPLAY_START);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
final Preference alwaysOnDisplayEnd = findPreference(PREF_ALWAYS_ON_DISPLAY_END);
|
|
|
|
if (alwaysOnDisplayEnd != null) {
|
|
|
|
alwaysOnDisplayEnd.setEnabled(alwaysOnDisplayScheduled);
|
|
|
|
alwaysOnDisplayEnd.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
|
|
|
notifyPreferenceChanged(PREF_ALWAYS_ON_DISPLAY_END);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
final Preference alwaysOnDisplayMode = findPreference(PREF_ALWAYS_ON_DISPLAY_MODE);
|
|
|
|
if (alwaysOnDisplayMode != null) {
|
|
|
|
alwaysOnDisplayMode.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
|
|
|
final boolean scheduled = PREF_ALWAYS_ON_DISPLAY_SCHEDULED.equals(newVal.toString());
|
|
|
|
final boolean off = PREF_ALWAYS_ON_DISPLAY_OFF.equals(newVal.toString());
|
|
|
|
alwaysOnDisplayStart.setEnabled(scheduled);
|
|
|
|
alwaysOnDisplayEnd.setEnabled(scheduled);
|
|
|
|
notifyPreferenceChanged(PREF_ALWAYS_ON_DISPLAY_MODE);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2019-06-05 16:00:18 +02:00
|
|
|
final Preference displayOnLiftStart = findPreference(PREF_DISPLAY_ON_LIFT_START);
|
|
|
|
if (displayOnLiftStart != null) {
|
|
|
|
displayOnLiftStart.setEnabled(displayOnLiftScheduled);
|
|
|
|
displayOnLiftStart.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
2022-01-15 00:50:00 +01:00
|
|
|
notifyPreferenceChanged(PREF_DISPLAY_ON_LIFT_START);
|
2019-06-05 16:00:18 +02:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
final Preference displayOnLiftEnd = findPreference(PREF_DISPLAY_ON_LIFT_END);
|
|
|
|
if (displayOnLiftEnd != null) {
|
|
|
|
displayOnLiftEnd.setEnabled(displayOnLiftScheduled);
|
|
|
|
displayOnLiftEnd.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
2022-01-15 00:50:00 +01:00
|
|
|
notifyPreferenceChanged(PREF_DISPLAY_ON_LIFT_END);
|
2019-06-05 16:00:18 +02:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2022-05-09 14:57:44 +02:00
|
|
|
final Preference displayOnLiftSensitivity = findPreference(PREF_DISPLAY_ON_LIFT_SENSITIVITY);
|
|
|
|
if (displayOnLiftSensitivity != null) {
|
|
|
|
displayOnLiftSensitivity.setEnabled(!displayOnLiftOff);
|
|
|
|
displayOnLiftSensitivity.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
|
|
|
notifyPreferenceChanged(PREF_DISPLAY_ON_LIFT_SENSITIVITY);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2019-06-05 16:00:18 +02:00
|
|
|
final Preference displayOnLift = findPreference(PREF_ACTIVATE_DISPLAY_ON_LIFT);
|
|
|
|
if (displayOnLift != null) {
|
|
|
|
displayOnLift.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
|
|
|
final boolean scheduled = PREF_DO_NOT_DISTURB_SCHEDULED.equals(newVal.toString());
|
2022-05-09 14:57:44 +02:00
|
|
|
final boolean off = PREF_DO_NOT_DISTURB_OFF.equals(newVal.toString());
|
2019-06-05 16:00:18 +02:00
|
|
|
Objects.requireNonNull(displayOnLiftStart).setEnabled(scheduled);
|
|
|
|
Objects.requireNonNull(displayOnLiftEnd).setEnabled(scheduled);
|
|
|
|
if (rotateWristCycleInfo != null) {
|
2022-05-09 14:57:44 +02:00
|
|
|
rotateWristCycleInfo.setEnabled(!off);
|
|
|
|
}
|
|
|
|
if (displayOnLiftSensitivity != null) {
|
|
|
|
displayOnLiftSensitivity.setEnabled(!off);
|
2019-06-05 16:00:18 +02:00
|
|
|
}
|
2022-01-15 00:50:00 +01:00
|
|
|
notifyPreferenceChanged(PREF_ACTIVATE_DISPLAY_ON_LIFT);
|
2019-06-05 16:00:18 +02:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2022-05-09 20:47:08 +02:00
|
|
|
final Preference worldClocks = findPreference(PREF_WORLD_CLOCKS);
|
|
|
|
if (worldClocks != null) {
|
|
|
|
worldClocks.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceClick(Preference preference) {
|
|
|
|
final Intent intent = new Intent(getContext(), ConfigureWorldClocks.class);
|
|
|
|
intent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
|
|
|
startActivity(intent);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2023-05-18 00:43:29 +02:00
|
|
|
final Preference contacts = findPreference(PREF_CONTACTS);
|
|
|
|
if (contacts != null) {
|
|
|
|
contacts.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceClick(Preference preference) {
|
|
|
|
final Intent intent = new Intent(getContext(), ConfigureContacts.class);
|
|
|
|
intent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
|
|
|
startActivity(intent);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2023-12-11 23:00:16 +01:00
|
|
|
final Preference widgets = findPreference(PREF_WIDGETS);
|
|
|
|
if (widgets != null) {
|
|
|
|
widgets.setOnPreferenceClickListener(preference -> {
|
|
|
|
final Intent intent = new Intent(getContext(), WidgetScreensListActivity.class);
|
|
|
|
intent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
|
|
|
startActivity(intent);
|
|
|
|
return true;
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2022-06-16 23:28:17 +02:00
|
|
|
final Preference calendarBlacklist = findPreference("blacklist_calendars");
|
|
|
|
if (calendarBlacklist != null) {
|
|
|
|
calendarBlacklist.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
|
|
|
|
public boolean onPreferenceClick(Preference preference) {
|
|
|
|
Intent intent = new Intent(getContext(), CalBlacklistActivity.class);
|
|
|
|
intent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
|
|
|
startActivity(intent);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2023-12-06 12:17:36 +01:00
|
|
|
final int cannedRepliesSlotCount = coordinator.getCannedRepliesSlotCount(device);
|
|
|
|
|
2020-10-13 00:25:43 +02:00
|
|
|
final Preference cannedMessagesDismissCall = findPreference("canned_messages_dismisscall_send");
|
|
|
|
if (cannedMessagesDismissCall != null) {
|
|
|
|
cannedMessagesDismissCall.setOnPreferenceClickListener(new androidx.preference.Preference.OnPreferenceClickListener() {
|
|
|
|
public boolean onPreferenceClick(androidx.preference.Preference preference) {
|
|
|
|
ArrayList<String> messages = new ArrayList<>();
|
2023-12-06 12:17:36 +01:00
|
|
|
for (int i = 1; i <= cannedRepliesSlotCount; i++) {
|
2020-10-13 00:25:43 +02:00
|
|
|
String message = prefs.getString("canned_message_dismisscall_" + i, null);
|
|
|
|
if (message != null && !message.equals("")) {
|
|
|
|
messages.add(message);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
CannedMessagesSpec cannedMessagesSpec = new CannedMessagesSpec();
|
|
|
|
cannedMessagesSpec.type = CannedMessagesSpec.TYPE_REJECTEDCALLS;
|
|
|
|
cannedMessagesSpec.cannedMessages = messages.toArray(new String[0]);
|
2022-08-01 23:04:41 +02:00
|
|
|
GBApplication.deviceService(device).onSetCannedMessages(cannedMessagesSpec);
|
2020-10-13 00:25:43 +02:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
2023-12-06 12:17:36 +01:00
|
|
|
|
|
|
|
// TODO we could use this to auto-create preferences for watches with > 16 slots
|
|
|
|
for (int i = cannedRepliesSlotCount + 1; i <= 16; i++) {
|
|
|
|
final Preference cannedReplyPref = findPreference("canned_message_dismisscall_" + i);
|
|
|
|
if (cannedReplyPref != null) {
|
|
|
|
cannedReplyPref.setVisible(false);
|
|
|
|
}
|
|
|
|
}
|
2020-10-13 00:25:43 +02:00
|
|
|
}
|
|
|
|
|
2022-08-18 23:03:28 +02:00
|
|
|
final Preference cannedMessagesGeneric = findPreference("canned_messages_generic_send");
|
|
|
|
if (cannedMessagesGeneric != null) {
|
2023-12-06 12:17:36 +01:00
|
|
|
|
2022-08-18 23:03:28 +02:00
|
|
|
cannedMessagesGeneric.setOnPreferenceClickListener(new androidx.preference.Preference.OnPreferenceClickListener() {
|
|
|
|
public boolean onPreferenceClick(androidx.preference.Preference preference) {
|
|
|
|
final ArrayList<String> messages = new ArrayList<>();
|
2023-12-06 12:17:36 +01:00
|
|
|
for (int i = 1; i <= cannedRepliesSlotCount; i++) {
|
2022-08-18 23:03:28 +02:00
|
|
|
String message = prefs.getString("canned_reply_" + i, null);
|
|
|
|
if (message != null && !message.equals("")) {
|
|
|
|
messages.add(message);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
final CannedMessagesSpec cannedMessagesSpec = new CannedMessagesSpec();
|
|
|
|
cannedMessagesSpec.type = CannedMessagesSpec.TYPE_GENERIC;
|
|
|
|
cannedMessagesSpec.cannedMessages = messages.toArray(new String[0]);
|
|
|
|
GBApplication.deviceService().onSetCannedMessages(cannedMessagesSpec);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
2023-12-06 12:17:36 +01:00
|
|
|
|
|
|
|
// TODO we could use this to auto-create preferences for watches with > 16 slots
|
|
|
|
for (int i = cannedRepliesSlotCount + 1; i <= 16; i++) {
|
|
|
|
final Preference cannedReplyPref = findPreference("canned_reply_" + i);
|
|
|
|
if (cannedReplyPref != null) {
|
|
|
|
cannedReplyPref.setVisible(false);
|
|
|
|
}
|
|
|
|
}
|
2022-08-18 23:03:28 +02:00
|
|
|
}
|
|
|
|
|
2019-11-14 12:33:36 +01:00
|
|
|
setInputTypeFor(HuamiConst.PREF_BUTTON_ACTION_BROADCAST_DELAY, InputType.TYPE_CLASS_NUMBER);
|
|
|
|
setInputTypeFor(HuamiConst.PREF_BUTTON_ACTION_PRESS_MAX_INTERVAL, InputType.TYPE_CLASS_NUMBER);
|
|
|
|
setInputTypeFor(HuamiConst.PREF_BUTTON_ACTION_PRESS_COUNT, InputType.TYPE_CLASS_NUMBER);
|
|
|
|
setInputTypeFor(MiBandConst.PREF_MIBAND_DEVICE_TIME_OFFSET_HOURS, InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED);
|
2022-03-07 17:42:46 +01:00
|
|
|
setInputTypeFor(DeviceSettingsPreferenceConst.PREF_FIND_PHONE_DURATION, InputType.TYPE_CLASS_NUMBER);
|
2019-12-14 23:43:54 +01:00
|
|
|
setInputTypeFor(DeviceSettingsPreferenceConst.PREF_RESERVER_ALARMS_CALENDAR, InputType.TYPE_CLASS_NUMBER);
|
2021-12-04 16:55:09 +01:00
|
|
|
setInputTypeFor(DeviceSettingsPreferenceConst.PREF_RESERVER_REMINDERS_CALENDAR, InputType.TYPE_CLASS_NUMBER);
|
2022-05-14 22:08:32 +02:00
|
|
|
setInputTypeFor(DeviceSettingsPreferenceConst.PREF_INACTIVITY_THRESHOLD, InputType.TYPE_CLASS_NUMBER);
|
2023-07-27 19:38:15 +02:00
|
|
|
setInputTypeFor(DeviceSettingsPreferenceConst.PREF_DEVICE_GPS_UPDATE_INTERVAL, InputType.TYPE_CLASS_NUMBER);
|
|
|
|
setInputTypeFor(DeviceSettingsPreferenceConst.PREF_BANGLEJS_TEXT_BITMAP_SIZE, InputType.TYPE_CLASS_NUMBER);
|
2024-04-12 23:02:39 +02:00
|
|
|
setInputTypeFor(DeviceSettingsPreferenceConst.PREF_AUTO_REPLY_INCOMING_CALL_DELAY, InputType.TYPE_CLASS_NUMBER);
|
2020-08-16 22:07:55 +02:00
|
|
|
|
2022-07-05 20:29:16 +02:00
|
|
|
new PasswordCapabilityImpl().registerPreferences(getContext(), coordinator.getPasswordCapability(), this);
|
2022-08-25 11:07:23 +02:00
|
|
|
new HeartRateCapability().registerPreferences(getContext(), coordinator.getHeartRateMeasurementIntervals(), this);
|
2022-07-05 20:29:16 +02:00
|
|
|
|
2023-12-09 12:40:28 +01:00
|
|
|
Set<String> deviceActionsFellSleepSelection = prefs.getStringSet(PREF_DEVICE_ACTION_FELL_SLEEP_SELECTIONS, Collections.emptySet());
|
|
|
|
final Preference deviceActionsFellSleep = findPreference(PREF_DEVICE_ACTION_FELL_SLEEP_SELECTIONS);
|
2020-08-16 22:07:55 +02:00
|
|
|
final Preference deviceActionsFellSleepBroadcast = findPreference(PREF_DEVICE_ACTION_FELL_SLEEP_BROADCAST);
|
2023-12-09 12:40:28 +01:00
|
|
|
boolean deviceActionsFellSleepSelectionBroadcast = deviceActionsFellSleepSelection.contains(PREF_DEVICE_ACTION_SELECTION_BROADCAST);
|
2020-08-16 22:07:55 +02:00
|
|
|
if (deviceActionsFellSleep != null) {
|
|
|
|
deviceActionsFellSleep.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
2023-12-09 12:40:28 +01:00
|
|
|
final Set<String> newValSet = (Set<String>) newVal;
|
|
|
|
final boolean broadcast = newValSet.contains(PREF_DEVICE_ACTION_SELECTION_BROADCAST);
|
2020-08-16 22:07:55 +02:00
|
|
|
Objects.requireNonNull(deviceActionsFellSleepBroadcast).setEnabled(broadcast);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
if (deviceActionsFellSleepBroadcast != null) {
|
|
|
|
deviceActionsFellSleepBroadcast.setEnabled(deviceActionsFellSleepSelectionBroadcast);
|
|
|
|
}
|
2022-07-05 20:29:16 +02:00
|
|
|
|
2023-12-09 12:40:28 +01:00
|
|
|
Set<String> deviceActionsWokeUpSelection = prefs.getStringSet(PREF_DEVICE_ACTION_WOKE_UP_SELECTIONS, Collections.emptySet());
|
|
|
|
final Preference deviceActionsWokeUp = findPreference(PREF_DEVICE_ACTION_WOKE_UP_SELECTIONS);
|
2020-08-16 22:07:55 +02:00
|
|
|
final Preference deviceActionsWokeUpBroadcast = findPreference(PREF_DEVICE_ACTION_WOKE_UP_BROADCAST);
|
2023-12-09 12:40:28 +01:00
|
|
|
boolean deviceActionsWokeUpSelectionBroadcast = deviceActionsWokeUpSelection.contains(PREF_DEVICE_ACTION_SELECTION_BROADCAST);
|
2020-08-16 22:07:55 +02:00
|
|
|
if (deviceActionsWokeUp != null) {
|
|
|
|
deviceActionsWokeUp.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
2023-12-09 12:40:28 +01:00
|
|
|
final Set<String> newValSet = (Set<String>) newVal;
|
|
|
|
final boolean broadcast = newValSet.contains(PREF_DEVICE_ACTION_SELECTION_BROADCAST);
|
2020-08-16 22:07:55 +02:00
|
|
|
Objects.requireNonNull(deviceActionsWokeUpBroadcast).setEnabled(broadcast);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
if (deviceActionsWokeUpBroadcast != null) {
|
|
|
|
deviceActionsWokeUpBroadcast.setEnabled(deviceActionsWokeUpSelectionBroadcast);
|
|
|
|
}
|
2022-07-05 20:29:16 +02:00
|
|
|
|
2023-12-09 12:40:28 +01:00
|
|
|
Set<String> deviceActionsStartNonWearSelection = prefs.getStringSet(PREF_DEVICE_ACTION_START_NON_WEAR_SELECTIONS, Collections.emptySet());
|
|
|
|
final Preference deviceActionsStartNonWear = findPreference(PREF_DEVICE_ACTION_START_NON_WEAR_SELECTIONS);
|
2020-08-16 22:07:55 +02:00
|
|
|
final Preference deviceActionsStartNonWearBroadcast = findPreference(PREF_DEVICE_ACTION_START_NON_WEAR_BROADCAST);
|
2023-12-09 12:40:28 +01:00
|
|
|
boolean deviceActionsStartNonWearSelectionBroadcast = deviceActionsStartNonWearSelection.contains(PREF_DEVICE_ACTION_SELECTION_BROADCAST);
|
2020-08-16 22:07:55 +02:00
|
|
|
if (deviceActionsStartNonWear != null) {
|
|
|
|
deviceActionsStartNonWear.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
2023-12-09 12:40:28 +01:00
|
|
|
final Set<String> newValSet = (Set<String>) newVal;
|
|
|
|
final boolean broadcast = newValSet.contains(PREF_DEVICE_ACTION_SELECTION_BROADCAST);
|
2020-08-16 22:07:55 +02:00
|
|
|
Objects.requireNonNull(deviceActionsStartNonWearBroadcast).setEnabled(broadcast);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
if (deviceActionsStartNonWearBroadcast != null) {
|
|
|
|
deviceActionsStartNonWearBroadcast.setEnabled(deviceActionsStartNonWearSelectionBroadcast);
|
|
|
|
}
|
2021-11-18 12:22:43 +01:00
|
|
|
|
2021-12-04 20:33:30 +01:00
|
|
|
// this is to ensure that Control Center device cards are refreshed on preference changes
|
2021-11-18 12:22:43 +01:00
|
|
|
final Preference activityInDeviceCard = findPreference(PREFS_ACTIVITY_IN_DEVICE_CARD);
|
|
|
|
final Preference activityInDeviceSteps = findPreference(PREFS_ACTIVITY_IN_DEVICE_CARD_STEPS);
|
|
|
|
final Preference activityInDeviceSleep = findPreference(PREFS_ACTIVITY_IN_DEVICE_CARD_SLEEP);
|
|
|
|
final Preference activityInDeviceDistance = findPreference(PREFS_ACTIVITY_IN_DEVICE_CARD_DISTANCE);
|
2021-12-04 20:33:30 +01:00
|
|
|
final Preference chartsTabsOrderSelection = findPreference(PREFS_DEVICE_CHARTS_TABS);
|
2021-11-18 12:22:43 +01:00
|
|
|
|
|
|
|
Preference.OnPreferenceClickListener sendIntentRefreshDeviceListListener = new Preference.OnPreferenceClickListener() {
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceClick(Preference arg0) {
|
|
|
|
Intent refreshIntent = new Intent(DeviceManager.ACTION_REFRESH_DEVICELIST);
|
|
|
|
LocalBroadcastManager.getInstance(getContext()).sendBroadcast(refreshIntent);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2021-12-04 20:33:30 +01:00
|
|
|
Preference[] preferencesInControlCenter = {
|
|
|
|
activityInDeviceCard,
|
|
|
|
activityInDeviceSteps,
|
|
|
|
activityInDeviceSleep,
|
|
|
|
activityInDeviceDistance,
|
2021-12-05 10:32:35 +01:00
|
|
|
chartsTabsOrderSelection,
|
2021-12-04 20:33:30 +01:00
|
|
|
};
|
2021-11-18 12:22:43 +01:00
|
|
|
|
2021-12-04 20:33:30 +01:00
|
|
|
for (Preference preferenceInControlCenter : preferencesInControlCenter) {
|
|
|
|
if (preferenceInControlCenter != null) {
|
|
|
|
preferenceInControlCenter.setOnPreferenceClickListener(sendIntentRefreshDeviceListListener);
|
|
|
|
}
|
|
|
|
}
|
2021-11-28 01:34:29 +01:00
|
|
|
|
2023-12-12 21:27:15 +01:00
|
|
|
// Replace the PAI with the device-specific name
|
|
|
|
if (chartsTabsOrderSelection != null) {
|
|
|
|
final ListPreference chartsTabsListPref = (ListPreference) chartsTabsOrderSelection;
|
|
|
|
final CharSequence[] entries = chartsTabsListPref.getEntries();
|
|
|
|
final CharSequence[] entryValues = chartsTabsListPref.getEntryValues();
|
|
|
|
for (int i = 0; i < entries.length; i++) {
|
|
|
|
if ("pai".equals(entryValues[i].toString())) {
|
|
|
|
entries[i] = getString(coordinator.getPaiName());
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
chartsTabsListPref.setEntries(entries);
|
|
|
|
}
|
|
|
|
|
2023-07-04 00:19:19 +02:00
|
|
|
final Preference loyaltyCards = findPreference(LoyaltyCardsSettingsConst.PREF_KEY_LOYALTY_CARDS);
|
|
|
|
if (loyaltyCards != null) {
|
|
|
|
loyaltyCards.setOnPreferenceClickListener(preference -> {
|
|
|
|
final Intent intent = new Intent(getContext(), LoyaltyCardsSettingsActivity.class);
|
|
|
|
intent.putExtra(GBDevice.EXTRA_DEVICE, getDevice());
|
|
|
|
startActivity(intent);
|
|
|
|
return true;
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2023-09-23 12:31:41 +02:00
|
|
|
final Preference notificationSettings = findPreference(PREFS_PER_APP_NOTIFICATION_SETTINGS);
|
2023-12-19 21:08:25 +01:00
|
|
|
if (notificationSettings != null) {
|
2023-09-23 12:31:41 +02:00
|
|
|
notificationSettings.setOnPreferenceClickListener(preference -> {
|
|
|
|
final Intent intent = new Intent(getContext(), AppSpecificNotificationSettingsActivity.class);
|
|
|
|
intent.putExtra(GBDevice.EXTRA_DEVICE, getDevice());
|
|
|
|
startActivity(intent);
|
|
|
|
return true;
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2021-11-28 01:34:29 +01:00
|
|
|
if (deviceSpecificSettingsCustomizer != null) {
|
2022-05-17 22:18:49 +02:00
|
|
|
deviceSpecificSettingsCustomizer.customizeSettings(this, prefs);
|
2021-11-28 01:34:29 +01:00
|
|
|
}
|
2019-05-22 00:42:22 +02:00
|
|
|
}
|
|
|
|
|
2022-06-19 16:03:37 +02:00
|
|
|
static DeviceSpecificSettingsFragment newInstance(GBDevice device, DeviceSettingsActivity.MENU_ENTRY_POINTS applicationSpecificSettings) {
|
2023-09-27 23:11:02 +02:00
|
|
|
final DeviceCoordinator coordinator = device.getDeviceCoordinator();
|
2024-03-16 18:21:42 +01:00
|
|
|
|
|
|
|
final DeviceSpecificSettings deviceSpecificSettings = new DeviceSpecificSettings();
|
2022-06-19 16:03:37 +02:00
|
|
|
|
2024-03-05 00:32:22 +01:00
|
|
|
if (applicationSpecificSettings.equals(DeviceSettingsActivity.MENU_ENTRY_POINTS.AUTH_SETTINGS)) { //auth settings screen
|
2024-03-16 18:21:42 +01:00
|
|
|
deviceSpecificSettings.addRootScreen(R.xml.devicesettings_pairingkey_explanation);
|
|
|
|
for (final int s : coordinator.getSupportedDeviceSpecificAuthenticationSettings()) {
|
|
|
|
deviceSpecificSettings.addRootScreen(s);
|
|
|
|
}
|
2024-03-05 00:32:22 +01:00
|
|
|
} else { //device/application settings
|
2024-03-09 15:24:50 +01:00
|
|
|
if (coordinator.getSupportedLanguageSettings(device) != null) {
|
2024-03-16 18:21:42 +01:00
|
|
|
deviceSpecificSettings.addRootScreen(R.xml.devicesettings_language_generic);
|
|
|
|
}
|
|
|
|
DeviceSpecificSettings coordinatorDeviceSettings = coordinator.getDeviceSpecificSettings(device);
|
|
|
|
if (coordinatorDeviceSettings != null) {
|
|
|
|
deviceSpecificSettings.mergeFrom(coordinatorDeviceSettings);
|
2022-06-19 16:03:37 +02:00
|
|
|
}
|
2022-09-18 13:19:23 +02:00
|
|
|
final int[] supportedAuthSettings = coordinator.getSupportedDeviceSpecificAuthenticationSettings();
|
|
|
|
if (supportedAuthSettings != null && supportedAuthSettings.length > 0) {
|
2024-03-16 18:21:42 +01:00
|
|
|
deviceSpecificSettings.addRootScreen(
|
|
|
|
DeviceSpecificSettingsScreen.AUTHENTICATION,
|
|
|
|
supportedAuthSettings
|
|
|
|
);
|
2022-09-18 13:19:23 +02:00
|
|
|
}
|
2024-03-05 00:32:22 +01:00
|
|
|
|
2024-03-16 18:21:42 +01:00
|
|
|
deviceSpecificSettings.addRootScreen(
|
|
|
|
DeviceSpecificSettingsScreen.CONNECTION,
|
|
|
|
coordinator.getSupportedDeviceSpecificConnectionSettings()
|
|
|
|
);
|
|
|
|
|
2024-03-05 00:32:22 +01:00
|
|
|
if (coordinator.supportsActivityTracking()) {
|
2024-03-16 18:21:42 +01:00
|
|
|
deviceSpecificSettings.addRootScreen(
|
|
|
|
DeviceSpecificSettingsScreen.ACTIVITY_INFO,
|
2024-03-05 00:55:12 +01:00
|
|
|
R.xml.devicesettings_chartstabs,
|
|
|
|
R.xml.devicesettings_device_card_activity_card_preferences
|
2024-03-16 18:21:42 +01:00
|
|
|
);
|
2024-03-05 00:32:22 +01:00
|
|
|
}
|
2024-03-05 00:55:12 +01:00
|
|
|
|
2024-03-16 18:21:42 +01:00
|
|
|
deviceSpecificSettings.addRootScreen(
|
|
|
|
DeviceSpecificSettingsScreen.DEVELOPER,
|
|
|
|
R.xml.devicesettings_settings_third_party_apps
|
|
|
|
);
|
|
|
|
}
|
2022-05-09 20:47:08 +02:00
|
|
|
|
|
|
|
final DeviceSpecificSettingsCustomizer deviceSpecificSettingsCustomizer = coordinator.getDeviceSpecificSettingsCustomizer(device);
|
|
|
|
final String settingsFileSuffix = device.getAddress();
|
2022-01-14 23:01:42 +01:00
|
|
|
final DeviceSpecificSettingsFragment fragment = new DeviceSpecificSettingsFragment();
|
2024-03-16 18:21:42 +01:00
|
|
|
fragment.setSettingsFileSuffix(settingsFileSuffix);
|
|
|
|
fragment.setDeviceSpecificSettings(deviceSpecificSettings);
|
2022-01-14 23:01:42 +01:00
|
|
|
fragment.setDeviceSpecificSettingsCustomizer(deviceSpecificSettingsCustomizer);
|
2022-05-09 20:47:08 +02:00
|
|
|
fragment.setDevice(device);
|
2019-05-22 00:42:22 +02:00
|
|
|
|
|
|
|
return fragment;
|
|
|
|
}
|
|
|
|
|
2021-11-28 01:34:29 +01:00
|
|
|
@Override
|
|
|
|
public void addPreferenceHandlerFor(final String preferenceKey) {
|
|
|
|
addPreferenceHandlerFor(preferenceKey, null);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void addPreferenceHandlerFor(final String preferenceKey, final Preference.OnPreferenceChangeListener extraListener) {
|
2019-06-05 12:16:10 +02:00
|
|
|
Preference pref = findPreference(preferenceKey);
|
|
|
|
if (pref != null) {
|
|
|
|
pref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newVal) {
|
2022-01-15 00:50:00 +01:00
|
|
|
notifyPreferenceChanged(preferenceKey);
|
2021-11-28 01:34:29 +01:00
|
|
|
|
|
|
|
if (extraListener != null) {
|
|
|
|
return extraListener.onPreferenceChange(preference, newVal);
|
|
|
|
}
|
|
|
|
|
2019-06-05 12:16:10 +02:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
2019-11-14 12:33:36 +01:00
|
|
|
|
2022-08-25 11:07:23 +02:00
|
|
|
@Override
|
|
|
|
public GBDevice getDevice() {
|
|
|
|
return device;
|
|
|
|
}
|
|
|
|
|
2023-07-25 00:33:56 +02:00
|
|
|
@Override
|
2022-05-14 15:20:28 +02:00
|
|
|
protected Set<String> getPreferenceKeysWithSummary() {
|
|
|
|
final Set<String> keysWithSummary = new HashSet<>();
|
|
|
|
|
2022-05-14 22:08:32 +02:00
|
|
|
keysWithSummary.add(PREF_INACTIVITY_THRESHOLD);
|
2023-12-09 12:40:28 +01:00
|
|
|
keysWithSummary.add(PREF_DEVICE_ACTION_FELL_SLEEP_SELECTIONS);
|
|
|
|
keysWithSummary.add(PREF_DEVICE_ACTION_START_NON_WEAR_SELECTIONS);
|
|
|
|
keysWithSummary.add(PREF_DEVICE_ACTION_WOKE_UP_SELECTIONS);
|
2022-05-14 22:08:32 +02:00
|
|
|
|
2022-05-14 15:20:28 +02:00
|
|
|
if (deviceSpecificSettingsCustomizer != null) {
|
|
|
|
keysWithSummary.addAll(deviceSpecificSettingsCustomizer.getPreferenceKeysWithSummary());
|
|
|
|
}
|
|
|
|
|
|
|
|
return keysWithSummary;
|
|
|
|
}
|
|
|
|
|
2023-07-25 00:33:56 +02:00
|
|
|
@Override
|
|
|
|
protected void onSharedPreferenceChanged(Preference preference) {
|
|
|
|
if (deviceSpecificSettingsCustomizer != null) {
|
|
|
|
deviceSpecificSettingsCustomizer.onPreferenceChange(preference, DeviceSpecificSettingsFragment.this);
|
2021-12-12 19:38:14 +01:00
|
|
|
}
|
|
|
|
}
|
2019-05-22 00:42:22 +02:00
|
|
|
}
|